[med-svn] [python-pysam] 03/07: Imported Upstream version 0.8.3+ds1
Afif Elghraoui
afif-guest at moszumanska.debian.org
Thu Jun 25 07:19:49 UTC 2015
This is an automated email from the git hooks/post-receive script.
afif-guest pushed a commit to branch master
in repository python-pysam.
commit 3cbc6e03eafa32ac25f5d6bedd8c7019568f7d7c
Author: Afif Elghraoui <afif at ghraoui.name>
Date: Wed Jun 24 19:27:30 2015 -0700
Imported Upstream version 0.8.3+ds1
---
htslib/INSTALL | 79 -
htslib/LICENSE | 69 -
htslib/Makefile | 386 -
htslib/NEWS | 50 -
htslib/README | 5 -
htslib/bgzf.c | 1124 --
htslib/bgzip.c | 284 -
htslib/config.h | 3 -
htslib/config.mk | 72 -
htslib/config.mk.in | 72 -
htslib/configure | 4012 -------
htslib/configure.ac | 93 -
htslib/cram/cram.h | 63 -
htslib/cram/cram_codecs.c | 1846 ----
htslib/cram/cram_codecs.h | 165 -
htslib/cram/cram_decode.c | 2775 -----
htslib/cram/cram_decode.h | 112 -
htslib/cram/cram_encode.c | 3068 ------
htslib/cram/cram_encode.h | 105 -
htslib/cram/cram_index.c | 557 -
htslib/cram/cram_index.h | 98 -
htslib/cram/cram_io.c | 4202 --------
htslib/cram/cram_io.h | 596 --
htslib/cram/cram_samtools.c | 147 -
htslib/cram/cram_samtools.h | 97 -
htslib/cram/cram_stats.c | 450 -
htslib/cram/cram_stats.h | 59 -
htslib/cram/cram_structs.h | 809 --
htslib/cram/files.c | 76 -
htslib/cram/mFILE.c | 634 --
htslib/cram/mFILE.h | 88 -
htslib/cram/md5.c | 295 -
htslib/cram/md5.h | 54 -
htslib/cram/misc.h | 110 -
htslib/cram/open_trace_file.c | 351 -
htslib/cram/open_trace_file.h | 115 -
htslib/cram/os.h | 308 -
htslib/cram/pooled_alloc.c | 170 -
htslib/cram/pooled_alloc.h | 56 -
htslib/cram/rANS_byte.h | 336 -
htslib/cram/rANS_static.c | 841 --
htslib/cram/rANS_static.h | 44 -
htslib/cram/sam_header.c | 1218 ---
htslib/cram/sam_header.h | 444 -
htslib/cram/string_alloc.c | 153 -
htslib/cram/string_alloc.h | 69 -
htslib/cram/thread_pool.c | 811 --
htslib/cram/thread_pool.h | 210 -
htslib/cram/vlen.c | 432 -
htslib/cram/vlen.h | 48 -
htslib/cram/zfio.c | 185 -
htslib/cram/zfio.h | 54 -
htslib/faidx.5 | 147 -
htslib/faidx.c | 475 -
htslib/hfile.c | 547 -
htslib/hfile_internal.h | 76 -
htslib/hfile_irods.c | 243 -
htslib/hfile_net.c | 99 -
htslib/hts.c | 1665 ---
htslib/htsfile.1 | 71 -
htslib/htsfile.c | 168 -
htslib/htslib.mk | 150 -
htslib/htslib.pc.in | 10 -
htslib/htslib/bgzf.h | 315 -
htslib/htslib/faidx.h | 135 -
htslib/htslib/hfile.h | 212 -
htslib/htslib/hts.h | 456 -
htslib/htslib/hts_defs.h | 47 -
htslib/htslib/kfunc.h | 75 -
htslib/htslib/khash.h | 619 --
htslib/htslib/khash_str2int.h | 133 -
htslib/htslib/klist.h | 121 -
htslib/htslib/knetfile.h | 101 -
htslib/htslib/kseq.h | 253 -
htslib/htslib/ksort.h | 285 -
htslib/htslib/kstring.h | 270 -
htslib/htslib/regidx.h | 147 -
htslib/htslib/sam.h | 426 -
htslib/htslib/synced_bcf_reader.h | 301 -
htslib/htslib/tbx.h | 77 -
htslib/htslib/vcf.h | 883 --
htslib/htslib/vcf_sweep.h | 39 -
htslib/htslib/vcfutils.h | 112 -
htslib/htslib_vars.mk | 39 -
htslib/kfunc.c | 280 -
htslib/knetfile.c | 632 --
htslib/kstring.c | 254 -
htslib/regidx.c | 338 -
htslib/sam.5 | 68 -
htslib/sam.c | 1882 ----
htslib/synced_bcf_reader.c | 1257 ---
htslib/tabix.1 | 180 -
htslib/tabix.c | 519 -
htslib/tbx.c | 320 -
htslib/test/auxf#values.sam | 5 -
htslib/test/auxf.fa | 2 -
htslib/test/auxf.fa.fai | 1 -
htslib/test/c1#bounds.sam | 4 -
htslib/test/c1#clip.sam | 8 -
htslib/test/c1#pad1.sam | 10 -
htslib/test/c1#pad2.sam | 14 -
htslib/test/c1#pad3.sam | 14 -
htslib/test/c1.fa | 2 -
htslib/test/c1.fa.fai | 1 -
htslib/test/ce#1.sam | 2 -
htslib/test/ce#2.sam | 3 -
htslib/test/ce#5.sam | 11 -
htslib/test/ce#5b.sam | 12 -
htslib/test/ce#large_seq.sam | 3 -
htslib/test/ce#tag_depadded.sam | 11 -
htslib/test/ce#tag_padded.sam | 11 -
htslib/test/ce#unmap.sam | 6 -
htslib/test/ce#unmap1.sam | 20 -
htslib/test/ce#unmap2.sam | 29 -
htslib/test/ce.fa | 20803 ------------------------------------
htslib/test/ce.fa.fai | 7 -
htslib/test/compare_sam.pl | 172 -
htslib/test/fieldarith.c | 72 -
htslib/test/fieldarith.sam | 15 -
htslib/test/hfile.c | 204 -
htslib/test/sam.c | 187 -
htslib/test/test-regidx.c | 116 -
htslib/test/test-vcf-api.c | 282 -
htslib/test/test-vcf-api.out | 28 -
htslib/test/test-vcf-sweep.c | 112 -
htslib/test/test-vcf-sweep.out | 4 -
htslib/test/test.pl | 202 -
htslib/test/test_view.c | 239 -
htslib/test/test_view.pl | 71 -
htslib/test/xx#blank.sam | 0
htslib/test/xx#large_aux.sam | 4 -
htslib/test/xx#large_aux2.sam | 11 -
htslib/test/xx#minimal.sam | 10 -
htslib/test/xx#pair.sam | 7 -
htslib/test/xx#rg.sam | 13 -
htslib/test/xx#triplet.sam | 7 -
htslib/test/xx#unsorted.sam | 8 -
htslib/test/xx.fa | 5 -
htslib/test/xx.fa.fai | 2 -
htslib/vcf.5 | 120 -
htslib/vcf.c | 3212 ------
htslib/vcf_sweep.c | 182 -
htslib/vcfutils.c | 675 --
htslib/version.h | 1 -
144 files changed, 69867 deletions(-)
diff --git a/htslib/INSTALL b/htslib/INSTALL
deleted file mode 100644
index ba65bd3..0000000
--- a/htslib/INSTALL
+++ /dev/null
@@ -1,79 +0,0 @@
-Basic Installation
-==================
-
-To build and install HTSlib, 'cd' to the htslib-1.x directory containing
-the package's source and type the following commands:
-
- ./configure
- make
- make install
-
-The './configure' command checks your build environment and allows various
-optional functionality to be enabled (see Configuration below). If you
-don't want to select any optional functionality, you may wish to omit
-configure and just type 'make; make install' as for previous versions
-of HTSlib. However if the build fails you should run './configure' as
-it can diagnose the common reasons for build failures.
-
-The 'make' command builds the HTSlib library and and various useful
-utilities: bgzip, htsfile, and tabix. If compilation fails you should
-run './configure' as it can diagnose problems with your build environment
-that cause build failures.
-
-The 'make install' command installs the libraries, library header files,
-utilities, several manual pages, and a pkgconfig file to /usr/local.
-The installation location can be changed by configuring with --prefix=DIR
-or via 'make prefix=DIR install' (see Installation Locations below).
-
-
-Configuration
-=============
-
-By default, './configure' examines your build environment, checking for
-requirements such as the zlib development files, and arranges for a plain
-HTSlib build. The following configure options can be used to enable
-various features and specify further optional external requirements:
-
---with-irods[=DIR]
- Specifies the location of the iRODS client library to use to enable
- access to data objects stored in iRODS (<http://irods.org/>) via file
- paths like 'irods:DATAOBJ'. DIR is the base of an iRODS source tree
- such that the library is present as DIR/lib/core/obj/libRodsAPI.* and
- headers are present under DIR/lib/api/include and so on. If '=DIR' is
- omitted, $IRODS_HOME will be used as a base directory.
-
-The configure script also accepts the usual options and environment variables
-for tuning installation locations and compilers: type './configure --help'
-for details. For example,
-
- ./configure CC=icc --prefix=/opt/icc-compiled
-
-would specify that HTSlib is to be built with icc and installed into bin,
-lib, etc subdirectories under /opt/icc-compiled.
-
-
-Installation Locations
-======================
-
-By default, 'make install' installs HTSlib libraries under /usr/local/lib,
-HTSlib header files under /usr/local/include, utility programs under
-/usr/local/bin, etc. (To be precise, the header files are installed within
-a fixed 'htslib' subdirectory under the specified .../include location.)
-
-You can specify a different location to install HTSlib by configuring
-with --prefix=DIR or specify locations for particular parts of HTSlib by
-configuring with --libdir=DIR and so on. Type './configure --help' for
-the full list of such install directory options.
-
-Alternatively you can specify different locations at install time by
-typing 'make prefix=DIR install' or 'make libdir=DIR install' and so on.
-Consult the list of prefix/exec_prefix/etc variables near the top of the
-Makefile for the full list of such variables that can be overridden.
-
-You can also specify a staging area by typing 'make DESTDIR=DIR install',
-possibly in conjunction with other --prefix or prefix=DIR settings.
-For example,
-
- make DESTDIR=/tmp/staging prefix=/opt
-
-would install into bin, lib, etc subdirectories under /tmp/staging/opt.
diff --git a/htslib/LICENSE b/htslib/LICENSE
deleted file mode 100644
index 03db010..0000000
--- a/htslib/LICENSE
+++ /dev/null
@@ -1,69 +0,0 @@
-[Files in this distribution outwith the cram/ subdirectory are distributed
-according to the terms of the following MIT/Expat license.]
-
-The MIT/Expat License
-
-Copyright (C) 2012-2014 Genome Research Ltd.
-
-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.
-
-
-[Files within the cram/ subdirectory in this distribution are distributed
-according to the terms of the following Modified 3-Clause BSD license.]
-
-The Modified-BSD License
-
-Copyright (C) 2012-2014 Genome Research Ltd.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
-2. 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.
-
-3. Neither the names Genome Research Ltd and Wellcome Trust Sanger Institute
- nor the names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR ITS CONTRIBUTORS 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.
-
-
-[The use of a range of years within a copyright notice in this distribution
-should be interpreted as being equivalent to a list of years including the
-first and last year specified and all consecutive years between them.
-
-For example, a copyright notice that reads "Copyright (C) 2005, 2007-2009,
-2011-2012" should be interpreted as being identical to a notice that reads
-"Copyright (C) 2005, 2007, 2008, 2009, 2011, 2012" and a copyright notice
-that reads "Copyright (C) 2005-2012" should be interpreted as being identical
-to a notice that reads "Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
-2011, 2012".]
diff --git a/htslib/Makefile b/htslib/Makefile
deleted file mode 100644
index 5120b24..0000000
--- a/htslib/Makefile
+++ /dev/null
@@ -1,386 +0,0 @@
-# Makefile for htslib, a C library for high-throughput sequencing data formats.
-#
-# Copyright (C) 2013-2015 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-CC = gcc
-AR = ar
-RANLIB = ranlib
-
-CPPFLAGS = -I.
-# TODO: probably update cram code to make it compile cleanly with -Wc++-compat
-CFLAGS = -g -Wall -O2
-EXTRA_CFLAGS_PIC = -fpic
-LDFLAGS =
-LDLIBS =
-
-# For now these don't work too well as samtools also needs to know to
-# add -lbz2 and -llzma if linking against the static libhts.a library.
-# TODO This needs configury and adding to htslib.pc.in.
-#
-# # Bzip2 support; optionally used by CRAM.
-# HAVE_LIBBZ2 := $(shell echo -e "\#include <bzlib.h>\012int main(void){return 0;}" > .test.c && $(CC) $(CFLAGS) $(CPPFLAGS) -o .test .test.c -lbz2 2>/dev/null && echo yes)
-# ifeq "$(HAVE_LIBBZ2)" "yes"
-# CPPFLAGS += -DHAVE_LIBBZ2
-# LDLIBS += -lbz2
-# endif
-#
-# # Lzma support; optionally used by CRAM.
-# HAVE_LIBLZMA := $(shell echo -e "\#include <lzma.h>\012int main(void){return 0;}" > .test.c && $(CC) $(CFLAGS) $(CPPFLAGS) -o .test .test.c -llzma 2>/dev/null && echo yes)
-# ifeq "$(HAVE_LIBLZMA)" "yes"
-# CPPFLAGS += -DHAVE_LIBLZMA
-# LDLIBS += -llzma
-# endif
-
-prefix = /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-includedir = $(prefix)/include
-libdir = $(exec_prefix)/lib
-datarootdir = $(prefix)/share
-mandir = $(datarootdir)/man
-man1dir = $(mandir)/man1
-man5dir = $(mandir)/man5
-pkgconfigdir= $(libdir)/pkgconfig
-
-MKDIR_P = mkdir -p
-INSTALL = install -p
-INSTALL_PROGRAM = $(INSTALL)
-INSTALL_DATA = $(INSTALL) -m 644
-INSTALL_DIR = $(MKDIR_P) -m 755
-
-BUILT_PROGRAMS = \
- bgzip \
- htsfile \
- tabix
-
-BUILT_TEST_PROGRAMS = \
- test/fieldarith \
- test/hfile \
- test/sam \
- test/test-regidx \
- test/test_view \
- test/test-vcf-api \
- test/test-vcf-sweep
-
-all: lib-static lib-shared $(BUILT_PROGRAMS) $(BUILT_TEST_PROGRAMS)
-
-HTSPREFIX =
-include htslib_vars.mk
-
-lib-static: libhts.a
-
-# $(shell), :=, and ifeq/.../endif are GNU Make-specific. If you don't have
-# GNU Make, comment out the parts of this conditional that don't apply.
-PLATFORM := $(shell uname -s)
-ifeq "$(PLATFORM)" "Darwin"
-SHLIB_FLAVOUR = dylib
-lib-shared: libhts.dylib
-else
-SHLIB_FLAVOUR = so
-lib-shared: libhts.so
-endif
-
-
-PACKAGE_VERSION = 1.2.1
-LIBHTS_SOVERSION = 1
-
-
-# $(NUMERIC_VERSION) is for items that must have a numeric X.Y.Z string
-# even if this is a dirty or untagged Git working tree.
-NUMERIC_VERSION = $(PACKAGE_VERSION)
-
-# If building from a Git repository, replace $(PACKAGE_VERSION) with the Git
-# description of the working tree: either a release tag with the same value
-# as $(PACKAGE_VERSION) above, or an exact description likely based on a tag.
-# Much of this is also GNU Make-specific. If you don't have GNU Make and/or
-# are not building from a Git repository, comment out this conditional.
-ifneq "$(wildcard .git)" ""
-original_version := $(PACKAGE_VERSION)
-PACKAGE_VERSION := $(shell git describe --always --dirty)
-
-# Unless the Git description matches /\d*\.\d*(\.\d*)?/, i.e., is exactly a tag
-# with a numeric name, revert $(NUMERIC_VERSION) to the original version number
-# written above, but with the patchlevel field bumped to 255.
-ifneq "$(subst ..,.,$(subst 0,,$(subst 1,,$(subst 2,,$(subst 3,,$(subst 4,,$(subst 5,,$(subst 6,,$(subst 7,,$(subst 8,,$(subst 9,,$(PACKAGE_VERSION))))))))))))" "."
-empty :=
-NUMERIC_VERSION := $(subst $(empty) ,.,$(wordlist 1,2,$(subst ., ,$(original_version))) 255)
-endif
-
-# Force version.h to be remade if $(PACKAGE_VERSION) has changed.
-version.h: $(if $(wildcard version.h),$(if $(findstring "$(PACKAGE_VERSION)",$(shell cat version.h)),,force))
-endif
-
-version.h:
- echo '#define HTS_VERSION "$(PACKAGE_VERSION)"' > $@
-
-print-version:
- @echo $(PACKAGE_VERSION)
-
-
-.SUFFIXES: .c .o .pico
-
-.c.o:
- $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
-
-.c.pico:
- $(CC) $(CFLAGS) $(CPPFLAGS) $(EXTRA_CFLAGS_PIC) -c -o $@ $<
-
-
-LIBHTS_OBJS = \
- kfunc.o \
- knetfile.o \
- kstring.o \
- bgzf.o \
- faidx.o \
- hfile.o \
- hfile_net.o \
- hts.o \
- regidx.o \
- sam.o \
- synced_bcf_reader.o \
- vcf_sweep.o \
- tbx.o \
- vcf.o \
- vcfutils.o \
- cram/cram_codecs.o \
- cram/cram_decode.o \
- cram/cram_encode.o \
- cram/cram_index.o \
- cram/cram_io.o \
- cram/cram_samtools.o \
- cram/cram_stats.o \
- cram/files.o \
- cram/mFILE.o \
- cram/md5.o \
- cram/open_trace_file.o \
- cram/pooled_alloc.o \
- cram/rANS_static.o \
- cram/sam_header.o \
- cram/string_alloc.o \
- cram/thread_pool.o \
- cram/vlen.o \
- cram/zfio.o
-
-cram_h = cram/cram.h $(cram_samtools_h) $(cram_sam_header_h) $(cram_structs_h) $(cram_io_h) cram/cram_encode.h cram/cram_decode.h cram/cram_stats.h cram/cram_codecs.h cram/cram_index.h
-cram_io_h = cram/cram_io.h $(cram_misc_h)
-cram_misc_h = cram/misc.h cram/os.h
-cram_sam_header_h = cram/sam_header.h cram/string_alloc.h cram/pooled_alloc.h htslib/khash.h htslib/kstring.h
-cram_samtools_h = cram/cram_samtools.h $(htslib_sam_h) $(cram_sam_header_h)
-cram_structs_h = cram/cram_structs.h cram/thread_pool.h cram/string_alloc.h htslib/khash.h
-cram_open_trace_file_h = cram/open_trace_file.h cram/mFILE.h
-hfile_internal_h = hfile_internal.h $(htslib_hfile_h)
-
-
-# To be effective, config.mk needs to appear after most Makefile variables are
-# set but before most rules appear, so that it can both use previously-set
-# variables in its own rules' prerequisites and also update variables for use
-# in later rules' prerequisites.
-
-# sinclude is GNU Make-specific. If you don't have GNU Make or another make
-# that understands sinclude, change this to 'include' if you are using the
-# configure script or just comment the line out if you are not.
-sinclude config.mk
-
-
-libhts.a: $(LIBHTS_OBJS)
- @-rm -f $@
- $(AR) -rc $@ $(LIBHTS_OBJS)
- -$(RANLIB) $@
-
-
-# The target here is libhts.so, as that is the built file that other rules
-# depend upon and that is used when -lhts appears in other program's recipes.
-# As a byproduct invisible to make, libhts.so.NN is also created, as it is the
-# file used at runtime (when $LD_LIBRARY_PATH includes the build directory).
-
-libhts.so: $(LIBHTS_OBJS:.o=.pico)
- $(CC) -shared -Wl,-soname,libhts.so.$(LIBHTS_SOVERSION) -pthread $(LDFLAGS) -o $@ $(LIBHTS_OBJS:.o=.pico) $(LDLIBS) -lz -lm
- ln -sf $@ libhts.so.$(LIBHTS_SOVERSION)
-
-# Similarly this also creates libhts.NN.dylib as a byproduct, so that programs
-# when run can find this uninstalled shared library (when $DYLD_LIBRARY_PATH
-# includes this project's build directory).
-
-libhts.dylib: $(LIBHTS_OBJS)
- $(CC) -dynamiclib -install_name $(libdir)/libhts.$(LIBHTS_SOVERSION).dylib -current_version $(NUMERIC_VERSION) -compatibility_version $(LIBHTS_SOVERSION) $(LDFLAGS) -o $@ $(LIBHTS_OBJS) $(LDLIBS) -lz
- ln -sf $@ libhts.$(LIBHTS_SOVERSION).dylib
-
-
-bgzf.o bgzf.pico: bgzf.c $(htslib_hts_h) $(htslib_bgzf_h) $(htslib_hfile_h) htslib/khash.h
-kstring.o kstring.pico: kstring.c htslib/kstring.h
-knetfile.o knetfile.pico: knetfile.c htslib/knetfile.h
-hfile.o hfile.pico: hfile.c $(htslib_hfile_h) $(hfile_internal_h)
-hfile_irods.o hfile_irods.pico: hfile_irods.c $(hfile_internal_h)
-hfile_net.o hfile_net.pico: hfile_net.c $(hfile_internal_h) htslib/knetfile.h
-hts.o hts.pico: hts.c version.h $(htslib_hts_h) $(htslib_bgzf_h) $(cram_h) $(htslib_hfile_h) htslib/khash.h htslib/kseq.h htslib/ksort.h
-vcf.o vcf.pico: vcf.c $(htslib_vcf_h) $(htslib_bgzf_h) $(htslib_tbx_h) $(htslib_hfile_h) htslib/khash.h htslib/kseq.h htslib/kstring.h
-sam.o sam.pico: sam.c $(htslib_sam_h) $(htslib_bgzf_h) $(cram_h) $(htslib_hfile_h) htslib/khash.h htslib/kseq.h htslib/kstring.h
-tbx.o tbx.pico: tbx.c $(htslib_tbx_h) $(htslib_bgzf_h) htslib/khash.h
-faidx.o faidx.pico: faidx.c $(htslib_bgzf_h) $(htslib_faidx_h) $(htslib_hfile_h) htslib/khash.h
-synced_bcf_reader.o synced_bcf_reader.pico: synced_bcf_reader.c $(htslib_synced_bcf_reader_h) htslib/kseq.h htslib/khash_str2int.h
-vcf_sweep.o vcf_sweep.pico: vcf_sweep.c $(htslib_vcf_sweep_h) $(htslib_bgzf_h)
-vcfutils.o vcfutils.pico: vcfutils.c $(htslib_vcfutils_h)
-kfunc.o kfunc.pico: kfunc.c htslib/kfunc.h
-regidx.o regidx.pico: regidx.c $(htslib_hts_h) $(HTSPREFIX)htslib/kstring.h $(HTSPREFIX)htslib/kseq.h $(HTSPREFIX)htslib/khash_str2int.h $(htslib_regidx_h)
-
-cram/cram_codecs.o cram/cram_codecs.pico: cram/cram_codecs.c $(cram_h)
-cram/cram_decode.o cram/cram_decode.pico: cram/cram_decode.c $(cram_h) cram/os.h cram/md5.h
-cram/cram_encode.o cram/cram_encode.pico: cram/cram_encode.c $(cram_h) cram/os.h cram/md5.h
-cram/cram_index.o cram/cram_index.pico: cram/cram_index.c $(htslib_hfile_h) $(cram_h) cram/os.h cram/zfio.h
-cram/cram_io.o cram/cram_io.pico: cram/cram_io.c $(cram_h) cram/os.h cram/md5.h $(cram_open_trace_file_h) cram/rANS_static.h $(htslib_hfile_h)
-cram/cram_samtools.o cram/cram_samtools.pico: cram/cram_samtools.c $(cram_h) $(htslib_sam_h)
-cram/cram_stats.o cram/cram_stats.pico: cram/cram_stats.c $(cram_h) cram/os.h
-cram/files.o cram/files.pico: cram/files.c $(cram_misc_h)
-cram/mFILE.o cram/mFILE.pico: cram/mFILE.c cram/os.h cram/mFILE.h cram/vlen.h
-cram/md5.o cram/md5.pico: cram/md5.c cram/md5.h
-cram/open_trace_file.o cram/open_trace_file.pico: cram/open_trace_file.c $(cram_open_trace_file_h) $(cram_misc_h) $(htslib_hfile_h)
-cram/pooled_alloc.o cram/pooled_alloc.pico: cram/pooled_alloc.c cram/pooled_alloc.h
-cram/rANS_static.o cram/rANS_static.pico: cram/rANS_static.c cram/rANS_static.h cram/rANS_byte.h
-cram/sam_header.o cram/sam_header.pico: cram/sam_header.c $(cram_sam_header_h) cram/string_alloc.h
-cram/string_alloc.o cram/string_alloc.pico: cram/string_alloc.c cram/string_alloc.h
-cram/thread_pool.o cram/thread_pool.pico: cram/thread_pool.c cram/thread_pool.h
-cram/vlen.o cram/vlen.pico: cram/vlen.c cram/vlen.h cram/os.h
-cram/zfio.o cram/zfio.pico: cram/zfio.c cram/os.h cram/zfio.h
-
-
-bgzip: bgzip.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ bgzip.o libhts.a $(LDLIBS) -lz
-
-htsfile: htsfile.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ htsfile.o libhts.a $(LDLIBS) -lz
-
-tabix: tabix.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ tabix.o libhts.a $(LDLIBS) -lz
-
-bgzip.o: bgzip.c $(htslib_bgzf_h) $(htslib_hts_h)
-htsfile.o: htsfile.c $(htslib_hfile_h) $(htslib_hts_h) $(htslib_sam_h) $(htslib_vcf_h)
-tabix.o: tabix.c $(htslib_tbx_h) $(htslib_sam_h) $(htslib_vcf_h) htslib/kseq.h $(htslib_bgzf_h) $(htslib_hts_h)
-
-
-# For tests that might use it, set $REF_PATH explicitly to use only reference
-# areas within the test suite (or set it to ':' to use no reference areas).
-check test: $(BUILT_TEST_PROGRAMS)
- test/fieldarith test/fieldarith.sam
- test/hfile
- test/sam test/ce.fa
- test/test-regidx
- cd test && REF_PATH=: ./test_view.pl
- cd test && ./test.pl
-
-test/fieldarith: test/fieldarith.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/fieldarith.o libhts.a $(LDLIBS) -lz
-
-test/hfile: test/hfile.o libhts.a
- $(CC) $(LDFLAGS) -o $@ test/hfile.o libhts.a $(LDLIBS) -lz
-
-test/sam: test/sam.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/sam.o libhts.a $(LDLIBS) -lz
-
-test/test-regidx: test/test-regidx.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/test-regidx.o libhts.a $(LDLIBS) -lz
-
-test/test_view: test/test_view.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/test_view.o libhts.a $(LDLIBS) -lz
-
-test/test-vcf-api: test/test-vcf-api.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/test-vcf-api.o libhts.a $(LDLIBS) -lz
-
-test/test-vcf-sweep: test/test-vcf-sweep.o libhts.a
- $(CC) -pthread $(LDFLAGS) -o $@ test/test-vcf-sweep.o libhts.a $(LDLIBS) -lz
-
-test/fieldarith.o: test/fieldarith.c $(htslib_sam_h)
-test/hfile.o: test/hfile.c $(htslib_hfile_h) $(htslib_hts_defs_h)
-test/test-regidx.o: test/test-regidx.c $(htslib_regidx_h)
-test/sam.o: test/sam.c $(htslib_sam_h) $(htslib_faidx_h) htslib/kstring.h
-test/test_view.o: test/test_view.c $(cram_h) $(htslib_sam_h)
-test/test-vcf-api.o: test/test-vcf-api.c $(htslib_hts_h) $(htslib_vcf_h) htslib/kstring.h
-test/test-vcf-sweep.o: test/test-vcf-sweep.c $(htslib_vcf_sweep_h)
-
-
-install: libhts.a $(BUILT_PROGRAMS) installdirs install-$(SHLIB_FLAVOUR) install-pkgconfig
- $(INSTALL_PROGRAM) $(BUILT_PROGRAMS) $(DESTDIR)$(bindir)
- $(INSTALL_DATA) htslib/*.h $(DESTDIR)$(includedir)/htslib
- $(INSTALL_DATA) libhts.a $(DESTDIR)$(libdir)/libhts.a
- $(INSTALL_DATA) htsfile.1 tabix.1 $(DESTDIR)$(man1dir)
- $(INSTALL_DATA) faidx.5 sam.5 vcf.5 $(DESTDIR)$(man5dir)
-
-installdirs:
- $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/htslib $(DESTDIR)$(libdir) $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(pkgconfigdir)
-
-# After installation, the real file in $(libdir) will be libhts.so.X.Y.Z,
-# with symlinks libhts.so (used via -lhts during linking of client programs)
-# and libhts.so.NN (used by client executables at runtime).
-
-install-so: libhts.so installdirs
- $(INSTALL_DATA) libhts.so $(DESTDIR)$(libdir)/libhts.so.$(PACKAGE_VERSION)
- ln -sf libhts.so.$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libhts.so
- ln -sf libhts.so.$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libhts.so.$(LIBHTS_SOVERSION)
-
-install-dylib: libhts.dylib installdirs
- $(INSTALL_PROGRAM) libhts.dylib $(DESTDIR)$(libdir)/libhts.$(PACKAGE_VERSION).dylib
- ln -sf libhts.$(PACKAGE_VERSION).dylib $(DESTDIR)$(libdir)/libhts.dylib
- ln -sf libhts.$(PACKAGE_VERSION).dylib $(DESTDIR)$(libdir)/libhts.$(LIBHTS_SOVERSION).dylib
-
-# Substitute these pseudo-autoconf variables only at install time
-# so that "make install prefix=/prefix/path" etc continue to work.
-install-pkgconfig: installdirs
- sed -e 's#@includedir@#$(includedir)#g;s#@libdir@#$(libdir)#g;s#@PACKAGE_VERSION@#$(PACKAGE_VERSION)#g' htslib.pc.in > $(DESTDIR)$(pkgconfigdir)/htslib.pc
- chmod 644 $(DESTDIR)$(pkgconfigdir)/htslib.pc
-
-# A pkg-config file (suitable for copying to $PKG_CONFIG_PATH) that provides
-# flags for building against the uninstalled library in this build directory.
-htslib-uninstalled.pc: htslib.pc.in
- sed -e 's#@includedir@#'`pwd`'#g;s#@libdir@#'`pwd`'#g' htslib.pc.in > $@
-
-
-testclean:
- -rm -f test/*.tmp test/*.tmp.*
-
-mostlyclean: testclean
- -rm -f *.o *.pico cram/*.o cram/*.pico test/*.o test/*.dSYM version.h
-
-clean: mostlyclean clean-$(SHLIB_FLAVOUR)
- -rm -f libhts.a $(BUILT_PROGRAMS) $(BUILT_TEST_PROGRAMS)
-
-distclean: clean
- -rm -f config.cache config.log config.mk config.status
- -rm -f TAGS *-uninstalled.pc
-
-clean-so:
- -rm -f libhts.so libhts.so.*
-
-clean-dylib:
- -rm -f libhts.dylib libhts.*.dylib
-
-
-tags:
- ctags -f TAGS *.[ch] cram/*.[ch] htslib/*.h
-
-
-force:
-
-
-.PHONY: all check clean distclean force install install-pkgconfig installdirs
-.PHONY: lib-shared lib-static mostlyclean print-version tags test testclean
-.PHONY: clean-so install-so
-.PHONY: clean-dylib install-dylib
diff --git a/htslib/NEWS b/htslib/NEWS
deleted file mode 100644
index c135613..0000000
--- a/htslib/NEWS
+++ /dev/null
@@ -1,50 +0,0 @@
-Noteworthy changes in release 1.2.1 (3 February 2015)
-
-* Reinstated hts_file_type() and FT_* macros, which were available until 1.1
- but briefly removed in 1.2. This function is deprecated and will be removed
- in a future release -- you should use hts_detect_format() etc instead
-
-
-Noteworthy changes in release 1.2 (2 February 2015)
-
-* HTSlib now has a configure script which checks your build environment
- and allows for selection of optional extras. See INSTALL for details
-
-* By default, reference sequences are fetched from the EBI CRAM Reference
- Registry and cached in your $HOME cache directory. This behaviour can
- be controlled by setting REF_PATH and REF_CACHE enviroment variables
- (see the samtools(1) man page for details)
-
-* Numerous CRAM improvements:
- - Support for CRAM v3.0, an upcoming revision to CRAM supporting
- better compression and per-container checksums
- - EOF checking for v2.1 and v3.0 (similar to checking BAM EOF blocks)
- - Non-standard values for PNEXT and TLEN fields are now preserved
- - hts_set_fai_filename() now provides a reference file when encoding
- - Generated read names are now numbered from 1, rather than being
- labelled 'slice:record-in-slice'
- - Multi-threading and speed improvements
-
-* New htsfile command for identifying file formats, and corresponding
- file format detection APIs
-
-* New tabix --regions FILE, --targets FILE options for filtering via BED files
-
-* Optional iRODS file access, disabled by default. Configure with --with-irods
- to enable accessing iRODS data objects directly via 'irods:DATAOBJ'
-
-* All occurences of 2^29 in the source have been eliminated, so indexing
- and querying against reference sequences larger than 512Mbp works (when
- using CSI indices)
-
-* Support for plain GZIP compression in various places
-
-* VCF header editing speed improvements
-
-* Added seq_nt16_int[] (equivalent to the samtools API's bam_nt16_nt4_table)
-
-* Reinstated faidx_fetch_nseq(), which was accidentally removed from 1.1.
- Now faidx_fetch_nseq() and faidx_nseq() are equivalent; eventually
- faidx_fetch_nseq() will be deprecated and removed [#156]
-
-* Fixed bugs #141, #152, #155, #158, #159, and various memory leaks
diff --git a/htslib/README b/htslib/README
deleted file mode 100644
index 4225bec..0000000
--- a/htslib/README
+++ /dev/null
@@ -1,5 +0,0 @@
-HTSlib is an implementation of a unified C library for accessing common file
-formats, such as SAM, CRAM, VCF, and BCF, used for high-throughput sequencing
-data. It is the core library used by samtools and bcftools.
-
-See INSTALL for building and installation instructions.
diff --git a/htslib/bgzf.c b/htslib/bgzf.c
deleted file mode 100644
index 5306458..0000000
--- a/htslib/bgzf.c
+++ /dev/null
@@ -1,1124 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008 Broad Institute / Massachusetts Institute of Technology
- 2011, 2012 Attractive Chaos <attractor at live.co.uk>
- Copyright (C) 2009, 2013, 2014 Genome Research Ltd
-
- 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.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <assert.h>
-#include <pthread.h>
-#include <sys/types.h>
-#include <inttypes.h>
-
-#include "htslib/hts.h"
-#include "htslib/bgzf.h"
-#include "htslib/hfile.h"
-
-#define BGZF_CACHE
-#define BGZF_MT
-
-#define BLOCK_HEADER_LENGTH 18
-#define BLOCK_FOOTER_LENGTH 8
-
-
-/* BGZF/GZIP header (speciallized from RFC 1952; little endian):
- +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
- | 31|139| 8| 4| 0| 0|255| 6| 66| 67| 2|BLK_LEN|
- +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
- BGZF extension:
- ^ ^ ^ ^
- | | | |
- FLG.EXTRA XLEN B C
-
- BGZF format is compatible with GZIP. It limits the size of each compressed
- block to 2^16 bytes and adds and an extra "BC" field in the gzip header which
- records the size.
-
-*/
-static const uint8_t g_magic[19] = "\037\213\010\4\0\0\0\0\0\377\6\0\102\103\2\0\0\0";
-
-#ifdef BGZF_CACHE
-typedef struct {
- int size;
- uint8_t *block;
- int64_t end_offset;
-} cache_t;
-#include "htslib/khash.h"
-KHASH_MAP_INIT_INT64(cache, cache_t)
-#endif
-
-typedef struct
-{
- uint64_t uaddr; // offset w.r.t. uncompressed data
- uint64_t caddr; // offset w.r.t. compressed data
-}
-bgzidx1_t;
-
-struct __bgzidx_t
-{
- int noffs, moffs; // the size of the index, n:used, m:allocated
- bgzidx1_t *offs; // offsets
- uint64_t ublock_addr; // offset of the current block (uncompressed data)
-};
-
-void bgzf_index_destroy(BGZF *fp);
-int bgzf_index_add_block(BGZF *fp);
-
-static inline void packInt16(uint8_t *buffer, uint16_t value)
-{
- buffer[0] = value;
- buffer[1] = value >> 8;
-}
-
-static inline int unpackInt16(const uint8_t *buffer)
-{
- return buffer[0] | buffer[1] << 8;
-}
-
-static inline void packInt32(uint8_t *buffer, uint32_t value)
-{
- buffer[0] = value;
- buffer[1] = value >> 8;
- buffer[2] = value >> 16;
- buffer[3] = value >> 24;
-}
-
-static BGZF *bgzf_read_init(hFILE *hfpr)
-{
- BGZF *fp;
- uint8_t magic[18];
- ssize_t n = hpeek(hfpr, magic, 18);
- if (n < 0) return NULL;
-
- fp = (BGZF*)calloc(1, sizeof(BGZF));
- if (fp == NULL) return NULL;
-
- fp->is_write = 0;
- fp->is_compressed = (n==2 && magic[0]==0x1f && magic[1]==0x8b);
- fp->uncompressed_block = malloc(BGZF_MAX_BLOCK_SIZE);
- fp->compressed_block = malloc(BGZF_MAX_BLOCK_SIZE);
- fp->is_compressed = (n==18 && magic[0]==0x1f && magic[1]==0x8b) ? 1 : 0;
- fp->is_gzip = ( !fp->is_compressed || ((magic[3]&4) && memcmp(&magic[12], "BC\2\0",4)==0) ) ? 0 : 1;
-#ifdef BGZF_CACHE
- fp->cache = kh_init(cache);
-#endif
- return fp;
-}
-
-// get the compress level from the mode string: compress_level==-1 for the default level, -2 plain uncompressed
-static int mode2level(const char *__restrict mode)
-{
- int i, compress_level = -1;
- for (i = 0; mode[i]; ++i)
- if (mode[i] >= '0' && mode[i] <= '9') break;
- if (mode[i]) compress_level = (int)mode[i] - '0';
- if (strchr(mode, 'u')) compress_level = -2;
- return compress_level;
-}
-static BGZF *bgzf_write_init(const char *mode)
-{
- BGZF *fp;
- fp = (BGZF*)calloc(1, sizeof(BGZF));
- fp->is_write = 1;
- int compress_level = mode2level(mode);
- if ( compress_level==-2 )
- {
- fp->is_compressed = 0;
- return fp;
- }
- fp->is_compressed = 1;
- fp->uncompressed_block = malloc(BGZF_MAX_BLOCK_SIZE);
- fp->compressed_block = malloc(BGZF_MAX_BLOCK_SIZE);
- fp->compress_level = compress_level < 0? Z_DEFAULT_COMPRESSION : compress_level; // Z_DEFAULT_COMPRESSION==-1
- if (fp->compress_level > 9) fp->compress_level = Z_DEFAULT_COMPRESSION;
- if ( strchr(mode,'g') )
- {
- // gzip output
- fp->is_gzip = 1;
- fp->gz_stream = (z_stream*)calloc(1,sizeof(z_stream));
- fp->gz_stream->zalloc = NULL;
- fp->gz_stream->zfree = NULL;
- if ( deflateInit2(fp->gz_stream, fp->compress_level, Z_DEFLATED, 15|16, 8, Z_DEFAULT_STRATEGY)!=Z_OK ) return NULL;
- }
- return fp;
-}
-
-BGZF *bgzf_open(const char *path, const char *mode)
-{
- BGZF *fp = 0;
- assert(compressBound(BGZF_BLOCK_SIZE) < BGZF_MAX_BLOCK_SIZE);
- if (strchr(mode, 'r')) {
- hFILE *fpr;
- if ((fpr = hopen(path, mode)) == 0) return 0;
- fp = bgzf_read_init(fpr);
- if (fp == 0) { hclose_abruptly(fpr); return NULL; }
- fp->fp = fpr;
- } else if (strchr(mode, 'w') || strchr(mode, 'a')) {
- hFILE *fpw;
- if ((fpw = hopen(path, mode)) == 0) return 0;
- fp = bgzf_write_init(mode);
- fp->fp = fpw;
- }
- else { errno = EINVAL; return 0; }
-
- fp->is_be = ed_is_big();
- return fp;
-}
-
-BGZF *bgzf_dopen(int fd, const char *mode)
-{
- BGZF *fp = 0;
- assert(compressBound(BGZF_BLOCK_SIZE) < BGZF_MAX_BLOCK_SIZE);
- if (strchr(mode, 'r')) {
- hFILE *fpr;
- if ((fpr = hdopen(fd, mode)) == 0) return 0;
- fp = bgzf_read_init(fpr);
- if (fp == 0) { hclose_abruptly(fpr); return NULL; } // FIXME this closes fd
- fp->fp = fpr;
- } else if (strchr(mode, 'w') || strchr(mode, 'a')) {
- hFILE *fpw;
- if ((fpw = hdopen(fd, mode)) == 0) return 0;
- fp = bgzf_write_init(mode);
- fp->fp = fpw;
- }
- else { errno = EINVAL; return 0; }
-
- fp->is_be = ed_is_big();
- return fp;
-}
-
-BGZF *bgzf_hopen(hFILE *hfp, const char *mode)
-{
- BGZF *fp = NULL;
- assert(compressBound(BGZF_BLOCK_SIZE) < BGZF_MAX_BLOCK_SIZE);
- if (strchr(mode, 'r')) {
- fp = bgzf_read_init(hfp);
- if (fp == NULL) return NULL;
- } else if (strchr(mode, 'w') || strchr(mode, 'a')) {
- fp = bgzf_write_init(mode);
- }
- else { errno = EINVAL; return 0; }
-
- fp->fp = hfp;
- fp->is_be = ed_is_big();
- return fp;
-}
-
-static int bgzf_compress(void *_dst, int *dlen, void *src, int slen, int level)
-{
- uint32_t crc;
- z_stream zs;
- uint8_t *dst = (uint8_t*)_dst;
-
- // compress the body
- zs.zalloc = NULL; zs.zfree = NULL;
- zs.next_in = (Bytef*)src;
- zs.avail_in = slen;
- zs.next_out = dst + BLOCK_HEADER_LENGTH;
- zs.avail_out = *dlen - BLOCK_HEADER_LENGTH - BLOCK_FOOTER_LENGTH;
- if (deflateInit2(&zs, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK) return -1; // -15 to disable zlib header/footer
- if (deflate(&zs, Z_FINISH) != Z_STREAM_END) return -1;
- if (deflateEnd(&zs) != Z_OK) return -1;
- *dlen = zs.total_out + BLOCK_HEADER_LENGTH + BLOCK_FOOTER_LENGTH;
- // write the header
- memcpy(dst, g_magic, BLOCK_HEADER_LENGTH); // the last two bytes are a place holder for the length of the block
- packInt16(&dst[16], *dlen - 1); // write the compressed length; -1 to fit 2 bytes
- // write the footer
- crc = crc32(crc32(0L, NULL, 0L), (Bytef*)src, slen);
- packInt32((uint8_t*)&dst[*dlen - 8], crc);
- packInt32((uint8_t*)&dst[*dlen - 4], slen);
- return 0;
-}
-
-static int bgzf_gzip_compress(BGZF *fp, void *_dst, int *dlen, void *src, int slen, int level)
-{
- uint8_t *dst = (uint8_t*)_dst;
- z_stream *zs = fp->gz_stream;
- int flush = slen ? Z_NO_FLUSH : Z_FINISH;
- zs->next_in = (Bytef*)src;
- zs->avail_in = slen;
- zs->next_out = dst;
- zs->avail_out = *dlen;
- if ( deflate(zs, flush) == Z_STREAM_ERROR ) return -1;
- *dlen = *dlen - zs->avail_out;
- return 0;
-}
-
-// Deflate the block in fp->uncompressed_block into fp->compressed_block. Also adds an extra field that stores the compressed block length.
-static int deflate_block(BGZF *fp, int block_length)
-{
- int comp_size = BGZF_MAX_BLOCK_SIZE;
- int ret;
- if ( !fp->is_gzip )
- ret = bgzf_compress(fp->compressed_block, &comp_size, fp->uncompressed_block, block_length, fp->compress_level);
- else
- ret = bgzf_gzip_compress(fp, fp->compressed_block, &comp_size, fp->uncompressed_block, block_length, fp->compress_level);
-
- if ( ret != 0 )
- {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- fp->block_offset = 0;
- return comp_size;
-}
-
-// Inflate the block in fp->compressed_block into fp->uncompressed_block
-static int inflate_block(BGZF* fp, int block_length)
-{
- z_stream zs;
- zs.zalloc = NULL;
- zs.zfree = NULL;
- zs.next_in = (Bytef*)fp->compressed_block + 18;
- zs.avail_in = block_length - 16;
- zs.next_out = (Bytef*)fp->uncompressed_block;
- zs.avail_out = BGZF_MAX_BLOCK_SIZE;
-
- if (inflateInit2(&zs, -15) != Z_OK) {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- if (inflate(&zs, Z_FINISH) != Z_STREAM_END) {
- inflateEnd(&zs);
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- if (inflateEnd(&zs) != Z_OK) {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- return zs.total_out;
-}
-
-static int inflate_gzip_block(BGZF *fp, int cached)
-{
- int ret = Z_OK;
- do
- {
- if ( !cached && fp->gz_stream->avail_out!=0 )
- {
- fp->gz_stream->avail_in = hread(fp->fp, fp->compressed_block, BGZF_BLOCK_SIZE);
- if ( fp->gz_stream->avail_in<=0 ) return fp->gz_stream->avail_in;
- if ( fp->gz_stream->avail_in==0 ) break;
- fp->gz_stream->next_in = fp->compressed_block;
- }
- else cached = 0;
- do
- {
- fp->gz_stream->next_out = (Bytef*)fp->uncompressed_block + fp->block_offset;
- fp->gz_stream->avail_out = BGZF_MAX_BLOCK_SIZE - fp->block_offset;
- ret = inflate(fp->gz_stream, Z_NO_FLUSH);
- if ( ret==Z_BUF_ERROR ) continue; // non-critical error
- if ( ret<0 ) return -1;
- unsigned int have = BGZF_MAX_BLOCK_SIZE - fp->gz_stream->avail_out;
- if ( have ) return have;
- }
- while ( fp->gz_stream->avail_out == 0 );
- }
- while (ret != Z_STREAM_END);
- return BGZF_MAX_BLOCK_SIZE - fp->gz_stream->avail_out;
-}
-
-// Returns: 0 on success (BGZF header); -1 on non-BGZF GZIP header; -2 on error
-static int check_header(const uint8_t *header)
-{
- if ( header[0] != 31 || header[1] != 139 || header[2] != 8 ) return -2;
- return ((header[3] & 4) != 0
- && unpackInt16((uint8_t*)&header[10]) == 6
- && header[12] == 'B' && header[13] == 'C'
- && unpackInt16((uint8_t*)&header[14]) == 2) ? 0 : -1;
-}
-
-#ifdef BGZF_CACHE
-static void free_cache(BGZF *fp)
-{
- khint_t k;
- khash_t(cache) *h = (khash_t(cache)*)fp->cache;
- if (fp->is_write) return;
- for (k = kh_begin(h); k < kh_end(h); ++k)
- if (kh_exist(h, k)) free(kh_val(h, k).block);
- kh_destroy(cache, h);
-}
-
-static int load_block_from_cache(BGZF *fp, int64_t block_address)
-{
- khint_t k;
- cache_t *p;
- khash_t(cache) *h = (khash_t(cache)*)fp->cache;
- k = kh_get(cache, h, block_address);
- if (k == kh_end(h)) return 0;
- p = &kh_val(h, k);
- if (fp->block_length != 0) fp->block_offset = 0;
- fp->block_address = block_address;
- fp->block_length = p->size;
- memcpy(fp->uncompressed_block, p->block, BGZF_MAX_BLOCK_SIZE);
- if ( hseek(fp->fp, p->end_offset, SEEK_SET) < 0 )
- {
- // todo: move the error up
- fprintf(stderr,"Could not hseek to %"PRId64"\n", p->end_offset);
- exit(1);
- }
- return p->size;
-}
-
-static void cache_block(BGZF *fp, int size)
-{
- int ret;
- khint_t k;
- cache_t *p;
- khash_t(cache) *h = (khash_t(cache)*)fp->cache;
- if (BGZF_MAX_BLOCK_SIZE >= fp->cache_size) return;
- if ((kh_size(h) + 1) * BGZF_MAX_BLOCK_SIZE > (uint32_t)fp->cache_size) {
- /* A better way would be to remove the oldest block in the
- * cache, but here we remove a random one for simplicity. This
- * should not have a big impact on performance. */
- for (k = kh_begin(h); k < kh_end(h); ++k)
- if (kh_exist(h, k)) break;
- if (k < kh_end(h)) {
- free(kh_val(h, k).block);
- kh_del(cache, h, k);
- }
- }
- k = kh_put(cache, h, fp->block_address, &ret);
- if (ret == 0) return; // if this happens, a bug!
- p = &kh_val(h, k);
- p->size = fp->block_length;
- p->end_offset = fp->block_address + size;
- p->block = (uint8_t*)malloc(BGZF_MAX_BLOCK_SIZE);
- memcpy(kh_val(h, k).block, fp->uncompressed_block, BGZF_MAX_BLOCK_SIZE);
-}
-#else
-static void free_cache(BGZF *fp) {}
-static int load_block_from_cache(BGZF *fp, int64_t block_address) {return 0;}
-static void cache_block(BGZF *fp, int size) {}
-#endif
-
-int bgzf_read_block(BGZF *fp)
-{
- uint8_t header[BLOCK_HEADER_LENGTH], *compressed_block;
- int count, size = 0, block_length, remaining;
-
- // Reading an uncompressed file
- if ( !fp->is_compressed )
- {
- count = hread(fp->fp, fp->uncompressed_block, BGZF_MAX_BLOCK_SIZE);
- if ( count==0 )
- {
- fp->block_length = 0;
- return 0;
- }
- if (fp->block_length != 0) fp->block_offset = 0;
- fp->block_address += count;
- fp->block_length = count;
- return 0;
- }
-
- // Reading compressed file
- int64_t block_address;
- block_address = htell(fp->fp);
- if ( fp->is_gzip && fp->gz_stream ) // is this is a initialized gzip stream?
- {
- count = inflate_gzip_block(fp, 0);
- if ( count<0 )
- {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- fp->block_length = count;
- fp->block_address = block_address;
- return 0;
- }
- if (fp->cache_size && load_block_from_cache(fp, block_address)) return 0;
- count = hread(fp->fp, header, sizeof(header));
- if (count == 0) { // no data read
- fp->block_length = 0;
- return 0;
- }
- int ret;
- if ( count != sizeof(header) || (ret=check_header(header))==-2 )
- {
- fp->errcode |= BGZF_ERR_HEADER;
- return -1;
- }
- if ( ret==-1 )
- {
- // GZIP, not BGZF
- uint8_t *cblock = (uint8_t*)fp->compressed_block;
- memcpy(cblock, header, sizeof(header));
- count = hread(fp->fp, cblock+sizeof(header), BGZF_BLOCK_SIZE - sizeof(header)) + sizeof(header);
- int nskip = 10;
-
- // Check optional fields to skip: FLG.FNAME,FLG.FCOMMENT,FLG.FHCRC,FLG.FEXTRA
- // Note: Some of these fields are untested, I did not have appropriate data available
- if ( header[3] & 0x4 ) // FLG.FEXTRA
- {
- nskip += unpackInt16(&cblock[nskip]) + 2;
- }
- if ( header[3] & 0x8 ) // FLG.FNAME
- {
- while ( nskip<BGZF_BLOCK_SIZE && cblock[nskip] ) nskip++;
- if ( nskip==BGZF_BLOCK_SIZE )
- {
- fp->errcode |= BGZF_ERR_HEADER;
- return -1;
- }
- nskip++;
- }
- if ( header[3] & 0x10 ) // FLG.FCOMMENT
- {
- while ( nskip<BGZF_BLOCK_SIZE && cblock[nskip] ) nskip++;
- if ( nskip==BGZF_BLOCK_SIZE )
- {
- fp->errcode |= BGZF_ERR_HEADER;
- return -1;
- }
- nskip++;
- }
- if ( header[3] & 0x2 ) nskip += 2; // FLG.FHCRC
-
- fp->is_gzip = 1;
- fp->gz_stream = (z_stream*) calloc(1,sizeof(z_stream));
- int ret = inflateInit2(fp->gz_stream, -15);
- if (ret != Z_OK)
- {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- fp->gz_stream->avail_in = count - nskip;
- fp->gz_stream->next_in = cblock + nskip;
- count = inflate_gzip_block(fp, 1);
- if ( count<0 )
- {
- fp->errcode |= BGZF_ERR_ZLIB;
- return -1;
- }
- fp->block_length = count;
- fp->block_address = block_address;
- if ( fp->idx_build_otf ) return -1; // cannot build index for gzip
- return 0;
- }
- size = count;
- block_length = unpackInt16((uint8_t*)&header[16]) + 1; // +1 because when writing this number, we used "-1"
- compressed_block = (uint8_t*)fp->compressed_block;
- memcpy(compressed_block, header, BLOCK_HEADER_LENGTH);
- remaining = block_length - BLOCK_HEADER_LENGTH;
- count = hread(fp->fp, &compressed_block[BLOCK_HEADER_LENGTH], remaining);
- if (count != remaining) {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
- size += count;
- if ((count = inflate_block(fp, block_length)) < 0) return -1;
- if (fp->block_length != 0) fp->block_offset = 0; // Do not reset offset if this read follows a seek.
- fp->block_address = block_address;
- fp->block_length = count;
- if ( fp->idx_build_otf )
- {
- bgzf_index_add_block(fp);
- fp->idx->ublock_addr += count;
- }
- cache_block(fp, size);
- return 0;
-}
-
-ssize_t bgzf_read(BGZF *fp, void *data, size_t length)
-{
- ssize_t bytes_read = 0;
- uint8_t *output = (uint8_t*)data;
- if (length <= 0) return 0;
- assert(fp->is_write == 0);
- while (bytes_read < length) {
- int copy_length, available = fp->block_length - fp->block_offset;
- uint8_t *buffer;
- if (available <= 0) {
- if (bgzf_read_block(fp) != 0) return -1;
- available = fp->block_length - fp->block_offset;
- if (available <= 0) break;
- }
- copy_length = length - bytes_read < available? length - bytes_read : available;
- buffer = (uint8_t*)fp->uncompressed_block;
- memcpy(output, buffer + fp->block_offset, copy_length);
- fp->block_offset += copy_length;
- output += copy_length;
- bytes_read += copy_length;
- }
- if (fp->block_offset == fp->block_length) {
- fp->block_address = htell(fp->fp);
- fp->block_offset = fp->block_length = 0;
- }
- fp->uncompressed_address += bytes_read;
- return bytes_read;
-}
-
-ssize_t bgzf_raw_read(BGZF *fp, void *data, size_t length)
-{
- return hread(fp->fp, data, length);
-}
-
-#ifdef BGZF_MT
-
-typedef struct {
- struct bgzf_mtaux_t *mt;
- void *buf;
- int i, errcode, toproc, compress_level;
-} worker_t;
-
-typedef struct bgzf_mtaux_t {
- int n_threads, n_blks, curr, done;
- volatile int proc_cnt;
- void **blk;
- int *len;
- worker_t *w;
- pthread_t *tid;
- pthread_mutex_t lock;
- pthread_cond_t cv;
-} mtaux_t;
-
-static int worker_aux(worker_t *w)
-{
- int i, stop = 0;
- // wait for condition: to process or all done
- pthread_mutex_lock(&w->mt->lock);
- while (!w->toproc && !w->mt->done)
- pthread_cond_wait(&w->mt->cv, &w->mt->lock);
- if (w->mt->done) stop = 1;
- w->toproc = 0;
- pthread_mutex_unlock(&w->mt->lock);
- if (stop) return 1; // to quit the thread
- w->errcode = 0;
- for (i = w->i; i < w->mt->curr; i += w->mt->n_threads) {
- int clen = BGZF_MAX_BLOCK_SIZE;
- if (bgzf_compress(w->buf, &clen, w->mt->blk[i], w->mt->len[i], w->compress_level) != 0)
- w->errcode |= BGZF_ERR_ZLIB;
- memcpy(w->mt->blk[i], w->buf, clen);
- w->mt->len[i] = clen;
- }
- __sync_fetch_and_add(&w->mt->proc_cnt, 1);
- return 0;
-}
-
-static void *mt_worker(void *data)
-{
- while (worker_aux((worker_t*)data) == 0);
- return 0;
-}
-
-int bgzf_mt(BGZF *fp, int n_threads, int n_sub_blks)
-{
- int i;
- mtaux_t *mt;
- pthread_attr_t attr;
- if (!fp->is_write || fp->mt || n_threads <= 1) return -1;
- mt = (mtaux_t*)calloc(1, sizeof(mtaux_t));
- mt->n_threads = n_threads;
- mt->n_blks = n_threads * n_sub_blks;
- mt->len = (int*)calloc(mt->n_blks, sizeof(int));
- mt->blk = (void**)calloc(mt->n_blks, sizeof(void*));
- for (i = 0; i < mt->n_blks; ++i)
- mt->blk[i] = malloc(BGZF_MAX_BLOCK_SIZE);
- mt->tid = (pthread_t*)calloc(mt->n_threads, sizeof(pthread_t)); // tid[0] is not used, as the worker 0 is launched by the master
- mt->w = (worker_t*)calloc(mt->n_threads, sizeof(worker_t));
- for (i = 0; i < mt->n_threads; ++i) {
- mt->w[i].i = i;
- mt->w[i].mt = mt;
- mt->w[i].compress_level = fp->compress_level;
- mt->w[i].buf = malloc(BGZF_MAX_BLOCK_SIZE);
- }
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
- pthread_mutex_init(&mt->lock, 0);
- pthread_cond_init(&mt->cv, 0);
- for (i = 1; i < mt->n_threads; ++i) // worker 0 is effectively launched by the master thread
- pthread_create(&mt->tid[i], &attr, mt_worker, &mt->w[i]);
- fp->mt = mt;
- return 0;
-}
-
-static void mt_destroy(mtaux_t *mt)
-{
- int i;
- // signal all workers to quit
- pthread_mutex_lock(&mt->lock);
- mt->done = 1; mt->proc_cnt = 0;
- pthread_cond_broadcast(&mt->cv);
- pthread_mutex_unlock(&mt->lock);
- for (i = 1; i < mt->n_threads; ++i) pthread_join(mt->tid[i], 0); // worker 0 is effectively launched by the master thread
- // free other data allocated on heap
- for (i = 0; i < mt->n_blks; ++i) free(mt->blk[i]);
- for (i = 0; i < mt->n_threads; ++i) free(mt->w[i].buf);
- free(mt->blk); free(mt->len); free(mt->w); free(mt->tid);
- pthread_cond_destroy(&mt->cv);
- pthread_mutex_destroy(&mt->lock);
- free(mt);
-}
-
-static void mt_queue(BGZF *fp)
-{
- mtaux_t *mt = fp->mt;
- assert(mt->curr < mt->n_blks); // guaranteed by the caller
- memcpy(mt->blk[mt->curr], fp->uncompressed_block, fp->block_offset);
- mt->len[mt->curr] = fp->block_offset;
- fp->block_offset = 0;
- ++mt->curr;
-}
-
-static int mt_flush_queue(BGZF *fp)
-{
- int i;
- mtaux_t *mt = fp->mt;
- // signal all the workers to compress
- pthread_mutex_lock(&mt->lock);
- for (i = 0; i < mt->n_threads; ++i) mt->w[i].toproc = 1;
- mt->proc_cnt = 0;
- pthread_cond_broadcast(&mt->cv);
- pthread_mutex_unlock(&mt->lock);
- // worker 0 is doing things here
- worker_aux(&mt->w[0]);
- // wait for all the threads to complete
- while (mt->proc_cnt < mt->n_threads);
- // dump data to disk
- for (i = 0; i < mt->n_threads; ++i) fp->errcode |= mt->w[i].errcode;
- for (i = 0; i < mt->curr; ++i)
- if (hwrite(fp->fp, mt->blk[i], mt->len[i]) != mt->len[i]) {
- fp->errcode |= BGZF_ERR_IO;
- break;
- }
- mt->curr = 0;
- return (fp->errcode == 0)? 0 : -1;
-}
-
-static int lazy_flush(BGZF *fp)
-{
- if (fp->mt) {
- if (fp->block_offset) mt_queue(fp);
- return (fp->mt->curr < fp->mt->n_blks)? 0 : mt_flush_queue(fp);
- }
- else return bgzf_flush(fp);
-}
-
-#else // ~ #ifdef BGZF_MT
-
-int bgzf_mt(BGZF *fp, int n_threads, int n_sub_blks)
-{
- return 0;
-}
-
-static inline int lazy_flush(BGZF *fp)
-{
- return bgzf_flush(fp);
-}
-
-#endif // ~ #ifdef BGZF_MT
-
-int bgzf_flush(BGZF *fp)
-{
- if (!fp->is_write) return 0;
-#ifdef BGZF_MT
- if (fp->mt) {
- if (fp->block_offset) mt_queue(fp); // guaranteed that assertion does not fail
- return mt_flush_queue(fp);
- }
-#endif
- while (fp->block_offset > 0) {
- if ( fp->idx_build_otf )
- {
- bgzf_index_add_block(fp);
- fp->idx->ublock_addr += fp->block_offset;
- }
- int block_length = deflate_block(fp, fp->block_offset);
- if (block_length < 0) return -1;
- if (hwrite(fp->fp, fp->compressed_block, block_length) != block_length) {
- fp->errcode |= BGZF_ERR_IO; // possibly truncated file
- return -1;
- }
- fp->block_address += block_length;
- }
- return 0;
-}
-
-int bgzf_flush_try(BGZF *fp, ssize_t size)
-{
- if (fp->block_offset + size > BGZF_BLOCK_SIZE) return lazy_flush(fp);
- return 0;
-}
-
-ssize_t bgzf_write(BGZF *fp, const void *data, size_t length)
-{
- if ( !fp->is_compressed )
- return hwrite(fp->fp, data, length);
-
- const uint8_t *input = (const uint8_t*)data;
- ssize_t remaining = length;
- assert(fp->is_write);
- while (remaining > 0) {
- uint8_t* buffer = (uint8_t*)fp->uncompressed_block;
- int copy_length = BGZF_BLOCK_SIZE - fp->block_offset;
- if (copy_length > remaining) copy_length = remaining;
- memcpy(buffer + fp->block_offset, input, copy_length);
- fp->block_offset += copy_length;
- input += copy_length;
- remaining -= copy_length;
- if (fp->block_offset == BGZF_BLOCK_SIZE) {
- if (lazy_flush(fp) != 0) return -1;
- }
- }
- return length - remaining;
-}
-
-ssize_t bgzf_raw_write(BGZF *fp, const void *data, size_t length)
-{
- return hwrite(fp->fp, data, length);
-}
-
-int bgzf_close(BGZF* fp)
-{
- int ret, block_length;
- if (fp == 0) return -1;
- if (fp->is_write && fp->is_compressed) {
- if (bgzf_flush(fp) != 0) return -1;
- fp->compress_level = -1;
- block_length = deflate_block(fp, 0); // write an empty block
- if (hwrite(fp->fp, fp->compressed_block, block_length) < 0
- || hflush(fp->fp) != 0) {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
-#ifdef BGZF_MT
- if (fp->mt) mt_destroy(fp->mt);
-#endif
- }
- if ( fp->is_gzip )
- {
- if (!fp->is_write) (void)inflateEnd(fp->gz_stream);
- else (void)deflateEnd(fp->gz_stream);
- free(fp->gz_stream);
- }
- ret = hclose(fp->fp);
- if (ret != 0) return -1;
- bgzf_index_destroy(fp);
- free(fp->uncompressed_block);
- free(fp->compressed_block);
- free_cache(fp);
- free(fp);
- return 0;
-}
-
-void bgzf_set_cache_size(BGZF *fp, int cache_size)
-{
- if (fp) fp->cache_size = cache_size;
-}
-
-int bgzf_check_EOF(BGZF *fp)
-{
- uint8_t buf[28];
- off_t offset = htell(fp->fp);
- if (hseek(fp->fp, -28, SEEK_END) < 0) {
- if (errno == ESPIPE) { hclearerr(fp->fp); return 2; }
- else return -1;
- }
- if ( hread(fp->fp, buf, 28) != 28 ) return -1;
- if ( hseek(fp->fp, offset, SEEK_SET) < 0 ) return -1;
- return (memcmp("\037\213\010\4\0\0\0\0\0\377\6\0\102\103\2\0\033\0\3\0\0\0\0\0\0\0\0\0", buf, 28) == 0)? 1 : 0;
-}
-
-int64_t bgzf_seek(BGZF* fp, int64_t pos, int where)
-{
- int block_offset;
- int64_t block_address;
-
- if (fp->is_write || where != SEEK_SET) {
- fp->errcode |= BGZF_ERR_MISUSE;
- return -1;
- }
- block_offset = pos & 0xFFFF;
- block_address = pos >> 16;
- if (hseek(fp->fp, block_address, SEEK_SET) < 0) {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
- fp->block_length = 0; // indicates current block has not been loaded
- fp->block_address = block_address;
- fp->block_offset = block_offset;
- return 0;
-}
-
-int bgzf_is_bgzf(const char *fn)
-{
- uint8_t buf[16];
- int n;
- hFILE *fp;
- if ((fp = hopen(fn, "r")) == 0) return 0;
- n = hread(fp, buf, 16);
- if ( hclose(fp) < 0 ) return -1;
- if (n != 16) return 0;
- return memcmp(g_magic, buf, 16) == 0? 1 : 0;
-}
-
-int bgzf_getc(BGZF *fp)
-{
- int c;
- if (fp->block_offset >= fp->block_length) {
- if (bgzf_read_block(fp) != 0) return -2; /* error */
- if (fp->block_length == 0) return -1; /* end-of-file */
- }
- c = ((unsigned char*)fp->uncompressed_block)[fp->block_offset++];
- if (fp->block_offset == fp->block_length) {
- fp->block_address = htell(fp->fp);
- fp->block_offset = 0;
- fp->block_length = 0;
- }
- fp->uncompressed_address++;
- return c;
-}
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-int bgzf_getline(BGZF *fp, int delim, kstring_t *str)
-{
- int l, state = 0;
- unsigned char *buf = (unsigned char*)fp->uncompressed_block;
- str->l = 0;
- do {
- if (fp->block_offset >= fp->block_length) {
- if (bgzf_read_block(fp) != 0) { state = -2; break; }
- if (fp->block_length == 0) { state = -1; break; }
- }
- for (l = fp->block_offset; l < fp->block_length && buf[l] != delim; ++l);
- if (l < fp->block_length) state = 1;
- l -= fp->block_offset;
- if (str->l + l + 1 >= str->m) {
- str->m = str->l + l + 2;
- kroundup32(str->m);
- str->s = (char*)realloc(str->s, str->m);
- }
- memcpy(str->s + str->l, buf + fp->block_offset, l);
- str->l += l;
- fp->block_offset += l + 1;
- if (fp->block_offset >= fp->block_length) {
- fp->block_address = htell(fp->fp);
- fp->block_offset = 0;
- fp->block_length = 0;
- }
- } while (state == 0);
- if (str->l == 0 && state < 0) return state;
- fp->uncompressed_address += str->l;
- if ( delim=='\n' && str->l>0 && str->s[str->l-1]=='\r' ) str->l--;
- str->s[str->l] = 0;
- return str->l;
-}
-
-void bgzf_index_destroy(BGZF *fp)
-{
- if ( !fp->idx ) return;
- free(fp->idx->offs);
- free(fp->idx);
- fp->idx = NULL;
- fp->idx_build_otf = 0;
-}
-
-int bgzf_index_build_init(BGZF *fp)
-{
- bgzf_index_destroy(fp);
- fp->idx = (bgzidx_t*) calloc(1,sizeof(bgzidx_t));
- if ( !fp->idx ) return -1;
- fp->idx_build_otf = 1; // build index on the fly
- return 0;
-}
-
-int bgzf_index_add_block(BGZF *fp)
-{
- fp->idx->noffs++;
- if ( fp->idx->noffs > fp->idx->moffs )
- {
- fp->idx->moffs = fp->idx->noffs;
- kroundup32(fp->idx->moffs);
- fp->idx->offs = (bgzidx1_t*) realloc(fp->idx->offs, fp->idx->moffs*sizeof(bgzidx1_t));
- if ( !fp->idx->offs ) return -1;
- }
- fp->idx->offs[ fp->idx->noffs-1 ].uaddr = fp->idx->ublock_addr;
- fp->idx->offs[ fp->idx->noffs-1 ].caddr = fp->block_address;
- return 0;
-}
-
-int bgzf_index_dump(BGZF *fp, const char *bname, const char *suffix)
-{
- if (bgzf_flush(fp) != 0) return -1;
-
- assert(fp->idx);
- char *tmp = NULL;
- if ( suffix )
- {
- int blen = strlen(bname);
- int slen = strlen(suffix);
- tmp = (char*) malloc(blen + slen + 1);
- if ( !tmp ) return -1;
- memcpy(tmp,bname,blen);
- memcpy(tmp+blen,suffix,slen+1);
- }
-
- FILE *idx = fopen(tmp?tmp:bname,"wb");
- if ( tmp ) free(tmp);
- if ( !idx ) return -1;
-
- // Note that the index contains one extra record when indexing files opened
- // for reading. The terminating record is not present when opened for writing.
- // This is not a bug.
-
- int i;
- if ( fp->is_be )
- {
- uint64_t x = fp->idx->noffs - 1;
- fwrite(ed_swap_8p(&x), 1, sizeof(x), idx);
- for (i=1; i<fp->idx->noffs; i++)
- {
- x = fp->idx->offs[i].caddr; fwrite(ed_swap_8p(&x), 1, sizeof(x), idx);
- x = fp->idx->offs[i].uaddr; fwrite(ed_swap_8p(&x), 1, sizeof(x), idx);
- }
- }
- else
- {
- uint64_t x = fp->idx->noffs - 1;
- fwrite(&x, 1, sizeof(x), idx);
- for (i=1; i<fp->idx->noffs; i++)
- {
- fwrite(&fp->idx->offs[i].caddr, 1, sizeof(fp->idx->offs[i].caddr), idx);
- fwrite(&fp->idx->offs[i].uaddr, 1, sizeof(fp->idx->offs[i].uaddr), idx);
- }
- }
- fclose(idx);
- return 0;
-}
-
-
-int bgzf_index_load(BGZF *fp, const char *bname, const char *suffix)
-{
- char *tmp = NULL;
- if ( suffix )
- {
- int blen = strlen(bname);
- int slen = strlen(suffix);
- tmp = (char*) malloc(blen + slen + 1);
- if ( !tmp ) return -1;
- memcpy(tmp,bname,blen);
- memcpy(tmp+blen,suffix,slen+1);
- }
-
- FILE *idx = fopen(tmp?tmp:bname,"rb");
- if ( tmp ) free(tmp);
- if ( !idx ) return -1;
-
- fp->idx = (bgzidx_t*) calloc(1,sizeof(bgzidx_t));
- uint64_t x;
- if ( fread(&x, 1, sizeof(x), idx) != sizeof(x) ) return -1;
-
- fp->idx->noffs = fp->idx->moffs = 1 + (fp->is_be ? ed_swap_8(x) : x);
- fp->idx->offs = (bgzidx1_t*) malloc(fp->idx->moffs*sizeof(bgzidx1_t));
- fp->idx->offs[0].caddr = fp->idx->offs[0].uaddr = 0;
-
- int i;
- if ( fp->is_be )
- {
- int ret = 0;
- for (i=1; i<fp->idx->noffs; i++)
- {
- ret += fread(&x, 1, sizeof(x), idx); fp->idx->offs[i].caddr = ed_swap_8(x);
- ret += fread(&x, 1, sizeof(x), idx); fp->idx->offs[i].uaddr = ed_swap_8(x);
- }
- if ( ret != sizeof(x)*2*(fp->idx->noffs-1) ) return -1;
- }
- else
- {
- int ret = 0;
- for (i=1; i<fp->idx->noffs; i++)
- {
- ret += fread(&x, 1, sizeof(x), idx); fp->idx->offs[i].caddr = x;
- ret += fread(&x, 1, sizeof(x), idx); fp->idx->offs[i].uaddr = x;
- }
- if ( ret != sizeof(x)*2*(fp->idx->noffs-1) ) return -1;
- }
- fclose(idx);
- return 0;
-
-}
-
-int bgzf_useek(BGZF *fp, long uoffset, int where)
-{
- if ( !fp->is_compressed )
- {
- if (hseek(fp->fp, uoffset, SEEK_SET) < 0)
- {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
- fp->block_length = 0; // indicates current block has not been loaded
- fp->block_address = uoffset;
- fp->block_offset = 0;
- bgzf_read_block(fp);
- fp->uncompressed_address = uoffset;
- return 0;
- }
-
- if ( !fp->idx )
- {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
-
- // binary search
- int ilo = 0, ihi = fp->idx->noffs - 1;
- while ( ilo<=ihi )
- {
- int i = (ilo+ihi)*0.5;
- if ( uoffset < fp->idx->offs[i].uaddr ) ihi = i - 1;
- else if ( uoffset >= fp->idx->offs[i].uaddr ) ilo = i + 1;
- else break;
- }
- int i = ilo-1;
- if (hseek(fp->fp, fp->idx->offs[i].caddr, SEEK_SET) < 0)
- {
- fp->errcode |= BGZF_ERR_IO;
- return -1;
- }
- fp->block_length = 0; // indicates current block has not been loaded
- fp->block_address = fp->idx->offs[i].caddr;
- fp->block_offset = 0;
- if ( bgzf_read_block(fp) < 0 ) return -1;
- if ( uoffset - fp->idx->offs[i].uaddr > 0 )
- {
- fp->block_offset = uoffset - fp->idx->offs[i].uaddr;
- assert( fp->block_offset <= fp->block_length ); // todo: skipped, unindexed, blocks
- }
- fp->uncompressed_address = uoffset;
- return 0;
-}
-
-long bgzf_utell(BGZF *fp)
-{
- return fp->uncompressed_address; // currently maintained only when reading
-}
-
diff --git a/htslib/bgzip.c b/htslib/bgzip.c
deleted file mode 100644
index 2eeff3d..0000000
--- a/htslib/bgzip.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* bgzip.c -- Block compression/decompression utility.
-
- Copyright (C) 2008, 2009 Broad Institute / Massachusetts Institute of Technology
- Copyright (C) 2010, 2013, 2014 Genome Research Ltd.
-
- 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 notices 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.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <getopt.h>
-#include <sys/select.h>
-#include <sys/stat.h>
-#include "htslib/bgzf.h"
-#include "htslib/hts.h"
-
-static const int WINDOW_SIZE = 64 * 1024;
-
-static void error(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- vfprintf(stderr, format, ap);
- va_end(ap);
- exit(EXIT_FAILURE);
-}
-
-static int write_open(const char *fn, int is_forced)
-{
- int fd = -1;
- char c;
- if (!is_forced) {
- if ((fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 0666)) < 0 && errno == EEXIST) {
- fprintf(stderr, "[bgzip] %s already exists; do you wish to overwrite (y or n)? ", fn);
- if ( scanf("%c", &c) != 1 ) c = 'n';
- if (c != 'Y' && c != 'y') {
- fprintf(stderr, "[bgzip] not overwritten\n");
- exit(EXIT_FAILURE);
- }
- }
- }
- if (fd < 0) {
- if ((fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0666)) < 0) {
- fprintf(stderr, "[bgzip] %s: Fail to write\n", fn);
- exit(EXIT_FAILURE);
- }
- }
- return fd;
-}
-
-static int bgzip_main_usage(void)
-{
- fprintf(stderr, "\n");
- fprintf(stderr, "Version: %s\n", hts_version());
- fprintf(stderr, "Usage: bgzip [OPTIONS] [FILE] ...\n");
- fprintf(stderr, "Options:\n");
- fprintf(stderr, " -b, --offset INT decompress at virtual file pointer (0-based uncompressed offset)\n");
- fprintf(stderr, " -c, --stdout write on standard output, keep original files unchanged\n");
- fprintf(stderr, " -d, --decompress decompress\n");
- fprintf(stderr, " -f, --force overwrite files without asking\n");
- fprintf(stderr, " -h, --help give this help\n");
- fprintf(stderr, " -i, --index compress and create BGZF index\n");
- fprintf(stderr, " -I, --index-name FILE name of BGZF index file [file.gz.gzi]\n");
- fprintf(stderr, " -r, --reindex (re)index compressed file\n");
- fprintf(stderr, " -s, --size INT decompress INT bytes (uncompressed size)\n");
- fprintf(stderr, "\n");
- return 1;
-}
-
-int main(int argc, char **argv)
-{
- int c, compress, pstdout, is_forced, index = 0, reindex = 0;
- BGZF *fp;
- void *buffer;
- long start, end, size;
- char *index_fname = NULL;
-
- static struct option loptions[] =
- {
- {"help",0,0,'h'},
- {"offset",1,0,'b'},
- {"stdout",0,0,'c'},
- {"decompress",0,0,'d'},
- {"force",0,0,'f'},
- {"index",0,0,'i'},
- {"index-name",1,0,'I'},
- {"reindex",0,0,'r'},
- {"size",1,0,'s'},
- {0,0,0,0}
- };
-
- compress = 1; pstdout = 0; start = 0; size = -1; end = -1; is_forced = 0;
- while((c = getopt_long(argc, argv, "cdh?fb:s:iI:r",loptions,NULL)) >= 0){
- switch(c){
- case 'd': compress = 0; break;
- case 'c': pstdout = 1; break;
- case 'b': start = atol(optarg); compress = 0; pstdout = 1; break;
- case 's': size = atol(optarg); pstdout = 1; break;
- case 'f': is_forced = 1; break;
- case 'i': index = 1; break;
- case 'I': index_fname = optarg; break;
- case 'r': reindex = 1; compress = 0; break;
- case 'h':
- case '?': return bgzip_main_usage();
- }
- }
- if (size >= 0) end = start + size;
- if (end >= 0 && end < start) {
- fprintf(stderr, "[bgzip] Illegal region: [%ld, %ld]\n", start, end);
- return 1;
- }
- if (compress == 1) {
- struct stat sbuf;
- int f_src = fileno(stdin);
- int f_dst = fileno(stdout);
-
- if ( argc>optind )
- {
- if ( stat(argv[optind],&sbuf)<0 )
- {
- fprintf(stderr, "[bgzip] %s: %s\n", strerror(errno), argv[optind]);
- return 1;
- }
-
- if ((f_src = open(argv[optind], O_RDONLY)) < 0) {
- fprintf(stderr, "[bgzip] %s: %s\n", strerror(errno), argv[optind]);
- return 1;
- }
-
- if (pstdout)
- f_dst = fileno(stdout);
- else
- {
- char *name = malloc(strlen(argv[optind]) + 5);
- strcpy(name, argv[optind]);
- strcat(name, ".gz");
- f_dst = write_open(name, is_forced);
- free(name);
- if (f_dst < 0) return 1;
- }
- }
- else if (!pstdout && isatty(fileno((FILE *)stdout)) )
- return bgzip_main_usage();
- else if ( index && !index_fname )
- {
- fprintf(stderr, "[bgzip] Index file name expected when writing to stdout\n");
- return 1;
- }
-
- fp = bgzf_fdopen(f_dst, "w");
- if ( index ) bgzf_index_build_init(fp);
- buffer = malloc(WINDOW_SIZE);
- while ((c = read(f_src, buffer, WINDOW_SIZE)) > 0)
- if (bgzf_write(fp, buffer, c) < 0) error("Could not write %d bytes: Error %d\n", c, fp->errcode);
- // f_dst will be closed here
- if ( index )
- {
- if ( index_fname ) bgzf_index_dump(fp, index_fname, NULL);
- else bgzf_index_dump(fp, argv[optind], ".gz.gzi");
- }
- if (bgzf_close(fp) < 0) error("Close failed: Error %d", fp->errcode);
- if (argc > optind && !pstdout) unlink(argv[optind]);
- free(buffer);
- close(f_src);
- return 0;
- }
- else if ( reindex )
- {
- if ( argc>optind )
- {
- fp = bgzf_open(argv[optind], "r");
- if ( !fp ) error("[bgzip] Could not open file: %s\n", argv[optind]);
- }
- else
- {
- if ( !index_fname ) error("[bgzip] Index file name expected when reading from stdin\n");
- fp = bgzf_fdopen(fileno(stdin), "r");
- if ( !fp ) error("[bgzip] Could not read from stdin: %s\n", strerror(errno));
- }
-
- buffer = malloc(BGZF_BLOCK_SIZE);
- bgzf_index_build_init(fp);
- int ret;
- while ( (ret=bgzf_read(fp, buffer, BGZF_BLOCK_SIZE))>0 ) ;
- free(buffer);
- if ( ret<0 ) error("Is the file gzipped or bgzipped? The latter is required for indexing.\n");
-
- if ( index_fname )
- bgzf_index_dump(fp, index_fname, NULL);
- else
- bgzf_index_dump(fp, argv[optind], ".gzi");
-
- if ( bgzf_close(fp)<0 ) error("Close failed: Error %d\n",fp->errcode);
- return 0;
- }
- else
- {
- struct stat sbuf;
- int f_dst;
-
- if ( argc>optind )
- {
- if ( stat(argv[optind],&sbuf)<0 )
- {
- fprintf(stderr, "[bgzip] %s: %s\n", strerror(errno), argv[optind]);
- return 1;
- }
- char *name;
- int len = strlen(argv[optind]);
- if ( strcmp(argv[optind]+len-3,".gz") )
- {
- fprintf(stderr, "[bgzip] %s: unknown suffix -- ignored\n", argv[optind]);
- return 1;
- }
- fp = bgzf_open(argv[optind], "r");
- if (fp == NULL) {
- fprintf(stderr, "[bgzip] Could not open file: %s\n", argv[optind]);
- return 1;
- }
-
- if (pstdout) {
- f_dst = fileno(stdout);
- }
- else {
- name = strdup(argv[optind]);
- name[strlen(name) - 3] = '\0';
- f_dst = write_open(name, is_forced);
- free(name);
- }
- }
- else if (!pstdout && isatty(fileno((FILE *)stdin)) )
- return bgzip_main_usage();
- else
- {
- f_dst = fileno(stdout);
- fp = bgzf_fdopen(fileno(stdin), "r");
- if (fp == NULL) {
- fprintf(stderr, "[bgzip] Could not read from stdin: %s\n", strerror(errno));
- return 1;
- }
- }
- buffer = malloc(WINDOW_SIZE);
- if ( start>0 )
- {
- if ( bgzf_index_load(fp, argv[optind], ".gzi") < 0 ) error("Could not load index: %s.gzi\n", argv[optind]);
- if ( bgzf_useek(fp, start, SEEK_SET) < 0 ) error("Could not seek to %d-th (uncompressd) byte\n", start);
- }
- while (1) {
- if (end < 0) c = bgzf_read(fp, buffer, WINDOW_SIZE);
- else c = bgzf_read(fp, buffer, (end - start > WINDOW_SIZE)? WINDOW_SIZE:(end - start));
- if (c == 0) break;
- if (c < 0) error("Could not read %d bytes: Error %d\n", (end - start > WINDOW_SIZE)? WINDOW_SIZE:(end - start), fp->errcode);
- start += c;
- if ( write(f_dst, buffer, c) != c ) error("Could not write %d bytes\n", c);
- if (end >= 0 && start >= end) break;
- }
- free(buffer);
- if (bgzf_close(fp) < 0) error("Close failed: Error %d\n",fp->errcode);
- if (!pstdout) unlink(argv[optind]);
- return 0;
- }
- return 0;
-}
diff --git a/htslib/config.h b/htslib/config.h
deleted file mode 100644
index 6d32bf5..0000000
--- a/htslib/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define _USE_KNETFILE
-#define BGZF_CACHE
-#define BGZF_MT
diff --git a/htslib/config.mk b/htslib/config.mk
deleted file mode 100644
index c4452d2..0000000
--- a/htslib/config.mk
+++ /dev/null
@@ -1,72 +0,0 @@
-# Optional configure Makefile overrides for htslib.
-#
-# Copyright (C) 2015 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-# This is config.mk. Generated from config.mk.in by configure.
-#
-# If you use configure, this file overrides variables and augments rules
-# in the Makefile to reflect your configuration choices. If you don't run
-# configure, the main Makefile contains suitable conservative defaults.
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-bindir = ${exec_prefix}/bin
-includedir = ${prefix}/include
-libdir = ${exec_prefix}/lib
-datarootdir = ${prefix}/share
-mandir = ${datarootdir}/man
-
-CC = gcc
-RANLIB = ranlib
-
-CFLAGS = -g -O2
-LDFLAGS =
-LDLIBS =
-
-
-# ifeq/.../endif, +=, and target-specific variables are GNU Make-specific.
-# If you don't have GNU Make, comment out this conditional and note that
-# to enable iRODS you will need to implement the following elsewhere.
-ifeq "iRODS-disabled" "iRODS-enabled"
-
-IRODS_HOME ?= /disabled
-
-EXTRA_CPPFLAGS_IRODS = \
- -I$(IRODS_HOME)/lib/api/include \
- -I$(IRODS_HOME)/lib/core/include \
- -I$(IRODS_HOME)/lib/md5/include \
- -I$(IRODS_HOME)/lib/sha1/include \
- -I$(IRODS_HOME)/server/core/include \
- -I$(IRODS_HOME)/server/drivers/include \
- -I$(IRODS_HOME)/server/icat/include
-
-LDFLAGS += -L$(IRODS_HOME)/lib/core/obj
-LDLIBS += -lRodsAPIs -lgssapi_krb5
-
-LIBHTS_OBJS += hfile_irods.o
-
-hfile.o hfile.pico: CPPFLAGS += -DHAVE_IRODS
-
-hfile_irods.o hfile_irods.pico: CPPFLAGS += $(EXTRA_CPPFLAGS_IRODS)
-
-endif
diff --git a/htslib/config.mk.in b/htslib/config.mk.in
deleted file mode 100644
index e058ee5..0000000
--- a/htslib/config.mk.in
+++ /dev/null
@@ -1,72 +0,0 @@
-# Optional configure Makefile overrides for htslib.
-#
-# Copyright (C) 2015 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-# This is @configure_input@
-#
-# If you use configure, this file overrides variables and augments rules
-# in the Makefile to reflect your configuration choices. If you don't run
-# configure, the main Makefile contains suitable conservative defaults.
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-includedir = @includedir@
-libdir = @libdir@
-datarootdir = @datarootdir@
-mandir = @mandir@
-
-CC = @CC@
-RANLIB = @RANLIB@
-
-CFLAGS = @CFLAGS@
-LDFLAGS = @LDFLAGS@
-LDLIBS = @LIBS@
-
-
-# ifeq/.../endif, +=, and target-specific variables are GNU Make-specific.
-# If you don't have GNU Make, comment out this conditional and note that
-# to enable iRODS you will need to implement the following elsewhere.
-ifeq "iRODS- at irods@" "iRODS-enabled"
-
- at define_IRODS_HOME@
-
-EXTRA_CPPFLAGS_IRODS = \
- -I$(IRODS_HOME)/lib/api/include \
- -I$(IRODS_HOME)/lib/core/include \
- -I$(IRODS_HOME)/lib/md5/include \
- -I$(IRODS_HOME)/lib/sha1/include \
- -I$(IRODS_HOME)/server/core/include \
- -I$(IRODS_HOME)/server/drivers/include \
- -I$(IRODS_HOME)/server/icat/include
-
-LDFLAGS += -L$(IRODS_HOME)/lib/core/obj
-LDLIBS += -lRodsAPIs -lgssapi_krb5
-
-LIBHTS_OBJS += hfile_irods.o
-
-hfile.o hfile.pico: CPPFLAGS += -DHAVE_IRODS
-
-hfile_irods.o hfile_irods.pico: CPPFLAGS += $(EXTRA_CPPFLAGS_IRODS)
-
-endif
diff --git a/htslib/configure b/htslib/configure
deleted file mode 100755
index 9fc4bd2..0000000
--- a/htslib/configure
+++ /dev/null
@@ -1,4012 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for HTSlib 1.2.1.
-#
-# Report bugs to <samtools-help at lists.sourceforge.net>.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-#
-# Portions copyright (C) 2015 Genome Research Ltd.
-#
-# This configure script is free software: you are free to change and
-# redistribute it. There is NO WARRANTY, to the extent permitted by law.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in #(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: samtools-help at lists.sourceforge.net about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='HTSlib'
-PACKAGE_TARNAME='htslib'
-PACKAGE_VERSION='1.2.1'
-PACKAGE_STRING='HTSlib 1.2.1'
-PACKAGE_BUGREPORT='samtools-help at lists.sourceforge.net'
-PACKAGE_URL='http://www.htslib.org/'
-
-ac_unique_file="hts.c"
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-define_IRODS_HOME
-irods
-RANLIB
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-with_irods
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *=) ac_optarg= ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- case $ac_envvar in #(
- '' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
- esac
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures HTSlib 1.2.1 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/htslib]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of HTSlib 1.2.1:";;
- esac
- cat <<\_ACEOF
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-irods[=DIR] use RodsAPIs library (in DIR) to support iRODS URLs
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <samtools-help at lists.sourceforge.net>.
-HTSlib home page: <http://www.htslib.org/>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-HTSlib configure 1.2.1
-generated by GNU Autoconf 2.68
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-
-Portions copyright (C) 2015 Genome Research Ltd.
-
-This configure script is free software: you are free to change and
-redistribute it. There is NO WARRANTY, to the extent permitted by law.
-_ACEOF
- exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by HTSlib $as_me 1.2.1, which was
-generated by GNU Autoconf 2.68. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
- done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
- 2)
- as_fn_append ac_configure_args1 " '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- as_fn_append ac_configure_args " '$ac_arg'"
- ;;
- esac
- done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special files
- # actually), so we avoid doing that. DJGPP emulates it as a regular file.
- if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- ac_file=''
-fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
- { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if { ac_try='./conftest$ac_cv_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-
-# Check whether --with-irods was given.
-if test "${with_irods+set}" = set; then :
- withval=$with_irods; case $withval in
- no) irods=disabled ;;
- yes) irods=enabled ;;
- *) irods=enabled; IRODS_HOME=$withval ;;
- esac
-else
- irods=disabled
-fi
-
-
-save_LIBS=$LIBS
-zlib_devel=ok
-
-ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" ";
-"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
-
-else
- zlib_devel=missing
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
-$as_echo_n "checking for inflate in -lz... " >&6; }
-if ${ac_cv_lib_z_inflate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char inflate ();
-int
-main ()
-{
-return inflate ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_z_inflate=yes
-else
- ac_cv_lib_z_inflate=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5
-$as_echo "$ac_cv_lib_z_inflate" >&6; }
-if test "x$ac_cv_lib_z_inflate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBZ 1
-_ACEOF
-
- LIBS="-lz $LIBS"
-
-else
- zlib_devel=missing
-fi
-
-LIBS=$save_LIBS
-
-if test $zlib_devel != ok; then
- as_fn_error $? "zlib development files not found
-
-HTSlib uses compression routines from the zlib library <http://zlib.net>.
-Building HTSlib requires zlib development files to be installed on the build
-machine; you may need to ensure a package such as zlib1g-dev (on Debian or
-Ubuntu Linux) or zlib-devel (on RPM-based Linux distributions) is installed.
-
-FAILED. This error must be resolved in order to build HTSlib successfully." "$LINENO" 5
-fi
-
-if test $irods = enabled; then
- # TODO Also test whether we require libgssapi_krb5 and AC_CHECK_LIB it
- save_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -L$IRODS_HOME/lib/core/obj"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getRodsEnvFileName in -lRodsAPIs" >&5
-$as_echo_n "checking for getRodsEnvFileName in -lRodsAPIs... " >&6; }
-if ${ac_cv_lib_RodsAPIs_getRodsEnvFileName+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lRodsAPIs -lgssapi_krb5 -lpthread $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getRodsEnvFileName ();
-int
-main ()
-{
-return getRodsEnvFileName ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_RodsAPIs_getRodsEnvFileName=yes
-else
- ac_cv_lib_RodsAPIs_getRodsEnvFileName=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_RodsAPIs_getRodsEnvFileName" >&5
-$as_echo "$ac_cv_lib_RodsAPIs_getRodsEnvFileName" >&6; }
-if test "x$ac_cv_lib_RodsAPIs_getRodsEnvFileName" = xyes; then :
- case $with_irods in
- yes) define_IRODS_HOME='# Uses $(IRODS_HOME) from the environment' ;;
- *) define_IRODS_HOME="IRODS_HOME = $with_irods" ;;
- esac
-else
- as_fn_error $? "iRODS development files not found
-
-Support for iRODS URLs requires the libRodsAPI client library and headers.
-Configure with --with-irods=DIR (or just --with-irods if \$IRODS_HOME has
-been exported with a suitable value), where DIR is the base of an iRODS tree
-such that the library is present as DIR/lib/core/obj/libRodsAPI.* and headers
-are present under DIR/lib/api/include and so on." "$LINENO" 5
-fi
-
- LDFLAGS=$save_LDFLAGS
-else
- define_IRODS_HOME='IRODS_HOME ?= /disabled'
-fi
-
-
-
-ac_config_files="$ac_config_files config.mk"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \.
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- if test ! -f "$cache_file" || test -h "$cache_file"; then
- cat confcache >"$cache_file"
- else
- case $cache_file in #(
- */* | ?:*)
- mv -f confcache "$cache_file"$$ &&
- mv -f "$cache_file"$$ "$cache_file" ;; #(
- *)
- mv -f confcache "$cache_file" ;;
- esac
- fi
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section. Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
- g
- s/^\n//
- s/\n/ /g
- p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by HTSlib $as_me 1.2.1, which was
-generated by GNU Autoconf 2.68. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration. Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- --config print configuration, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to <samtools-help at lists.sourceforge.net>.
-HTSlib home page: <http://www.htslib.org/>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-HTSlib config.status 1.2.1
-configured by $0, generated by GNU Autoconf 2.68,
- with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=?*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- --*=)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- '') as_fn_error $? "missing file argument" ;;
- esac
- as_fn_append CONFIG_FILES " '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h | --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
- *) as_fn_append ac_config_targets " $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "config.mk") CONFIG_FILES="$CONFIG_FILES config.mk" ;;
-
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp= ac_tmp=
- trap 'exit_status=$?
- : "${ac_tmp:=$tmp}"
- { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
- trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
- eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
- || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
-h
-s///
-s/^/:/
-s/[ ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[ ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X " :F $CONFIG_FILES "
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$ac_tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- as_fn_append ac_file_inputs " '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$ac_tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
- >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
- "$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&2;}
-
- rm -f "$ac_tmp/stdin"
- case $ac_file in
- -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
- *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
- esac \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-
-
-
- esac
-
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/htslib/configure.ac b/htslib/configure.ac
deleted file mode 100644
index 77ce99c..0000000
--- a/htslib/configure.ac
+++ /dev/null
@@ -1,93 +0,0 @@
-# Configure script for htslib, a C library for high-throughput sequencing data.
-#
-# Copyright (C) 2015 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-dnl Process this file with autoconf to produce a configure script
-AC_INIT([HTSlib], m4_esyscmd_s([make print-version]),
- [samtools-help at lists.sourceforge.net], [], [http://www.htslib.org/])
-AC_PREREQ(2.63) dnl This version introduced 4-argument AC_CHECK_HEADER
-AC_CONFIG_SRCDIR(hts.c)
-
-dnl Copyright notice to be copied into the generated configure script
-AC_COPYRIGHT([Portions copyright (C) 2015 Genome Research Ltd.
-
-This configure script is free software: you are free to change and
-redistribute it. There is NO WARRANTY, to the extent permitted by law.])
-
-AC_PROG_CC
-AC_PROG_RANLIB
-
-AC_ARG_WITH([irods],
- [AS_HELP_STRING([[--with-irods[=DIR]]],
- [use RodsAPIs library (in DIR) to support iRODS URLs])],
- [case $withval in
- no) irods=disabled ;;
- yes) irods=enabled ;;
- *) irods=enabled; IRODS_HOME=$withval ;;
- esac],
- [irods=disabled])
-
-save_LIBS=$LIBS
-zlib_devel=ok
-dnl Set a trivial non-empty INCLUDES to avoid excess default includes tests
-AC_CHECK_HEADER([zlib.h], [], [zlib_devel=missing], [;])
-AC_CHECK_LIB(z, inflate, [], [zlib_devel=missing])
-LIBS=$save_LIBS
-
-if test $zlib_devel != ok; then
- AC_MSG_ERROR([zlib development files not found
-
-HTSlib uses compression routines from the zlib library <http://zlib.net>.
-Building HTSlib requires zlib development files to be installed on the build
-machine; you may need to ensure a package such as zlib1g-dev (on Debian or
-Ubuntu Linux) or zlib-devel (on RPM-based Linux distributions) is installed.
-
-FAILED. This error must be resolved in order to build HTSlib successfully.])
-fi
-
-if test $irods = enabled; then
- # TODO Also test whether we require libgssapi_krb5 and AC_CHECK_LIB it
- save_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -L$IRODS_HOME/lib/core/obj"
- AC_CHECK_LIB([RodsAPIs], [getRodsEnvFileName],
- [case $with_irods in
- yes) define_IRODS_HOME='# Uses $(IRODS_HOME) from the environment' ;;
- *) define_IRODS_HOME="IRODS_HOME = $with_irods" ;;
- esac],
- [AC_MSG_ERROR([iRODS development files not found
-
-Support for iRODS URLs requires the libRodsAPI client library and headers.
-Configure with --with-irods=DIR (or just --with-irods if \$IRODS_HOME has
-been exported with a suitable value), where DIR is the base of an iRODS tree
-such that the library is present as DIR/lib/core/obj/libRodsAPI.* and headers
-are present under DIR/lib/api/include and so on.])],
- [-lgssapi_krb5 -lpthread])
- LDFLAGS=$save_LDFLAGS
-else
- define_IRODS_HOME='IRODS_HOME ?= /disabled'
-fi
-AC_SUBST([irods])
-AC_SUBST([define_IRODS_HOME])
-
-AC_CONFIG_FILES(config.mk)
-AC_OUTPUT
diff --git a/htslib/cram/cram.h b/htslib/cram/cram.h
deleted file mode 100644
index 02f7774..0000000
--- a/htslib/cram/cram.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*! \file
- * CRAM interface.
- *
- * Consider using the higher level hts_*() API for programs that wish to
- * be file format agnostic (see htslib/hts.h).
- *
- * This API should be used for CRAM specific code. The specifics of the
- * public API are implemented in cram_io.h, cram_encode.h and cram_decode.h
- * although these should not be included directly (use this file instead).
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _CRAM_H_
-#define _CRAM_H_
-
-#include "cram/cram_samtools.h"
-#include "cram/sam_header.h"
-#include "cram_structs.h"
-#include "cram_io.h"
-#include "cram_encode.h"
-#include "cram_decode.h"
-#include "cram_stats.h"
-#include "cram_codecs.h"
-#include "cram_index.h"
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/htslib/cram/cram_codecs.c b/htslib/cram/cram_codecs.c
deleted file mode 100644
index c6bfb16..0000000
--- a/htslib/cram/cram_codecs.c
+++ /dev/null
@@ -1,1846 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * FIXME: add checking of cram_external_type to return NULL on unsupported
- * {codec,type} tuples.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <limits.h>
-
-#include "cram/cram.h"
-
-static char *codec2str(enum cram_encoding codec) {
- switch (codec) {
- case E_NULL: return "NULL";
- case E_EXTERNAL: return "EXTERNAL";
- case E_GOLOMB: return "GOLOMB";
- case E_HUFFMAN: return "HUFFMAN";
- case E_BYTE_ARRAY_LEN: return "BYTE_ARRAY_LEN";
- case E_BYTE_ARRAY_STOP: return "BYTE_ARRAY_STOP";
- case E_BETA: return "BETA";
- case E_SUBEXP: return "SUBEXP";
- case E_GOLOMB_RICE: return "GOLOMB_RICE";
- case E_GAMMA: return "GAMMA";
- }
-
- return "(unknown)";
-}
-
-/*
- * ---------------------------------------------------------------------------
- * Block bit-level I/O functions.
- * All defined static here to promote easy inlining by the compiler.
- */
-
-#if 0
-/* Get a single bit, MSB first */
-static signed int get_bit_MSB(cram_block *block) {
- unsigned int val;
-
- if (block->byte > block->alloc)
- return -1;
-
- val = block->data[block->byte] >> block->bit;
- if (--block->bit == -1) {
- block->bit = 7;
- block->byte++;
- //printf("(%02X)", block->data[block->byte]);
- }
-
- //printf("-B%d-", val&1);
-
- return val & 1;
-}
-#endif
-
-/*
- * Count number of successive 0 and 1 bits
- */
-static int get_one_bits_MSB(cram_block *block) {
- int n = 0, b;
- do {
- b = block->data[block->byte] >> block->bit;
- if (--block->bit == -1) {
- block->bit = 7;
- block->byte++;
- }
- n++;
- } while (b&1);
-
- return n-1;
-}
-
-static int get_zero_bits_MSB(cram_block *block) {
- int n = 0, b;
- do {
- b = block->data[block->byte] >> block->bit;
- if (--block->bit == -1) {
- block->bit = 7;
- block->byte++;
- }
- n++;
- } while (!(b&1));
-
- return n-1;
-}
-
-#if 0
-/* Stores a single bit */
-static void store_bit_MSB(cram_block *block, unsigned int bit) {
- if (block->byte >= block->alloc) {
- block->alloc = block->alloc ? block->alloc*2 : 1024;
- block->data = realloc(block->data, block->alloc);
- }
-
- if (bit)
- block->data[block->byte] |= (1 << block->bit);
-
- if (--block->bit == -1) {
- block->bit = 7;
- block->byte++;
- block->data[block->byte] = 0;
- }
-}
-#endif
-
-#if 0
-/* Rounds to the next whole byte boundary first */
-static void store_bytes_MSB(cram_block *block, char *bytes, int len) {
- if (block->bit != 7) {
- block->bit = 7;
- block->byte++;
- }
-
- while (block->byte + len >= block->alloc) {
- block->alloc = block->alloc ? block->alloc*2 : 1024;
- block->data = realloc(block->data, block->alloc);
- }
-
- memcpy(&block->data[block->byte], bytes, len);
- block->byte += len;
-}
-#endif
-
-/* Local optimised copy for inlining */
-static inline unsigned int get_bits_MSB(cram_block *block, int nbits) {
- unsigned int val = 0;
- int i;
-
-#if 0
- // Fits within the current byte */
- if (nbits <= block->bit+1) {
- val = (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<<nbits)-1);
- if ((block->bit -= nbits) == -1) {
- block->bit = 7;
- block->byte++;
- }
- return val;
- }
-
- // partial first byte
- val = block->data[block->byte] & ((1<<(block->bit+1))-1);
- nbits -= block->bit+1;
- block->bit = 7;
- block->byte++;
-
- // whole middle bytes
- while (nbits >= 8) {
- val = (val << 8) | block->data[block->byte++];
- nbits -= 8;
- }
-
- val <<= nbits;
- val |= (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<<nbits)-1);
- block->bit -= nbits;
- return val;
-#endif
-
-#if 0
- /* Inefficient implementation! */
- //printf("{");
- for (i = 0; i < nbits; i++)
- //val = (val << 1) | get_bit_MSB(block);
- GET_BIT_MSB(block, val);
-#endif
-
-#if 1
- /* Combination of 1st two methods */
- if (nbits <= block->bit+1) {
- val = (block->data[block->byte]>>(block->bit-(nbits-1))) & ((1<<nbits)-1);
- if ((block->bit -= nbits) == -1) {
- block->bit = 7;
- block->byte++;
- }
- return val;
- }
-
- switch(nbits) {
-// case 15: GET_BIT_MSB(block, val);
-// case 14: GET_BIT_MSB(block, val);
-// case 13: GET_BIT_MSB(block, val);
-// case 12: GET_BIT_MSB(block, val);
-// case 11: GET_BIT_MSB(block, val);
-// case 10: GET_BIT_MSB(block, val);
-// case 9: GET_BIT_MSB(block, val);
- case 8: GET_BIT_MSB(block, val);
- case 7: GET_BIT_MSB(block, val);
- case 6: GET_BIT_MSB(block, val);
- case 5: GET_BIT_MSB(block, val);
- case 4: GET_BIT_MSB(block, val);
- case 3: GET_BIT_MSB(block, val);
- case 2: GET_BIT_MSB(block, val);
- case 1: GET_BIT_MSB(block, val);
- break;
-
- default:
- for (i = 0; i < nbits; i++)
- //val = (val << 1) | get_bit_MSB(block);
- GET_BIT_MSB(block, val);
- }
-#endif
-
- //printf("=0x%x}", val);
-
- return val;
-}
-
-/*
- * Can store up to 24-bits worth of data encoded in an integer value
- * Possibly we'd want to have a less optimal store_bits function when dealing
- * with nbits > 24, but for now we assume the codes generated are never
- * that big. (Given this is only possible with 121392 or more
- * characters with exactly the correct frequency distribution we check
- * for it elsewhere.)
- */
-static int store_bits_MSB(cram_block *block, unsigned int val, int nbits) {
- /* fprintf(stderr, " store_bits: %02x %d\n", val, nbits); */
-
- /*
- * Use slow mode until we tweak the huffman generator to never generate
- * codes longer than 24-bits.
- */
- unsigned int mask;
-
- if (block->byte+4 >= block->alloc) {
- if (block->byte) {
- block->alloc *= 2;
- block->data = realloc(block->data, block->alloc + 4);
- if (!block->data)
- return -1;
- } else {
- block->alloc = 1024;
- block->data = realloc(block->data, block->alloc + 4);
- if (!block->data)
- return -1;
- block->data[0] = 0; // initialise first byte of buffer
- }
- }
-
- /* fits in current bit-field */
- if (nbits <= block->bit+1) {
- block->data[block->byte] |= (val << (block->bit+1-nbits));
- if ((block->bit-=nbits) == -1) {
- block->bit = 7;
- block->byte++;
- block->data[block->byte] = 0;
- }
- return 0;
- }
-
- block->data[block->byte] |= (val >> (nbits -= block->bit+1));
- block->bit = 7;
- block->byte++;
- block->data[block->byte] = 0;
-
- mask = 1<<(nbits-1);
- do {
- if (val & mask)
- block->data[block->byte] |= (1 << block->bit);
- if (--block->bit == -1) {
- block->bit = 7;
- block->byte++;
- block->data[block->byte] = 0;
- }
- mask >>= 1;
- } while(--nbits);
-
- return 0;
-}
-
-/*
- * Returns the next 'size' bytes from a block, or NULL if insufficient
- * data left.This is just a pointer into the block data and not an
- * allocated object, so do not free the result.
- */
-static char *cram_extract_block(cram_block *b, int size) {
- char *cp = (char *)b->data + b->idx;
- b->idx += size;
- if (b->idx > b->uncomp_size)
- return NULL;
-
- return cp;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * EXTERNAL
- */
-int cram_external_decode_int(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out, int *out_size) {
- int i;
- char *cp;
- cram_block *b = NULL;
-
- /* Find the external block */
- if (slice->block_by_id) {
- if (!(b = slice->block_by_id[c->external.content_id]))
- return *out_size?-1:0;
- } else {
- for (i = 0; i < slice->hdr->num_blocks; i++) {
- b = slice->block[i];
- if (b && b->content_type == EXTERNAL &&
- b->content_id == c->external.content_id) {
- break;
- }
- }
- if (i == slice->hdr->num_blocks || !b)
- return -1;
- }
-
- cp = (char *)b->data + b->idx;
- // E_INT and E_LONG are guaranteed single item queries
- b->idx += itf8_get(cp, (int32_t *)out);
- *out_size = 1;
-
- return 0;
-}
-
-int cram_external_decode_char(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out,
- int *out_size) {
- int i;
- char *cp;
- cram_block *b = NULL;
-
- /* Find the external block */
- if (slice->block_by_id) {
- if (!(b = slice->block_by_id[c->external.content_id]))
- return *out_size?-1:0;
- } else {
- for (i = 0; i < slice->hdr->num_blocks; i++) {
- b = slice->block[i];
- if (b && b->content_type == EXTERNAL &&
- b->content_id == c->external.content_id) {
- break;
- }
- }
- if (i == slice->hdr->num_blocks || !b)
- return -1;
- }
-
- cp = cram_extract_block(b, *out_size);
- if (!cp)
- return -1;
-
- memcpy(out, cp, *out_size);
- return 0;
-}
-
-static int cram_external_decode_block(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out_,
- int *out_size) {
- int i;
- char *cp;
- cram_block *b = NULL;
- cram_block *out = (cram_block *)out_;
-
- /* Find the external block */
- if (slice->block_by_id) {
- if (!(b = slice->block_by_id[c->external.content_id]))
- return *out_size?-1:0;
- } else {
- for (i = 0; i < slice->hdr->num_blocks; i++) {
- b = slice->block[i];
- if (b && b->content_type == EXTERNAL &&
- b->content_id == c->external.content_id) {
- break;
- }
- }
- if (i == slice->hdr->num_blocks || !b)
- return -1;
- }
-
- cp = cram_extract_block(b, *out_size);
- if (!cp)
- return -1;
-
- BLOCK_APPEND(out, cp, *out_size);
- return 0;
-}
-
-void cram_external_decode_free(cram_codec *c) {
- if (c)
- free(c);
-}
-
-cram_codec *cram_external_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- char *cp = data;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_EXTERNAL;
- if (option == E_INT || option == E_LONG)
- c->decode = cram_external_decode_int;
- else if (option == E_BYTE_ARRAY || option == E_BYTE)
- c->decode = cram_external_decode_char;
- else
- c->decode = cram_external_decode_block;
- c->free = cram_external_decode_free;
-
- cp += itf8_get(cp, &c->external.content_id);
-
- if (cp - data != size) {
- fprintf(stderr, "Malformed external header stream\n");
- free(c);
- return NULL;
- }
-
- c->external.type = option;
-
- return c;
-}
-
-int cram_external_encode_int(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- uint32_t *i32 = (uint32_t *)in;
-
- itf8_put_blk(c->out, *i32);
- return 0;
-}
-
-int cram_external_encode_char(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- BLOCK_APPEND(c->out, in, in_size);
- return 0;
-}
-
-void cram_external_encode_free(cram_codec *c) {
- if (!c)
- return;
- free(c);
-}
-
-int cram_external_encode_store(cram_codec *c, cram_block *b, char *prefix,
- int version) {
- char tmp[99], *tp = tmp;
- int len = 0;
-
- if (prefix) {
- size_t l = strlen(prefix);
- BLOCK_APPEND(b, prefix, l);
- len += l;
- }
-
- tp += itf8_put(tp, c->e_external.content_id);
- len += itf8_put_blk(b, c->codec);
- len += itf8_put_blk(b, tp-tmp);
- BLOCK_APPEND(b, tmp, tp-tmp);
- len += tp-tmp;
-
- return len;
-}
-
-cram_codec *cram_external_encode_init(cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- cram_codec *c;
-
- c = malloc(sizeof(*c));
- if (!c)
- return NULL;
- c->codec = E_EXTERNAL;
- c->free = cram_external_encode_free;
- if (option == E_INT || option == E_LONG)
- c->encode = cram_external_encode_int;
- else if (option == E_BYTE_ARRAY || option == E_BYTE)
- c->encode = cram_external_encode_char;
- else
- abort();
- c->store = cram_external_encode_store;
-
- c->e_external.content_id = (size_t)dat;
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * BETA
- */
-int cram_beta_decode_int(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) {
- int32_t *out_i = (int32_t *)out;
- int i, n;
-
- if (c->beta.nbits) {
- for (i = 0, n = *out_size; i < n; i++)
- out_i[i] = get_bits_MSB(in, c->beta.nbits) - c->beta.offset;
- } else {
- for (i = 0, n = *out_size; i < n; i++)
- out_i[i] = -c->beta.offset;
- }
-
- return 0;
-}
-
-int cram_beta_decode_char(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) {
- int i, n;
-
- if (c->beta.nbits) {
- for (i = 0, n = *out_size; i < n; i++)
- out[i] = get_bits_MSB(in, c->beta.nbits) - c->beta.offset;
- } else {
- for (i = 0, n = *out_size; i < n; i++)
- out[i] = -c->beta.offset;
- }
-
- return 0;
-}
-
-void cram_beta_decode_free(cram_codec *c) {
- if (c)
- free(c);
-}
-
-cram_codec *cram_beta_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- char *cp = data;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_BETA;
- if (option == E_INT || option == E_LONG)
- c->decode = cram_beta_decode_int;
- else if (option == E_BYTE_ARRAY || option == E_BYTE)
- c->decode = cram_beta_decode_char;
- else
- abort();
- c->free = cram_beta_decode_free;
-
- cp += itf8_get(cp, &c->beta.offset);
- cp += itf8_get(cp, &c->beta.nbits);
-
- if (cp - data != size) {
- fprintf(stderr, "Malformed beta header stream\n");
- free(c);
- return NULL;
- }
-
- return c;
-}
-
-int cram_beta_encode_store(cram_codec *c, cram_block *b,
- char *prefix, int version) {
- int len = 0;
-
- if (prefix) {
- size_t l = strlen(prefix);
- BLOCK_APPEND(b, prefix, l);
- len += l;
- }
-
- len += itf8_put_blk(b, c->codec);
- len += itf8_put_blk(b, itf8_size(c->e_beta.offset)
- + itf8_size(c->e_beta.nbits)); // codec length
- len += itf8_put_blk(b, c->e_beta.offset);
- len += itf8_put_blk(b, c->e_beta.nbits);
-
- return len;
-}
-
-int cram_beta_encode_int(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- int *syms = (int *)in;
- int i, r = 0;
-
- for (i = 0; i < in_size; i++)
- r |= store_bits_MSB(c->out, syms[i] + c->e_beta.offset,
- c->e_beta.nbits);
-
- return r;
-}
-
-int cram_beta_encode_char(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- unsigned char *syms = (unsigned char *)in;
- int i, r = 0;
-
- for (i = 0; i < in_size; i++)
- r |= store_bits_MSB(c->out, syms[i] + c->e_beta.offset,
- c->e_beta.nbits);
-
- return r;
-}
-
-void cram_beta_encode_free(cram_codec *c) {
- if (c) free(c);
-}
-
-cram_codec *cram_beta_encode_init(cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- cram_codec *c;
- int min_val, max_val, len = 0;
-
- c = malloc(sizeof(*c));
- if (!c)
- return NULL;
- c->codec = E_BETA;
- c->free = cram_beta_encode_free;
- if (option == E_INT)
- c->encode = cram_beta_encode_int;
- else
- c->encode = cram_beta_encode_char;
- c->store = cram_beta_encode_store;
-
- if (dat) {
- min_val = ((int *)dat)[0];
- max_val = ((int *)dat)[1];
- } else {
- min_val = INT_MAX;
- max_val = INT_MIN;
- int i;
- for (i = 0; i < MAX_STAT_VAL; i++) {
- if (!st->freqs[i])
- continue;
- if (min_val > i)
- min_val = i;
- max_val = i;
- }
- if (st->h) {
- khint_t k;
-
- for (k = kh_begin(st->h); k != kh_end(st->h); k++) {
- if (!kh_exist(st->h, k))
- continue;
-
- i = kh_key(st->h, k);
- if (min_val > i)
- min_val = i;
- if (max_val < i)
- max_val = i;
- }
- }
- }
-
- assert(max_val >= min_val);
- c->e_beta.offset = -min_val;
- max_val -= min_val;
- while (max_val) {
- len++;
- max_val >>= 1;
- }
- c->e_beta.nbits = len;
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * SUBEXP
- */
-int cram_subexp_decode(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) {
- int32_t *out_i = (int32_t *)out;
- int n, count;
- int k = c->subexp.k;
-
- for (count = 0, n = *out_size; count < n; count++) {
- int i = 0, tail;
- int val;
-
- /* Get number of 1s */
- //while (get_bit_MSB(in) == 1) i++;
- i = get_one_bits_MSB(in);
-
- /*
- * Val is
- * i > 0: 2^(k+i-1) + k+i-1 bits
- * i = 0: k bits
- */
- if (i) {
- tail = i + k-1;
- val = 0;
- while (tail) {
- //val = val<<1; val |= get_bit_MSB(in);
- GET_BIT_MSB(in, val);
- tail--;
- }
- val += 1 << (i + k-1);
- } else {
- tail = k;
- val = 0;
- while (tail) {
- //val = val<<1; val |= get_bit_MSB(in);
- GET_BIT_MSB(in, val);
- tail--;
- }
- }
-
- out_i[count] = val - c->subexp.offset;
- }
-
- return 0;
-}
-
-void cram_subexp_decode_free(cram_codec *c) {
- if (c)
- free(c);
-}
-
-cram_codec *cram_subexp_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- char *cp = data;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_SUBEXP;
- c->decode = cram_subexp_decode;
- c->free = cram_subexp_decode_free;
-
- cp += itf8_get(cp, &c->subexp.offset);
- cp += itf8_get(cp, &c->subexp.k);
-
- if (cp - data != size) {
- fprintf(stderr, "Malformed subexp header stream\n");
- free(c);
- return NULL;
- }
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * GAMMA
- */
-int cram_gamma_decode(cram_slice *slice, cram_codec *c, cram_block *in, char *out, int *out_size) {
- int32_t *out_i = (int32_t *)out;
- int i, n;
-
- for (i = 0, n = *out_size; i < n; i++) {
- int nz = 0;
- int val;
- //while (get_bit_MSB(in) == 0) nz++;
- nz = get_zero_bits_MSB(in);
- val = 1;
- while (nz > 0) {
- //val <<= 1; val |= get_bit_MSB(in);
- GET_BIT_MSB(in, val);
- nz--;
- }
-
- out_i[i] = val - c->gamma.offset;
- }
-
- return 0;
-}
-
-void cram_gamma_decode_free(cram_codec *c) {
- if (c)
- free(c);
-}
-
-cram_codec *cram_gamma_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- char *cp = data;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_GAMMA;
- c->decode = cram_gamma_decode;
- c->free = cram_gamma_decode_free;
-
- cp += itf8_get(cp, &c->gamma.offset);
-
- if (cp - data != size) {
- fprintf(stderr, "Malformed gamma header stream\n");
- free(c);
- return NULL;
- }
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * HUFFMAN
- */
-
-static int code_sort(const void *vp1, const void *vp2) {
- const cram_huffman_code *c1 = (const cram_huffman_code *)vp1;
- const cram_huffman_code *c2 = (const cram_huffman_code *)vp2;
-
- if (c1->len != c2->len)
- return c1->len - c2->len;
- else
- return c1->symbol - c2->symbol;
-}
-
-void cram_huffman_decode_free(cram_codec *c) {
- if (!c)
- return;
-
- if (c->huffman.codes)
- free(c->huffman.codes);
- free(c);
-}
-
-int cram_huffman_decode_char0(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out, int *out_size) {
- int i, n;
-
- /* Special case of 0 length codes */
- for (i = 0, n = *out_size; i < n; i++) {
- out[i] = c->huffman.codes[0].symbol;
- }
- return 0;
-}
-
-int cram_huffman_decode_char(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out, int *out_size) {
- int i, n, ncodes = c->huffman.ncodes;
- const cram_huffman_code * const codes = c->huffman.codes;
-
- for (i = 0, n = *out_size; i < n; i++) {
- int idx = 0;
- int val = 0, len = 0, last_len = 0;
-
- for (;;) {
- int dlen = codes[idx].len - last_len;
- if (dlen <= 0 || (in->alloc - in->byte)*8 + in->bit + 7 < dlen)
- return -1;
-
- //val <<= dlen;
- //val |= get_bits_MSB(in, dlen);
- //last_len = (len += dlen);
-
- last_len = (len += dlen);
- for (; dlen; dlen--) GET_BIT_MSB(in, val);
-
- idx = val - codes[idx].p;
- if (idx >= ncodes || idx < 0)
- return -1;
-
- if (codes[idx].code == val && codes[idx].len == len) {
- out[i] = codes[idx].symbol;
- break;
- }
- }
- }
-
- return 0;
-}
-
-int cram_huffman_decode_int0(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out, int *out_size) {
- int32_t *out_i = (int32_t *)out;
- int i, n;
- const cram_huffman_code * const codes = c->huffman.codes;
-
- /* Special case of 0 length codes */
- for (i = 0, n = *out_size; i < n; i++) {
- out_i[i] = codes[0].symbol;
- }
- return 0;
-}
-
-int cram_huffman_decode_int(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out, int *out_size) {
- int32_t *out_i = (int32_t *)out;
- int i, n, ncodes = c->huffman.ncodes;
- const cram_huffman_code * const codes = c->huffman.codes;
-
- for (i = 0, n = *out_size; i < n; i++) {
- int idx = 0;
- int val = 0, len = 0, last_len = 0;
-
- // Now one bit at a time for remaining checks
- for (;;) {
- int dlen = codes[idx].len - last_len;
- if (dlen <= 0 || (in->alloc - in->byte)*8 + in->bit + 7 < dlen)
- return -1;
-
- //val <<= dlen;
- //val |= get_bits_MSB(in, dlen);
- //last_len = (len += dlen);
-
- last_len = (len += dlen);
- for (; dlen; dlen--) GET_BIT_MSB(in, val);
-
- idx = val - codes[idx].p;
- if (idx >= ncodes || idx < 0)
- return -1;
-
- if (codes[idx].code == val && codes[idx].len == len) {
- out_i[i] = codes[idx].symbol;
- break;
- }
- }
- }
-
- return 0;
-}
-
-/*
- * Initialises a huffman decoder from an encoding data stream.
- */
-cram_codec *cram_huffman_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- int32_t ncodes, i, j;
- char *cp = data, *data_end = &data[size];
- cram_codec *h;
- cram_huffman_code *codes;
- int32_t val, last_len, max_len = 0;
-
- cp += itf8_get(cp, &ncodes);
- h = calloc(1, sizeof(*h));
- if (!h)
- return NULL;
-
- h->free = cram_huffman_decode_free;
-
- h->huffman.ncodes = ncodes;
- codes = h->huffman.codes = malloc(ncodes * sizeof(*codes));
- if (!codes) {
- free(h);
- return NULL;
- }
-
- /* Read symbols and bit-lengths */
- for (i = 0; i < ncodes && cp < data_end; i++) {
- cp += itf8_get(cp, &codes[i].symbol);
- }
-
- if (cp >= data_end) {
- fprintf(stderr, "Malformed huffman header stream\n");
- free(h);
- return NULL;
- }
- cp += itf8_get(cp, &i);
- if (i != ncodes) {
- fprintf(stderr, "Malformed huffman header stream\n");
- free(h);
- return NULL;
- }
-
- if (ncodes == 0) {
- /* NULL huffman stream */
- return h;
- }
-
- for (i = 0; i < ncodes && cp < data_end; i++) {
- cp += itf8_get(cp, &codes[i].len);
- if (max_len < codes[i].len)
- max_len = codes[i].len;
- }
- if (cp - data != size || max_len >= ncodes) {
- fprintf(stderr, "Malformed huffman header stream\n");
- free(h);
- return NULL;
- }
-
- /* Sort by bit length and then by symbol value */
- qsort(codes, ncodes, sizeof(*codes), code_sort);
-
- /* Assign canonical codes */
- val = -1, last_len = 0;
- for (i = 0; i < ncodes; i++) {
- val++;
- if (codes[i].len > last_len) {
- while (codes[i].len > last_len) {
- val <<= 1;
- last_len++;
- }
- }
- codes[i].code = val;
- }
-
- /*
- * Compute the next starting point, offset by the i'th value.
- * For example if codes 10, 11, 12, 13 are 30, 31, 32, 33 then
- * codes[10..13].p = 30 - 10.
- */
- last_len = 0;
- for (i = j = 0; i < ncodes; i++) {
- if (codes[i].len > last_len) {
- j = codes[i].code - i;
- last_len = codes[i].len;
- }
- codes[i].p = j;
- }
-
-// puts("==HUFF LEN==");
-// for (i = 0; i <= last_len+1; i++) {
-// printf("len %d=%d prefix %d\n", i, h->huffman.lengths[i], h->huffman.prefix[i]);
-// }
-// puts("===HUFFMAN CODES===");
-// for (i = 0; i < ncodes; i++) {
-// int j;
-// printf("%d: %d %d %d ", i, codes[i].symbol, codes[i].len, codes[i].code);
-// j = codes[i].len;
-// while (j) {
-// putchar(codes[i].code & (1 << --j) ? '1' : '0');
-// }
-// printf(" %d\n", codes[i].code);
-// }
-
- h->codec = E_HUFFMAN;
- if (option == E_BYTE || option == E_BYTE_ARRAY) {
- if (h->huffman.codes[0].len == 0)
- h->decode = cram_huffman_decode_char0;
- else
- h->decode = cram_huffman_decode_char;
- } else if (option == E_BYTE_ARRAY_BLOCK) {
- abort();
- } else {
- if (h->huffman.codes[0].len == 0)
- h->decode = cram_huffman_decode_int0;
- else
- h->decode = cram_huffman_decode_int;
- }
-
- return (cram_codec *)h;
-}
-
-int cram_huffman_encode_char0(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- return 0;
-}
-
-int cram_huffman_encode_char(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- int i, code, len, r = 0;
- unsigned char *syms = (unsigned char *)in;
-
- do {
- int sym = *syms++;
- if (sym >= -1 && sym < MAX_HUFF) {
- i = c->e_huffman.val2code[sym+1];
- assert(c->e_huffman.codes[i].symbol == sym);
- code = c->e_huffman.codes[i].code;
- len = c->e_huffman.codes[i].len;
- } else {
- /* Slow - use a lookup table for when sym < MAX_HUFF? */
- for (i = 0; i < c->e_huffman.nvals; i++) {
- if (c->e_huffman.codes[i].symbol == sym)
- break;
- }
- if (i == c->e_huffman.nvals)
- return -1;
-
- code = c->e_huffman.codes[i].code;
- len = c->e_huffman.codes[i].len;
- }
-
- r |= store_bits_MSB(c->out, code, len);
- } while (--in_size);
-
- return r;
-}
-
-int cram_huffman_encode_int0(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- return 0;
-}
-
-int cram_huffman_encode_int(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- int i, code, len, r = 0;
- int *syms = (int *)in;
-
- do {
- int sym = *syms++;
-
- if (sym >= -1 && sym < MAX_HUFF) {
- i = c->e_huffman.val2code[sym+1];
- assert(c->e_huffman.codes[i].symbol == sym);
- code = c->e_huffman.codes[i].code;
- len = c->e_huffman.codes[i].len;
- } else {
- /* Slow - use a lookup table for when sym < MAX_HUFFMAN_SYM? */
- for (i = 0; i < c->e_huffman.nvals; i++) {
- if (c->e_huffman.codes[i].symbol == sym)
- break;
- }
- if (i == c->e_huffman.nvals)
- return -1;
-
- code = c->e_huffman.codes[i].code;
- len = c->e_huffman.codes[i].len;
- }
-
- r |= store_bits_MSB(c->out, code, len);
- } while (--in_size);
-
- return r;
-}
-
-void cram_huffman_encode_free(cram_codec *c) {
- if (!c)
- return;
-
- if (c->e_huffman.codes)
- free(c->e_huffman.codes);
- free(c);
-}
-
-/*
- * Encodes a huffman tree.
- * Returns number of bytes written.
- */
-int cram_huffman_encode_store(cram_codec *c, cram_block *b, char *prefix,
- int version) {
- int i, len = 0;
- cram_huffman_code *codes = c->e_huffman.codes;
- /*
- * Up to code length 127 means 2.5e+26 bytes of data required (worst
- * case huffman tree needs symbols with freqs matching the Fibonacci
- * series). So guaranteed 1 byte per code.
- *
- * Symbols themselves could be 5 bytes (eg -1 is 5 bytes in itf8).
- *
- * Therefore 6*ncodes + 5 + 5 + 1 + 5 is max memory
- */
- char *tmp = malloc(6*c->e_huffman.nvals+16);
- char *tp = tmp;
-
- if (!tmp)
- return -1;
-
- if (prefix) {
- size_t l = strlen(prefix);
- BLOCK_APPEND(b, prefix, l);
- len += l;
- }
-
- tp += itf8_put(tp, c->e_huffman.nvals);
- for (i = 0; i < c->e_huffman.nvals; i++) {
- tp += itf8_put(tp, codes[i].symbol);
- }
-
- tp += itf8_put(tp, c->e_huffman.nvals);
- for (i = 0; i < c->e_huffman.nvals; i++) {
- tp += itf8_put(tp, codes[i].len);
- }
-
- len += itf8_put_blk(b, c->codec);
- len += itf8_put_blk(b, tp-tmp);
- BLOCK_APPEND(b, tmp, tp-tmp);
- len += tp-tmp;
-
- free(tmp);
-
- return len;
-}
-
-cram_codec *cram_huffman_encode_init(cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- int *vals = NULL, *freqs = NULL, vals_alloc = 0, *lens, code, len;
- int nvals, i, ntot = 0, max_val = 0, min_val = INT_MAX, k;
- cram_codec *c;
- cram_huffman_code *codes;
-
- c = malloc(sizeof(*c));
- if (!c)
- return NULL;
- c->codec = E_HUFFMAN;
-
- /* Count number of unique symbols */
- for (nvals = i = 0; i < MAX_STAT_VAL; i++) {
- if (!st->freqs[i])
- continue;
- if (nvals >= vals_alloc) {
- vals_alloc = vals_alloc ? vals_alloc*2 : 1024;
- vals = realloc(vals, vals_alloc * sizeof(int));
- freqs = realloc(freqs, vals_alloc * sizeof(int));
- if (!vals || !freqs) {
- if (vals) free(vals);
- if (freqs) free(freqs);
- free(c);
- return NULL;
- }
- }
- vals[nvals] = i;
- freqs[nvals] = st->freqs[i];
- assert(st->freqs[i] > 0);
- ntot += freqs[nvals];
- if (max_val < i) max_val = i;
- if (min_val > i) min_val = i;
- nvals++;
- }
- if (st->h) {
- khint_t k;
-
- for (k = kh_begin(st->h); k != kh_end(st->h); k++) {
- if (!kh_exist(st->h, k))
- continue;
- if (nvals >= vals_alloc) {
- vals_alloc = vals_alloc ? vals_alloc*2 : 1024;
- vals = realloc(vals, vals_alloc * sizeof(int));
- freqs = realloc(freqs, vals_alloc * sizeof(int));
- if (!vals || !freqs)
- return NULL;
- }
- vals[nvals]= kh_key(st->h, k);
- freqs[nvals] = kh_val(st->h, k);
- assert(freqs[nvals] > 0);
- ntot += freqs[nvals];
- if (max_val < i) max_val = i;
- if (min_val > i) min_val = i;
- nvals++;
- }
- }
-
- assert(nvals > 0);
-
- freqs = realloc(freqs, 2*nvals*sizeof(*freqs));
- lens = calloc(2*nvals, sizeof(*lens));
- if (!lens || !freqs)
- return NULL;
-
- /* Inefficient, use pointers to form chain so we can insert and maintain
- * a sorted list? This is currently O(nvals^2) complexity.
- */
- for (;;) {
- int low1 = INT_MAX, low2 = INT_MAX;
- int ind1 = 0, ind2 = 0;
- for (i = 0; i < nvals; i++) {
- if (freqs[i] < 0)
- continue;
- if (low1 > freqs[i])
- low2 = low1, ind2 = ind1, low1 = freqs[i], ind1 = i;
- else if (low2 > freqs[i])
- low2 = freqs[i], ind2 = i;
- }
- if (low2 == INT_MAX)
- break;
-
- freqs[nvals] = low1 + low2;
- lens[ind1] = nvals;
- lens[ind2] = nvals;
- freqs[ind1] *= -1;
- freqs[ind2] *= -1;
- nvals++;
- }
- nvals = nvals/2+1;
-
- /* Assign lengths */
- for (i = 0; i < nvals; i++) {
- int code_len = 0;
- for (k = lens[i]; k; k = lens[k])
- code_len++;
- lens[i] = code_len;
- freqs[i] *= -1;
- //fprintf(stderr, "%d / %d => %d\n", vals[i], freqs[i], lens[i]);
- }
-
-
- /* Sort, need in a struct */
- if (!(codes = malloc(nvals * sizeof(*codes))))
- return NULL;
- for (i = 0; i < nvals; i++) {
- codes[i].symbol = vals[i];
- codes[i].len = lens[i];
- }
- qsort(codes, nvals, sizeof(*codes), code_sort);
-
- /*
- * Generate canonical codes from lengths.
- * Sort by length.
- * Start with 0.
- * Every new code of same length is +1.
- * Every new code of new length is +1 then <<1 per extra length.
- *
- * /\
- * a/\
- * /\/\
- * bcd/\
- * ef
- *
- * a 1 0
- * b 3 4 (0+1)<<2
- * c 3 5
- * d 3 6
- * e 4 14 (6+1)<<1
- * f 5 15
- */
- code = 0; len = codes[0].len;
- for (i = 0; i < nvals; i++) {
- while (len != codes[i].len) {
- code<<=1;
- len++;
- }
- codes[i].code = code++;
-
- if (codes[i].symbol >= -1 && codes[i].symbol < MAX_HUFF)
- c->e_huffman.val2code[codes[i].symbol+1] = i;
-
- //fprintf(stderr, "sym %d, code %d, len %d\n",
- // codes[i].symbol, codes[i].code, codes[i].len);
- }
-
- free(lens);
- free(vals);
- free(freqs);
-
- c->e_huffman.codes = codes;
- c->e_huffman.nvals = nvals;
-
- c->free = cram_huffman_encode_free;
- if (option == E_BYTE || option == E_BYTE_ARRAY) {
- if (c->e_huffman.codes[0].len == 0)
- c->encode = cram_huffman_encode_char0;
- else
- c->encode = cram_huffman_encode_char;
- } else {
- if (c->e_huffman.codes[0].len == 0)
- c->encode = cram_huffman_encode_int0;
- else
- c->encode = cram_huffman_encode_int;
- }
- c->store = cram_huffman_encode_store;
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * BYTE_ARRAY_LEN
- */
-int cram_byte_array_len_decode(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out,
- int *out_size) {
- /* Fetch length */
- int32_t len, one = 1;
-
- c->byte_array_len.len_codec->decode(slice, c->byte_array_len.len_codec, in, (char *)&len, &one);
- //printf("ByteArray Len=%d\n", len);
-
- if (c->byte_array_len.value_codec) {
- c->byte_array_len.value_codec->decode(slice,
- c->byte_array_len.value_codec,
- in, out, &len);
- } else {
- return -1;
- }
-
- *out_size = len;
-
- return 0;
-}
-
-void cram_byte_array_len_decode_free(cram_codec *c) {
- if (!c) return;
-
- if (c->byte_array_len.len_codec)
- c->byte_array_len.len_codec->free(c->byte_array_len.len_codec);
-
- if (c->byte_array_len.value_codec)
- c->byte_array_len.value_codec->free(c->byte_array_len.value_codec);
-
- free(c);
-}
-
-cram_codec *cram_byte_array_len_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- char *cp = data;
- int32_t encoding;
- int32_t sub_size;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_BYTE_ARRAY_LEN;
- c->decode = cram_byte_array_len_decode;
- c->free = cram_byte_array_len_decode_free;
-
- cp += itf8_get(cp, &encoding);
- cp += itf8_get(cp, &sub_size);
- c->byte_array_len.len_codec = cram_decoder_init(encoding, cp, sub_size,
- E_INT, version);
- cp += sub_size;
-
- cp += itf8_get(cp, &encoding);
- cp += itf8_get(cp, &sub_size);
- c->byte_array_len.value_codec = cram_decoder_init(encoding, cp, sub_size,
- option, version);
- cp += sub_size;
-
- if (cp - data != size) {
- fprintf(stderr, "Malformed byte_array_len header stream\n");
- free(c);
- return NULL;
- }
-
- return c;
-}
-
-int cram_byte_array_len_encode(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- int32_t i32 = in_size;
- int r = 0;
-
- r |= c->e_byte_array_len.len_codec->encode(slice,
- c->e_byte_array_len.len_codec,
- (char *)&i32, 1);
- r |= c->e_byte_array_len.val_codec->encode(slice,
- c->e_byte_array_len.val_codec,
- in, in_size);
- return r;
-}
-
-void cram_byte_array_len_encode_free(cram_codec *c) {
- if (!c)
- return;
-
- if (c->e_byte_array_len.len_codec)
- c->e_byte_array_len.len_codec->free(c->e_byte_array_len.len_codec);
-
- if (c->e_byte_array_len.val_codec)
- c->e_byte_array_len.val_codec->free(c->e_byte_array_len.val_codec);
-
- free(c);
-}
-
-int cram_byte_array_len_encode_store(cram_codec *c, cram_block *b,
- char *prefix, int version) {
- int len = 0, len2, len3;
- cram_codec *tc;
- cram_block *b_len, *b_val;
-
- if (prefix) {
- size_t l = strlen(prefix);
- BLOCK_APPEND(b, prefix, l);
- len += l;
- }
-
- tc = c->e_byte_array_len.len_codec;
- b_len = cram_new_block(0, 0);
- len2 = tc->store(tc, b_len, NULL, version);
-
- tc = c->e_byte_array_len.val_codec;
- b_val = cram_new_block(0, 0);
- len3 = tc->store(tc, b_val, NULL, version);
-
- len += itf8_put_blk(b, c->codec);
- len += itf8_put_blk(b, len2+len3);
- BLOCK_APPEND(b, BLOCK_DATA(b_len), BLOCK_SIZE(b_len));
- BLOCK_APPEND(b, BLOCK_DATA(b_val), BLOCK_SIZE(b_val));
-
- cram_free_block(b_len);
- cram_free_block(b_val);
-
- return len + len2 + len3;
-}
-
-cram_codec *cram_byte_array_len_encode_init(cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- cram_codec *c;
- cram_byte_array_len_encoder *e = (cram_byte_array_len_encoder *)dat;
-
- c = malloc(sizeof(*c));
- if (!c)
- return NULL;
- c->codec = E_BYTE_ARRAY_LEN;
- c->free = cram_byte_array_len_encode_free;
- c->encode = cram_byte_array_len_encode;
- c->store = cram_byte_array_len_encode_store;
-
- c->e_byte_array_len.len_codec = cram_encoder_init(e->len_encoding,
- NULL, E_INT,
- e->len_dat,
- version);
- c->e_byte_array_len.val_codec = cram_encoder_init(e->val_encoding,
- NULL, E_BYTE_ARRAY,
- e->val_dat,
- version);
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- * BYTE_ARRAY_STOP
- */
-static int cram_byte_array_stop_decode_char(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out,
- int *out_size) {
- int i;
- cram_block *b = NULL;
- char *cp, ch;
-
- if (slice->block_by_id) {
- if (!(b = slice->block_by_id[c->byte_array_stop.content_id]))
- return *out_size?-1:0;
- } else {
- for (i = 0; i < slice->hdr->num_blocks; i++) {
- b = slice->block[i];
- if (b && b->content_type == EXTERNAL &&
- b->content_id == c->byte_array_stop.content_id) {
- break;
- }
- }
- if (i == slice->hdr->num_blocks || !b)
- return -1;
- }
-
- if (b->idx >= b->uncomp_size)
- return -1;
-
- cp = (char *)b->data + b->idx;
- while ((ch = *cp) != (char)c->byte_array_stop.stop) {
- if (cp - (char *)b->data >= b->uncomp_size)
- return -1;
- *out++ = ch;
- cp++;
- }
-
- *out_size = cp - (char *)(b->data + b->idx);
- b->idx = cp - (char *)b->data + 1;
-
- return 0;
-}
-
-int cram_byte_array_stop_decode_block(cram_slice *slice, cram_codec *c,
- cram_block *in, char *out_,
- int *out_size) {
- cram_block *b = NULL;
- cram_block *out = (cram_block *)out_;
- char *cp, *out_cp, *cp_end;
- char stop;
-
- if (slice->block_by_id) {
- if (!(b = slice->block_by_id[c->byte_array_stop.content_id]))
- return *out_size?-1:0;
- } else {
- int i;
- for (i = 0; i < slice->hdr->num_blocks; i++) {
- b = slice->block[i];
- if (b && b->content_type == EXTERNAL &&
- b->content_id == c->byte_array_stop.content_id) {
- break;
- }
- }
- if (i == slice->hdr->num_blocks || !b)
- return -1;
- }
-
- if (b->idx >= b->uncomp_size)
- return -1;
- cp = (char *)b->data + b->idx;
- cp_end = (char *)b->data + b->uncomp_size;
- out_cp = (char *)BLOCK_END(out);
-
- stop = c->byte_array_stop.stop;
- if (cp_end - cp < out->alloc - out->byte) {
- while (*cp != stop && cp != cp_end)
- *out_cp++ = *cp++;
- BLOCK_SIZE(out) = out_cp - (char *)BLOCK_DATA(out);
- } else {
- char *cp_start;
- for (cp_start = cp; *cp != stop && cp != cp_end; cp++)
- ;
- BLOCK_APPEND(out, cp_start, cp - cp_start);
- BLOCK_GROW(out, cp - cp_start);
- }
-
- *out_size = cp - (char *)(b->data + b->idx);
- b->idx = cp - (char *)b->data + 1;
-
- return 0;
-}
-
-void cram_byte_array_stop_decode_free(cram_codec *c) {
- if (!c) return;
-
- free(c);
-}
-
-cram_codec *cram_byte_array_stop_decode_init(char *data, int size,
- enum cram_external_type option,
- int version) {
- cram_codec *c;
- unsigned char *cp = (unsigned char *)data;
-
- if (!(c = malloc(sizeof(*c))))
- return NULL;
-
- c->codec = E_BYTE_ARRAY_STOP;
- c->decode = (option == E_BYTE_ARRAY_BLOCK)
- ? cram_byte_array_stop_decode_block
- : cram_byte_array_stop_decode_char;
- c->free = cram_byte_array_stop_decode_free;
-
- c->byte_array_stop.stop = *cp++;
- if (CRAM_MAJOR_VERS(version) == 1) {
- c->byte_array_stop.content_id = cp[0] + (cp[1]<<8) + (cp[2]<<16)
- + (cp[3]<<24);
- cp += 4;
- } else {
- cp += itf8_get(cp, &c->byte_array_stop.content_id);
- }
-
- if ((char *)cp - data != size) {
- fprintf(stderr, "Malformed byte_array_stop header stream\n");
- free(c);
- return NULL;
- }
-
- return c;
-}
-
-int cram_byte_array_stop_encode(cram_slice *slice, cram_codec *c,
- char *in, int in_size) {
- BLOCK_APPEND(c->out, in, in_size);
- BLOCK_APPEND_CHAR(c->out, c->e_byte_array_stop.stop);
- return 0;
-}
-
-void cram_byte_array_stop_encode_free(cram_codec *c) {
- if (!c)
- return;
- free(c);
-}
-
-int cram_byte_array_stop_encode_store(cram_codec *c, cram_block *b,
- char *prefix, int version) {
- int len = 0;
- char buf[20], *cp = buf;
-
- if (prefix) {
- size_t l = strlen(prefix);
- BLOCK_APPEND(b, prefix, l);
- len += l;
- }
-
- cp += itf8_put(cp, c->codec);
-
- if (CRAM_MAJOR_VERS(version) == 1) {
- cp += itf8_put(cp, 5);
- *cp++ = c->e_byte_array_stop.stop;
- *cp++ = (c->e_byte_array_stop.content_id >> 0) & 0xff;
- *cp++ = (c->e_byte_array_stop.content_id >> 8) & 0xff;
- *cp++ = (c->e_byte_array_stop.content_id >> 16) & 0xff;
- *cp++ = (c->e_byte_array_stop.content_id >> 24) & 0xff;
- } else {
- cp += itf8_put(cp, 1 + itf8_size(c->e_byte_array_stop.content_id));
- *cp++ = c->e_byte_array_stop.stop;
- cp += itf8_put(cp, c->e_byte_array_stop.content_id);
- }
-
- BLOCK_APPEND(b, buf, cp-buf);
- len += cp-buf;
-
- return len;
-}
-
-cram_codec *cram_byte_array_stop_encode_init(cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- cram_codec *c;
-
- c = malloc(sizeof(*c));
- if (!c)
- return NULL;
- c->codec = E_BYTE_ARRAY_STOP;
- c->free = cram_byte_array_stop_encode_free;
- c->encode = cram_byte_array_stop_encode;
- c->store = cram_byte_array_stop_encode_store;
-
- c->e_byte_array_stop.stop = ((int *)dat)[0];
- c->e_byte_array_stop.content_id = ((int *)dat)[1];
-
- return c;
-}
-
-/*
- * ---------------------------------------------------------------------------
- */
-
-char *cram_encoding2str(enum cram_encoding t) {
- switch (t) {
- case E_NULL: return "NULL";
- case E_EXTERNAL: return "EXTERNAL";
- case E_GOLOMB: return "GOLOMB";
- case E_HUFFMAN: return "HUFFMAN";
- case E_BYTE_ARRAY_LEN: return "BYTE_ARRAY_LEN";
- case E_BYTE_ARRAY_STOP: return "BYTE_ARRAY_STOP";
- case E_BETA: return "BETA";
- case E_SUBEXP: return "SUBEXP";
- case E_GOLOMB_RICE: return "GOLOMB_RICE";
- case E_GAMMA: return "GAMMA";
- }
- return "?";
-}
-
-static cram_codec *(*decode_init[])(char *data,
- int size,
- enum cram_external_type option,
- int version) = {
- NULL,
- cram_external_decode_init,
- NULL,
- cram_huffman_decode_init,
- cram_byte_array_len_decode_init,
- cram_byte_array_stop_decode_init,
- cram_beta_decode_init,
- cram_subexp_decode_init,
- NULL,
- cram_gamma_decode_init,
-};
-
-cram_codec *cram_decoder_init(enum cram_encoding codec,
- char *data, int size,
- enum cram_external_type option,
- int version) {
- if (decode_init[codec]) {
- return decode_init[codec](data, size, option, version);
- } else {
- fprintf(stderr, "Unimplemented codec of type %s\n", codec2str(codec));
- return NULL;
- }
-}
-
-static cram_codec *(*encode_init[])(cram_stats *stx,
- enum cram_external_type option,
- void *opt,
- int version) = {
- NULL,
- cram_external_encode_init,
- NULL,
- cram_huffman_encode_init,
- cram_byte_array_len_encode_init,
- cram_byte_array_stop_encode_init,
- cram_beta_encode_init,
- NULL, //cram_subexp_encode_init,
- NULL,
- NULL, //cram_gamma_encode_init,
-};
-
-cram_codec *cram_encoder_init(enum cram_encoding codec,
- cram_stats *st,
- enum cram_external_type option,
- void *dat,
- int version) {
- if (st && !st->nvals)
- return NULL;
-
- if (encode_init[codec]) {
- cram_codec *r;
- if ((r = encode_init[codec](st, option, dat, version)))
- r->out = NULL;
- return r;
- } else {
- fprintf(stderr, "Unimplemented codec of type %s\n", codec2str(codec));
- abort();
- }
-}
-
-/*
- * Returns the content_id used by this codec, also in id2 if byte_array_len.
- * Returns -1 for the CORE block and -2 for unneeded.
- * id2 is only filled out for BYTE_ARRAY_LEN which uses 2 codecs.
- */
-int cram_codec_to_id(cram_codec *c, int *id2) {
- int bnum1, bnum2 = -2;
-
- switch (c->codec) {
- case E_HUFFMAN:
- bnum1 = c->huffman.ncodes == 1 ? -2 : -1;
- break;
- case E_GOLOMB:
- case E_BETA:
- case E_SUBEXP:
- case E_GOLOMB_RICE:
- case E_GAMMA:
- bnum1 = -1;
- break;
- case E_EXTERNAL:
- bnum1 = c->external.content_id;
- break;
- case E_BYTE_ARRAY_LEN:
- bnum1 = cram_codec_to_id(c->byte_array_len.len_codec, NULL);
- bnum2 = cram_codec_to_id(c->byte_array_len.value_codec, NULL);
- break;
- case E_BYTE_ARRAY_STOP:
- bnum1 = c->byte_array_stop.content_id;
- break;
- case E_NULL:
- bnum1 = -2;
- break;
- default:
- fprintf(stderr, "Unknown codec type %d\n", c->codec);
- bnum1 = -1;
- }
-
- if (id2)
- *id2 = bnum2;
- return bnum1;
-}
diff --git a/htslib/cram/cram_codecs.h b/htslib/cram/cram_codecs.h
deleted file mode 100644
index e047901..0000000
--- a/htslib/cram/cram_codecs.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _CRAM_ENCODINGS_H_
-#define _CRAM_ENCODINGS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <inttypes.h>
-
-struct cram_codec;
-
-/*
- * Slow but simple huffman decoder to start with.
- * Read a bit at a time, keeping track of {length, value}
- * eg. 1 1 0 1 => {1,1}, {2,3}, {3,6}, {4,13}
- *
- * Keep track of this through the huffman code table.
- * For fast scanning we have an index of where the first code of length X
- * appears.
- */
-typedef struct {
- int32_t symbol;
- int32_t p; // next code start value, minus index to codes[]
- int32_t code;
- int32_t len;
-} cram_huffman_code;
-
-typedef struct {
- int ncodes;
- cram_huffman_code *codes;
-} cram_huffman_decoder;
-
-#define MAX_HUFF 128
-typedef struct {
- cram_huffman_code *codes;
- int nvals;
- int val2code[MAX_HUFF+1]; // value to code lookup for small values
-} cram_huffman_encoder;
-
-typedef struct {
- int32_t offset;
- int32_t nbits;
-} cram_beta_decoder;
-
-typedef struct {
- int32_t offset;
-} cram_gamma_decoder;
-
-typedef struct {
- int32_t offset;
- int32_t k;
-} cram_subexp_decoder;
-
-typedef struct {
- int32_t content_id;
- enum cram_external_type type;
-} cram_external_decoder;
-
-typedef struct {
- struct cram_codec *len_codec;
- struct cram_codec *value_codec;
-} cram_byte_array_len_decoder;
-
-typedef struct {
- unsigned char stop;
- int32_t content_id;
-} cram_byte_array_stop_decoder;
-
-typedef struct {
- enum cram_encoding len_encoding;
- enum cram_encoding val_encoding;
- void *len_dat;
- void *val_dat;
- struct cram_codec *len_codec;
- struct cram_codec *val_codec;
-} cram_byte_array_len_encoder;
-
-/*
- * A generic codec structure.
- */
-typedef struct cram_codec {
- enum cram_encoding codec;
- cram_block *out;
- void (*free)(struct cram_codec *codec);
- int (*decode)(cram_slice *slice, struct cram_codec *codec,
- cram_block *in, char *out, int *out_size);
- int (*encode)(cram_slice *slice, struct cram_codec *codec,
- char *in, int in_size);
- int (*store)(struct cram_codec *codec, cram_block *b, char *prefix,
- int version);
- union {
- cram_huffman_decoder huffman;
- cram_external_decoder external;
- cram_beta_decoder beta;
- cram_gamma_decoder gamma;
- cram_subexp_decoder subexp;
- cram_byte_array_len_decoder byte_array_len;
- cram_byte_array_stop_decoder byte_array_stop;
-
- cram_huffman_encoder e_huffman;
- cram_external_decoder e_external;
- cram_byte_array_stop_decoder e_byte_array_stop;
- cram_byte_array_len_encoder e_byte_array_len;
- cram_beta_decoder e_beta;
- };
-} cram_codec;
-
-char *cram_encoding2str(enum cram_encoding t);
-
-cram_codec *cram_decoder_init(enum cram_encoding codec, char *data, int size,
- enum cram_external_type option,
- int version);
-cram_codec *cram_encoder_init(enum cram_encoding codec, cram_stats *st,
- enum cram_external_type option, void *dat,
- int version);
-
-//int cram_decode(void *codes, char *in, int in_size, char *out, int *out_size);
-//void cram_decoder_free(void *codes);
-
-//#define GET_BIT_MSB(b,v) (void)(v<<=1, v|=(b->data[b->byte] >> b->bit)&1, (--b->bit == -1) && (b->bit = 7, b->byte++))
-
-#define GET_BIT_MSB(b,v) (void)(v<<=1, v|=(b->data[b->byte] >> b->bit)&1, b->byte += (--b->bit<0), b->bit&=7)
-
-/*
- * Returns the content_id used by this codec, also in id2 if byte_array_len.
- * Returns -1 for the CORE block and -2 for unneeded.
- * id2 is only filled out for BYTE_ARRAY_LEN which uses 2 codecs.
- */
-int cram_codec_to_id(cram_codec *c, int *id2);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CRAM_ENCODINGS_H_ */
diff --git a/htslib/cram/cram_decode.c b/htslib/cram/cram_decode.c
deleted file mode 100644
index 1d6281e..0000000
--- a/htslib/cram/cram_decode.c
+++ /dev/null
@@ -1,2775 +0,0 @@
-/*
-Copyright (c) 2012-2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * - In-memory decoding of CRAM data structures.
- * - Iterator for reading CRAM record by record.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <zlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "cram/cram.h"
-#include "cram/os.h"
-#include "cram/md5.h"
-
-//Whether CIGAR has just M or uses = and X to indicate match and mismatch
-//#define USE_X
-
-/* ----------------------------------------------------------------------
- * CRAM compression headers
- */
-
-/*
- * Decodes the Tag Dictionary record in the preservation map
- * Updates the cram compression header.
- *
- * Returns number of bytes decoded on success
- * -1 on failure
- */
-int cram_decode_TD(char *cp, cram_block_compression_hdr *h) {
- char *op = cp;
- unsigned char *dat;
- cram_block *b;
- int32_t blk_size;
- int nTL, i, sz;
-
- if (!(b = cram_new_block(0, 0)))
- return -1;
- h->TD_blk = b;
-
- /* Decode */
- cp += itf8_get(cp, &blk_size);
- if (!blk_size) {
- h->nTL = 0;
- h->TL = NULL;
- cram_free_block(b);
- return cp - op;
- }
-
- BLOCK_APPEND(b, cp, blk_size);
- cp += blk_size;
- sz = cp - op;
-
- // Force nul termination if missing
- if (BLOCK_DATA(b)[BLOCK_SIZE(b)-1])
- BLOCK_APPEND_CHAR(b, '\0');
-
- /* Set up TL lookup table */
- dat = BLOCK_DATA(b);
-
- // Count
- for (nTL = i = 0; i < BLOCK_SIZE(b); i++) {
- nTL++;
- while (dat[i])
- i++;
- }
-
- // Copy
- h->nTL = nTL;
- if (!(h->TL = calloc(h->nTL, sizeof(unsigned char *))))
- return -1;
- for (nTL = i = 0; i < BLOCK_SIZE(b); i++) {
- h->TL[nTL++] = &dat[i];
- while (dat[i])
- i++;
- }
-
- return sz;
-}
-
-/*
- * Decodes a CRAM block compression header.
- * Returns header ptr on success
- * NULL on failure
- */
-cram_block_compression_hdr *cram_decode_compression_header(cram_fd *fd,
- cram_block *b) {
- char *cp, *cp_copy;
- cram_block_compression_hdr *hdr = calloc(1, sizeof(*hdr));
- int i;
- int32_t map_size, map_count;
-
- if (!hdr)
- return NULL;
-
- if (b->method != RAW) {
- if (cram_uncompress_block(b)) {
- free(hdr);
- return NULL;
- }
- }
-
- cp = (char *)b->data;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- cp += itf8_get(cp, &hdr->ref_seq_id);
- cp += itf8_get(cp, &hdr->ref_seq_start);
- cp += itf8_get(cp, &hdr->ref_seq_span);
- cp += itf8_get(cp, &hdr->num_records);
- cp += itf8_get(cp, &hdr->num_landmarks);
- if (!(hdr->landmark = malloc(hdr->num_landmarks * sizeof(int32_t)))) {
- free(hdr);
- return NULL;
- }
- for (i = 0; i < hdr->num_landmarks; i++) {
- cp += itf8_get(cp, &hdr->landmark[i]);
- }
- }
-
- hdr->preservation_map = kh_init(map);
-
- memset(hdr->rec_encoding_map, 0,
- CRAM_MAP_HASH * sizeof(hdr->rec_encoding_map[0]));
- memset(hdr->tag_encoding_map, 0,
- CRAM_MAP_HASH * sizeof(hdr->tag_encoding_map[0]));
-
- if (!hdr->preservation_map) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- /* Initialise defaults for preservation map */
- hdr->mapped_qs_included = 0;
- hdr->unmapped_qs_included = 0;
- hdr->unmapped_placed = 0;
- hdr->qs_included = 0;
- hdr->read_names_included = 0;
- hdr->AP_delta = 1;
- memcpy(hdr->substitution_matrix, "CGTNAGTNACTNACGNACGT", 20);
-
- /* Preservation map */
- cp += itf8_get(cp, &map_size); cp_copy = cp;
- cp += itf8_get(cp, &map_count);
- for (i = 0; i < map_count; i++) {
- pmap_t hd;
- khint_t k;
- int r;
-
- cp += 2;
- switch(CRAM_KEY(cp[-2],cp[-1])) {
- case CRAM_KEY('M','I'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "MI", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- hdr->mapped_qs_included = hd.i;
- break;
-
- case CRAM_KEY('U','I'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "UI", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- hdr->unmapped_qs_included = hd.i;
- break;
-
- case CRAM_KEY('P','I'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "PI", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- hdr->unmapped_placed = hd.i;
- break;
-
- case CRAM_KEY('R','N'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "RN", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- hdr->read_names_included = hd.i;
- break;
-
- case CRAM_KEY('A','P'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "AP", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- hdr->AP_delta = hd.i;
- break;
-
- case CRAM_KEY('R','R'):
- hd.i = *cp++;
- k = kh_put(map, hdr->preservation_map, "RR", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- kh_val(hdr->preservation_map, k) = hd;
- fd->no_ref = !hd.i;
- break;
-
- case CRAM_KEY('S','M'):
- hdr->substitution_matrix[0][(cp[0]>>6)&3] = 'C';
- hdr->substitution_matrix[0][(cp[0]>>4)&3] = 'G';
- hdr->substitution_matrix[0][(cp[0]>>2)&3] = 'T';
- hdr->substitution_matrix[0][(cp[0]>>0)&3] = 'N';
-
- hdr->substitution_matrix[1][(cp[1]>>6)&3] = 'A';
- hdr->substitution_matrix[1][(cp[1]>>4)&3] = 'G';
- hdr->substitution_matrix[1][(cp[1]>>2)&3] = 'T';
- hdr->substitution_matrix[1][(cp[1]>>0)&3] = 'N';
-
- hdr->substitution_matrix[2][(cp[2]>>6)&3] = 'A';
- hdr->substitution_matrix[2][(cp[2]>>4)&3] = 'C';
- hdr->substitution_matrix[2][(cp[2]>>2)&3] = 'T';
- hdr->substitution_matrix[2][(cp[2]>>0)&3] = 'N';
-
- hdr->substitution_matrix[3][(cp[3]>>6)&3] = 'A';
- hdr->substitution_matrix[3][(cp[3]>>4)&3] = 'C';
- hdr->substitution_matrix[3][(cp[3]>>2)&3] = 'G';
- hdr->substitution_matrix[3][(cp[3]>>0)&3] = 'N';
-
- hdr->substitution_matrix[4][(cp[4]>>6)&3] = 'A';
- hdr->substitution_matrix[4][(cp[4]>>4)&3] = 'C';
- hdr->substitution_matrix[4][(cp[4]>>2)&3] = 'G';
- hdr->substitution_matrix[4][(cp[4]>>0)&3] = 'T';
-
- hd.p = cp;
- cp += 5;
-
- k = kh_put(map, hdr->preservation_map, "SM", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- kh_val(hdr->preservation_map, k) = hd;
- break;
-
- case CRAM_KEY('T','D'): {
- int sz = cram_decode_TD(cp, hdr); // tag dictionary
- if (sz < 0) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- hd.p = cp;
- cp += sz;
-
- k = kh_put(map, hdr->preservation_map, "TD", &r);
- if (-1 == r) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- kh_val(hdr->preservation_map, k) = hd;
- break;
- }
-
- default:
- fprintf(stderr, "Unrecognised preservation map key %c%c\n",
- cp[-2], cp[-1]);
- // guess byte;
- cp++;
- break;
- }
- }
- if (cp - cp_copy != map_size) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- /* Record encoding map */
- cp += itf8_get(cp, &map_size); cp_copy = cp;
- cp += itf8_get(cp, &map_count);
- for (i = 0; i < map_count; i++) {
- char *key = cp;
- int32_t encoding;
- int32_t size;
- cram_map *m = malloc(sizeof(*m)); // FIXME: use pooled_alloc
-
- if (!m) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- cp += 2;
- cp += itf8_get(cp, &encoding);
- cp += itf8_get(cp, &size);
-
- // Fill out cram_map purely for cram_dump to dump out.
- m->key = (key[0]<<8)|key[1];
- m->encoding = encoding;
- m->size = size;
- m->offset = cp - (char *)b->data;
- m->codec = NULL;
-
- if (m->encoding == E_NULL)
- continue;
-
- //printf("%s codes for %.2s\n", cram_encoding2str(encoding), key);
-
- /*
- * For CRAM1.0 CF and BF are Byte and not Int.
- * Practically speaking it makes no difference unless we have a
- * 1.0 format file that stores these in EXTERNAL as only then
- * does Byte vs Int matter.
- *
- * Neither this C code nor Java reference implementations did this,
- * so we gloss over it and treat them as int.
- */
-
- if (key[0] == 'B' && key[1] == 'F') {
- if (!(hdr->codecs[DS_BF] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'C' && key[1] == 'F') {
- if (!(hdr->codecs[DS_CF] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'R' && key[1] == 'I') {
- if (!(hdr->codecs[DS_RI] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'R' && key[1] == 'L') {
- if (!(hdr->codecs[DS_RL] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'A' && key[1] == 'P') {
- if (!(hdr->codecs[DS_AP] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'R' && key[1] == 'G') {
- if (!(hdr->codecs[DS_RG] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'M' && key[1] == 'F') {
- if (!(hdr->codecs[DS_MF] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'N' && key[1] == 'S') {
- if (!(hdr->codecs[DS_NS] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'N' && key[1] == 'P') {
- if (!(hdr->codecs[DS_NP] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'T' && key[1] == 'S') {
- if (!(hdr->codecs[DS_TS] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'N' && key[1] == 'F') {
- if (!(hdr->codecs[DS_NF] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'T' && key[1] == 'C') {
- if (!(hdr->codecs[DS_TC] = cram_decoder_init(encoding, cp, size,
- E_BYTE,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'T' && key[1] == 'N') {
- if (!(hdr->codecs[DS_TN] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'F' && key[1] == 'N') {
- if (!(hdr->codecs[DS_FN] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'F' && key[1] == 'C') {
- if (!(hdr->codecs[DS_FC] = cram_decoder_init(encoding, cp, size,
- E_BYTE,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'F' && key[1] == 'P') {
- if (!(hdr->codecs[DS_FP] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'B' && key[1] == 'S') {
- if (!(hdr->codecs[DS_BS] = cram_decoder_init(encoding, cp, size,
- E_BYTE,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'I' && key[1] == 'N') {
- if (!(hdr->codecs[DS_IN] = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'S' && key[1] == 'C') {
- if (!(hdr->codecs[DS_SC] = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'D' && key[1] == 'L') {
- if (!(hdr->codecs[DS_DL] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'B' && key[1] == 'A') {
- if (!(hdr->codecs[DS_BA] = cram_decoder_init(encoding, cp, size,
- E_BYTE,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'B' && key[1] == 'B') {
- if (!(hdr->codecs[DS_BB] = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'R' && key[1] == 'S') {
- if (!(hdr->codecs[DS_RS] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'P' && key[1] == 'D') {
- if (!(hdr->codecs[DS_PD] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'H' && key[1] == 'C') {
- if (!(hdr->codecs[DS_HC] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'M' && key[1] == 'Q') {
- if (!(hdr->codecs[DS_MQ] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'R' && key[1] == 'N') {
- if (!(hdr->codecs[DS_RN] = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY_BLOCK,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'Q' && key[1] == 'S') {
- if (!(hdr->codecs[DS_QS] = cram_decoder_init(encoding, cp, size,
- E_BYTE,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'Q' && key[1] == 'Q') {
- if (!(hdr->codecs[DS_QQ] = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'T' && key[1] == 'L') {
- if (!(hdr->codecs[DS_TL] = cram_decoder_init(encoding, cp, size,
- E_INT,
- fd->version))) {
- cram_free_compression_header(hdr);
- return NULL;
- }
- } else if (key[0] == 'T' && key[1] == 'M') {
- } else if (key[0] == 'T' && key[1] == 'V') {
- } else
- fprintf(stderr, "Unrecognised key: %.2s\n", key);
-
- cp += size;
-
- m->next = hdr->rec_encoding_map[CRAM_MAP(key[0], key[1])];
- hdr->rec_encoding_map[CRAM_MAP(key[0], key[1])] = m;
- }
- if (cp - cp_copy != map_size) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- /* Tag encoding map */
- cp += itf8_get(cp, &map_size); cp_copy = cp;
- cp += itf8_get(cp, &map_count);
- for (i = 0; i < map_count; i++) {
- int32_t encoding;
- int32_t size;
- cram_map *m = malloc(sizeof(*m)); // FIXME: use pooled_alloc
- char *key = cp+1;
-
- if (!m) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- m->key = (key[0]<<16)|(key[1]<<8)|key[2];
-
- cp += 4; // Strictly ITF8, but this suffices
- cp += itf8_get(cp, &encoding);
- cp += itf8_get(cp, &size);
-
- m->encoding = encoding;
- m->size = size;
- m->offset = cp - (char *)b->data;
- if (!(m->codec = cram_decoder_init(encoding, cp, size,
- E_BYTE_ARRAY_BLOCK, fd->version))) {
- cram_free_compression_header(hdr);
- free(m);
- return NULL;
- }
-
- cp += size;
-
- m->next = hdr->tag_encoding_map[CRAM_MAP(key[0],key[1])];
- hdr->tag_encoding_map[CRAM_MAP(key[0],key[1])] = m;
- }
- if (cp - cp_copy != map_size) {
- cram_free_compression_header(hdr);
- return NULL;
- }
-
- return hdr;
-}
-
-/*
- * Note we also need to scan through the record encoding map to
- * see which data series share the same block, either external or
- * CORE. For example if we need the BF data series but MQ and CF
- * are also encoded in the same block then we need to add those in
- * as a dependency in order to correctly decode BF.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_dependent_data_series(cram_fd *fd,
- cram_block_compression_hdr *hdr,
- cram_slice *s) {
- int *block_used;
- int core_used = 0;
- int i;
- static int i_to_id[] = {
- DS_BF, DS_AP, DS_FP, DS_RL, DS_DL, DS_NF, DS_BA, DS_QS,
- DS_FC, DS_FN, DS_BS, DS_IN, DS_RG, DS_MQ, DS_TL, DS_RN,
- DS_NS, DS_NP, DS_TS, DS_MF, DS_CF, DS_RI, DS_RS, DS_PD,
- DS_HC, DS_SC, DS_BB, DS_QQ,
- };
- uint32_t orig_ds;
-
- /*
- * Set the data_series bit field based on fd->required_fields
- * contents.
- */
- if (fd->required_fields && fd->required_fields != INT_MAX) {
- hdr->data_series = 0;
-
- if (fd->required_fields & SAM_QNAME)
- hdr->data_series |= CRAM_RN;
-
- if (fd->required_fields & SAM_FLAG)
- hdr->data_series |= CRAM_BF;
-
- if (fd->required_fields & SAM_RNAME)
- hdr->data_series |= CRAM_RI | CRAM_BF;
-
- if (fd->required_fields & SAM_POS)
- hdr->data_series |= CRAM_AP | CRAM_BF;
-
- if (fd->required_fields & SAM_MAPQ)
- hdr->data_series |= CRAM_MQ;
-
- if (fd->required_fields & SAM_CIGAR)
- hdr->data_series |= CRAM_CIGAR;
-
- if (fd->required_fields & SAM_RNEXT)
- hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_RI | CRAM_NS |CRAM_BF;
-
- if (fd->required_fields & SAM_PNEXT)
- hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_AP | CRAM_NP | CRAM_BF;
-
- if (fd->required_fields & SAM_TLEN)
- hdr->data_series |= CRAM_CF | CRAM_NF | CRAM_AP | CRAM_TS |
- CRAM_BF | CRAM_MF | CRAM_RI | CRAM_CIGAR;
-
- if (fd->required_fields & SAM_SEQ)
- hdr->data_series |= CRAM_SEQ;
-
- if (!(fd->required_fields & SAM_AUX))
- // No easy way to get MD/NM without other tags at present
- fd->decode_md = 0;
-
- if (fd->required_fields & SAM_QUAL)
- hdr->data_series |= CRAM_SEQ;
-
- if (fd->required_fields & SAM_AUX)
- hdr->data_series |= CRAM_RG | CRAM_TL | CRAM_aux;
-
- if (fd->required_fields & SAM_RGAUX)
- hdr->data_series |= CRAM_RG | CRAM_BF;
-
- // Always uncompress CORE block
- if (cram_uncompress_block(s->block[0]))
- return -1;
- } else {
- hdr->data_series = CRAM_ALL;
-
- for (i = 0; i < s->hdr->num_blocks; i++) {
- if (cram_uncompress_block(s->block[i]))
- return -1;
- }
-
- return 0;
- }
-
- block_used = calloc(s->hdr->num_blocks+1, sizeof(int));
- if (!block_used)
- return -1;
-
- do {
- /*
- * Also set data_series based on code prerequisites. Eg if we need
- * CRAM_QS then we also need to know CRAM_RL so we know how long it
- * is, or if we need FC/FP then we also need FN (number of features).
- *
- * It's not reciprocal though. We may be needing to decode FN
- * but have no need to decode FC, FP and cigar ops.
- */
- if (hdr->data_series & CRAM_RS) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_PD) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_HC) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_QS) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_IN) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_SC) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_BS) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_DL) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_BA) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_BB) hdr->data_series |= CRAM_FC|CRAM_FP;
- if (hdr->data_series & CRAM_QQ) hdr->data_series |= CRAM_FC|CRAM_FP;
-
- // cram_decode_seq() needs seq[] array
- if (hdr->data_series & (CRAM_SEQ|CRAM_CIGAR)) hdr->data_series |= CRAM_RL;
-
- if (hdr->data_series & CRAM_FP) hdr->data_series |= CRAM_FC;
- if (hdr->data_series & CRAM_FC) hdr->data_series |= CRAM_FN;
- if (hdr->data_series & CRAM_aux) hdr->data_series |= CRAM_TL;
- if (hdr->data_series & CRAM_MF) hdr->data_series |= CRAM_CF;
- if (hdr->data_series & CRAM_MQ) hdr->data_series |= CRAM_BF;
- if (hdr->data_series & CRAM_BS) hdr->data_series |= CRAM_RI;
- if (hdr->data_series & (CRAM_MF |CRAM_NS |CRAM_NP |CRAM_TS |CRAM_NF))
- hdr->data_series |= CRAM_CF;
- if (!hdr->read_names_included && hdr->data_series & CRAM_RN)
- hdr->data_series |= CRAM_CF | CRAM_NF;
- if (hdr->data_series & (CRAM_BA | CRAM_QS | CRAM_BB | CRAM_QQ))
- hdr->data_series |= CRAM_BF | CRAM_CF | CRAM_RL;
-
- orig_ds = hdr->data_series;
-
- // Find which blocks are in use.
- for (i = 0; i < sizeof(i_to_id)/sizeof(*i_to_id); i++) {
- int bnum1, bnum2, j;
- cram_codec *c = hdr->codecs[i_to_id[i]];
-
- if (!(hdr->data_series & (1<<i)))
- continue;
-
- if (!c)
- continue;
-
- bnum1 = cram_codec_to_id(c, &bnum2);
-
- for (;;) {
- switch (bnum1) {
- case -2:
- break;
-
- case -1:
- core_used = 1;
- break;
-
- default:
- for (j = 0; j < s->hdr->num_blocks; j++) {
- if (s->block[j]->content_type == EXTERNAL &&
- s->block[j]->content_id == bnum1) {
- block_used[j] = 1;
- if (cram_uncompress_block(s->block[j])) {
- free(block_used);
- return -1;
- }
- }
- }
- break;
- }
-
- if (bnum2 == -2 || bnum1 == bnum2)
- break;
-
- bnum1 = bnum2; // 2nd pass
- }
- }
-
- // Tags too
- if ((fd->required_fields & SAM_AUX) ||
- (hdr->data_series & CRAM_aux)) {
- for (i = 0; i < CRAM_MAP_HASH; i++) {
- int bnum1, bnum2, j;
- cram_map *m = hdr->tag_encoding_map[i];
-
- while (m) {
- cram_codec *c = m->codec;
- if (!c)
- continue;
-
- bnum1 = cram_codec_to_id(c, &bnum2);
-
- for (;;) {
- switch (bnum1) {
- case -2:
- break;
-
- case -1:
- core_used = 1;
- break;
-
- default:
- for (j = 0; j < s->hdr->num_blocks; j++) {
- if (s->block[j]->content_type == EXTERNAL &&
- s->block[j]->content_id == bnum1) {
- block_used[j] = 1;
- if (cram_uncompress_block(s->block[j])) {
- free(block_used);
- return -1;
- }
- }
- }
- break;
- }
-
- if (bnum2 == -2 || bnum1 == bnum2)
- break;
-
- bnum1 = bnum2; // 2nd pass
- }
-
- m = m->next;
- }
- }
- }
-
- // We now know which blocks are in used, so repeat and find
- // which other data series need to be added.
- for (i = 0; i < sizeof(i_to_id)/sizeof(*i_to_id); i++) {
- int bnum1, bnum2, j;
- cram_codec *c = hdr->codecs[i_to_id[i]];
-
- if (!c)
- continue;
-
- bnum1 = cram_codec_to_id(c, &bnum2);
-
- for (;;) {
- switch (bnum1) {
- case -2:
- break;
-
- case -1:
- if (core_used) {
- //printf(" + data series %08x:\n", 1<<i);
- hdr->data_series |= 1<<i;
- }
- break;
-
- default:
- for (j = 0; j < s->hdr->num_blocks; j++) {
- if (s->block[j]->content_type == EXTERNAL &&
- s->block[j]->content_id == bnum1) {
- if (block_used[j]) {
- //printf(" + data series %08x:\n", 1<<i);
- hdr->data_series |= 1<<i;
- }
- }
- }
- break;
- }
-
- if (bnum2 == -2 || bnum1 == bnum2)
- break;
-
- bnum1 = bnum2; // 2nd pass
- }
- }
-
- // Tags too
- for (i = 0; i < CRAM_MAP_HASH; i++) {
- int bnum1, bnum2, j;
- cram_map *m = hdr->tag_encoding_map[i];
-
- while (m) {
- cram_codec *c = m->codec;
- if (!c)
- continue;
-
- bnum1 = cram_codec_to_id(c, &bnum2);
-
- for (;;) {
- switch (bnum1) {
- case -2:
- break;
-
- case -1:
- //printf(" + data series %08x:\n", CRAM_aux);
- hdr->data_series |= CRAM_aux;
- break;
-
- default:
- for (j = 0; j < s->hdr->num_blocks; j++) {
- if (s->block[j]->content_type &&
- s->block[j]->content_id == bnum1) {
- if (block_used[j]) {
- //printf(" + data series %08x:\n",
- // CRAM_aux);
- hdr->data_series |= CRAM_aux;
- }
- }
- }
- break;
- }
-
- if (bnum2 == -2 || bnum1 == bnum2)
- break;
-
- bnum1 = bnum2; // 2nd pass
- }
-
- m = m->next;
- }
- }
- } while (orig_ds != hdr->data_series);
-
- free(block_used);
- return 0;
-}
-
-/* ----------------------------------------------------------------------
- * CRAM slices
- */
-
-/*
- * Decodes a CRAM (un)mapped slice header block.
- * Returns slice header ptr on success
- * NULL on failure
- */
-cram_block_slice_hdr *cram_decode_slice_header(cram_fd *fd, cram_block *b) {
- cram_block_slice_hdr *hdr;
- char *cp = (char *)b->data;
- int i;
-
- if (b->content_type != MAPPED_SLICE &&
- b->content_type != UNMAPPED_SLICE)
- return NULL;
-
- if (!(hdr = calloc(1, sizeof(*hdr))))
- return NULL;
-
- hdr->content_type = b->content_type;
-
- if (b->content_type == MAPPED_SLICE) {
- cp += itf8_get(cp, &hdr->ref_seq_id);
- cp += itf8_get(cp, &hdr->ref_seq_start);
- cp += itf8_get(cp, &hdr->ref_seq_span);
- }
- cp += itf8_get(cp, &hdr->num_records);
- hdr->record_counter = 0;
- if (CRAM_MAJOR_VERS(fd->version) == 2) {
- int32_t i32;
- cp += itf8_get(cp, &i32);
- hdr->record_counter = i32;
- } else if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- cp += ltf8_get(cp, &hdr->record_counter);
- }
-
- cp += itf8_get(cp, &hdr->num_blocks);
-
- cp += itf8_get(cp, &hdr->num_content_ids);
- hdr->block_content_ids = malloc(hdr->num_content_ids * sizeof(int32_t));
- if (!hdr->block_content_ids) {
- free(hdr);
- return NULL;
- }
-
- for (i = 0; i < hdr->num_content_ids; i++) {
- cp += itf8_get(cp, &hdr->block_content_ids[i]);
- }
-
- if (b->content_type == MAPPED_SLICE) {
- cp += itf8_get(cp, &hdr->ref_base_id);
- }
-
- if (CRAM_MAJOR_VERS(fd->version) != 1) {
- memcpy(hdr->md5, cp, 16);
- } else {
- memset(hdr->md5, 0, 16);
- }
-
- return hdr;
-}
-
-
-#if 0
-/* Returns the number of bits set in val; it the highest bit used */
-static int nbits(int v) {
- static const int MultiplyDeBruijnBitPosition[32] = {
- 1, 10, 2, 11, 14, 22, 3, 30, 12, 15, 17, 19, 23, 26, 4, 31,
- 9, 13, 21, 29, 16, 18, 25, 8, 20, 28, 24, 7, 27, 6, 5, 32
- };
-
- v |= v >> 1; // first up to set all bits 1 after the first 1 */
- v |= v >> 2;
- v |= v >> 4;
- v |= v >> 8;
- v |= v >> 16;
-
- // DeBruijn magic to find top bit
- return MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27];
-}
-#endif
-
-#if 0
-static int sort_freqs(const void *vp1, const void *vp2) {
- const int i1 = *(const int *)vp1;
- const int i2 = *(const int *)vp2;
- return i1-i2;
-}
-#endif
-
-/* ----------------------------------------------------------------------
- * Primary CRAM sequence decoder
- */
-
-/*
- * Internal part of cram_decode_slice().
- * Generates the sequence, quality and cigar components.
- */
-static int cram_decode_seq(cram_fd *fd, cram_container *c, cram_slice *s,
- cram_block *blk, cram_record *cr, SAM_hdr *bfd,
- int cf, char *seq, char *qual) {
- int prev_pos = 0, f, r = 0, out_sz = 1;
- int seq_pos = 1;
- int cig_len = 0, ref_pos = cr->apos;
- int32_t fn, i32;
- enum cigar_op cig_op = BAM_CMATCH;
- uint32_t *cigar = s->cigar;
- uint32_t ncigar = s->ncigar;
- uint32_t cigar_alloc = s->cigar_alloc;
- uint32_t nm = 0, md_dist = 0;
- int orig_aux = 0;
- int decode_md = fd->decode_md && s->ref;
- uint32_t ds = c->comp_hdr->data_series;
-
- if ((ds & CRAM_QS) && !(cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) {
- memset(qual, 30, cr->len);
- }
-
- if (decode_md) {
- orig_aux = BLOCK_SIZE(s->aux_blk);
- BLOCK_APPEND(s->aux_blk, "MDZ", 3);
- }
-
- if (ds & CRAM_FN) {
- if (!c->comp_hdr->codecs[DS_FN]) return -1;
- r |= c->comp_hdr->codecs[DS_FN]->decode(s,c->comp_hdr->codecs[DS_FN],
- blk, (char *)&fn, &out_sz);
- } else {
- fn = 0;
- }
-
- ref_pos--; // count from 0
- cr->cigar = ncigar;
-
- if (!(ds & (CRAM_FC | CRAM_FP)))
- goto skip_cigar;
-
- for (f = 0; f < fn; f++) {
- int32_t pos = 0;
- char op;
-
- if (ncigar+2 >= cigar_alloc) {
- cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024;
- s->cigar = cigar;
- if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar))))
- return -1;
- }
-
- if (ds & CRAM_FC) {
- if (!c->comp_hdr->codecs[DS_FC]) return -1;
- r |= c->comp_hdr->codecs[DS_FC]->decode(s,
- c->comp_hdr->codecs[DS_FC],
- blk,
- &op, &out_sz);
- }
-
- if (!(ds & CRAM_FP))
- continue;
-
- if (!c->comp_hdr->codecs[DS_FP]) return -1;
- r |= c->comp_hdr->codecs[DS_FP]->decode(s,
- c->comp_hdr->codecs[DS_FP],
- blk,
- (char *)&pos, &out_sz);
- pos += prev_pos;
-
- if (pos > seq_pos) {
- if (pos > cr->len+1)
- return -1;
-
- if (s->ref && cr->ref_id >= 0) {
- if (ref_pos + pos - seq_pos > bfd->ref[cr->ref_id].len) {
- static int whinged = 0;
- if (!whinged)
- fprintf(stderr, "Ref pos outside of ref "
- "sequence boundary\n");
- whinged = 1;
- } else {
- memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1],
- pos - seq_pos);
- }
- }
-#ifdef USE_X
- if (cig_len && cig_op != BAM_CBASE_MATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- cig_op = BAM_CBASE_MATCH;
-#else
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- cig_op = BAM_CMATCH;
-#endif
- cig_len += pos - seq_pos;
- ref_pos += pos - seq_pos;
- md_dist += pos - seq_pos;
- seq_pos = pos;
- }
-
- prev_pos = pos;
-
- if (!(ds & CRAM_FC))
- goto skip_cigar;
-
- if (!(ds & CRAM_FC))
- continue;
-
- switch(op) {
- case 'S': { // soft clip: IN
- int32_t out_sz2 = 1;
-
- if (cig_len) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_IN) {
- switch (CRAM_MAJOR_VERS(fd->version)) {
- case 1:
- r |= c->comp_hdr->codecs[DS_IN]
- ? c->comp_hdr->codecs[DS_IN]
- ->decode(s, c->comp_hdr->codecs[DS_IN],
- blk, &seq[pos-1], &out_sz2)
- : (seq[pos-1] = 'N', out_sz2 = 1, 0);
- break;
-
- case 2:
- default:
- r |= c->comp_hdr->codecs[DS_SC]
- ? c->comp_hdr->codecs[DS_SC]
- ->decode(s, c->comp_hdr->codecs[DS_SC],
- blk, &seq[pos-1], &out_sz2)
- : (seq[pos-1] = 'N', out_sz2 = 1, 0);
- break;
-
-// default:
-// r |= c->comp_hdr->codecs[DS_BB]
-// ? c->comp_hdr->codecs[DS_BB]
-// ->decode(s, c->comp_hdr->codecs[DS_BB],
-// blk, &seq[pos-1], &out_sz2)
-// : (seq[pos-1] = 'N', out_sz2 = 1, 0);
- }
- cigar[ncigar++] = (out_sz2<<4) + BAM_CSOFT_CLIP;
- cig_op = BAM_CSOFT_CLIP;
- seq_pos += out_sz2;
- }
- break;
- }
-
- case 'X': { // Substitution; BS
- unsigned char base;
-#ifdef USE_X
- if (cig_len && cig_op != BAM_CBASE_MISMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_BS) {
- if (!c->comp_hdr->codecs[DS_BS]) return -1;
- r |= c->comp_hdr->codecs[DS_BS]
- ->decode(s, c->comp_hdr->codecs[DS_BS], blk,
- (char *)&base, &out_sz);
- seq[pos-1] = 'N'; // FIXME look up BS=base value
- }
- cig_op = BAM_CBASE_MISMATCH;
-#else
- int ref_base;
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_BS) {
- if (!c->comp_hdr->codecs[DS_BS]) return -1;
- r |= c->comp_hdr->codecs[DS_BS]
- ->decode(s, c->comp_hdr->codecs[DS_BS], blk,
- (char *)&base, &out_sz);
- if (ref_pos >= bfd->ref[cr->ref_id].len || !s->ref) {
- seq[pos-1] = 'N';
- } else {
- ref_base = fd->L1[(uc)s->ref[ref_pos - s->ref_start +1]];
- seq[pos-1] = c->comp_hdr->
- substitution_matrix[ref_base][base];
- if (decode_md) {
- BLOCK_APPEND_UINT(s->aux_blk, md_dist);
- BLOCK_APPEND_CHAR(s->aux_blk,
- s->ref[ref_pos-s->ref_start +1]);
- md_dist = 0;
- }
- }
- }
- cig_op = BAM_CMATCH;
-#endif
- nm++;
- cig_len++;
- seq_pos++;
- ref_pos++;
- break;
- }
-
- case 'D': { // Deletion; DL
- if (cig_len && cig_op != BAM_CDEL) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_DL) {
- if (!c->comp_hdr->codecs[DS_DL]) return -1;
- r |= c->comp_hdr->codecs[DS_DL]
- ->decode(s, c->comp_hdr->codecs[DS_DL], blk,
- (char *)&i32, &out_sz);
- if (decode_md) {
- BLOCK_APPEND_UINT(s->aux_blk, md_dist);
- BLOCK_APPEND_CHAR(s->aux_blk, '^');
- BLOCK_APPEND(s->aux_blk,
- &s->ref[ref_pos - s->ref_start +1],
- i32);
- md_dist = 0;
- }
- cig_op = BAM_CDEL;
- cig_len += i32;
- ref_pos += i32;
- nm += i32;
- //printf(" %d: DL = %d (ret %d)\n", f, i32, r);
- }
- break;
- }
-
- case 'I': { // Insertion (several bases); IN
- int32_t out_sz2 = 1;
-
- if (cig_len && cig_op != BAM_CINS) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
-
- if (ds & CRAM_IN) {
- if (!c->comp_hdr->codecs[DS_IN]) return -1;
- r |= c->comp_hdr->codecs[DS_IN]
- ->decode(s, c->comp_hdr->codecs[DS_IN], blk,
- &seq[pos-1], &out_sz2);
- cig_op = BAM_CINS;
- cig_len += out_sz2;
- seq_pos += out_sz2;
- nm += out_sz2;
- //printf(" %d: IN(I) = %.*s (ret %d, out_sz %d)\n", f, out_sz2, dat, r, out_sz2);
- }
- break;
- }
-
- case 'i': { // Insertion (single base); BA
- if (cig_len && cig_op != BAM_CINS) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_BA) {
- if (!c->comp_hdr->codecs[DS_BA]) return -1;
- r |= c->comp_hdr->codecs[DS_BA]
- ->decode(s, c->comp_hdr->codecs[DS_BA], blk,
- (char *)&seq[pos-1], &out_sz);
- }
- cig_op = BAM_CINS;
- cig_len++;
- seq_pos++;
- nm++;
- break;
- }
-
- case 'b': { // Several bases
- int32_t len = 1;
-
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
-
- if (ds & CRAM_BB) {
- if (!c->comp_hdr->codecs[DS_BB]) return -1;
- r |= c->comp_hdr->codecs[DS_BB]
- ->decode(s, c->comp_hdr->codecs[DS_BB], blk,
- (char *)&seq[pos-1], &len);
- }
-
- cig_op = BAM_CMATCH;
-
- cig_len+=len;
- seq_pos+=len;
- ref_pos+=len;
- //prev_pos+=len;
- break;
- }
-
- case 'q': { // Several quality values
- int32_t len = 1;
-
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
-
- if (ds & CRAM_QQ) {
- if (!c->comp_hdr->codecs[DS_QQ]) return -1;
- r |= c->comp_hdr->codecs[DS_QQ]
- ->decode(s, c->comp_hdr->codecs[DS_QQ], blk,
- (char *)&qual[pos-1], &len);
- }
-
- cig_op = BAM_CMATCH;
-
- cig_len+=len;
- seq_pos+=len;
- ref_pos+=len;
- //prev_pos+=len;
- break;
- }
-
- case 'B': { // Read base; BA, QS
-#ifdef USE_X
- if (cig_len && cig_op != BAM_CBASE_MISMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
-#else
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
-#endif
- if (ds & CRAM_BA) {
- if (!c->comp_hdr->codecs[DS_BA]) return -1;
- r |= c->comp_hdr->codecs[DS_BA]
- ->decode(s, c->comp_hdr->codecs[DS_BA], blk,
- (char *)&seq[pos-1], &out_sz);
- }
- if (ds & CRAM_QS) {
- if (!c->comp_hdr->codecs[DS_QS]) return -1;
- r |= c->comp_hdr->codecs[DS_QS]
- ->decode(s, c->comp_hdr->codecs[DS_QS], blk,
- (char *)&qual[pos-1], &out_sz);
- }
-#ifdef USE_X
- cig_op = BAM_CBASE_MISMATCH;
-#else
- cig_op = BAM_CMATCH;
-#endif
- cig_len++;
- seq_pos++;
- ref_pos++;
- //printf(" %d: BA/QS(B) = %c/%d (ret %d)\n", f, i32, qc, r);
- break;
- }
-
- case 'Q': { // Quality score; QS
- if (ds & CRAM_QS) {
- if (!c->comp_hdr->codecs[DS_QS]) return -1;
- r |= c->comp_hdr->codecs[DS_QS]
- ->decode(s, c->comp_hdr->codecs[DS_QS], blk,
- (char *)&qual[pos-1], &out_sz);
- //printf(" %d: QS = %d (ret %d)\n", f, qc, r);
- }
- break;
- }
-
- case 'H': { // hard clip; HC
- if (cig_len && cig_op != BAM_CHARD_CLIP) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_HC) {
- if (!c->comp_hdr->codecs[DS_HC]) return -1;
- r |= c->comp_hdr->codecs[DS_HC]
- ->decode(s, c->comp_hdr->codecs[DS_HC], blk,
- (char *)&i32, &out_sz);
- cig_op = BAM_CHARD_CLIP;
- cig_len += i32;
- nm += i32;
- }
- break;
- }
-
- case 'P': { // padding; PD
- if (cig_len && cig_op != BAM_CPAD) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_PD) {
- if (!c->comp_hdr->codecs[DS_PD]) return -1;
- r |= c->comp_hdr->codecs[DS_PD]
- ->decode(s, c->comp_hdr->codecs[DS_PD], blk,
- (char *)&i32, &out_sz);
- cig_op = BAM_CPAD;
- cig_len += i32;
- nm += i32;
- }
- break;
- }
-
- case 'N': { // Ref skip; RS
- if (cig_len && cig_op != BAM_CREF_SKIP) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- if (ds & CRAM_RS) {
- if (!c->comp_hdr->codecs[DS_RS]) return -1;
- r |= c->comp_hdr->codecs[DS_RS]
- ->decode(s, c->comp_hdr->codecs[DS_RS], blk,
- (char *)&i32, &out_sz);
- cig_op = BAM_CREF_SKIP;
- cig_len += i32;
- ref_pos += i32;
- nm += i32;
- }
- break;
- }
-
- default:
- abort();
- }
- }
-
- if (!(ds & CRAM_FC))
- goto skip_cigar;
-
- /* An implement match op for any unaccounted for bases */
- if ((ds & CRAM_FN) && cr->len >= seq_pos) {
- if (s->ref) {
- if (ref_pos + cr->len - seq_pos + 1 > bfd->ref[cr->ref_id].len) {
- static int whinged = 0;
- if (!whinged)
- fprintf(stderr, "Ref pos outside of ref sequence boundary\n");
- whinged = 1;
- } else {
- memcpy(&seq[seq_pos-1], &s->ref[ref_pos - s->ref_start +1],
- cr->len - seq_pos + 1);
- ref_pos += cr->len - seq_pos + 1;
- md_dist += cr->len - seq_pos + 1;
- }
- }
-
- if (ncigar+1 >= cigar_alloc) {
- cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024;
- s->cigar = cigar;
- if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar))))
- return -1;
- }
-#ifdef USE_X
- if (cig_len && cig_op != BAM_CBASE_MATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- cig_op = BAM_CBASE_MATCH;
-#else
- if (cig_len && cig_op != BAM_CMATCH) {
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- cig_len = 0;
- }
- cig_op = BAM_CMATCH;
-#endif
- cig_len += cr->len - seq_pos+1;
- }
-
- skip_cigar:
-
- if ((ds & CRAM_FN) && decode_md) {
- BLOCK_APPEND_UINT(s->aux_blk, md_dist);
- }
-
- if (cig_len) {
- if (ncigar >= cigar_alloc) {
- cigar_alloc = cigar_alloc ? cigar_alloc*2 : 1024;
- s->cigar = cigar;
- if (!(cigar = realloc(cigar, cigar_alloc * sizeof(*cigar))))
- return -1;
- }
-
- cigar[ncigar++] = (cig_len<<4) + cig_op;
- }
-
- cr->ncigar = ncigar - cr->cigar;
- cr->aend = ref_pos;
-
- //printf("2: %.*s %d .. %d\n", cr->name_len, DSTRING_STR(name_ds) + cr->name, cr->apos, ref_pos);
-
- if (ds & CRAM_MQ) {
- if (!c->comp_hdr->codecs[DS_MQ]) return -1;
- r |= c->comp_hdr->codecs[DS_MQ]
- ->decode(s, c->comp_hdr->codecs[DS_MQ], blk,
- (char *)&cr->mqual, &out_sz);
- } else {
- cr->mqual = 40;
- }
-
- if ((ds & CRAM_QS) && (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) {
- int32_t out_sz2 = cr->len;
-
- if (ds & CRAM_QS) {
- if (!c->comp_hdr->codecs[DS_QS]) return -1;
- r |= c->comp_hdr->codecs[DS_QS]
- ->decode(s, c->comp_hdr->codecs[DS_QS], blk,
- qual, &out_sz2);
- }
- }
-
- s->cigar = cigar;
- s->cigar_alloc = cigar_alloc;
- s->ncigar = ncigar;
-
- if (decode_md) {
- char buf[7];
- BLOCK_APPEND_CHAR(s->aux_blk, '\0'); // null terminate MD:Z:
- cr->aux_size += BLOCK_SIZE(s->aux_blk) - orig_aux;
- buf[0] = 'N'; buf[1] = 'M'; buf[2] = 'I';
- buf[3] = (nm>> 0) & 0xff;
- buf[4] = (nm>> 8) & 0xff;
- buf[5] = (nm>>16) & 0xff;
- buf[6] = (nm>>24) & 0xff;
- BLOCK_APPEND(s->aux_blk, buf, 7);
- cr->aux_size += 7;
- }
-
- return r;
-}
-
-/*
- * Quick and simple hash lookup for cram_map arrays
- */
-static cram_map *map_find(cram_map **map, unsigned char *key, int id) {
- cram_map *m;
-
- m = map[CRAM_MAP(key[0],key[1])];
- while (m && m->key != id)
- m= m->next;
-
- return m;
-}
-
-//#define map_find(M,K,I) M[CRAM_MAP(K[0],K[1])];while (m && m->key != I);m= m->next
-
-
-static int cram_decode_aux_1_0(cram_container *c, cram_slice *s,
- cram_block *blk, cram_record *cr) {
- int i, r = 0, out_sz = 1;
- unsigned char ntags;
-
- if (!c->comp_hdr->codecs[DS_TC]) return -1;
- r |= c->comp_hdr->codecs[DS_TC]->decode(s, c->comp_hdr->codecs[DS_TC], blk,
- (char *)&ntags, &out_sz);
- cr->ntags = ntags;
-
- //printf("TC=%d\n", cr->ntags);
- cr->aux_size = 0;
- cr->aux = BLOCK_SIZE(s->aux_blk);
-
- for (i = 0; i < cr->ntags; i++) {
- int32_t id, out_sz = 1;
- unsigned char tag_data[3];
- cram_map *m;
-
- //printf("Tag %d/%d\n", i+1, cr->ntags);
- if (!c->comp_hdr->codecs[DS_TN]) return -1;
- r |= c->comp_hdr->codecs[DS_TN]->decode(s, c->comp_hdr->codecs[DS_TN],
- blk, (char *)&id, &out_sz);
- if (out_sz == 3) {
- tag_data[0] = ((char *)&id)[0];
- tag_data[1] = ((char *)&id)[1];
- tag_data[2] = ((char *)&id)[2];
- } else {
- tag_data[0] = (id>>16) & 0xff;
- tag_data[1] = (id>>8) & 0xff;
- tag_data[2] = id & 0xff;
- }
-
- m = map_find(c->comp_hdr->tag_encoding_map, tag_data, id);
- if (!m)
- return -1;
- BLOCK_APPEND(s->aux_blk, (char *)tag_data, 3);
-
- if (!m->codec) return -1;
- r |= m->codec->decode(s, m->codec, blk, (char *)s->aux_blk, &out_sz);
-
- cr->aux_size += out_sz + 3;
- }
-
- return r;
-}
-
-static int cram_decode_aux(cram_container *c, cram_slice *s,
- cram_block *blk, cram_record *cr) {
- int i, r = 0, out_sz = 1;
- int32_t TL = 0;
- unsigned char *TN;
- uint32_t ds = c->comp_hdr->data_series;
-
- if (!(ds & (CRAM_TL|CRAM_aux))) {
- cr->aux = 0;
- cr->aux_size = 0;
- return 0;
- }
-
- if (!c->comp_hdr->codecs[DS_TL]) return -1;
- r |= c->comp_hdr->codecs[DS_TL]->decode(s, c->comp_hdr->codecs[DS_TL], blk,
- (char *)&TL, &out_sz);
- if (r || TL < 0 || TL >= c->comp_hdr->nTL)
- return -1;
-
- TN = c->comp_hdr->TL[TL];
- cr->ntags = strlen((char *)TN)/3; // optimise to remove strlen
-
- //printf("TC=%d\n", cr->ntags);
- cr->aux_size = 0;
- cr->aux = BLOCK_SIZE(s->aux_blk);
-
- if (!(ds & CRAM_aux))
- return 0;
-
- for (i = 0; i < cr->ntags; i++) {
- int32_t id, out_sz = 1;
- unsigned char tag_data[3];
- cram_map *m;
-
- //printf("Tag %d/%d\n", i+1, cr->ntags);
- tag_data[0] = *TN++;
- tag_data[1] = *TN++;
- tag_data[2] = *TN++;
- id = (tag_data[0]<<16) | (tag_data[1]<<8) | tag_data[2];
-
- m = map_find(c->comp_hdr->tag_encoding_map, tag_data, id);
- if (!m)
- return -1;
- BLOCK_APPEND(s->aux_blk, (char *)tag_data, 3);
-
- if (!m->codec) return -1;
- r |= m->codec->decode(s, m->codec, blk, (char *)s->aux_blk, &out_sz);
- cr->aux_size += out_sz + 3;
- }
-
- return r;
-}
-
-/* Resolve mate pair cross-references between recs within this slice */
-static void cram_decode_slice_xref(cram_slice *s, int required_fields) {
- int rec;
-
- if (!(required_fields & (SAM_RNEXT | SAM_PNEXT | SAM_TLEN))) {
- for (rec = 0; rec < s->hdr->num_records; rec++) {
- cram_record *cr = &s->crecs[rec];
-
- cr->tlen = 0;
- cr->mate_pos = 0;
- cr->mate_ref_id = -1;
- }
-
- return;
- }
-
- for (rec = 0; rec < s->hdr->num_records; rec++) {
- cram_record *cr = &s->crecs[rec];
-
- if (cr->mate_line >= 0) {
- if (cr->mate_line < s->hdr->num_records) {
- /*
- * On the first read, loop through computing lengths.
- * It's not perfect as we have one slice per reference so we
- * cannot detect when TLEN should be zero due to seqs that
- * map to multiple references.
- *
- * We also cannot set tlen correct when it spans a slice for
- * other reasons. This may make tlen too small. Should we
- * fix this by forcing TLEN to be stored verbatim in such cases?
- *
- * Or do we just admit defeat and output 0 for tlen? It's the
- * safe option...
- */
- if (cr->tlen == INT_MIN) {
- int id1 = rec, id2 = rec;
- int aleft = cr->apos, aright = cr->aend;
- int tlen;
- int ref = cr->ref_id;
-
- // number of segments starting at the same point.
- int left_cnt = 0;
-
- do {
- if (aleft > s->crecs[id2].apos)
- aleft = s->crecs[id2].apos, left_cnt = 1;
- else if (aleft == s->crecs[id2].apos)
- left_cnt++;
- if (aright < s->crecs[id2].aend)
- aright = s->crecs[id2].aend;
- if (s->crecs[id2].mate_line == -1) {
- s->crecs[id2].mate_line = rec;
- break;
- }
- assert(s->crecs[id2].mate_line > id2);
- id2 = s->crecs[id2].mate_line;
-
- if (s->crecs[id2].ref_id != ref)
- ref = -1;
- } while (id2 != id1);
-
- if (ref != -1) {
- tlen = aright - aleft + 1;
- id1 = id2 = rec;
-
- /*
- * When we have two seqs with identical start and
- * end coordinates, set +/- tlen based on 1st/last
- * bit flags instead, as a tie breaker.
- */
- if (s->crecs[id2].apos == aleft) {
- if (left_cnt == 1 ||
- (s->crecs[id2].flags & BAM_FREAD1))
- s->crecs[id2].tlen = tlen;
- else
- s->crecs[id2].tlen = -tlen;
- } else {
- s->crecs[id2].tlen = -tlen;
- }
-
- id2 = s->crecs[id2].mate_line;
- while (id2 != id1) {
- if (s->crecs[id2].apos == aleft) {
- if (left_cnt == 1 ||
- (s->crecs[id2].flags & BAM_FREAD1))
- s->crecs[id2].tlen = tlen;
- else
- s->crecs[id2].tlen = -tlen;
- } else {
- s->crecs[id2].tlen = -tlen;
- }
- id2 = s->crecs[id2].mate_line;
- }
- } else {
- id1 = id2 = rec;
-
- s->crecs[id2].tlen = 0;
- id2 = s->crecs[id2].mate_line;
- while (id2 != id1) {
- s->crecs[id2].tlen = 0;
- id2 = s->crecs[id2].mate_line;
- }
- }
- }
-
- cr->mate_pos = s->crecs[cr->mate_line].apos;
- cr->mate_ref_id = s->crecs[cr->mate_line].ref_id;
-
- // paired
- cr->flags |= BAM_FPAIRED;
-
- // set mate unmapped if needed
- if (s->crecs[cr->mate_line].flags & BAM_FUNMAP) {
- cr->flags |= BAM_FMUNMAP;
- cr->tlen = 0;
- }
- if (cr->flags & BAM_FUNMAP) {
- cr->tlen = 0;
- }
-
- // set mate reversed if needed
- if (s->crecs[cr->mate_line].flags & BAM_FREVERSE)
- cr->flags |= BAM_FMREVERSE;
- } else {
- fprintf(stderr, "Mate line out of bounds: %d vs [0, %d]\n",
- cr->mate_line, s->hdr->num_records-1);
- }
-
- /* FIXME: construct read names here too if needed */
- } else {
- if (cr->mate_flags & CRAM_M_REVERSE) {
- cr->flags |= BAM_FPAIRED | BAM_FMREVERSE;
- }
- if (cr->mate_flags & CRAM_M_UNMAP) {
- cr->flags |= BAM_FMUNMAP;
- //cr->mate_ref_id = -1;
- }
- if (!(cr->flags & BAM_FPAIRED))
- cr->mate_ref_id = -1;
- }
-
- if (cr->tlen == INT_MIN)
- cr->tlen = 0; // Just incase
- }
-}
-
-static char *md5_print(unsigned char *md5, char *out) {
- int i;
- for (i = 0; i < 16; i++) {
- out[i*2+0] = "0123456789abcdef"[md5[i]>>4];
- out[i*2+1] = "0123456789abcdef"[md5[i]&15];
- }
- out[32] = 0;
-
- return out;
-}
-
-/*
- * Decode an entire slice from container blocks. Fills out s->crecs[] array.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_decode_slice(cram_fd *fd, cram_container *c, cram_slice *s,
- SAM_hdr *bfd) {
- cram_block *blk = s->block[0];
- int32_t bf, ref_id;
- unsigned char cf;
- int out_sz, r = 0;
- int rec;
- char *seq = NULL, *qual = NULL;
- int unknown_rg = -1;
- int embed_ref;
- char **refs = NULL;
- uint32_t ds;
-
- if (cram_dependent_data_series(fd, c->comp_hdr, s) != 0)
- return -1;
-
- ds = c->comp_hdr->data_series;
-
- blk->bit = 7; // MSB first
-
- /* Look for unknown RG, added as last by Java CRAM? */
- if (bfd->nrg > 0 &&
- !strcmp(bfd->rg[bfd->nrg-1].name, "UNKNOWN"))
- unknown_rg = bfd->nrg-1;
-
- if (blk->content_type != CORE)
- return -1;
-
- if (s->crecs)
- free(s->crecs);
- if (!(s->crecs = malloc(s->hdr->num_records * sizeof(*s->crecs))))
- return -1;
-
- ref_id = s->hdr->ref_seq_id;
- embed_ref = s->hdr->ref_base_id >= 0 ? 1 : 0;
-
- if (ref_id >= 0) {
- if (embed_ref) {
- cram_block *b;
- if (s->hdr->ref_base_id < 0) {
- fprintf(stderr, "No reference specified and "
- "no embedded reference is available.\n");
- return -1;
- }
- if (!s->block_by_id ||
- !(b = s->block_by_id[s->hdr->ref_base_id]))
- return -1;
- cram_uncompress_block(b);
- s->ref = (char *)BLOCK_DATA(b);
- s->ref_start = s->hdr->ref_seq_start;
- s->ref_end = s->hdr->ref_seq_start + s->hdr->ref_seq_span-1;
- } else if (!fd->no_ref) {
- //// Avoid Java cramtools bug by loading entire reference seq
- //s->ref = cram_get_ref(fd, s->hdr->ref_seq_id, 1, 0);
- //s->ref_start = 1;
-
- if (fd->required_fields & SAM_SEQ)
- s->ref =
- cram_get_ref(fd, s->hdr->ref_seq_id,
- s->hdr->ref_seq_start,
- s->hdr->ref_seq_start + s->hdr->ref_seq_span -1);
- s->ref_start = s->hdr->ref_seq_start;
- s->ref_end = s->hdr->ref_seq_start + s->hdr->ref_seq_span-1;
-
- /* Sanity check */
- if (s->ref_start < 0) {
- fprintf(stderr, "Slice starts before base 1.\n");
- s->ref_start = 0;
- }
- pthread_mutex_lock(&fd->ref_lock);
- pthread_mutex_lock(&fd->refs->lock);
- if ((fd->required_fields & SAM_SEQ) &&
- s->ref_end > fd->refs->ref_id[ref_id]->length) {
- fprintf(stderr, "Slice ends beyond reference end.\n");
- s->ref_end = fd->refs->ref_id[ref_id]->length;
- }
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- }
- }
-
- if ((fd->required_fields & SAM_SEQ) &&
- s->ref == NULL && s->hdr->ref_seq_id >= 0 && !fd->no_ref) {
- fprintf(stderr, "Unable to fetch reference #%d %d..%d\n",
- s->hdr->ref_seq_id, s->hdr->ref_seq_start,
- s->hdr->ref_seq_start + s->hdr->ref_seq_span-1);
- return -1;
- }
-
- if (CRAM_MAJOR_VERS(fd->version) != 1
- && (fd->required_fields & SAM_SEQ)
- && s->hdr->ref_seq_id >= 0
- && !fd->ignore_md5
- && memcmp(s->hdr->md5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16)) {
- MD5_CTX md5;
- unsigned char digest[16];
-
- if (s->ref && s->hdr->ref_seq_id >= 0) {
- int start, len;
-
- if (s->hdr->ref_seq_start >= s->ref_start) {
- start = s->hdr->ref_seq_start - s->ref_start;
- } else {
- fprintf(stderr, "Slice starts before base 1.\n");
- start = 0;
- }
-
- if (s->hdr->ref_seq_span <= s->ref_end - s->ref_start + 1) {
- len = s->hdr->ref_seq_span;
- } else {
- fprintf(stderr, "Slice ends beyond reference end.\n");
- len = s->ref_end - s->ref_start + 1;
- }
-
- MD5_Init(&md5);
- if (start + len > s->ref_end - s->ref_start + 1)
- len = s->ref_end - s->ref_start + 1 - start;
- if (len >= 0)
- MD5_Update(&md5, s->ref + start, len);
- MD5_Final(digest, &md5);
- } else if (!s->ref && s->hdr->ref_base_id >= 0) {
- cram_block *b;
- if (s->block_by_id && (b = s->block_by_id[s->hdr->ref_base_id])) {
- MD5_Init(&md5);
- MD5_Update(&md5, b->data, b->uncomp_size);
- MD5_Final(digest, &md5);
- }
- }
-
- if ((!s->ref && s->hdr->ref_base_id < 0)
- || memcmp(digest, s->hdr->md5, 16) != 0) {
- char M[33];
- fprintf(stderr, "ERROR: md5sum reference mismatch for ref "
- "%d pos %d..%d\n", ref_id, s->ref_start, s->ref_end);
- fprintf(stderr, "CRAM: %s\n", md5_print(s->hdr->md5, M));
- fprintf(stderr, "Ref : %s\n", md5_print(digest, M));
- return -1;
- }
- }
-
- if (ref_id == -2) {
- pthread_mutex_lock(&fd->ref_lock);
- pthread_mutex_lock(&fd->refs->lock);
- refs = calloc(fd->refs->nref, sizeof(char *));
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- if (!refs)
- return -1;
- }
-
- for (rec = 0; rec < s->hdr->num_records; rec++) {
- cram_record *cr = &s->crecs[rec];
-
- //fprintf(stderr, "Decode seq %d, %d/%d\n", rec, blk->byte, blk->bit);
-
- cr->s = s;
-
- out_sz = 1; /* decode 1 item */
- if (ds & CRAM_BF) {
- if (!c->comp_hdr->codecs[DS_BF]) return -1;
- r |= c->comp_hdr->codecs[DS_BF]
- ->decode(s, c->comp_hdr->codecs[DS_BF], blk,
- (char *)&bf, &out_sz);
- if (bf < 0 ||
- bf >= sizeof(fd->bam_flag_swap)/sizeof(*fd->bam_flag_swap))
- return -1;
- bf = fd->bam_flag_swap[bf];
- cr->flags = bf;
- } else {
- cr->flags = bf = 0x4; // unmapped
- }
-
- if (ds & CRAM_CF) {
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- /* CF is byte in 1.0, int32 in 2.0 */
- if (!c->comp_hdr->codecs[DS_CF]) return -1;
- r |= c->comp_hdr->codecs[DS_CF]
- ->decode(s, c->comp_hdr->codecs[DS_CF], blk,
- (char *)&cf, &out_sz);
- cr->cram_flags = cf;
- } else {
- if (!c->comp_hdr->codecs[DS_CF]) return -1;
- r |= c->comp_hdr->codecs[DS_CF]
- ->decode(s, c->comp_hdr->codecs[DS_CF], blk,
- (char *)&cr->cram_flags,
- &out_sz);
- cf = cr->cram_flags;
- }
- }
-
- if (CRAM_MAJOR_VERS(fd->version) != 1 && ref_id == -2) {
- if (ds & CRAM_RI) {
- if (!c->comp_hdr->codecs[DS_RI]) return -1;
- r |= c->comp_hdr->codecs[DS_RI]
- ->decode(s, c->comp_hdr->codecs[DS_RI], blk,
- (char *)&cr->ref_id, &out_sz);
- if ((fd->required_fields & (SAM_SEQ|SAM_TLEN))
- && cr->ref_id >= 0) {
- if (!fd->no_ref) {
- if (!refs[cr->ref_id])
- refs[cr->ref_id] = cram_get_ref(fd, cr->ref_id,
- 1, 0);
- s->ref = refs[cr->ref_id];
- }
- s->ref_start = 1;
- pthread_mutex_lock(&fd->ref_lock);
- pthread_mutex_lock(&fd->refs->lock);
- s->ref_end = fd->refs->ref_id[cr->ref_id]->length;
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- }
- } else {
- cr->ref_id = 0;
- }
- } else {
- cr->ref_id = ref_id; // Forced constant in CRAM 1.0
- }
-
-
- if (ds & CRAM_RL) {
- if (!c->comp_hdr->codecs[DS_RL]) return -1;
- r |= c->comp_hdr->codecs[DS_RL]
- ->decode(s, c->comp_hdr->codecs[DS_RL], blk,
- (char *)&cr->len, &out_sz);
- }
-
- if (ds & CRAM_AP) {
- if (!c->comp_hdr->codecs[DS_AP]) return -1;
- r |= c->comp_hdr->codecs[DS_AP]
- ->decode(s, c->comp_hdr->codecs[DS_AP], blk,
- (char *)&cr->apos, &out_sz);
- if (c->comp_hdr->AP_delta)
- cr->apos += s->last_apos;
- s->last_apos= cr->apos;
- } else {
- cr->apos = c->ref_seq_start;
- }
-
- if (ds & CRAM_RG) {
- if (!c->comp_hdr->codecs[DS_RG]) return -1;
- r |= c->comp_hdr->codecs[DS_RG]
- ->decode(s, c->comp_hdr->codecs[DS_RG], blk,
- (char *)&cr->rg, &out_sz);
- if (cr->rg == unknown_rg)
- cr->rg = -1;
- } else {
- cr->rg = -1;
- }
-
- cr->name_len = 0;
-
- if (c->comp_hdr->read_names_included) {
- int32_t out_sz2 = 1;
-
- // Read directly into name cram_block
- cr->name = BLOCK_SIZE(s->name_blk);
- if (ds & CRAM_RN) {
- if (!c->comp_hdr->codecs[DS_RN]) return -1;
- r |= c->comp_hdr->codecs[DS_RN]
- ->decode(s, c->comp_hdr->codecs[DS_RN], blk,
- (char *)s->name_blk, &out_sz2);
- cr->name_len = out_sz2;
- }
- }
-
- cr->mate_pos = 0;
- cr->mate_line = -1;
- cr->mate_ref_id = -1;
- if ((ds & CRAM_CF) && (cf & CRAM_FLAG_DETACHED)) {
- if (ds & CRAM_MF) {
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- /* MF is byte in 1.0, int32 in 2.0 */
- unsigned char mf;
- if (!c->comp_hdr->codecs[DS_MF]) return -1;
- r |= c->comp_hdr->codecs[DS_MF]
- ->decode(s, c->comp_hdr->codecs[DS_MF],
- blk, (char *)&mf, &out_sz);
- cr->mate_flags = mf;
- } else {
- if (!c->comp_hdr->codecs[DS_MF]) return -1;
- r |= c->comp_hdr->codecs[DS_MF]
- ->decode(s, c->comp_hdr->codecs[DS_MF],
- blk,
- (char *)&cr->mate_flags,
- &out_sz);
- }
- } else {
- cr->mate_flags = 0;
- }
-
- if (!c->comp_hdr->read_names_included) {
- int32_t out_sz2 = 1;
-
- // Read directly into name cram_block
- cr->name = BLOCK_SIZE(s->name_blk);
- if (ds & CRAM_RN) {
- if (!c->comp_hdr->codecs[DS_RN]) return -1;
- r |= c->comp_hdr->codecs[DS_RN]
- ->decode(s, c->comp_hdr->codecs[DS_RN],
- blk, (char *)s->name_blk,
- &out_sz2);
- cr->name_len = out_sz2;
- }
- }
-
- if (ds & CRAM_NS) {
- if (!c->comp_hdr->codecs[DS_NS]) return -1;
- r |= c->comp_hdr->codecs[DS_NS]
- ->decode(s, c->comp_hdr->codecs[DS_NS], blk,
- (char *)&cr->mate_ref_id, &out_sz);
- }
-
-// Skip as mate_ref of "*" is legit. It doesn't mean unmapped, just unknown.
-// if (cr->mate_ref_id == -1 && cr->flags & 0x01) {
-// /* Paired, but unmapped */
-// cr->flags |= BAM_FMUNMAP;
-// }
-
- if (ds & CRAM_NP) {
- if (!c->comp_hdr->codecs[DS_NP]) return -1;
- r |= c->comp_hdr->codecs[DS_NP]
- ->decode(s, c->comp_hdr->codecs[DS_NP], blk,
- (char *)&cr->mate_pos, &out_sz);
- }
-
- if (ds & CRAM_TS) {
- if (!c->comp_hdr->codecs[DS_TS]) return -1;
- r |= c->comp_hdr->codecs[DS_TS]
- ->decode(s, c->comp_hdr->codecs[DS_TS], blk,
- (char *)&cr->tlen, &out_sz);
- } else {
- cr->tlen = INT_MIN;
- }
- } else if ((ds & CRAM_CF) && (cf & CRAM_FLAG_MATE_DOWNSTREAM)) {
- if (ds & CRAM_NF) {
- if (!c->comp_hdr->codecs[DS_NF]) return -1;
- r |= c->comp_hdr->codecs[DS_NF]
- ->decode(s, c->comp_hdr->codecs[DS_NF], blk,
- (char *)&cr->mate_line, &out_sz);
- cr->mate_line += rec + 1;
-
- //cr->name_len = sprintf(name, "%d", name_id++);
- //cr->name = DSTRING_LEN(name_ds);
- //dstring_nappend(name_ds, name, cr->name_len);
-
- cr->mate_ref_id = -1;
- cr->tlen = INT_MIN;
- cr->mate_pos = 0;
- } else {
- cr->mate_flags = 0;
- cr->tlen = INT_MIN;
- }
- } else {
- cr->mate_flags = 0;
- cr->tlen = INT_MIN;
- }
- /*
- else if (!name[0]) {
- //name[0] = '?'; name[1] = 0;
- //cr->name_len = 1;
- //cr->name= DSTRING_LEN(s->name_ds);
- //dstring_nappend(s->name_ds, "?", 1);
-
- cr->mate_ref_id = -1;
- cr->tlen = 0;
- cr->mate_pos = 0;
- }
- */
-
- /* Auxiliary tags */
- if (CRAM_MAJOR_VERS(fd->version) == 1)
- r |= cram_decode_aux_1_0(c, s, blk, cr);
- else
- r |= cram_decode_aux(c, s, blk, cr);
-
- /* Fake up dynamic string growth and appending */
- if (ds & CRAM_RL) {
- cr->seq = BLOCK_SIZE(s->seqs_blk);
- BLOCK_GROW(s->seqs_blk, cr->len);
- seq = (char *)BLOCK_END(s->seqs_blk);
- BLOCK_SIZE(s->seqs_blk) += cr->len;
-
- if (!seq)
- return -1;
-
- cr->qual = BLOCK_SIZE(s->qual_blk);
- BLOCK_GROW(s->qual_blk, cr->len);
- qual = (char *)BLOCK_END(s->qual_blk);
- BLOCK_SIZE(s->qual_blk) += cr->len;
-
- if (!s->ref)
- memset(seq, '=', cr->len);
- }
-
- if (!(bf & BAM_FUNMAP)) {
- /* Decode sequence and generate CIGAR */
- if (ds & (CRAM_SEQ | CRAM_MQ)) {
- r |= cram_decode_seq(fd, c, s, blk, cr, bfd, cf, seq, qual);
- } else {
- cr->cigar = 0;
- cr->ncigar = 0;
- cr->aend = cr->apos;
- cr->mqual = 0;
- }
- } else {
- int out_sz2 = cr->len;
-
- //puts("Unmapped");
- cr->cigar = 0;
- cr->ncigar = 0;
- cr->aend = cr->apos;
- cr->mqual = 0;
-
- if (ds & CRAM_BA) {
- if (!c->comp_hdr->codecs[DS_BA]) return -1;
- r |= c->comp_hdr->codecs[DS_BA]
- ->decode(s, c->comp_hdr->codecs[DS_BA], blk,
- (char *)seq, &out_sz2);
- }
-
- if ((ds & CRAM_CF) && (cf & CRAM_FLAG_PRESERVE_QUAL_SCORES)) {
- out_sz2 = cr->len;
- if (ds & CRAM_QS) {
- if (!c->comp_hdr->codecs[DS_QS]) return -1;
- r |= c->comp_hdr->codecs[DS_QS]
- ->decode(s, c->comp_hdr->codecs[DS_QS],
- blk, qual, &out_sz2);
- }
- } else {
- if (ds & CRAM_RL)
- memset(qual, 30, cr->len);
- }
- }
- }
-
- pthread_mutex_lock(&fd->ref_lock);
- if (refs) {
- int i;
- for (i = 0; i < fd->refs->nref; i++) {
- if (refs[i])
- cram_ref_decr(fd->refs, i);
- }
- free(refs);
- } else if (ref_id >= 0 && s->ref != fd->ref_free) {
- cram_ref_decr(fd->refs, ref_id);
- }
- pthread_mutex_unlock(&fd->ref_lock);
-
- /* Resolve mate pair cross-references between recs within this slice */
- cram_decode_slice_xref(s, fd->required_fields);
-
- return r;
-}
-
-typedef struct {
- cram_fd *fd;
- cram_container *c;
- cram_slice *s;
- SAM_hdr *h;
- int exit_code;
-} cram_decode_job;
-
-void *cram_decode_slice_thread(void *arg) {
- cram_decode_job *j = (cram_decode_job *)arg;
-
- j->exit_code = cram_decode_slice(j->fd, j->c, j->s, j->h);
-
- return j;
-}
-
-/*
- * Spawn a multi-threaded version of cram_decode_slice().
- */
-int cram_decode_slice_mt(cram_fd *fd, cram_container *c, cram_slice *s,
- SAM_hdr *bfd) {
- cram_decode_job *j;
- int nonblock;
-
- if (!fd->pool)
- return cram_decode_slice(fd, c, s, bfd);
-
- if (!(j = malloc(sizeof(*j))))
- return -1;
-
- j->fd = fd;
- j->c = c;
- j->s = s;
- j->h = bfd;
-
- nonblock = t_pool_results_queue_sz(fd->rqueue) ? 1 : 0;
-
- if (-1 == t_pool_dispatch2(fd->pool, fd->rqueue, cram_decode_slice_thread,
- j, nonblock)) {
- /* Would block */
- fd->job_pending = j;
- } else {
- fd->job_pending = NULL;
- }
-
- // flush too
- return 0;
-}
-
-
-/* ----------------------------------------------------------------------
- * CRAM sequence iterators.
- */
-
-/*
- * Converts a cram in-memory record into a bam in-memory record. We
- * pass a pointer to a bam_seq_t pointer along with the a pointer to
- * the allocated size. These can initially be pointers to NULL and zero.
- *
- * This function will reallocate the bam buffer as required and update
- * (*bam)->alloc accordingly, allowing it to be used within a loop
- * efficiently without needing to allocate new bam objects over and
- * over again.
- *
- * Returns the used size of the bam record on success
- * -1 on failure.
- */
-static int cram_to_bam(SAM_hdr *bfd, cram_fd *fd, cram_slice *s,
- cram_record *cr, int rec, bam_seq_t **bam) {
- int bam_idx, rg_len;
- char name_a[1024], *name;
- int name_len;
- char *aux, *aux_orig;
- char *seq, *qual;
-
- /* Assign names if not explicitly set */
- if (fd->required_fields & SAM_QNAME) {
- if (cr->name_len) {
- name = (char *)BLOCK_DATA(s->name_blk) + cr->name;
- name_len = cr->name_len;
- } else {
- name = name_a;
- name_len = strlen(fd->prefix);
- memcpy(name, fd->prefix, name_len);
- name += name_len;
- *name++ = ':';
- if (cr->mate_line >= 0 && cr->mate_line < rec)
- name = (char *)append_uint64((unsigned char *)name,
- s->hdr->record_counter +
- cr->mate_line + 1);
- else
- name = (char *)append_uint64((unsigned char *)name,
- s->hdr->record_counter +
- rec + 1);
- name_len = name - name_a;
- name = name_a;
- }
- } else {
- name = "?";
- name_len = 1;
- }
-
- /* Generate BAM record */
- if (cr->rg < -1 || cr->rg >= bfd->nrg)
- return -1;
- rg_len = (cr->rg != -1) ? bfd->rg[cr->rg].name_len + 4 : 0;
-
- if (fd->required_fields & (SAM_SEQ | SAM_QUAL)) {
- if (!BLOCK_DATA(s->seqs_blk))
- return -1;
- seq = (char *)BLOCK_DATA(s->seqs_blk) + cr->seq;
- } else {
- seq = "*";
- cr->len = 1;
- }
-
-
- if (fd->required_fields & SAM_QUAL) {
- if (!BLOCK_DATA(s->qual_blk))
- return -1;
- qual = (char *)BLOCK_DATA(s->qual_blk) + cr->qual;
- } else {
- qual = NULL;
- }
-
- bam_idx = bam_construct_seq(bam, cr->aux_size + rg_len,
- name, name_len,
- cr->flags,
- cr->ref_id,
- cr->apos,
- cr->aend,
- cr->mqual,
- cr->ncigar, &s->cigar[cr->cigar],
- cr->mate_ref_id,
- cr->mate_pos,
- cr->tlen,
- cr->len,
- seq,
- qual);
- if (bam_idx == -1)
- return -1;
-
- aux = aux_orig = (char *)bam_aux(*bam);
-
- /* Auxiliary strings */
- if (cr->aux_size != 0) {
- memcpy(aux, BLOCK_DATA(s->aux_blk) + cr->aux, cr->aux_size);
- aux += cr->aux_size;
- }
-
- /* RG:Z: */
- if (cr->rg != -1) {
- int len = bfd->rg[cr->rg].name_len;
- *aux++ = 'R'; *aux++ = 'G'; *aux++ = 'Z';
- memcpy(aux, bfd->rg[cr->rg].name, len);
- aux += len;
- *aux++ = 0;
- }
-
- return bam_idx + (aux - aux_orig);
-}
-
-/*
- * Here be dragons! The multi-threading code in this is crufty beyond belief.
- */
-static cram_slice *cram_next_slice(cram_fd *fd, cram_container **cp) {
- cram_container *c;
- cram_slice *s = NULL;
-
- if (!(c = fd->ctr)) {
- // Load first container.
- do {
- if (!(c = fd->ctr = cram_read_container(fd)))
- return NULL;
- } while (c->length == 0);
-
- /*
- * The first container may be a result of a sub-range query.
- * In which case it may still not be the optimal starting point
- * due to skipped containers/slices in the index.
- */
- if (fd->range.refid != -2) {
- while (c->ref_seq_id != -2 &&
- (c->ref_seq_id < fd->range.refid ||
- c->ref_seq_start + c->ref_seq_span-1 < fd->range.start)) {
- if (0 != cram_seek(fd, c->length, SEEK_CUR))
- return NULL;
- cram_free_container(fd->ctr);
- do {
- if (!(c = fd->ctr = cram_read_container(fd)))
- return NULL;
- } while (c->length == 0);
- }
-
- if (c->ref_seq_id != -2 && c->ref_seq_id != fd->range.refid)
- return NULL;
- }
-
- if (!(c->comp_hdr_block = cram_read_block(fd)))
- return NULL;
- if (c->comp_hdr_block->content_type != COMPRESSION_HEADER)
- return NULL;
-
- c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block);
- if (!c->comp_hdr)
- return NULL;
- if (!c->comp_hdr->AP_delta) {
- pthread_mutex_lock(&fd->ref_lock);
- fd->unsorted = 1;
- pthread_mutex_unlock(&fd->ref_lock);
- }
- }
-
- if ((s = c->slice)) {
- c->slice = NULL;
- cram_free_slice(s);
- s = NULL;
- }
-
- if (c->curr_slice == c->max_slice) {
- cram_free_container(c);
- c = NULL;
- }
-
- /* Sorry this is so contorted! */
- for (;;) {
- if (fd->job_pending) {
- cram_decode_job *j = (cram_decode_job *)fd->job_pending;
- c = j->c;
- s = j->s;
- free(fd->job_pending);
- fd->job_pending = NULL;
- } else if (!fd->ooc) {
- empty_container:
- if (!c || c->curr_slice == c->max_slice) {
- // new container
- do {
- if (!(c = fd->ctr = cram_read_container(fd))) {
- if (fd->pool) {
- fd->ooc = 1;
- break;
- }
-
- return NULL;
- }
- } while (c->length == 0);
- if (fd->ooc)
- break;
-
- /* Skip containers not yet spanning our range */
- if (fd->range.refid != -2 && c->ref_seq_id != -2) {
- fd->required_fields |= SAM_POS;
-
- if (c->ref_seq_id != fd->range.refid) {
- cram_free_container(c);
- fd->ctr = NULL;
- fd->ooc = 1;
- fd->eof = 1;
- break;
- }
-
- if (c->ref_seq_start > fd->range.end) {
- cram_free_container(c);
- fd->ctr = NULL;
- fd->ooc = 1;
- fd->eof = 1;
- break;
- }
-
- if (c->ref_seq_start + c->ref_seq_span-1 <
- fd->range.start) {
- c->curr_rec = c->max_rec;
- c->curr_slice = c->max_slice;
- cram_seek(fd, c->length, SEEK_CUR);
- cram_free_container(c);
- c = NULL;
- continue;
- }
- }
-
- if (!(c->comp_hdr_block = cram_read_block(fd)))
- return NULL;
- if (c->comp_hdr_block->content_type != COMPRESSION_HEADER)
- return NULL;
-
- c->comp_hdr =
- cram_decode_compression_header(fd, c->comp_hdr_block);
- if (!c->comp_hdr)
- return NULL;
-
- if (!c->comp_hdr->AP_delta) {
- pthread_mutex_lock(&fd->ref_lock);
- fd->unsorted = 1;
- pthread_mutex_unlock(&fd->ref_lock);
- }
- }
-
- if (c->num_records == 0) {
- cram_free_container(c); c = NULL;
- goto empty_container;
- }
-
-
- if (!(s = c->slice = cram_read_slice(fd)))
- return NULL;
- c->curr_slice++;
- c->curr_rec = 0;
- c->max_rec = s->hdr->num_records;
-
- s->last_apos = s->hdr->ref_seq_start;
-
- /* Skip slices not yet spanning our range */
- if (fd->range.refid != -2 && s->hdr->ref_seq_id != -2) {
- if (s->hdr->ref_seq_id != fd->range.refid) {
- fd->eof = 1;
- cram_free_slice(s);
- c->slice = NULL;
- return NULL;
- }
-
- if (s->hdr->ref_seq_start > fd->range.end) {
- fd->eof = 1;
- cram_free_slice(s);
- c->slice = NULL;
- return NULL;
- }
-
- if (s->hdr->ref_seq_start + s->hdr->ref_seq_span-1 <
- fd->range.start) {
- cram_free_slice(s);
- c->slice = NULL;
- cram_free_container(c);
- c = NULL;
- continue;
- }
- }
- }
-
- /* Test decoding of 1st seq */
- if (!c || !s)
- break;
-
- if (cram_decode_slice_mt(fd, c, s, fd->header) != 0) {
- // if (cram_decode_slice(fd, c, s, fd->header) != 0) {
- fprintf(stderr, "Failure to decode slice\n");
- cram_free_slice(s);
- c->slice = NULL;
- return NULL;
- }
-
- if (!fd->pool || fd->job_pending)
- break;
-
- // Push it a bit far, to qsize in queue rather than pending arrival,
- // as cram tends to be a bit bursty in decode timings.
- if (t_pool_results_queue_len(fd->rqueue) > fd->pool->qsize)
- break;
- }
-
- if (fd->pool) {
- t_pool_result *res;
- cram_decode_job *j;
-
-// fprintf(stderr, "Thread pool len = %d, %d\n",
-// t_pool_results_queue_len(fd->rqueue),
-// t_pool_results_queue_sz(fd->rqueue));
-
- if (fd->ooc && t_pool_results_queue_empty(fd->rqueue))
- return NULL;
-
- res = t_pool_next_result_wait(fd->rqueue);
-
- if (!res || !res->data) {
- fprintf(stderr, "t_pool_next_result failure\n");
- return NULL;
- }
-
- j = (cram_decode_job *)res->data;
- c = j->c;
- s = j->s;
-
- fd->ctr = c;
-
- t_pool_delete_result(res, 1);
- }
-
- *cp = c;
- return s;
-}
-
-/*
- * Read the next cram record and return it.
- * Note that to decode cram_record the caller will need to look up some data
- * in the current slice, pointed to by fd->ctr->slice. This is valid until
- * the next call to cram_get_seq (which may invalidate it).
- *
- * Returns record pointer on success (do not free)
- * NULL on failure
- */
-cram_record *cram_get_seq(cram_fd *fd) {
- cram_container *c;
- cram_slice *s;
-
- for (;;) {
- c = fd->ctr;
- if (c && c->slice && c->curr_rec < c->max_rec) {
- s = c->slice;
- } else {
- if (!(s = cram_next_slice(fd, &c)))
- return NULL;
- }
-
- if (fd->range.refid != -2) {
- if (s->crecs[c->curr_rec].ref_id < fd->range.refid) {
- c->curr_rec++;
- continue;
- }
-
- if (s->crecs[c->curr_rec].ref_id != fd->range.refid) {
- fd->eof = 1;
- cram_free_slice(s);
- c->slice = NULL;
- return NULL;
- }
-
- if (s->crecs[c->curr_rec].apos > fd->range.end) {
- fd->eof = 1;
- cram_free_slice(s);
- c->slice = NULL;
- return NULL;
- }
-
- if (s->crecs[c->curr_rec].aend < fd->range.start) {
- c->curr_rec++;
- continue;
- }
- }
-
- break;
- }
-
- fd->ctr = c;
- c->slice = s;
- return &s->crecs[c->curr_rec++];
-}
-
-/*
- * Read the next cram record and convert it to a bam_seq_t struct.
- *
- * Returns 0 on success
- * -1 on EOF or failure (check fd->err)
- */
-int cram_get_bam_seq(cram_fd *fd, bam_seq_t **bam) {
- cram_record *cr;
- cram_container *c;
- cram_slice *s;
-
- if (!(cr = cram_get_seq(fd)))
- return -1;
-
- c = fd->ctr;
- s = c->slice;
-
- return cram_to_bam(fd->header, fd, s, cr, c->curr_rec-1, bam);
-}
diff --git a/htslib/cram/cram_decode.h b/htslib/cram/cram_decode.h
deleted file mode 100644
index 64b188e..0000000
--- a/htslib/cram/cram_decode.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*! \file
- * Include cram.h instead.
- *
- * This is an internal part of the CRAM system and is automatically included
- * when you #include cram.h.
- *
- * Implements the decoding portion of CRAM I/O. Also see
- * cram_codecs.[ch] for the actual encoding functions themselves.
- */
-
-#ifndef _CRAM_READ_H_
-#define _CRAM_READ_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ----------------------------------------------------------------------
- * CRAM sequence iterators.
- */
-
-/*! Read the next cram record and return it as a cram_record.
- *
- * Note that to decode cram_record the caller will need to look up some data
- * in the current slice, pointed to by fd->ctr->slice. This is valid until
- * the next call to cram_get_seq (which may invalidate it).
- *
- * @return
- * Returns record pointer on success (do not free);
- * NULL on failure
- */
-cram_record *cram_get_seq(cram_fd *fd);
-
-/*! Read the next cram record and convert it to a bam_seq_t struct.
- *
- * @return
- * Returns 0 on success;
- * -1 on EOF or failure (check fd->err)
- */
-int cram_get_bam_seq(cram_fd *fd, bam_seq_t **bam);
-
-
-/* ----------------------------------------------------------------------
- * Internal functions
- */
-
-/*! INTERNAL:
- * Decodes a CRAM block compression header.
- *
- * @return
- * Returns header ptr on success;
- * NULL on failure
- */
-cram_block_compression_hdr *cram_decode_compression_header(cram_fd *fd,
- cram_block *b);
-
-/*! INTERNAL:
- * Decodes a CRAM (un)mapped slice header block.
- *
- * @return
- * Returns slice header ptr on success;
- * NULL on failure
- */
-cram_block_slice_hdr *cram_decode_slice_header(cram_fd *fd, cram_block *b);
-
-
-/*! INTERNAL:
- * Decode an entire slice from container blocks. Fills out s->crecs[] array.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_decode_slice(cram_fd *fd, cram_container *c, cram_slice *s,
- SAM_hdr *hdr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/cram/cram_encode.c b/htslib/cram/cram_encode.c
deleted file mode 100644
index 8057e9c..0000000
--- a/htslib/cram/cram_encode.c
+++ /dev/null
@@ -1,3068 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <zlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "cram/cram.h"
-#include "cram/os.h"
-#include "cram/md5.h"
-
-#define Z_CRAM_STRAT Z_FILTERED
-//#define Z_CRAM_STRAT Z_RLE
-//#define Z_CRAM_STRAT Z_HUFFMAN_ONLY
-//#define Z_CRAM_STRAT Z_DEFAULT_STRATEGY
-
-static int process_one_read(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *cr,
- bam_seq_t *b, int rnum);
-
-/*
- * Returns index of val into key.
- * Basically strchr(key, val)-key;
- */
-static int sub_idx(char *key, char val) {
- int i;
-
- for (i = 0; *key && *key++ != val; i++);
- return i;
-}
-
-/*
- * Encodes a compression header block into a generic cram_block structure.
- *
- * Returns cram_block ptr on success
- * NULL on failure
- */
-cram_block *cram_encode_compression_header(cram_fd *fd, cram_container *c,
- cram_block_compression_hdr *h) {
- cram_block *cb = cram_new_block(COMPRESSION_HEADER, 0);
- cram_block *map = cram_new_block(COMPRESSION_HEADER, 0);
- int i, mc;
-
- if (!cb || !map)
- return NULL;
-
- /*
- * This is a concatenation of several blocks of data:
- * header + landmarks, preservation map, read encoding map, and the tag
- * encoding map.
- * All 4 are variable sized and we need to know how large these are
- * before creating the compression header itself as this starts with
- * the total size (stored as a variable length string).
- */
-
- // Duplicated from container itself, and removed in 1.1
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- itf8_put_blk(cb, h->ref_seq_id);
- itf8_put_blk(cb, h->ref_seq_start);
- itf8_put_blk(cb, h->ref_seq_span);
- itf8_put_blk(cb, h->num_records);
- itf8_put_blk(cb, h->num_landmarks);
- for (i = 0; i < h->num_landmarks; i++) {
- itf8_put_blk(cb, h->landmark[i]);
- }
- }
-
- /* Create in-memory preservation map */
- /* FIXME: should create this when we create the container */
- {
- khint_t k;
- int r;
-
- if (!(h->preservation_map = kh_init(map)))
- return NULL;
-
- k = kh_put(map, h->preservation_map, "RN", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 1;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- k = kh_put(map, h->preservation_map, "PI", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 0;
-
- k = kh_put(map, h->preservation_map, "UI", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 1;
-
- k = kh_put(map, h->preservation_map, "MI", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 1;
-
- } else {
- // Technically SM was in 1.0, but wasn't in Java impl.
- k = kh_put(map, h->preservation_map, "SM", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 0;
-
- k = kh_put(map, h->preservation_map, "TD", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 0;
-
- k = kh_put(map, h->preservation_map, "AP", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = c->pos_sorted;
-
- if (fd->no_ref || fd->embed_ref) {
- // Reference Required == No
- k = kh_put(map, h->preservation_map, "RR", &r);
- if (-1 == r) return NULL;
- kh_val(h->preservation_map, k).i = 0;
- }
- }
- }
-
- /* Encode preservation map; could collapse this and above into one */
- mc = 0;
- BLOCK_SIZE(map) = 0;
- if (h->preservation_map) {
- khint_t k;
-
- for (k = kh_begin(h->preservation_map);
- k != kh_end(h->preservation_map);
- k++) {
- const char *key;
- khash_t(map) *pmap = h->preservation_map;
-
-
- if (!kh_exist(pmap, k))
- continue;
-
- key = kh_key(pmap, k);
- BLOCK_APPEND(map, key, 2);
-
- switch(CRAM_KEY(key[0], key[1])) {
- case CRAM_KEY('M','I'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('U','I'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('P','I'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('A','P'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('R','N'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('R','R'):
- BLOCK_APPEND_CHAR(map, kh_val(pmap, k).i);
- break;
-
- case CRAM_KEY('S','M'): {
- char smat[5], *mp = smat;
- *mp++ =
- (sub_idx("CGTN", h->substitution_matrix[0][0]) << 6) |
- (sub_idx("CGTN", h->substitution_matrix[0][1]) << 4) |
- (sub_idx("CGTN", h->substitution_matrix[0][2]) << 2) |
- (sub_idx("CGTN", h->substitution_matrix[0][3]) << 0);
- *mp++ =
- (sub_idx("AGTN", h->substitution_matrix[1][0]) << 6) |
- (sub_idx("AGTN", h->substitution_matrix[1][1]) << 4) |
- (sub_idx("AGTN", h->substitution_matrix[1][2]) << 2) |
- (sub_idx("AGTN", h->substitution_matrix[1][3]) << 0);
- *mp++ =
- (sub_idx("ACTN", h->substitution_matrix[2][0]) << 6) |
- (sub_idx("ACTN", h->substitution_matrix[2][1]) << 4) |
- (sub_idx("ACTN", h->substitution_matrix[2][2]) << 2) |
- (sub_idx("ACTN", h->substitution_matrix[2][3]) << 0);
- *mp++ =
- (sub_idx("ACGN", h->substitution_matrix[3][0]) << 6) |
- (sub_idx("ACGN", h->substitution_matrix[3][1]) << 4) |
- (sub_idx("ACGN", h->substitution_matrix[3][2]) << 2) |
- (sub_idx("ACGN", h->substitution_matrix[3][3]) << 0);
- *mp++ =
- (sub_idx("ACGT", h->substitution_matrix[4][0]) << 6) |
- (sub_idx("ACGT", h->substitution_matrix[4][1]) << 4) |
- (sub_idx("ACGT", h->substitution_matrix[4][2]) << 2) |
- (sub_idx("ACGT", h->substitution_matrix[4][3]) << 0);
- BLOCK_APPEND(map, smat, 5);
- break;
- }
-
- case CRAM_KEY('T','D'): {
- itf8_put_blk(map, BLOCK_SIZE(h->TD_blk));
- BLOCK_APPEND(map,
- BLOCK_DATA(h->TD_blk),
- BLOCK_SIZE(h->TD_blk));
- break;
- }
-
- default:
- fprintf(stderr, "Unknown preservation key '%.2s'\n", key);
- break;
- }
-
- mc++;
- }
- }
- itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc));
- itf8_put_blk(cb, mc);
- BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map));
-
- /* rec encoding map */
- mc = 0;
- BLOCK_SIZE(map) = 0;
- if (h->codecs[DS_BF]) {
- if (-1 == h->codecs[DS_BF]->store(h->codecs[DS_BF], map, "BF",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_CF]) {
- if (-1 == h->codecs[DS_CF]->store(h->codecs[DS_CF], map, "CF",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_RL]) {
- if (-1 == h->codecs[DS_RL]->store(h->codecs[DS_RL], map, "RL",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_AP]) {
- if (-1 == h->codecs[DS_AP]->store(h->codecs[DS_AP], map, "AP",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_RG]) {
- if (-1 == h->codecs[DS_RG]->store(h->codecs[DS_RG], map, "RG",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_MF]) {
- if (-1 == h->codecs[DS_MF]->store(h->codecs[DS_MF], map, "MF",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_NS]) {
- if (-1 == h->codecs[DS_NS]->store(h->codecs[DS_NS], map, "NS",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_NP]) {
- if (-1 == h->codecs[DS_NP]->store(h->codecs[DS_NP], map, "NP",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_TS]) {
- if (-1 == h->codecs[DS_TS]->store(h->codecs[DS_TS], map, "TS",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_NF]) {
- if (-1 == h->codecs[DS_NF]->store(h->codecs[DS_NF], map, "NF",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_TC]) {
- if (-1 == h->codecs[DS_TC]->store(h->codecs[DS_TC], map, "TC",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_TN]) {
- if (-1 == h->codecs[DS_TN]->store(h->codecs[DS_TN], map, "TN",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_TL]) {
- if (-1 == h->codecs[DS_TL]->store(h->codecs[DS_TL], map, "TL",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_FN]) {
- if (-1 == h->codecs[DS_FN]->store(h->codecs[DS_FN], map, "FN",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_FC]) {
- if (-1 == h->codecs[DS_FC]->store(h->codecs[DS_FC], map, "FC",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_FP]) {
- if (-1 == h->codecs[DS_FP]->store(h->codecs[DS_FP], map, "FP",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_BS]) {
- if (-1 == h->codecs[DS_BS]->store(h->codecs[DS_BS], map, "BS",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_IN]) {
- if (-1 == h->codecs[DS_IN]->store(h->codecs[DS_IN], map, "IN",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_DL]) {
- if (-1 == h->codecs[DS_DL]->store(h->codecs[DS_DL], map, "DL",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_BA]) {
- if (-1 == h->codecs[DS_BA]->store(h->codecs[DS_BA], map, "BA",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_BB]) {
- if (-1 == h->codecs[DS_BB]->store(h->codecs[DS_BB], map, "BB",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_MQ]) {
- if (-1 == h->codecs[DS_MQ]->store(h->codecs[DS_MQ], map, "MQ",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_RN]) {
- if (-1 == h->codecs[DS_RN]->store(h->codecs[DS_RN], map, "RN",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_QS]) {
- if (-1 == h->codecs[DS_QS]->store(h->codecs[DS_QS], map, "QS",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_QQ]) {
- if (-1 == h->codecs[DS_QQ]->store(h->codecs[DS_QQ], map, "QQ",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_RI]) {
- if (-1 == h->codecs[DS_RI]->store(h->codecs[DS_RI], map, "RI",
- fd->version))
- return NULL;
- mc++;
- }
- if (CRAM_MAJOR_VERS(fd->version) != 1) {
- if (h->codecs[DS_SC]) {
- if (-1 == h->codecs[DS_SC]->store(h->codecs[DS_SC], map, "SC",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_RS]) {
- if (-1 == h->codecs[DS_RS]->store(h->codecs[DS_RS], map, "RS",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_PD]) {
- if (-1 == h->codecs[DS_PD]->store(h->codecs[DS_PD], map, "PD",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_HC]) {
- if (-1 == h->codecs[DS_HC]->store(h->codecs[DS_HC], map, "HC",
- fd->version))
- return NULL;
- mc++;
- }
- }
- if (h->codecs[DS_TM]) {
- if (-1 == h->codecs[DS_TM]->store(h->codecs[DS_TM], map, "TM",
- fd->version))
- return NULL;
- mc++;
- }
- if (h->codecs[DS_TV]) {
- if (-1 == h->codecs[DS_TV]->store(h->codecs[DS_TV], map, "TV",
- fd->version))
- return NULL;
- mc++;
- }
- itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc));
- itf8_put_blk(cb, mc);
- BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map));
-
- /* tag encoding map */
-#if 0
- mp = map; mc = 0;
- if (h->tag_encoding_map) {
- HashItem *hi;
- HashIter *iter = HashTableIterCreate();
- if (!iter)
- return NULL;
-
- while ((hi = HashTableIterNext(h->tag_encoding_map, iter))) {
- cram_map *m = hi->data.p;
- int sz;
-
- mp += itf8_put(mp, (hi->key[0]<<16)|(hi->key[1]<<8)|hi->key[2]);
- if (-1 == (sz = m->codec->store(m->codec, mp, NULL, fd->version)))
- return NULL;
- mp += sz;
- mc++;
- }
-
- HashTableIterDestroy(iter);
- }
-#else
- mc = 0;
- BLOCK_SIZE(map) = 0;
- if (c->tags_used) {
- khint_t k;
-
-#define TAG_ID(a) ((#a[0]<<8)+#a[1])
-
- for (k = kh_begin(c->tags_used); k != kh_end(c->tags_used); k++) {
- int key;
- if (!kh_exist(c->tags_used, k))
- continue;
-
- mc++;
- itf8_put_blk(map, kh_key(c->tags_used, k));
-
- // use block content id 4
- switch((key = kh_key(c->tags_used, k)) & 0xff) {
- case 'Z': case 'H':
- // string as byte_array_stop
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\005" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_S "\000\000\000",
- 7);
- } else {
- if (key>>8 == TAG_ID(OQ))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_OQ_S,
- 4);
- else if (key>>8 == TAG_ID(BQ))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_BQ_S,
- 4);
- else if (key>>8 == TAG_ID(BD))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_BD_S,
- 4);
- else if (key>>8 == TAG_ID(BI))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_BI_S,
- 4);
- else if ((key>>8 == TAG_ID(Q2)) ||
- (key>>8 == TAG_ID(U2)) ||
- (key>>8 == TAG_ID(QT)) ||
- (key>>8 == TAG_ID(CQ)))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_oq_S,
- 4);
- else if ((key>>8 == TAG_ID(R2)) ||
- (key>>8 == TAG_ID(E2)) ||
- (key>>8 == TAG_ID(CS)) ||
- (key>>8 == TAG_ID(BC)) ||
- (key>>8 == TAG_ID(RT)))
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_os_S,
- 4);
- else
- BLOCK_APPEND(map,
- "\005" // BYTE_ARRAY_STOP
- "\002" // len
- "\t" // stop-byte is also SAM separator
- DS_aux_oz_S,
- 4);
- }
- break;
-
- case 'A': case 'c': case 'C':
- // byte array len, 1 byte
- BLOCK_APPEND(map,
- "\004" // BYTE_ARRAY_LEN
- "\011" // length
- "\003" // HUFFMAN (len)
- "\004" // huffman-len
- "\001" // 1 symbol
- "\001" // symbol=1 byte value
- "\001" // 1 length
- "\000" // length=0
- "\001" // EXTERNAL (val)
- "\001" // external-len
- DS_aux_S,// content-id
- 11);
- break;
-
- case 's': case 'S':
- // byte array len, 2 byte
- BLOCK_APPEND(map,
- "\004" // BYTE_ARRAY_LEN
- "\011" // length
- "\003" // HUFFMAN (len)
- "\004" // huffman-len
- "\001" // 1 symbol
- "\002" // symbol=2 byte value
- "\001" // 1 length
- "\000" // length=0
- "\001" // EXTERNAL (val)
- "\001" // external-len
- DS_aux_S,// content-id
- 11);
- break;
-
- case 'i': case 'I': case 'f':
- // byte array len, 4 byte
- BLOCK_APPEND(map,
- "\004" // BYTE_ARRAY_LEN
- "\011" // length
- "\003" // HUFFMAN (len)
- "\004" // huffman-len
- "\001" // 1 symbol
- "\004" // symbol=4 byte value
- "\001" // 1 length
- "\000" // length=0
- "\001" // EXTERNAL (val)
- "\001" // external-len
- DS_aux_S,// content-id
- 11);
- break;
-
- case 'B':
- // Byte array of variable size, but we generate our tag
- // byte stream at the wrong stage (during reading and not
- // after slice header construction). So we use
- // BYTE_ARRAY_LEN with the length codec being external
- // too.
- if ((key>>8 == TAG_ID(FZ)) || (key>>8 == TAG_ID(ZM)))
- BLOCK_APPEND(map,
- "\004" // BYTE_ARRAY_LEN
- "\006" // length
- "\001" // EXTERNAL (len)
- "\001" // external-len
- DS_aux_FZ_S // content-id
- "\001" // EXTERNAL (val)
- "\001" // external-len
- DS_aux_FZ_S,// content-id
- 8);
- else
- BLOCK_APPEND(map,
- "\004" // BYTE_ARRAY_LEN
- "\006" // length
- "\001" // EXTERNAL (len)
- "\001" // external-len
- DS_aux_S // content-id
- "\001" // EXTERNAL (val)
- "\001" // external-len
- DS_aux_S,// content-id
- 8);
- break;
-
- default:
- fprintf(stderr, "Unsupported SAM aux type '%c'\n",
- kh_key(c->tags_used, k) & 0xff);
- }
- //mp += m->codec->store(m->codec, mp, NULL, fd->version);
- }
- }
-#endif
- itf8_put_blk(cb, BLOCK_SIZE(map) + itf8_size(mc));
- itf8_put_blk(cb, mc);
- BLOCK_APPEND(cb, BLOCK_DATA(map), BLOCK_SIZE(map));
-
- if (fd->verbose)
- fprintf(stderr, "Wrote compression block header in %d bytes\n",
- (int)BLOCK_SIZE(cb));
-
- BLOCK_UPLEN(cb);
-
- cram_free_block(map);
-
- return cb;
-}
-
-
-/*
- * Encodes a slice compression header.
- *
- * Returns cram_block on success
- * NULL on failure
- */
-cram_block *cram_encode_slice_header(cram_fd *fd, cram_slice *s) {
- char *buf;
- char *cp;
- cram_block *b = cram_new_block(MAPPED_SLICE, 0);
- int j;
-
- if (!b)
- return NULL;
-
- if (NULL == (cp = buf = malloc(16+5*(8+s->hdr->num_blocks)))) {
- cram_free_block(b);
- return NULL;
- }
-
- cp += itf8_put(cp, s->hdr->ref_seq_id);
- cp += itf8_put(cp, s->hdr->ref_seq_start);
- cp += itf8_put(cp, s->hdr->ref_seq_span);
- cp += itf8_put(cp, s->hdr->num_records);
- if (CRAM_MAJOR_VERS(fd->version) == 2)
- cp += itf8_put(cp, s->hdr->record_counter);
- else if (CRAM_MAJOR_VERS(fd->version) >= 3)
- cp += ltf8_put(cp, s->hdr->record_counter);
- cp += itf8_put(cp, s->hdr->num_blocks);
- cp += itf8_put(cp, s->hdr->num_content_ids);
- for (j = 0; j < s->hdr->num_content_ids; j++) {
- cp += itf8_put(cp, s->hdr->block_content_ids[j]);
- }
- if (s->hdr->content_type == MAPPED_SLICE)
- cp += itf8_put(cp, s->hdr->ref_base_id);
-
- if (CRAM_MAJOR_VERS(fd->version) != 1) {
- memcpy(cp, s->hdr->md5, 16); cp += 16;
- }
-
- assert(cp-buf <= 16+5*(8+s->hdr->num_blocks));
-
- b->data = (unsigned char *)buf;
- b->comp_size = b->uncomp_size = cp-buf;
-
- return b;
-}
-
-
-/*
- * Encodes a single read.
- *
- * Returns 0 on success
- * -1 on failure
- */
-static int cram_encode_slice_read(cram_fd *fd,
- cram_container *c,
- cram_block_compression_hdr *h,
- cram_slice *s,
- cram_record *cr,
- int *last_pos) {
- int r = 0;
- int32_t i32;
- unsigned char uc;
-
- //fprintf(stderr, "Encode seq %d, %d/%d FN=%d, %s\n", rec, core->byte, core->bit, cr->nfeature, s->name_ds->str + cr->name);
-
- //printf("BF=0x%x\n", cr->flags);
- // bf = cram_flag_swap[cr->flags];
- i32 = fd->cram_flag_swap[cr->flags & 0xfff];
- r |= h->codecs[DS_BF]->encode(s, h->codecs[DS_BF], (char *)&i32, 1);
-
- i32 = cr->cram_flags;
- r |= h->codecs[DS_CF]->encode(s, h->codecs[DS_CF], (char *)&i32, 1);
-
- if (CRAM_MAJOR_VERS(fd->version) != 1 && s->hdr->ref_seq_id == -2)
- r |= h->codecs[DS_RI]->encode(s, h->codecs[DS_RI], (char *)&cr->ref_id, 1);
-
- r |= h->codecs[DS_RL]->encode(s, h->codecs[DS_RL], (char *)&cr->len, 1);
-
- if (c->pos_sorted) {
- i32 = cr->apos - *last_pos;
- r |= h->codecs[DS_AP]->encode(s, h->codecs[DS_AP], (char *)&i32, 1);
- *last_pos = cr->apos;
- } else {
- i32 = cr->apos;
- r |= h->codecs[DS_AP]->encode(s, h->codecs[DS_AP], (char *)&i32, 1);
- }
-
- r |= h->codecs[DS_RG]->encode(s, h->codecs[DS_RG], (char *)&cr->rg, 1);
-
- if (c->comp_hdr->read_names_included) {
- // RN codec: Already stored in block[3].
- }
-
- if (cr->cram_flags & CRAM_FLAG_DETACHED) {
- i32 = cr->mate_flags;
- r |= h->codecs[DS_MF]->encode(s, h->codecs[DS_MF], (char *)&i32, 1);
-
- if (!c->comp_hdr->read_names_included) {
- // RN codec: Already stored in block[3].
- }
-
- r |= h->codecs[DS_NS]->encode(s, h->codecs[DS_NS],
- (char *)&cr->mate_ref_id, 1);
-
- r |= h->codecs[DS_NP]->encode(s, h->codecs[DS_NP],
- (char *)&cr->mate_pos, 1);
-
- r |= h->codecs[DS_TS]->encode(s, h->codecs[DS_TS],
- (char *)&cr->tlen, 1);
- } else if (cr->cram_flags & CRAM_FLAG_MATE_DOWNSTREAM) {
- r |= h->codecs[DS_NF]->encode(s, h->codecs[DS_NF],
- (char *)&cr->mate_line, 1);
- }
-
- /* Aux tags */
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- int j;
- uc = cr->ntags;
- r |= h->codecs[DS_TC]->encode(s, h->codecs[DS_TC], (char *)&uc, 1);
-
- for (j = 0; j < cr->ntags; j++) {
- uint32_t i32 = s->TN[cr->TN_idx + j]; // id
- r |= h->codecs[DS_TN]->encode(s, h->codecs[DS_TN], (char *)&i32, 1);
- }
- } else {
- r |= h->codecs[DS_TL]->encode(s, h->codecs[DS_TL], (char *)&cr->TL, 1);
- }
-
- // qual
- // QS codec : Already stored in block[2].
-
- // features (diffs)
- if (!(cr->flags & BAM_FUNMAP)) {
- int prev_pos = 0, j;
-
- r |= h->codecs[DS_FN]->encode(s, h->codecs[DS_FN],
- (char *)&cr->nfeature, 1);
- for (j = 0; j < cr->nfeature; j++) {
- cram_feature *f = &s->features[cr->feature + j];
-
- uc = f->X.code;
- r |= h->codecs[DS_FC]->encode(s, h->codecs[DS_FC], (char *)&uc, 1);
- i32 = f->X.pos - prev_pos;
- r |= h->codecs[DS_FP]->encode(s, h->codecs[DS_FP], (char *)&i32, 1);
- prev_pos = f->X.pos;
-
- switch(f->X.code) {
- //char *seq;
-
- case 'X':
- //fprintf(stderr, " FC=%c FP=%d base=%d\n", f->X.code, i32, f->X.base);
-
- uc = f->X.base;
- r |= h->codecs[DS_BS]->encode(s, h->codecs[DS_BS],
- (char *)&uc, 1);
- break;
- case 'S':
- // Already done
-// r |= h->codecs[DS_SC]->encode(s, h->codecs[DS_SC],
-// BLOCK_DATA(s->soft_blk) + f->S.seq_idx,
-// f->S.len);
-
-// if (IS_CRAM_3_VERS(fd)) {
-// r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB],
-// BLOCK_DATA(s->seqs_blk) + f->S.seq_idx,
-// f->S.len);
-// }
- break;
- case 'I':
- //seq = DSTRING_STR(s->seqs_ds) + f->S.seq_idx;
- //r |= h->codecs[DS_IN]->encode(s, h->codecs[DS_IN],
- // seq, f->S.len);
-// if (IS_CRAM_3_VERS(fd)) {
-// r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB],
-// BLOCK_DATA(s->seqs_blk) + f->I.seq_idx,
-// f->I.len);
-// }
- break;
- case 'i':
- uc = f->i.base;
- r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA],
- (char *)&uc, 1);
- //seq = DSTRING_STR(s->seqs_ds) + f->S.seq_idx;
- //r |= h->codecs[DS_IN]->encode(s, h->codecs[DS_IN],
- // seq, 1);
- break;
- case 'D':
- i32 = f->D.len;
- r |= h->codecs[DS_DL]->encode(s, h->codecs[DS_DL],
- (char *)&i32, 1);
- break;
-
- case 'B':
- // // Used when we try to store a non ACGTN base or an N
- // // that aligns against a non ACGTN reference
-
- uc = f->B.base;
- r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA],
- (char *)&uc, 1);
-
- // Already added
- // uc = f->B.qual;
- // r |= h->codecs[DS_QS]->encode(s, h->codecs[DS_QS],
- // (char *)&uc, 1);
- break;
-
- case 'b':
- // string of bases
- r |= h->codecs[DS_BB]->encode(s, h->codecs[DS_BB],
- (char *)BLOCK_DATA(s->seqs_blk)
- + f->b.seq_idx,
- f->b.len);
- break;
-
- case 'Q':
- // Already added
- // uc = f->B.qual;
- // r |= h->codecs[DS_QS]->encode(s, h->codecs[DS_QS],
- // (char *)&uc, 1);
- break;
-
- case 'N':
- i32 = f->N.len;
- r |= h->codecs[DS_RS]->encode(s, h->codecs[DS_RS],
- (char *)&i32, 1);
- break;
-
- case 'P':
- i32 = f->P.len;
- r |= h->codecs[DS_PD]->encode(s, h->codecs[DS_PD],
- (char *)&i32, 1);
- break;
-
- case 'H':
- i32 = f->H.len;
- r |= h->codecs[DS_HC]->encode(s, h->codecs[DS_HC],
- (char *)&i32, 1);
- break;
-
-
- default:
- fprintf(stderr, "unhandled feature code %c\n",
- f->X.code);
- return -1;
- }
- }
-
- r |= h->codecs[DS_MQ]->encode(s, h->codecs[DS_MQ],
- (char *)&cr->mqual, 1);
- } else {
- char *seq = (char *)BLOCK_DATA(s->seqs_blk) + cr->seq;
- r |= h->codecs[DS_BA]->encode(s, h->codecs[DS_BA], seq, cr->len);
- }
-
- return r ? -1 : 0;
-}
-
-
-/*
- * Applies various compression methods to specific blocks, depending on
- * known observations of how data series compress.
- *
- * Returns 0 on success
- * -1 on failure
- */
-static int cram_compress_slice(cram_fd *fd, cram_slice *s) {
- int level = fd->level, i;
- int method = 1<<GZIP | 1<<GZIP_RLE, methodF = method;
-
- /* Compress the CORE Block too, with minimal zlib level */
- if (level > 5 && s->block[0]->uncomp_size > 500)
- cram_compress_block(fd, s->block[0], NULL, GZIP, 1);
-
- if (fd->use_bz2)
- method |= 1<<BZIP2;
-
- if (fd->use_rans)
- method |= (1<<RANS0) | (1<<RANS1);
-
- if (fd->use_lzma)
- method |= (1<<LZMA);
-
- /* Faster method for data series we only need entropy encoding on */
- methodF = method & ~(1<<GZIP | 1<<BZIP2 | 1<<LZMA);
- if (level >= 6)
- methodF = method;
-
-
- /* Specific compression methods for certain block types */
- if (cram_compress_block(fd, s->block[DS_IN], fd->m[DS_IN], //IN (seq)
- method, level))
- return -1;
-
- if (fd->level == 0) {
- /* Do nothing */
- } else if (fd->level == 1) {
- if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS],
- methodF, 1))
- return -1;
- for (i = DS_aux; i <= DS_aux_oz; i++) {
- if (s->block[i])
- if (cram_compress_block(fd, s->block[i], fd->m[i],
- method, 1))
- return -1;
- }
- } else if (fd->level < 3) {
- if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS],
- method, 1))
- return -1;
- if (cram_compress_block(fd, s->block[DS_BA], fd->m[DS_BA],
- method, 1))
- return -1;
- if (s->block[DS_BB])
- if (cram_compress_block(fd, s->block[DS_BB], fd->m[DS_BB],
- method, 1))
- return -1;
- for (i = DS_aux; i <= DS_aux_oz; i++) {
- if (s->block[i])
- if (cram_compress_block(fd, s->block[i], fd->m[i],
- method, level))
- return -1;
- }
- } else {
- if (cram_compress_block(fd, s->block[DS_QS], fd->m[DS_QS],
- method, level))
- return -1;
- if (cram_compress_block(fd, s->block[DS_BA], fd->m[DS_BA],
- method, level))
- return -1;
- if (s->block[DS_BB])
- if (cram_compress_block(fd, s->block[DS_BB], fd->m[DS_BB],
- method, level))
- return -1;
- for (i = DS_aux; i <= DS_aux_oz; i++) {
- if (s->block[i])
- if (cram_compress_block(fd, s->block[i], fd->m[i],
- method, level))
- return -1;
- }
- }
-
- // NAME: best is generally xz, bzip2, zlib then rans1
- // It benefits well from a little bit extra compression level.
- if (cram_compress_block(fd, s->block[DS_RN], fd->m[DS_RN],
- method & ~(1<<RANS0 | 1<<GZIP_RLE),
- MIN(9,level)))
- return -1;
-
- // NS shows strong local correlation as rearrangements are localised
- if (s->block[DS_NS] != s->block[0])
- if (cram_compress_block(fd, s->block[DS_NS], fd->m[DS_NS],
- method, level))
- return -1;
-
-
- /*
- * Minimal compression of any block still uncompressed, bar CORE
- */
- {
- int i;
- for (i = 1; i < DS_END; i++) {
- if (!s->block[i] || s->block[i] == s->block[0])
- continue;
-
- // fast methods only
- if (s->block[i]->method == RAW) {
- cram_compress_block(fd, s->block[i], fd->m[i],
- methodF, level);
- }
- }
- }
-
- return 0;
-}
-
-/*
- * Encodes a single slice from a container
- *
- * Returns 0 on success
- * -1 on failure
- */
-static int cram_encode_slice(cram_fd *fd, cram_container *c,
- cram_block_compression_hdr *h, cram_slice *s) {
- int rec, r = 0, last_pos;
- int embed_ref;
- enum cram_DS_ID id;
-
- embed_ref = fd->embed_ref && s->hdr->ref_seq_id != -1 ? 1 : 0;
-
- /*
- * Slice external blocks:
- * ID 0 => base calls (insertions, soft-clip)
- * ID 1 => qualities
- * ID 2 => names
- * ID 3 => TS (insert size), NP (next frag)
- * ID 4 => tag values
- * ID 6 => tag IDs (TN), if CRAM_V1.0
- * ID 7 => TD tag dictionary, if !CRAM_V1.0
- */
-
- /* Create cram slice header */
- s->hdr->ref_base_id = embed_ref ? DS_ref : -1;
- s->hdr->record_counter = c->num_records + c->record_counter;
- c->num_records += s->hdr->num_records;
-
- s->block = calloc(DS_END, sizeof(s->block[0]));
- s->hdr->block_content_ids = malloc(DS_END * sizeof(int32_t));
- if (!s->block || !s->hdr->block_content_ids)
- return -1;
-
- // Create first fixed blocks, always external.
- // CORE
- if (!(s->block[0] = cram_new_block(CORE, 0)))
- return -1;
-
- // TN block for CRAM v1
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- if (h->codecs[DS_TN]->codec == E_EXTERNAL) {
- if (!(s->block[DS_TN] = cram_new_block(EXTERNAL,DS_TN))) return -1;
- h->codecs[DS_TN]->external.content_id = DS_TN;
- } else {
- s->block[DS_TN] = s->block[0];
- }
- s->block[DS_TN] = s->block[DS_TN];
- }
-
- // Embedded reference
- if (embed_ref) {
- if (!(s->block[DS_ref] = cram_new_block(EXTERNAL, DS_ref)))
- return -1;
- s->ref_id = DS_ref; // needed?
- BLOCK_APPEND(s->block[DS_ref],
- c->ref + c->first_base - c->ref_start,
- c->last_base - c->first_base + 1);
- }
-
- /*
- * All the data-series blocks if appropriate.
- */
- for (id = DS_BF; id < DS_TN; id++) {
- if (h->codecs[id] && (h->codecs[id]->codec == E_EXTERNAL ||
- h->codecs[id]->codec == E_BYTE_ARRAY_STOP ||
- h->codecs[id]->codec == E_BYTE_ARRAY_LEN)) {
- switch (h->codecs[id]->codec) {
- case E_EXTERNAL:
- if (!(s->block[id] = cram_new_block(EXTERNAL, id)))
- return -1;
- h->codecs[id]->external.content_id = id;
- break;
-
- case E_BYTE_ARRAY_STOP:
- if (!(s->block[id] = cram_new_block(EXTERNAL, id)))
- return -1;
- h->codecs[id]->byte_array_stop.content_id = id;
- break;
-
- case E_BYTE_ARRAY_LEN: {
- cram_codec *cc;
-
- cc = h->codecs[id]->e_byte_array_len.len_codec;
- if (cc->codec == E_EXTERNAL) {
- int eid = cc->external.content_id;
- if (!(s->block[eid] = cram_new_block(EXTERNAL, eid)))
- return -1;
- cc->external.content_id = eid;
- cc->out = s->block[eid];
- }
-
- cc = h->codecs[id]->e_byte_array_len.val_codec;
- if (cc->codec == E_EXTERNAL) {
- int eid = cc->external.content_id;
- if (!s->block[eid])
- if (!(s->block[eid] = cram_new_block(EXTERNAL, eid)))
- return -1;
- cc->external.content_id = eid;
- cc->out = s->block[eid];
- }
- break;
- }
- default:
- break;
- }
- } else {
- if (!(id == DS_BB && !h->codecs[DS_BB]))
- s->block[id] = s->block[0];
- }
- if (h->codecs[id])
- h->codecs[id]->out = s->block[id];
- }
-
- /* Encode reads */
- last_pos = s->hdr->ref_seq_start;
- for (rec = 0; rec < s->hdr->num_records; rec++) {
- cram_record *cr = &s->crecs[rec];
- if (cram_encode_slice_read(fd, c, h, s, cr, &last_pos) == -1)
- return -1;
- }
-
- s->block[0]->uncomp_size = s->block[0]->byte + (s->block[0]->bit < 7);
- s->block[0]->comp_size = s->block[0]->uncomp_size;
-
- // Make sure the fixed blocks point to the correct sources
- s->block[DS_IN] = s->base_blk; s->base_blk = NULL;
- s->block[DS_QS] = s->qual_blk; s->qual_blk = NULL;
- s->block[DS_RN] = s->name_blk; s->name_blk = NULL;
- s->block[DS_SC] = s->soft_blk; s->soft_blk = NULL;
- s->block[DS_aux]= s->aux_blk; s->aux_blk = NULL;
- s->block[DS_aux_OQ]= s->aux_OQ_blk; s->aux_OQ_blk = NULL;
- s->block[DS_aux_BQ]= s->aux_BQ_blk; s->aux_BQ_blk = NULL;
- s->block[DS_aux_BD]= s->aux_BD_blk; s->aux_BD_blk = NULL;
- s->block[DS_aux_BI]= s->aux_BI_blk; s->aux_BI_blk = NULL;
- s->block[DS_aux_FZ]= s->aux_FZ_blk; s->aux_FZ_blk = NULL;
- s->block[DS_aux_oq]= s->aux_oq_blk; s->aux_oq_blk = NULL;
- s->block[DS_aux_os]= s->aux_os_blk; s->aux_os_blk = NULL;
- s->block[DS_aux_oz]= s->aux_oz_blk; s->aux_oz_blk = NULL;
-
- // Ensure block sizes are up to date.
- for (id = 1; id < DS_END; id++) {
- if (!s->block[id] || s->block[id] == s->block[0])
- continue;
-
- if (s->block[id]->uncomp_size == 0)
- BLOCK_UPLEN(s->block[id]);
- }
-
- // Compress it all
- if (cram_compress_slice(fd, s) == -1)
- return -1;
-
- // Collapse empty blocks and create hdr_block
- {
- int i, j;
- for (i = j = 1; i < DS_END; i++) {
- if (!s->block[i] || s->block[i] == s->block[0])
- continue;
- if (s->block[i]->uncomp_size == 0) {
- cram_free_block(s->block[i]);
- s->block[i] = NULL;
- continue;
- }
- s->block[j] = s->block[i];
- s->hdr->block_content_ids[j-1] = s->block[i]->content_id;
- j++;
- }
- s->hdr->num_content_ids = j-1;
- s->hdr->num_blocks = j;
-
- if (!(s->hdr_block = cram_encode_slice_header(fd, s)))
- return -1;
- }
-
- return r ? -1 : 0;
-}
-
-/*
- * Encodes all slices in a container into blocks.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_encode_container(cram_fd *fd, cram_container *c) {
- int i, j, slice_offset;
- cram_block_compression_hdr *h = c->comp_hdr;
- cram_block *c_hdr;
- int multi_ref = 0;
- int r1, r2, sn, nref;
- spare_bams *spares;
-
- /* Cache references up-front if we have unsorted access patterns */
- pthread_mutex_lock(&fd->ref_lock);
- nref = fd->refs->nref;
- pthread_mutex_unlock(&fd->ref_lock);
-
- if (!fd->no_ref && c->refs_used) {
- for (i = 0; i < nref; i++) {
- if (c->refs_used[i])
- cram_get_ref(fd, i, 1, 0);
- }
- }
-
- /* To create M5 strings */
- /* Fetch reference sequence */
- if (!fd->no_ref) {
- bam_seq_t *b = c->bams[0];
- char *ref;
-
- ref = cram_get_ref(fd, bam_ref(b), 1, 0);
- if (!ref && bam_ref(b) >= 0) {
- fprintf(stderr, "Failed to load reference #%d\n", bam_ref(b));
- return -1;
- }
- if ((c->ref_id = bam_ref(b)) >= 0) {
- c->ref_seq_id = c->ref_id;
- c->ref = fd->refs->ref_id[c->ref_seq_id]->seq;
- c->ref_start = 1;
- c->ref_end = fd->refs->ref_id[c->ref_seq_id]->length;
- } else {
- c->ref_seq_id = c->ref_id; // FIXME remove one var!
- }
- } else {
- c->ref_id = bam_ref(c->bams[0]);
- cram_ref_incr(fd->refs, c->ref_id);
- c->ref_seq_id = c->ref_id;
- }
-
- /* Turn bams into cram_records and gather basic stats */
- for (r1 = sn = 0; r1 < c->curr_c_rec; sn++) {
- cram_slice *s = c->slices[sn];
- int first_base = INT_MAX, last_base = INT_MIN;
-
- assert(sn < c->curr_slice);
-
- /* FIXME: we could create our slice objects here too instead of
- * in cram_put_bam_seq. It's more natural here and also this is
- * bit is threaded so it's less work in the main thread.
- */
-
- for (r2 = 0; r1 < c->curr_c_rec && r2 < c->max_rec; r1++, r2++) {
- cram_record *cr = &s->crecs[r2];
- bam_seq_t *b = c->bams[r1];
-
- /* If multi-ref we need to cope with changing reference per seq */
- if (c->multi_seq && !fd->no_ref) {
- if (bam_ref(b) != c->ref_seq_id && bam_ref(b) >= 0) {
- if (c->ref_seq_id >= 0)
- cram_ref_decr(fd->refs, c->ref_seq_id);
-
- if (!cram_get_ref(fd, bam_ref(b), 1, 0)) {
- fprintf(stderr, "Failed to load reference #%d\n",
- bam_ref(b));
- return -1;
- }
-
- c->ref_seq_id = bam_ref(b); // overwritten later by -2
- assert(fd->refs->ref_id[c->ref_seq_id]->seq);
- c->ref = fd->refs->ref_id[c->ref_seq_id]->seq;
- c->ref_start = 1;
- c->ref_end = fd->refs->ref_id[c->ref_seq_id]->length;
- }
- }
-
- process_one_read(fd, c, s, cr, b, r2);
-
- if (first_base > cr->apos)
- first_base = cr->apos;
-
- if (last_base < cr->aend)
- last_base = cr->aend;
- }
-
- if (c->multi_seq) {
- s->hdr->ref_seq_id = -2;
- s->hdr->ref_seq_start = 0;
- s->hdr->ref_seq_span = 0;
- } else {
- s->hdr->ref_seq_id = c->ref_id;
- s->hdr->ref_seq_start = first_base;
- s->hdr->ref_seq_span = last_base - first_base + 1;
- }
- s->hdr->num_records = r2;
- }
-
- if (c->multi_seq && !fd->no_ref) {
- if (c->ref_seq_id >= 0)
- cram_ref_decr(fd->refs, c->ref_seq_id);
- }
-
- /* Link our bams[] array onto the spare bam list for reuse */
- spares = malloc(sizeof(*spares));
- pthread_mutex_lock(&fd->bam_list_lock);
- spares->bams = c->bams;
- spares->next = fd->bl;
- fd->bl = spares;
- pthread_mutex_unlock(&fd->bam_list_lock);
- c->bams = NULL;
-
- /* Detect if a multi-seq container */
- cram_stats_encoding(fd, c->stats[DS_RI]);
- multi_ref = c->stats[DS_RI]->nvals > 1;
-
- if (multi_ref) {
- if (fd->verbose)
- fprintf(stderr, "Multi-ref container\n");
- c->ref_seq_id = -2;
- c->ref_seq_start = 0;
- c->ref_seq_span = 0;
- }
-
-
- /* Compute MD5s */
- for (i = 0; i < c->curr_slice; i++) {
- cram_slice *s = c->slices[i];
-
- if (CRAM_MAJOR_VERS(fd->version) != 1) {
- if (s->hdr->ref_seq_id >= 0 && c->multi_seq == 0 && !fd->no_ref) {
- MD5_CTX md5;
- MD5_Init(&md5);
- MD5_Update(&md5,
- c->ref + s->hdr->ref_seq_start - c->ref_start,
- s->hdr->ref_seq_span);
- MD5_Final(s->hdr->md5, &md5);
- } else {
- memset(s->hdr->md5, 0, 16);
- }
- }
- }
-
- c->num_records = 0;
- c->num_blocks = 0;
- c->length = 0;
-
- //fprintf(stderr, "=== BF ===\n");
- h->codecs[DS_BF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BF]),
- c->stats[DS_BF], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== CF ===\n");
- h->codecs[DS_CF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_CF]),
- c->stats[DS_CF], E_INT, NULL,
- fd->version);
-// fprintf(stderr, "=== RN ===\n");
-// h->codecs[DS_RN] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RN]),
-// c->stats[DS_RN], E_BYTE_ARRAY, NULL,
-// fd->version);
-
- //fprintf(stderr, "=== AP ===\n");
- if (c->pos_sorted) {
- h->codecs[DS_AP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_AP]),
- c->stats[DS_AP], E_INT, NULL,
- fd->version);
- } else {
- int p[2] = {0, c->max_apos};
- h->codecs[DS_AP] = cram_encoder_init(E_BETA, NULL, E_INT, p,
- fd->version);
- }
-
- //fprintf(stderr, "=== RG ===\n");
- h->codecs[DS_RG] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RG]),
- c->stats[DS_RG], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== MQ ===\n");
- h->codecs[DS_MQ] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_MQ]),
- c->stats[DS_MQ], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== NS ===\n");
- h->codecs[DS_NS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NS]),
- c->stats[DS_NS], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== MF ===\n");
- h->codecs[DS_MF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_MF]),
- c->stats[DS_MF], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== TS ===\n");
- h->codecs[DS_TS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TS]),
- c->stats[DS_TS], E_INT, NULL,
- fd->version);
- //fprintf(stderr, "=== NP ===\n");
- h->codecs[DS_NP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NP]),
- c->stats[DS_NP], E_INT, NULL,
- fd->version);
- //fprintf(stderr, "=== NF ===\n");
- h->codecs[DS_NF] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_NF]),
- c->stats[DS_NF], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== RL ===\n");
- h->codecs[DS_RL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RL]),
- c->stats[DS_RL], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== FN ===\n");
- h->codecs[DS_FN] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FN]),
- c->stats[DS_FN], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== FC ===\n");
- h->codecs[DS_FC] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FC]),
- c->stats[DS_FC], E_BYTE, NULL,
- fd->version);
-
- //fprintf(stderr, "=== FP ===\n");
- h->codecs[DS_FP] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_FP]),
- c->stats[DS_FP], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== DL ===\n");
- h->codecs[DS_DL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_DL]),
- c->stats[DS_DL], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== BA ===\n");
- h->codecs[DS_BA] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BA]),
- c->stats[DS_BA], E_BYTE, NULL,
- fd->version);
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- cram_byte_array_len_encoder e;
-
- e.len_encoding = E_EXTERNAL;
- e.len_dat = (void *)DS_BB_len;
- //e.len_dat = (void *)DS_BB;
-
- e.val_encoding = E_EXTERNAL;
- e.val_dat = (void *)DS_BB;
-
- h->codecs[DS_BB] = cram_encoder_init(E_BYTE_ARRAY_LEN, NULL,
- E_BYTE_ARRAY, (void *)&e,
- fd->version);
- } else {
- h->codecs[DS_BB] = NULL;
- }
-
- //fprintf(stderr, "=== BS ===\n");
- h->codecs[DS_BS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_BS]),
- c->stats[DS_BS], E_BYTE, NULL,
- fd->version);
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- h->codecs[DS_TL] = NULL;
- h->codecs[DS_RI] = NULL;
- h->codecs[DS_RS] = NULL;
- h->codecs[DS_PD] = NULL;
- h->codecs[DS_HC] = NULL;
- h->codecs[DS_SC] = NULL;
-
- //fprintf(stderr, "=== TC ===\n");
- h->codecs[DS_TC] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TC]),
- c->stats[DS_TC], E_BYTE, NULL,
- fd->version);
-
- //fprintf(stderr, "=== TN ===\n");
- h->codecs[DS_TN] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TN]),
- c->stats[DS_TN], E_INT, NULL,
- fd->version);
- } else {
- h->codecs[DS_TC] = NULL;
- h->codecs[DS_TN] = NULL;
-
- //fprintf(stderr, "=== TL ===\n");
- h->codecs[DS_TL] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_TL]),
- c->stats[DS_TL], E_INT, NULL,
- fd->version);
-
-
- //fprintf(stderr, "=== RI ===\n");
- h->codecs[DS_RI] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RI]),
- c->stats[DS_RI], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== RS ===\n");
- h->codecs[DS_RS] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_RS]),
- c->stats[DS_RS], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== PD ===\n");
- h->codecs[DS_PD] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_PD]),
- c->stats[DS_PD], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== HC ===\n");
- h->codecs[DS_HC] = cram_encoder_init(cram_stats_encoding(fd, c->stats[DS_HC]),
- c->stats[DS_HC], E_INT, NULL,
- fd->version);
-
- //fprintf(stderr, "=== SC ===\n");
- if (1) {
- int i2[2] = {0, DS_SC};
-
- h->codecs[DS_SC] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL,
- E_BYTE_ARRAY, (void *)i2,
- fd->version);
- } else {
- // Appears to be no practical benefit to using this method,
- // but it may work better if we start mixing SC, IN and BB
- // elements into the same external block.
- cram_byte_array_len_encoder e;
-
- e.len_encoding = E_EXTERNAL;
- e.len_dat = (void *)DS_SC_len;
-
- e.val_encoding = E_EXTERNAL;
- e.val_dat = (void *)DS_SC;
-
- h->codecs[DS_SC] = cram_encoder_init(E_BYTE_ARRAY_LEN, NULL,
- E_BYTE_ARRAY, (void *)&e,
- fd->version);
- }
- }
-
- //fprintf(stderr, "=== IN ===\n");
- {
- int i2[2] = {0, DS_IN};
- h->codecs[DS_IN] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL,
- E_BYTE_ARRAY, (void *)i2,
- fd->version);
- }
-
- h->codecs[DS_QS] = cram_encoder_init(E_EXTERNAL, NULL, E_BYTE,
- (void *)DS_QS,
- fd->version);
- {
- int i2[2] = {0, DS_RN};
- h->codecs[DS_RN] = cram_encoder_init(E_BYTE_ARRAY_STOP, NULL,
- E_BYTE_ARRAY, (void *)i2,
- fd->version);
- }
-
-
- /* Encode slices */
- for (i = 0; i < c->curr_slice; i++) {
- if (fd->verbose)
- fprintf(stderr, "Encode slice %d\n", i);
- if (cram_encode_slice(fd, c, h, c->slices[i]) != 0)
- return -1;
- }
-
- /* Create compression header */
- {
- h->ref_seq_id = c->ref_seq_id;
- h->ref_seq_start = c->ref_seq_start;
- h->ref_seq_span = c->ref_seq_span;
- h->num_records = c->num_records;
-
- h->mapped_qs_included = 0; // fixme
- h->unmapped_qs_included = 0; // fixme
- // h->... fixme
- memcpy(h->substitution_matrix, CRAM_SUBST_MATRIX, 20);
-
- if (!(c_hdr = cram_encode_compression_header(fd, c, h)))
- return -1;
- }
-
- /* Compute landmarks */
- /* Fill out slice landmarks */
- c->num_landmarks = c->curr_slice;
- c->landmark = malloc(c->num_landmarks * sizeof(*c->landmark));
- if (!c->landmark)
- return -1;
-
- /*
- * Slice offset starts after the first block, so we need to simulate
- * writing it to work out the correct offset
- */
- {
- slice_offset = c_hdr->method == RAW
- ? c_hdr->uncomp_size
- : c_hdr->comp_size;
- slice_offset += 2 + 4*(CRAM_MAJOR_VERS(fd->version) >= 3) +
- itf8_size(c_hdr->content_id) +
- itf8_size(c_hdr->comp_size) +
- itf8_size(c_hdr->uncomp_size);
- }
-
- c->ref_seq_id = c->slices[0]->hdr->ref_seq_id;
- c->ref_seq_start = c->slices[0]->hdr->ref_seq_start;
- c->ref_seq_span = c->slices[0]->hdr->ref_seq_span;
- for (i = 0; i < c->curr_slice; i++) {
- cram_slice *s = c->slices[i];
-
- c->num_blocks += s->hdr->num_blocks + 2;
- c->landmark[i] = slice_offset;
-
- if (s->hdr->ref_seq_start + s->hdr->ref_seq_span >
- c->ref_seq_start + c->ref_seq_span) {
- c->ref_seq_span = s->hdr->ref_seq_start + s->hdr->ref_seq_span
- - c->ref_seq_start;
- }
-
- slice_offset += s->hdr_block->method == RAW
- ? s->hdr_block->uncomp_size
- : s->hdr_block->comp_size;
-
- slice_offset += 2 + 4*(CRAM_MAJOR_VERS(fd->version) >= 3) +
- itf8_size(s->hdr_block->content_id) +
- itf8_size(s->hdr_block->comp_size) +
- itf8_size(s->hdr_block->uncomp_size);
-
- for (j = 0; j < s->hdr->num_blocks; j++) {
- slice_offset += 2 + 4*(CRAM_MAJOR_VERS(fd->version) >= 3) +
- itf8_size(s->block[j]->content_id) +
- itf8_size(s->block[j]->comp_size) +
- itf8_size(s->block[j]->uncomp_size);
-
- slice_offset += s->block[j]->method == RAW
- ? s->block[j]->uncomp_size
- : s->block[j]->comp_size;
- }
- }
- c->length += slice_offset; // just past the final slice
-
- c->comp_hdr_block = c_hdr;
-
- if (c->ref_seq_id >= 0) {
- cram_ref_decr(fd->refs, c->ref_seq_id);
- }
-
- /* Cache references up-front if we have unsorted access patterns */
- if (!fd->no_ref && c->refs_used) {
- for (i = 0; i < fd->refs->nref; i++) {
- if (c->refs_used[i])
- cram_ref_decr(fd->refs, i);
- }
- }
-
- return 0;
-}
-
-
-/*
- * Adds a feature code to a read within a slice. For purposes of minimising
- * memory allocations and fragmentation we have one array of features for all
- * reads within the slice. We return the index into this array for this new
- * feature.
- *
- * Returns feature index on success
- * -1 on failure.
- */
-static int cram_add_feature(cram_container *c, cram_slice *s,
- cram_record *r, cram_feature *f) {
- if (s->nfeatures >= s->afeatures) {
- s->afeatures = s->afeatures ? s->afeatures*2 : 1024;
- s->features = realloc(s->features, s->afeatures*sizeof(*s->features));
- if (!s->features)
- return -1;
- }
-
- if (!r->nfeature++) {
- r->feature = s->nfeatures;
- cram_stats_add(c->stats[DS_FP], f->X.pos);
- } else {
- cram_stats_add(c->stats[DS_FP],
- f->X.pos - s->features[r->feature + r->nfeature-2].X.pos);
- }
- cram_stats_add(c->stats[DS_FC], f->X.code);
-
- s->features[s->nfeatures++] = *f;
-
- return 0;
-}
-
-static int cram_add_substitution(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *r,
- int pos, char base, char qual, char ref) {
- cram_feature f;
-
- // seq=ACGTN vs ref=ACGT or seq=ACGT vs ref=ACGTN
- if (fd->L2[(uc)base]<4 || (fd->L2[(uc)base]<5 && fd->L2[(uc)ref]<4)) {
- f.X.pos = pos+1;
- f.X.code = 'X';
- f.X.base = fd->cram_sub_matrix[ref&0x1f][base&0x1f];
- cram_stats_add(c->stats[DS_BS], f.X.base);
- } else {
- f.B.pos = pos+1;
- f.B.code = 'B';
- f.B.base = base;
- f.B.qual = qual;
- cram_stats_add(c->stats[DS_BA], f.B.base);
- cram_stats_add(c->stats[DS_QS], f.B.qual);
- BLOCK_APPEND_CHAR(s->qual_blk, qual);
- }
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_bases(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
-
- f.b.pos = pos+1;
- f.b.code = 'b';
- f.b.seq_idx = base - (char *)BLOCK_DATA(s->seqs_blk);
- f.b.len = len;
-
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_base(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *r,
- int pos, char base, char qual) {
- cram_feature f;
- f.B.pos = pos+1;
- f.B.code = 'B';
- f.B.base = base;
- f.B.qual = qual;
- cram_stats_add(c->stats[DS_BA], base);
- cram_stats_add(c->stats[DS_QS], qual);
- BLOCK_APPEND_CHAR(s->qual_blk, qual);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_quality(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *r,
- int pos, char qual) {
- cram_feature f;
- f.Q.pos = pos+1;
- f.Q.code = 'Q';
- f.Q.qual = qual;
- cram_stats_add(c->stats[DS_QS], qual);
- BLOCK_APPEND_CHAR(s->qual_blk, qual);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_deletion(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
- f.D.pos = pos+1;
- f.D.code = 'D';
- f.D.len = len;
- cram_stats_add(c->stats[DS_DL], len);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_softclip(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base, int version) {
- cram_feature f;
- f.S.pos = pos+1;
- f.S.code = 'S';
- f.S.len = len;
- switch (CRAM_MAJOR_VERS(version)) {
- case 1:
- f.S.seq_idx = BLOCK_SIZE(s->base_blk);
- BLOCK_APPEND(s->base_blk, base, len);
- BLOCK_APPEND_CHAR(s->base_blk, '\0');
- break;
-
- case 2:
- default:
- f.S.seq_idx = BLOCK_SIZE(s->soft_blk);
- if (base) {
- BLOCK_APPEND(s->soft_blk, base, len);
- } else {
- int i;
- for (i = 0; i < len; i++)
- BLOCK_APPEND_CHAR(s->soft_blk, 'N');
- }
- BLOCK_APPEND_CHAR(s->soft_blk, '\0');
- break;
-
-// default:
-// // v3.0 onwards uses BB data-series
-// f.S.seq_idx = BLOCK_SIZE(s->soft_blk);
- }
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_hardclip(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
- f.S.pos = pos+1;
- f.S.code = 'H';
- f.S.len = len;
- cram_stats_add(c->stats[DS_HC], len);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_skip(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
- f.S.pos = pos+1;
- f.S.code = 'N';
- f.S.len = len;
- cram_stats_add(c->stats[DS_RS], len);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_pad(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
- f.S.pos = pos+1;
- f.S.code = 'P';
- f.S.len = len;
- cram_stats_add(c->stats[DS_PD], len);
- return cram_add_feature(c, s, r, &f);
-}
-
-static int cram_add_insertion(cram_container *c, cram_slice *s, cram_record *r,
- int pos, int len, char *base) {
- cram_feature f;
- f.I.pos = pos+1;
- if (len == 1) {
- char b = base ? *base : 'N';
- f.i.code = 'i';
- f.i.base = b;
- cram_stats_add(c->stats[DS_BA], b);
- } else {
- f.I.code = 'I';
- f.I.len = len;
- f.S.seq_idx = BLOCK_SIZE(s->base_blk);
- if (base) {
- BLOCK_APPEND(s->base_blk, base, len);
- } else {
- int i;
- for (i = 0; i < len; i++)
- BLOCK_APPEND_CHAR(s->base_blk, 'N');
- }
- BLOCK_APPEND_CHAR(s->base_blk, '\0');
- }
- return cram_add_feature(c, s, r, &f);
-}
-
-/*
- * Encodes auxiliary data.
- * Returns the read-group parsed out of the BAM aux fields on success
- * NULL on failure or no rg present (FIXME)
- */
-static char *cram_encode_aux_1_0(cram_fd *fd, bam_seq_t *b, cram_container *c,
- cram_slice *s, cram_record *cr) {
- char *aux, *tmp, *rg = NULL;
- int aux_size = bam_blk_size(b) -
- ((char *)bam_aux(b) - (char *)&bam_ref(b));
-
- /* Worst case is 1 nul char on every ??:Z: string, so +33% */
- BLOCK_GROW(s->aux_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_blk);
-
- aux = (char *)bam_aux(b);
- cr->TN_idx = s->nTN;
-
- while (aux[0] != 0) {
- int32_t i32;
- int r;
-
- if (aux[0] == 'R' && aux[1] == 'G' && aux[2] == 'Z') {
- rg = &aux[3];
- while (*aux++);
- continue;
- }
- if (aux[0] == 'M' && aux[1] == 'D' && aux[2] == 'Z') {
- while (*aux++);
- continue;
- }
- if (aux[0] == 'N' && aux[1] == 'M') {
- switch(aux[2]) {
- case 'A': case 'C': case 'c': aux+=4; break;
- case 'I': case 'i': case 'f': aux+=7; break;
- default:
- fprintf(stderr, "Unhandled type code for NM tag\n");
- return NULL;
- }
- continue;
- }
-
- cr->ntags++;
-
- i32 = (aux[0]<<16) | (aux[1]<<8) | aux[2];
- kh_put(s_i2i, c->tags_used, i32, &r);
- if (-1 == r)
- return NULL;
-
- if (s->nTN >= s->aTN) {
- s->aTN = s->aTN ? s->aTN*2 : 1024;
- if (!(s->TN = realloc(s->TN, s->aTN * sizeof(*s->TN))))
- return NULL;
- }
- s->TN[s->nTN++] = i32;
- cram_stats_add(c->stats[DS_TN], i32);
-
- switch(aux[2]) {
- case 'A': case 'C': case 'c':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++;
- break;
-
- case 'S': case 's':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'I': case 'i': case 'f':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'd':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'Z': case 'H':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- while ((*tmp++=*aux++));
- *tmp++ = '\t'; // stop byte
- break;
-
- case 'B': {
- int type = aux[3], blen;
- uint32_t count = (uint32_t)((((unsigned char *)aux)[4]<< 0) +
- (((unsigned char *)aux)[5]<< 8) +
- (((unsigned char *)aux)[6]<<16) +
- (((unsigned char *)aux)[7]<<24));
- // skip TN field
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
-
- // We use BYTE_ARRAY_LEN with external length, so store that first
- switch (type) {
- case 'c': case 'C':
- blen = count;
- break;
- case 's': case 'S':
- blen = 2*count;
- break;
- case 'i': case 'I': case 'f':
- blen = 4*count;
- break;
- default:
- fprintf(stderr, "Unknown sub-type '%c' for aux type 'B'\n",
- type);
- return NULL;
-
- }
-
- tmp += itf8_put(tmp, blen+5);
-
- *tmp++=*aux++; // sub-type & length
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
-
- // The tag data itself
- memcpy(tmp, aux, blen); tmp += blen; aux += blen;
-
- //cram_stats_add(c->aux_B_stats, blen);
- break;
- }
- default:
- fprintf(stderr, "Unknown aux type '%c'\n", aux[2]);
- return NULL;
- }
- }
- cram_stats_add(c->stats[DS_TC], cr->ntags);
-
- cr->aux = BLOCK_SIZE(s->aux_blk);
- cr->aux_size = (uc *)tmp - (BLOCK_DATA(s->aux_blk) + cr->aux);
- BLOCK_SIZE(s->aux_blk) = (uc *)tmp - BLOCK_DATA(s->aux_blk);
- assert(s->aux_blk->byte <= s->aux_blk->alloc);
-
- return rg;
-}
-
-/*
- * Encodes auxiliary data. Largely duplicated from above, but done so to
- * keep it simple and avoid a myriad of version ifs.
- *
- * Returns the read-group parsed out of the BAM aux fields on success
- * NULL on failure or no rg present (FIXME)
- */
-static char *cram_encode_aux(cram_fd *fd, bam_seq_t *b, cram_container *c,
- cram_slice *s, cram_record *cr) {
- char *aux, *orig, *tmp, *rg = NULL;
- int aux_size = bam_get_l_aux(b);
- cram_block *td_b = c->comp_hdr->TD_blk;
- int TD_blk_size = BLOCK_SIZE(td_b), new;
- char *key;
- khint_t k;
-
-
- /* Worst case is 1 nul char on every ??:Z: string, so +33% */
- BLOCK_GROW(s->aux_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_blk);
-
-
- orig = aux = (char *)bam_aux(b);
-
- // Copy aux keys to td_b and aux values to s->aux_blk
- while (aux - orig < aux_size && aux[0] != 0) {
- uint32_t i32;
- int r;
-
- if (aux[0] == 'R' && aux[1] == 'G' && aux[2] == 'Z') {
- rg = &aux[3];
- while (*aux++);
- continue;
- }
- if (aux[0] == 'M' && aux[1] == 'D' && aux[2] == 'Z') {
- while (*aux++);
- continue;
- }
- if (aux[0] == 'N' && aux[1] == 'M') {
- switch(aux[2]) {
- case 'A': case 'C': case 'c': aux+=4; break;
- case 'S': case 's': aux+=5; break;
- case 'I': case 'i': case 'f': aux+=7; break;
- default:
- fprintf(stderr, "Unhandled type code for NM tag\n");
- return NULL;
- }
- continue;
- }
-
- BLOCK_APPEND(td_b, aux, 3);
-
- i32 = (aux[0]<<16) | (aux[1]<<8) | aux[2];
- kh_put(s_i2i, c->tags_used, i32, &r);
- if (-1 == r)
- return NULL;
-
- // BQ:Z
- if (aux[0] == 'B' && aux[1] == 'Q' && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_BQ_blk)
- if (!(s->aux_BQ_blk = cram_new_block(EXTERNAL, DS_aux_BQ)))
- return NULL;
- BLOCK_GROW(s->aux_BQ_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_BQ_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_BQ_blk) = (uc *)tmp - BLOCK_DATA(s->aux_BQ_blk);
- continue;
- }
-
- // BD:Z
- if (aux[0] == 'B' && aux[1]=='D' && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_BD_blk)
- if (!(s->aux_BD_blk = cram_new_block(EXTERNAL, DS_aux_BD)))
- return NULL;
- BLOCK_GROW(s->aux_BD_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_BD_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_BD_blk) = (uc *)tmp - BLOCK_DATA(s->aux_BD_blk);
- continue;
- }
-
- // BI:Z
- if (aux[0] == 'B' && aux[1]=='I' && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_BI_blk)
- if (!(s->aux_BI_blk = cram_new_block(EXTERNAL, DS_aux_BI)))
- return NULL;
- BLOCK_GROW(s->aux_BI_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_BI_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_BI_blk) = (uc *)tmp - BLOCK_DATA(s->aux_BI_blk);
- continue;
- }
-
- // OQ:Z:
- if (aux[0] == 'O' && aux[1] == 'Q' && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_OQ_blk)
- if (!(s->aux_OQ_blk = cram_new_block(EXTERNAL, DS_aux_OQ)))
- return NULL;
- BLOCK_GROW(s->aux_OQ_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_OQ_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_OQ_blk) = (uc *)tmp - BLOCK_DATA(s->aux_OQ_blk);
- continue;
- }
-
- // FZ:B or ZM:B
- if ((aux[0] == 'F' && aux[1] == 'Z' && aux[2] == 'B') ||
- (aux[0] == 'Z' && aux[1] == 'M' && aux[2] == 'B')) {
- int type = aux[3], blen;
- uint32_t count = (uint32_t)((((unsigned char *)aux)[4]<< 0) +
- (((unsigned char *)aux)[5]<< 8) +
- (((unsigned char *)aux)[6]<<16) +
- (((unsigned char *)aux)[7]<<24));
- char *tmp;
- if (!s->aux_FZ_blk)
- if (!(s->aux_FZ_blk = cram_new_block(EXTERNAL, DS_aux_FZ)))
- return NULL;
- BLOCK_GROW(s->aux_FZ_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_FZ_blk);
-
- // skip TN field
- aux+=3;
-
- // We use BYTE_ARRAY_LEN with external length, so store that first
- switch (type) {
- case 'c': case 'C':
- blen = count;
- break;
- case 's': case 'S':
- blen = 2*count;
- break;
- case 'i': case 'I': case 'f':
- blen = 4*count;
- break;
- default:
- fprintf(stderr, "Unknown sub-type '%c' for aux type 'B'\n",
- type);
- return NULL;
-
- }
-
- blen += 5; // sub-type & length
- tmp += itf8_put(tmp, blen);
-
- // The tag data itself
- memcpy(tmp, aux, blen); tmp += blen; aux += blen;
-
- BLOCK_SIZE(s->aux_FZ_blk) = (uc *)tmp - BLOCK_DATA(s->aux_FZ_blk);
- continue;
- }
-
- // Other quality data - {Q2,E2,U2,CQ}:Z and similar
- if (((aux[0] == 'Q' && aux[1] == '2') ||
- (aux[0] == 'U' && aux[1] == '2') ||
- (aux[0] == 'Q' && aux[1] == 'T') ||
- (aux[0] == 'C' && aux[1] == 'Q')) && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_oq_blk)
- if (!(s->aux_oq_blk = cram_new_block(EXTERNAL, DS_aux_oq)))
- return NULL;
- BLOCK_GROW(s->aux_oq_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_oq_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_oq_blk) = (uc *)tmp - BLOCK_DATA(s->aux_oq_blk);
- continue;
- }
-
- // Other sequence data - {R2,E2,CS,BC,RT}:Z and similar
- if (((aux[0] == 'R' && aux[1] == '2') ||
- (aux[0] == 'E' && aux[1] == '2') ||
- (aux[0] == 'C' && aux[1] == 'S') ||
- (aux[0] == 'B' && aux[1] == 'C') ||
- (aux[0] == 'R' && aux[1] == 'T')) && aux[2] == 'Z') {
- char *tmp;
- if (!s->aux_os_blk)
- if (!(s->aux_os_blk = cram_new_block(EXTERNAL, DS_aux_os)))
- return NULL;
- BLOCK_GROW(s->aux_os_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_os_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_os_blk) = (uc *)tmp - BLOCK_DATA(s->aux_os_blk);
- continue;
- }
-
-
- switch(aux[2]) {
- case 'A': case 'C': case 'c':
- aux+=3;
- *tmp++=*aux++;
- break;
-
- case 'S': case 's':
- aux+=3;
- *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'I': case 'i': case 'f':
- aux+=3;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'd':
- aux+=3; //*tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++; *tmp++=*aux++;
- break;
-
- case 'Z': case 'H':
- {
- char *tmp;
- if (!s->aux_oz_blk)
- if (!(s->aux_oz_blk = cram_new_block(EXTERNAL, DS_aux_oz)))
- return NULL;
- BLOCK_GROW(s->aux_oz_blk, aux_size*1.34+1);
- tmp = (char *)BLOCK_END(s->aux_oz_blk);
- aux += 3;
- while ((*tmp++=*aux++));
- *tmp++ = '\t';
- BLOCK_SIZE(s->aux_oz_blk) = (uc *)tmp -
- BLOCK_DATA(s->aux_oz_blk);
- }
- break;
-
- case 'B': {
- int type = aux[3], blen;
- uint32_t count = (uint32_t)((((unsigned char *)aux)[4]<< 0) +
- (((unsigned char *)aux)[5]<< 8) +
- (((unsigned char *)aux)[6]<<16) +
- (((unsigned char *)aux)[7]<<24));
- // skip TN field
- aux+=3;
-
- // We use BYTE_ARRAY_LEN with external length, so store that first
- switch (type) {
- case 'c': case 'C':
- blen = count;
- break;
- case 's': case 'S':
- blen = 2*count;
- break;
- case 'i': case 'I': case 'f':
- blen = 4*count;
- break;
- default:
- fprintf(stderr, "Unknown sub-type '%c' for aux type 'B'\n",
- type);
- return NULL;
-
- }
-
- blen += 5; // sub-type & length
- tmp += itf8_put(tmp, blen);
-
- // The tag data itself
- memcpy(tmp, aux, blen); tmp += blen; aux += blen;
-
- //cram_stats_add(c->aux_B_stats, blen);
- break;
- }
- default:
- fprintf(stderr, "Unknown aux type '%c'\n", aux[2]);
- return NULL;
- }
- }
-
- // FIXME: sort BLOCK_DATA(td_b) by char[3] triples
-
- // And and increment TD hash entry
- BLOCK_APPEND_CHAR(td_b, 0);
-
- // Duplicate key as BLOCK_DATA() can be realloced to a new pointer.
- key = string_ndup(c->comp_hdr->TD_keys,
- (char *)BLOCK_DATA(td_b) + TD_blk_size,
- BLOCK_SIZE(td_b) - TD_blk_size);
- k = kh_put(m_s2i, c->comp_hdr->TD_hash, key, &new);
- if (new < 0) {
- return NULL;
- } else if (new == 0) {
- BLOCK_SIZE(td_b) = TD_blk_size;
- } else {
- kh_val(c->comp_hdr->TD_hash, k) = c->comp_hdr->nTL;
- c->comp_hdr->nTL++;
- }
-
- cr->TL = kh_val(c->comp_hdr->TD_hash, k);
- cram_stats_add(c->stats[DS_TL], cr->TL);
-
- cr->aux = BLOCK_SIZE(s->aux_blk);
- cr->aux_size = (uc *)tmp - (BLOCK_DATA(s->aux_blk) + cr->aux);
- BLOCK_SIZE(s->aux_blk) = (uc *)tmp - BLOCK_DATA(s->aux_blk);
- assert(s->aux_blk->byte <= s->aux_blk->alloc);
-
- return rg;
-}
-
-
-/*
- * Handles creation of a new container or new slice, flushing any
- * existing containers when appropriate.
- *
- * Really this is next slice, which may or may not lead to a new container.
- *
- * Returns cram_container pointer on success
- * NULL on failure.
- */
-static cram_container *cram_next_container(cram_fd *fd, bam_seq_t *b) {
- cram_container *c = fd->ctr;
- cram_slice *s;
- int i;
-
- /* First occurence */
- if (c->curr_ref == -2)
- c->curr_ref = bam_ref(b);
-
- if (c->slice) {
- s = c->slice;
- if (c->multi_seq) {
- s->hdr->ref_seq_id = -2;
- s->hdr->ref_seq_start = 0;
- s->hdr->ref_seq_span = 0;
- } else {
- s->hdr->ref_seq_id = c->curr_ref;
- s->hdr->ref_seq_start = c->first_base;
- s->hdr->ref_seq_span = c->last_base - c->first_base + 1;
- }
- s->hdr->num_records = c->curr_rec;
-
- if (c->curr_slice == 0) {
- if (c->ref_seq_id != s->hdr->ref_seq_id)
- c->ref_seq_id = s->hdr->ref_seq_id;
- c->ref_seq_start = c->first_base;
- }
-
- c->curr_slice++;
- }
-
- /* Flush container */
- if (c->curr_slice == c->max_slice ||
- (bam_ref(b) != c->curr_ref && !c->multi_seq)) {
- c->ref_seq_span = fd->last_base - c->ref_seq_start + 1;
- if (fd->verbose)
- fprintf(stderr, "Flush container %d/%d..%d\n",
- c->ref_seq_id, c->ref_seq_start,
- c->ref_seq_start + c->ref_seq_span -1);
-
- /* Encode slices */
- if (fd->pool) {
- if (-1 == cram_flush_container_mt(fd, c))
- return NULL;
- } else {
- if (-1 == cram_flush_container(fd, c))
- return NULL;
-
- // Move to sep func, as we need cram_flush_container for
- // the closing phase to flush the partial container.
- for (i = 0; i < c->max_slice; i++) {
- cram_free_slice(c->slices[i]);
- c->slices[i] = NULL;
- }
-
- c->slice = NULL;
- c->curr_slice = 0;
-
- /* Easy approach for purposes of freeing stats */
- cram_free_container(c);
- }
-
- c = fd->ctr = cram_new_container(fd->seqs_per_slice,
- fd->slices_per_container);
- if (!c)
- return NULL;
- c->record_counter = fd->record_counter;
- c->curr_ref = bam_ref(b);
- }
-
- c->last_pos = c->first_base = c->last_base = bam_pos(b)+1;
-
- /* New slice */
- c->slice = c->slices[c->curr_slice] =
- cram_new_slice(MAPPED_SLICE, c->max_rec);
- if (!c->slice)
- return NULL;
-
- if (c->multi_seq) {
- c->slice->hdr->ref_seq_id = -2;
- c->slice->hdr->ref_seq_start = 0;
- c->slice->last_apos = 1;
- } else {
- c->slice->hdr->ref_seq_id = bam_ref(b);
- // wrong for unsorted data, will fix during encoding.
- c->slice->hdr->ref_seq_start = bam_pos(b)+1;
- c->slice->last_apos = bam_pos(b)+1;
- }
-
- c->curr_rec = 0;
-
- return c;
-}
-
-/*
- * Converts a single bam record into a cram record.
- * Possibly used within a thread.
- *
- * Returns 0 on success;
- * -1 on failure
- */
-static int process_one_read(cram_fd *fd, cram_container *c,
- cram_slice *s, cram_record *cr,
- bam_seq_t *b, int rnum) {
- int i, fake_qual = -1;
- char *cp, *rg;
- char *ref, *seq, *qual;
-
- // FIXME: multi-ref containers
-
- ref = c->ref;
- cr->len = bam_seq_len(b); cram_stats_add(c->stats[DS_RL], cr->len);
-
- //fprintf(stderr, "%s => %d\n", rg ? rg : "\"\"", cr->rg);
-
- // Fields to resolve later
- //cr->mate_line; // index to another cram_record
- //cr->mate_flags; // MF
- //cr->ntags; // TC
- cr->ntags = 0; //cram_stats_add(c->stats[DS_TC], cr->ntags);
- if (CRAM_MAJOR_VERS(fd->version) == 1)
- rg = cram_encode_aux_1_0(fd, b, c, s, cr);
- else
- rg = cram_encode_aux(fd, b, c, s, cr);
-
- //cr->aux_size = b->blk_size - ((char *)bam_aux(b) - (char *)&bam_ref(b));
- //cr->aux = DSTRING_LEN(s->aux_ds);
- //dstring_nappend(s->aux_ds, bam_aux(b), cr->aux_size);
-
- /* Read group, identified earlier */
- if (rg) {
- SAM_RG *brg = sam_hdr_find_rg(fd->header, rg);
- cr->rg = brg ? brg->id : -1;
- } else if (CRAM_MAJOR_VERS(fd->version) == 1) {
- SAM_RG *brg = sam_hdr_find_rg(fd->header, "UNKNOWN");
- assert(brg);
- } else {
- cr->rg = -1;
- }
- cram_stats_add(c->stats[DS_RG], cr->rg);
-
-
- cr->ref_id = bam_ref(b); cram_stats_add(c->stats[DS_RI], cr->ref_id);
- cr->flags = bam_flag(b);
- if (bam_cigar_len(b) == 0)
- cr->flags |= BAM_FUNMAP;
- cram_stats_add(c->stats[DS_BF], fd->cram_flag_swap[cr->flags & 0xfff]);
-
- // Non reference based encoding means storing the bases verbatim as features, which in
- // turn means every base also has a quality already stored.
- if (!fd->no_ref || CRAM_MAJOR_VERS(fd->version) >= 3)
- cr->cram_flags = CRAM_FLAG_PRESERVE_QUAL_SCORES;
- else
- cr->cram_flags = 0;
- //cram_stats_add(c->stats[DS_CF], cr->cram_flags);
-
- c->num_bases += cr->len;
- cr->apos = bam_pos(b)+1;
- if (c->pos_sorted) {
- if (cr->apos < s->last_apos) {
- c->pos_sorted = 0;
- } else {
- cram_stats_add(c->stats[DS_AP], cr->apos - s->last_apos);
- s->last_apos = cr->apos;
- }
- } else {
- //cram_stats_add(c->stats[DS_AP], cr->apos);
- }
- c->max_apos += (cr->apos > c->max_apos) * (cr->apos - c->max_apos);
-
- cr->name = BLOCK_SIZE(s->name_blk);
- cr->name_len = bam_name_len(b);
- cram_stats_add(c->stats[DS_RN], cr->name_len);
-
- BLOCK_APPEND(s->name_blk, bam_name(b), bam_name_len(b));
-
-
- /*
- * This seqs_ds is largely pointless and it could reuse the same memory
- * over and over.
- * s->base_blk is what we need for encoding.
- */
- cr->seq = BLOCK_SIZE(s->seqs_blk);
- cr->qual = BLOCK_SIZE(s->qual_blk);
- BLOCK_GROW(s->seqs_blk, cr->len+1);
- BLOCK_GROW(s->qual_blk, cr->len);
- seq = cp = (char *)BLOCK_END(s->seqs_blk);
-
- *seq = 0;
-#ifdef ALLOW_UAC
- {
- // Convert seq 2 bases at a time for speed.
- static const uint16_t code2base[256] = {
- 15677, 16701, 17213, 19773, 18237, 21053, 21309, 22077,
- 21565, 22333, 22845, 18493, 19261, 17469, 16957, 20029,
- 15681, 16705, 17217, 19777, 18241, 21057, 21313, 22081,
- 21569, 22337, 22849, 18497, 19265, 17473, 16961, 20033,
- 15683, 16707, 17219, 19779, 18243, 21059, 21315, 22083,
- 21571, 22339, 22851, 18499, 19267, 17475, 16963, 20035,
- 15693, 16717, 17229, 19789, 18253, 21069, 21325, 22093,
- 21581, 22349, 22861, 18509, 19277, 17485, 16973, 20045,
- 15687, 16711, 17223, 19783, 18247, 21063, 21319, 22087,
- 21575, 22343, 22855, 18503, 19271, 17479, 16967, 20039,
- 15698, 16722, 17234, 19794, 18258, 21074, 21330, 22098,
- 21586, 22354, 22866, 18514, 19282, 17490, 16978, 20050,
- 15699, 16723, 17235, 19795, 18259, 21075, 21331, 22099,
- 21587, 22355, 22867, 18515, 19283, 17491, 16979, 20051,
- 15702, 16726, 17238, 19798, 18262, 21078, 21334, 22102,
- 21590, 22358, 22870, 18518, 19286, 17494, 16982, 20054,
- 15700, 16724, 17236, 19796, 18260, 21076, 21332, 22100,
- 21588, 22356, 22868, 18516, 19284, 17492, 16980, 20052,
- 15703, 16727, 17239, 19799, 18263, 21079, 21335, 22103,
- 21591, 22359, 22871, 18519, 19287, 17495, 16983, 20055,
- 15705, 16729, 17241, 19801, 18265, 21081, 21337, 22105,
- 21593, 22361, 22873, 18521, 19289, 17497, 16985, 20057,
- 15688, 16712, 17224, 19784, 18248, 21064, 21320, 22088,
- 21576, 22344, 22856, 18504, 19272, 17480, 16968, 20040,
- 15691, 16715, 17227, 19787, 18251, 21067, 21323, 22091,
- 21579, 22347, 22859, 18507, 19275, 17483, 16971, 20043,
- 15684, 16708, 17220, 19780, 18244, 21060, 21316, 22084,
- 21572, 22340, 22852, 18500, 19268, 17476, 16964, 20036,
- 15682, 16706, 17218, 19778, 18242, 21058, 21314, 22082,
- 21570, 22338, 22850, 18498, 19266, 17474, 16962, 20034,
- 15694, 16718, 17230, 19790, 18254, 21070, 21326, 22094,
- 21582, 22350, 22862, 18510, 19278, 17486, 16974, 20046
- };
-
- int l2 = cr->len / 2;
- unsigned char *from = (unsigned char *)bam_seq(b);
- uint16_t *cpi = (uint16_t *)cp;
- cp[0] = 0;
- for (i = 0; i < l2; i++)
- cpi[i] = le_int2(code2base[from[i]]);
- if ((i *= 2) < cr->len)
- cp[i] = seq_nt16_str[bam_seqi(bam_seq(b), i)];
- }
-#else
- for (i = 0; i < cr->len; i++)
- cp[i] = seq_nt16_str[bam_seqi(bam_seq(b), i)];
-#endif
- BLOCK_SIZE(s->seqs_blk) += cr->len;
-
- qual = cp = (char *)bam_qual(b);
-
- /* Copy and parse */
- if (!(cr->flags & BAM_FUNMAP)) {
- int32_t *cig_to, *cig_from;
- int apos = cr->apos-1, spos = 0;
-
- cr->cigar = s->ncigar;
- cr->ncigar = bam_cigar_len(b);
- while (cr->cigar + cr->ncigar >= s->cigar_alloc) {
- s->cigar_alloc = s->cigar_alloc ? s->cigar_alloc*2 : 1024;
- s->cigar = realloc(s->cigar, s->cigar_alloc * sizeof(*s->cigar));
- if (!s->cigar)
- return -1;
- }
-
- cig_to = (int32_t *)s->cigar;
- cig_from = (int32_t *)bam_cigar(b);
-
- cr->feature = 0;
- cr->nfeature = 0;
- for (i = 0; i < cr->ncigar; i++) {
- enum cigar_op cig_op = cig_from[i] & BAM_CIGAR_MASK;
- int cig_len = cig_from[i] >> BAM_CIGAR_SHIFT;
- cig_to[i] = cig_from[i];
-
- /* Can also generate events from here for CRAM diffs */
-
- switch (cig_op) {
- int l;
-
- // Don't trust = and X ops to be correct.
- case BAM_CMATCH:
- case BAM_CBASE_MATCH:
- case BAM_CBASE_MISMATCH:
- //fprintf(stderr, "\nBAM_CMATCH\nR: %.*s\nS: %.*s\n",
- // cig_len, &ref[apos], cig_len, &seq[spos]);
- l = 0;
- if (!fd->no_ref && cr->len) {
- int end = cig_len+apos < c->ref_end
- ? cig_len : c->ref_end - apos;
- char *sp = &seq[spos];
- char *rp = &ref[apos];
- char *qp = &qual[spos];
- for (l = 0; l < end; l++) {
- if (rp[l] != sp[l]) {
- if (!sp[l])
- break;
- if (0 && CRAM_MAJOR_VERS(fd->version) >= 3) {
- // Disabled for the time being as it doesn't
- // seem to gain us much.
- int ol=l;
- while (l<end && rp[l] != sp[l])
- l++;
- if (l-ol > 1) {
- if (cram_add_bases(fd, c, s, cr, spos+ol,
- l-ol, &seq[spos+ol]))
- return -1;
- l--;
- } else {
- l = ol;
- if (cram_add_substitution(fd, c, s, cr,
- spos+l, sp[l],
- qp[l], rp[l]))
- return -1;
- }
- } else {
- if (cram_add_substitution(fd, c, s, cr, spos+l,
- sp[l], qp[l], rp[l]))
- return -1;
- }
- }
- }
- spos += l;
- apos += l;
- }
-
- if (l < cig_len && cr->len) {
- if (fd->no_ref) {
- if (CRAM_MAJOR_VERS(fd->version) == 3) {
- if (cram_add_bases(fd, c, s, cr, spos,
- cig_len-l, &seq[spos]))
- return -1;
- spos += cig_len-l;
- } else {
- for (; l < cig_len && seq[spos]; l++, spos++) {
- if (cram_add_base(fd, c, s, cr, spos,
- seq[spos], qual[spos]))
- return -1;
- }
- }
- } else {
- /* off end of sequence or non-ref based output */
- for (; l < cig_len && seq[spos]; l++, spos++) {
- if (cram_add_base(fd, c, s, cr, spos,
- seq[spos], qual[spos]))
- return -1;
- }
- }
- apos += cig_len;
- } else if (!cr->len) {
- /* Seq "*" */
- apos += cig_len;
- spos += cig_len;
- }
- break;
-
- case BAM_CDEL:
- if (cram_add_deletion(c, s, cr, spos, cig_len, &seq[spos]))
- return -1;
- apos += cig_len;
- break;
-
- case BAM_CREF_SKIP:
- if (cram_add_skip(c, s, cr, spos, cig_len, &seq[spos]))
- return -1;
- apos += cig_len;
- break;
-
- case BAM_CINS:
- if (cram_add_insertion(c, s, cr, spos, cig_len,
- cr->len ? &seq[spos] : NULL))
- return -1;
- if (fd->no_ref && cr->len) {
- for (l = 0; l < cig_len; l++, spos++) {
- cram_add_quality(fd, c, s, cr, spos, qual[spos]);
- }
- } else {
- spos += cig_len;
- }
- break;
-
- case BAM_CSOFT_CLIP:
- if (cram_add_softclip(c, s, cr, spos, cig_len,
- cr->len ? &seq[spos] : NULL,
- fd->version))
- return -1;
- if (fd->no_ref &&
- !(cr->cram_flags & CRAM_FLAG_PRESERVE_QUAL_SCORES)) {
- if (cr->len) {
- for (l = 0; l < cig_len; l++, spos++) {
- cram_add_quality(fd, c, s, cr, spos, qual[spos]);
- }
- } else {
- for (l = 0; l < cig_len; l++, spos++) {
- cram_add_quality(fd, c, s, cr, spos, -1);
- }
- }
- } else {
- spos += cig_len;
- }
- break;
-
- case BAM_CHARD_CLIP:
- if (cram_add_hardclip(c, s, cr, spos, cig_len, &seq[spos]))
- return -1;
- break;
-
- case BAM_CPAD:
- if (cram_add_pad(c, s, cr, spos, cig_len, &seq[spos]))
- return -1;
- break;
- }
- }
- fake_qual = spos;
- cr->aend = MIN(apos, c->ref_end);
- cram_stats_add(c->stats[DS_FN], cr->nfeature);
- } else {
- // Unmapped
- cr->cram_flags |= CRAM_FLAG_PRESERVE_QUAL_SCORES;
- cr->cigar = 0;
- cr->ncigar = 0;
- cr->nfeature = 0;
- cr->aend = cr->apos;
- for (i = 0; i < cr->len; i++)
- cram_stats_add(c->stats[DS_BA], seq[i]);
- }
-
- /*
- * Append to the qual block now. We do this here as
- * cram_add_substitution() can generate BA/QS events which need to
- * be in the qual block before we append the rest of the data.
- */
- if (cr->cram_flags & CRAM_FLAG_PRESERVE_QUAL_SCORES) {
- /* Special case of seq "*" */
- if (cr->len == 0) {
- cram_stats_add(c->stats[DS_RL], cr->len = fake_qual);
- BLOCK_GROW(s->qual_blk, cr->len);
- cp = (char *)BLOCK_END(s->qual_blk);
- memset(cp, 255, cr->len);
- } else {
- BLOCK_GROW(s->qual_blk, cr->len);
- cp = (char *)BLOCK_END(s->qual_blk);
- char *from = (char *)&bam_qual(b)[0];
- char *to = &cp[0];
- memcpy(to, from, cr->len);
- //for (i = 0; i < cr->len; i++) cp[i] = from[i];
- }
- BLOCK_SIZE(s->qual_blk) += cr->len;
- } else {
- if (cr->len == 0) {
- cr->len = fake_qual >= 0 ? fake_qual : cr->aend - cr->apos + 1;
- cram_stats_add(c->stats[DS_RL], cr->len);
- }
- }
-
- /* Now we know apos and aend both, update mate-pair information */
- {
- int new;
- khint_t k;
- int sec = (cr->flags & BAM_FSECONDARY) ? 1 : 0;
-
- //fprintf(stderr, "Checking %"PRId64"/%.*s\t", rnum,
- // cr->name_len, DSTRING_STR(s->name_ds)+cr->name);
- if (cr->flags & BAM_FPAIRED) {
- char *key = string_ndup(s->pair_keys,
- (char *)BLOCK_DATA(s->name_blk)+cr->name,
- cr->name_len);
- if (!key)
- return -1;
-
- k = kh_put(m_s2i, s->pair[sec], key, &new);
- if (-1 == new)
- return -1;
- else if (new > 0)
- kh_val(s->pair[sec], k) = rnum;
- } else {
- new = 1;
- }
-
- if (new == 0) {
- cram_record *p = &s->crecs[kh_val(s->pair[sec], k)];
- int aleft, aright, sign;
-
- aleft = MIN(cr->apos, p->apos);
- aright = MAX(cr->aend, p->aend);
- if (cr->apos < p->apos) {
- sign = 1;
- } else if (cr->apos > p->apos) {
- sign = -1;
- } else if (cr->flags & BAM_FREAD1) {
- sign = 1;
- } else {
- sign = -1;
- }
-
- //fprintf(stderr, "paired %"PRId64"\n", kh_val(s->pair[sec], k));
-
- // This vs p: tlen, matepos, flags
- if (bam_ins_size(b) != sign*(aright-aleft+1))
- goto detached;
-
- if (MAX(bam_mate_pos(b)+1, 0) != p->apos)
- goto detached;
-
- if (((bam_flag(b) & BAM_FMUNMAP) != 0) !=
- ((p->flags & BAM_FUNMAP) != 0))
- goto detached;
-
- if (((bam_flag(b) & BAM_FMREVERSE) != 0) !=
- ((p->flags & BAM_FREVERSE) != 0))
- goto detached;
-
-
- // p vs this: tlen, matepos, flags
- if (p->tlen != -sign*(aright-aleft+1))
- goto detached;
-
- if (p->mate_pos != cr->apos)
- goto detached;
-
- if (((p->flags & BAM_FMUNMAP) != 0) !=
- ((p->mate_flags & CRAM_M_UNMAP) != 0))
- goto detached;
-
- if (((p->flags & BAM_FMREVERSE) != 0) !=
- ((p->mate_flags & CRAM_M_REVERSE) != 0))
- goto detached;
-
- // Supplementary reads are just too ill defined
- if ((cr->flags & BAM_FSUPPLEMENTARY) ||
- (p->flags & BAM_FSUPPLEMENTARY))
- goto detached;
-
- /*
- * The fields below are unused when encoding this read as it is
- * no longer detached. In theory they may get referred to when
- * processing a 3rd or 4th read in this template?, so we set them
- * here just to be sure.
- *
- * They do not need cram_stats_add() calls those as they are
- * not emitted.
- */
- cr->mate_pos = p->apos;
- cr->tlen = sign*(aright-aleft+1);
- cr->mate_flags =
- ((p->flags & BAM_FMUNMAP) == BAM_FMUNMAP) * CRAM_M_UNMAP +
- ((p->flags & BAM_FMREVERSE) == BAM_FMREVERSE) * CRAM_M_REVERSE;
-
- // Decrement statistics aggregated earlier
- cram_stats_del(c->stats[DS_NP], p->mate_pos);
- cram_stats_del(c->stats[DS_MF], p->mate_flags);
- cram_stats_del(c->stats[DS_TS], p->tlen);
- cram_stats_del(c->stats[DS_NS], p->mate_ref_id);
-
- /* Similarly we could correct the p-> values too, but these will no
- * longer have any code that refers back to them as the new 'p'
- * for this template is our current 'cr'.
- */
- //p->mate_pos = cr->apos;
- //p->mate_flags =
- // ((cr->flags & BAM_FMUNMAP) == BAM_FMUNMAP) * CRAM_M_UNMAP +
- // ((cr->flags & BAM_FMREVERSE) == BAM_FMREVERSE)* CRAM_M_REVERSE;
- //p->tlen = p->apos - cr->aend;
-
- // Clear detached from cr flags
- cr->cram_flags &= ~CRAM_FLAG_DETACHED;
- cram_stats_add(c->stats[DS_CF], cr->cram_flags);
-
- // Clear detached from p flags and set downstream
- cram_stats_del(c->stats[DS_CF], p->cram_flags);
- p->cram_flags &= ~CRAM_FLAG_DETACHED;
- p->cram_flags |= CRAM_FLAG_MATE_DOWNSTREAM;
- cram_stats_add(c->stats[DS_CF], p->cram_flags);
-
- p->mate_line = rnum - (kh_val(s->pair[sec], k) + 1);
- cram_stats_add(c->stats[DS_NF], p->mate_line);
-
- kh_val(s->pair[sec], k) = rnum;
- } else {
- detached:
- //fprintf(stderr, "unpaired\n");
-
- /* Derive mate flags from this flag */
- cr->mate_flags = 0;
- if (bam_flag(b) & BAM_FMUNMAP)
- cr->mate_flags |= CRAM_M_UNMAP;
- if (bam_flag(b) & BAM_FMREVERSE)
- cr->mate_flags |= CRAM_M_REVERSE;
-
- cram_stats_add(c->stats[DS_MF], cr->mate_flags);
-
- cr->mate_pos = MAX(bam_mate_pos(b)+1, 0);
- cram_stats_add(c->stats[DS_NP], cr->mate_pos);
-
- cr->tlen = bam_ins_size(b);
- cram_stats_add(c->stats[DS_TS], cr->tlen);
-
- cr->cram_flags |= CRAM_FLAG_DETACHED;
- cram_stats_add(c->stats[DS_CF], cr->cram_flags);
- cram_stats_add(c->stats[DS_NS], bam_mate_ref(b));
- }
- }
-
- cr->mqual = bam_map_qual(b);
- cram_stats_add(c->stats[DS_MQ], cr->mqual);
-
- cr->mate_ref_id = bam_mate_ref(b);
-
- if (!(bam_flag(b) & BAM_FUNMAP)) {
- if (c->first_base > cr->apos)
- c->first_base = cr->apos;
-
- if (c->last_base < cr->aend)
- c->last_base = cr->aend;
- }
-
- return 0;
-}
-
-/*
- * Write iterator: put BAM format sequences into a CRAM file.
- * We buffer up a containers worth of data at a time.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_put_bam_seq(cram_fd *fd, bam_seq_t *b) {
- cram_container *c;
-
- if (!fd->ctr) {
- fd->ctr = cram_new_container(fd->seqs_per_slice,
- fd->slices_per_container);
- if (!fd->ctr)
- return -1;
- fd->ctr->record_counter = fd->record_counter;
- }
- c = fd->ctr;
-
- if (!c->slice || c->curr_rec == c->max_rec ||
- (bam_ref(b) != c->curr_ref && c->curr_ref >= -1)) {
- int slice_rec, curr_rec, multi_seq = fd->multi_seq == 1;
- int curr_ref = c->slice ? c->curr_ref : bam_ref(b);
-
-
- /*
- * Start packing slices when we routinely have under 1/4tr full.
- *
- * This option isn't available if we choose to embed references
- * since we can only have one per slice.
- */
- if (fd->multi_seq == -1 && c->curr_rec < c->max_rec/4+10 &&
- fd->last_slice && fd->last_slice < c->max_rec/4+10 &&
- !fd->embed_ref) {
- if (fd->verbose && !c->multi_seq)
- fprintf(stderr, "Multi-ref enabled for this container\n");
- multi_seq = 1;
- }
-
- slice_rec = c->slice_rec;
- curr_rec = c->curr_rec;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1 ||
- c->curr_rec == c->max_rec || fd->multi_seq != 1 || !c->slice) {
- if (NULL == (c = cram_next_container(fd, b))) {
- if (fd->ctr) {
- // prevent cram_close attempting to flush
- cram_free_container(fd->ctr);
- fd->ctr = NULL;
- }
- return -1;
- }
- }
-
- /*
- * Due to our processing order, some things we've already done we
- * cannot easily undo. So when we first notice we should be packing
- * multiple sequences per container we emit the small partial
- * container as-is and then start a fresh one in a different mode.
- */
- if (multi_seq) {
- fd->multi_seq = 1;
- c->multi_seq = 1;
- c->pos_sorted = 0; // required atm for multi_seq slices
-
- if (!c->refs_used) {
- pthread_mutex_lock(&fd->ref_lock);
- c->refs_used = calloc(fd->refs->nref, sizeof(int));
- pthread_mutex_unlock(&fd->ref_lock);
- if (!c->refs_used)
- return -1;
- }
- }
-
- fd->last_slice = curr_rec - slice_rec;
- c->slice_rec = c->curr_rec;
-
- // Have we seen this reference before?
- if (bam_ref(b) >= 0 && bam_ref(b) != curr_ref && !fd->embed_ref &&
- !fd->unsorted && multi_seq) {
-
- if (!c->refs_used) {
- pthread_mutex_lock(&fd->ref_lock);
- c->refs_used = calloc(fd->refs->nref, sizeof(int));
- pthread_mutex_unlock(&fd->ref_lock);
- if (!c->refs_used)
- return -1;
- } else if (c->refs_used && c->refs_used[bam_ref(b)]) {
- fprintf(stderr, "Unsorted mode enabled\n");
- pthread_mutex_lock(&fd->ref_lock);
- fd->unsorted = 1;
- pthread_mutex_unlock(&fd->ref_lock);
- fd->multi_seq = 1;
- }
- }
-
- c->curr_ref = bam_ref(b);
- if (c->refs_used && c->curr_ref >= 0) c->refs_used[c->curr_ref]++;
- }
-
- if (!c->bams) {
- /* First time through, allocate a set of bam pointers */
- pthread_mutex_lock(&fd->bam_list_lock);
- if (fd->bl) {
- spare_bams *spare = fd->bl;
- c->bams = spare->bams;
- fd->bl = spare->next;
- free(spare);
- } else {
- c->bams = calloc(c->max_c_rec, sizeof(bam_seq_t *));
- if (!c->bams)
- return -1;
- }
- pthread_mutex_unlock(&fd->bam_list_lock);
- }
-
- /* Copy or alloc+copy the bam record, for later encoding */
- if (c->bams[c->curr_c_rec])
- bam_copy1(c->bams[c->curr_c_rec], b);
- else
- c->bams[c->curr_c_rec] = bam_dup(b);
-
- c->curr_rec++;
- c->curr_c_rec++;
- fd->record_counter++;
-
- return 0;
-}
diff --git a/htslib/cram/cram_encode.h b/htslib/cram/cram_encode.h
deleted file mode 100644
index 9131d6e..0000000
--- a/htslib/cram/cram_encode.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*! \file
- * Include cram.h instead.
- *
- * This is an internal part of the CRAM system and is automatically included
- * when you #include cram.h.
- *
- * Implements the encoding portion of CRAM I/O. Also see
- * cram_codecs.[ch] for the actual encoding functions themselves.
- */
-
-#ifndef _CRAM_WRITE_H_
-#define _CRAM_WRITE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ----------------------------------------------------------------------
- * CRAM sequence iterators.
- */
-
-/*! Write iterator: put BAM format sequences into a CRAM file.
- *
- * We buffer up a containers worth of data at a time.
- *
- * FIXME: break this into smaller pieces.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_put_bam_seq(cram_fd *fd, bam_seq_t *b);
-
-
-/* ----------------------------------------------------------------------
- * Internal functions
- */
-
-/*! INTERNAL:
- * Encodes a compression header block into a generic cram_block structure.
- *
- * @return
- * Returns cram_block ptr on success;
- * NULL on failure
- */
-cram_block *cram_encode_compression_header(cram_fd *fd, cram_container *c,
- cram_block_compression_hdr *h);
-
-/*! INTERNAL:
- * Encodes a slice compression header.
- *
- * @return
- * Returns cram_block on success;
- * NULL on failure
- */
-cram_block *cram_encode_slice_header(cram_fd *fd, cram_slice *s);
-
-/*! INTERNAL:
- * Encodes all slices in a container into blocks.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- *
- * FIXME: separate into encode_container and write_container. Ideally
- * we should be able to do read_container / write_container or
- * decode_container / encode_container.
- */
-int cram_encode_container(cram_fd *fd, cram_container *c);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/cram/cram_index.c b/htslib/cram/cram_index.c
deleted file mode 100644
index 8667223..0000000
--- a/htslib/cram/cram_index.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
-Copyright (c) 2013-2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * The index is a gzipped tab-delimited text file with one line per slice.
- * The columns are:
- * 1: reference number (0 to N-1, as per BAM ref_id)
- * 2: reference position of 1st read in slice (1..?)
- * 3: number of reads in slice
- * 4: offset of container start (relative to end of SAM header, so 1st
- * container is offset 0).
- * 5: slice number within container (ie which landmark).
- *
- * In memory, we hold this in a nested containment list. Each list element is
- * a cram_index struct. Each element in turn can contain its own list of
- * cram_index structs.
- *
- * Any start..end range which is entirely contained within another (and
- * earlier as it is sorted) range will be held within it. This ensures that
- * the outer list will never have containments and we can safely do a
- * binary search to find the first range which overlaps any given coordinate.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <zlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "htslib/hfile.h"
-#include "cram/cram.h"
-#include "cram/os.h"
-#include "cram/zfio.h"
-
-#if 0
-static void dump_index_(cram_index *e, int level) {
- int i, n;
- n = printf("%*s%d / %d .. %d, ", level*4, "", e->refid, e->start, e->end);
- printf("%*soffset %"PRId64"\n", MAX(0,50-n), "", e->offset);
- for (i = 0; i < e->nslice; i++) {
- dump_index_(&e->e[i], level+1);
- }
-}
-
-static void dump_index(cram_fd *fd) {
- int i;
- for (i = 0; i < fd->index_sz; i++) {
- dump_index_(&fd->index[i], 0);
- }
-}
-#endif
-
-static int kget_int32(kstring_t *k, size_t *pos, int32_t *val_p) {
- int sign = 1;
- int32_t val = 0;
- size_t p = *pos;
-
- while (p < k->l && (k->s[p] == ' ' || k->s[p] == '\t'))
- p++;
-
- if (p < k->l && k->s[p] == '-')
- sign = -1, p++;
-
- if (p >= k->l || !(k->s[p] >= '0' && k->s[p] <= '9'))
- return -1;
-
- while (p < k->l && k->s[p] >= '0' && k->s[p] <= '9')
- val = val*10 + k->s[p++]-'0';
-
- *pos = p;
- *val_p = sign*val;
-
- return 0;
-}
-
-static int kget_int64(kstring_t *k, size_t *pos, int64_t *val_p) {
- int sign = 1;
- int64_t val = 0;
- size_t p = *pos;
-
- while (p < k->l && (k->s[p] == ' ' || k->s[p] == '\t'))
- p++;
-
- if (p < k->l && k->s[p] == '-')
- sign = -1, p++;
-
- if (p >= k->l || !(k->s[p] >= '0' && k->s[p] <= '9'))
- return -1;
-
- while (p < k->l && k->s[p] >= '0' && k->s[p] <= '9')
- val = val*10 + k->s[p++]-'0';
-
- *pos = p;
- *val_p = sign*val;
-
- return 0;
-}
-
-/*
- * Loads a CRAM .crai index into memory.
- *
- * Returns 0 for success
- * -1 for failure
- */
-int cram_index_load(cram_fd *fd, const char *fn) {
- char fn2[PATH_MAX];
- char buf[65536];
- ssize_t len;
- kstring_t kstr = {0};
- hFILE *fp;
- cram_index *idx;
- cram_index **idx_stack = NULL, *ep, e;
- int idx_stack_alloc = 0, idx_stack_ptr = 0;
- size_t pos = 0;
-
- /* Check if already loaded */
- if (fd->index)
- return 0;
-
- fd->index = calloc((fd->index_sz = 1), sizeof(*fd->index));
- if (!fd->index)
- return -1;
-
- idx = &fd->index[0];
- idx->refid = -1;
- idx->start = INT_MIN;
- idx->end = INT_MAX;
-
- idx_stack = calloc(++idx_stack_alloc, sizeof(*idx_stack));
- idx_stack[idx_stack_ptr] = idx;
-
- sprintf(fn2, "%s.crai", fn);
- if (!(fp = hopen(fn2, "r"))) {
- perror(fn2);
- free(idx_stack);
- return -1;
- }
-
- // Load the file into memory
- while ((len = hread(fp, buf, 65536)) > 0)
- kputsn(buf, len, &kstr);
- if (len < 0 || kstr.l < 2) {
- if (kstr.s)
- free(kstr.s);
- free(idx_stack);
- return -1;
- }
-
- if (hclose(fp)) {
- if (kstr.s)
- free(kstr.s);
- free(idx_stack);
- return -1;
- }
-
-
- // Uncompress if required
- if (kstr.s[0] == 31 && (uc)kstr.s[1] == 139) {
- size_t l;
- char *s = zlib_mem_inflate(kstr.s, kstr.l, &l);
- free(kstr.s);
- if (!s) {
- free(idx_stack);
- return -1;
- }
- kstr.s = s;
- kstr.l = l;
- kstr.m = l; // conservative estimate of the size allocated
- kputsn("", 0, &kstr); // ensure kstr.s is NUL-terminated
- }
-
-
- // Parse it line at a time
- do {
- /* 1.1 layout */
- if (kget_int32(&kstr, &pos, &e.refid) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
- if (kget_int32(&kstr, &pos, &e.start) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
- if (kget_int32(&kstr, &pos, &e.end) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
- if (kget_int64(&kstr, &pos, &e.offset) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
- if (kget_int32(&kstr, &pos, &e.slice) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
- if (kget_int32(&kstr, &pos, &e.len) == -1) {
- free(kstr.s); free(idx_stack); return -1;
- }
-
- e.end += e.start-1;
- //printf("%d/%d..%d\n", e.refid, e.start, e.end);
-
- if (e.refid < -1) {
- free(kstr.s);
- free(idx_stack);
- fprintf(stderr, "Malformed index file, refid %d\n", e.refid);
- return -1;
- }
-
- if (e.refid != idx->refid) {
- if (fd->index_sz < e.refid+2) {
- size_t index_end = fd->index_sz * sizeof(*fd->index);
- fd->index_sz = e.refid+2;
- fd->index = realloc(fd->index,
- fd->index_sz * sizeof(*fd->index));
- memset(((char *)fd->index) + index_end, 0,
- fd->index_sz * sizeof(*fd->index) - index_end);
- }
- idx = &fd->index[e.refid+1];
- idx->refid = e.refid;
- idx->start = INT_MIN;
- idx->end = INT_MAX;
- idx->nslice = idx->nalloc = 0;
- idx->e = NULL;
- idx_stack[(idx_stack_ptr = 0)] = idx;
- }
-
- while (!(e.start >= idx->start && e.end <= idx->end)) {
- idx = idx_stack[--idx_stack_ptr];
- }
-
- // Now contains, so append
- if (idx->nslice+1 >= idx->nalloc) {
- idx->nalloc = idx->nalloc ? idx->nalloc*2 : 16;
- idx->e = realloc(idx->e, idx->nalloc * sizeof(*idx->e));
- }
-
- e.nalloc = e.nslice = 0; e.e = NULL;
- *(ep = &idx->e[idx->nslice++]) = e;
- idx = ep;
-
- if (++idx_stack_ptr >= idx_stack_alloc) {
- idx_stack_alloc *= 2;
- idx_stack = realloc(idx_stack, idx_stack_alloc*sizeof(*idx_stack));
- }
- idx_stack[idx_stack_ptr] = idx;
-
- while (pos < kstr.l && kstr.s[pos] != '\n')
- pos++;
- pos++;
- } while (pos < kstr.l);
-
- free(idx_stack);
- free(kstr.s);
-
- // dump_index(fd);
-
- return 0;
-}
-
-static void cram_index_free_recurse(cram_index *e) {
- if (e->e) {
- int i;
- for (i = 0; i < e->nslice; i++) {
- cram_index_free_recurse(&e->e[i]);
- }
- free(e->e);
- }
-}
-
-void cram_index_free(cram_fd *fd) {
- int i;
-
- if (!fd->index)
- return;
-
- for (i = 0; i < fd->index_sz; i++) {
- cram_index_free_recurse(&fd->index[i]);
- }
- free(fd->index);
-
- fd->index = NULL;
-}
-
-/*
- * Searches the index for the first slice overlapping a reference ID
- * and position, or one immediately preceeding it if none is found in
- * the index to overlap this position. (Our index may have missing
- * entries, but we require at least one per reference.)
- *
- * If the index finds multiple slices overlapping this position we
- * return the first one only. Subsequent calls should specifying
- * "from" as the last slice we checked to find the next one. Otherwise
- * set "from" to be NULL to find the first one.
- *
- * Returns the cram_index pointer on sucess
- * NULL on failure
- */
-cram_index *cram_index_query(cram_fd *fd, int refid, int pos,
- cram_index *from) {
- int i, j, k;
- cram_index *e;
-
- if (refid+1 < 0 || refid+1 >= fd->index_sz)
- return NULL;
-
- i = 0, j = fd->index[refid+1].nslice-1;
-
- if (!from)
- from = &fd->index[refid+1];
-
- for (k = j/2; k != i; k = (j-i)/2 + i) {
- if (from->e[k].refid > refid) {
- j = k;
- continue;
- }
-
- if (from->e[k].refid < refid) {
- i = k;
- continue;
- }
-
- if (from->e[k].start >= pos) {
- j = k;
- continue;
- }
-
- if (from->e[k].start < pos) {
- i = k;
- continue;
- }
- }
- // i==j or i==j-1. Check if j is better.
- if (from->e[j].start < pos && from->e[j].refid == refid)
- i = j;
-
- /* The above found *a* bin overlapping, but not necessarily the first */
- while (i > 0 && from->e[i-1].end >= pos)
- i--;
-
- /* Special case for matching a start pos */
- if (i+1 < from->nslice &&
- from->e[i+1].start == pos &&
- from->e[i+1].refid == refid)
- i++;
-
- e = &from->e[i];
-
- return e;
-}
-
-
-/*
- * Skips to a container overlapping the start coordinate listed in
- * cram_range.
- *
- * In theory we call cram_index_query multiple times, once per slice
- * overlapping the range. However slices may be absent from the index
- * which makes this problematic. Instead we find the left-most slice
- * and then read from then on, skipping decoding of slices and/or
- * whole containers when they don't overlap the specified cram_range.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_seek_to_refpos(cram_fd *fd, cram_range *r) {
- cram_index *e;
-
- // Ideally use an index, so see if we have one.
- if ((e = cram_index_query(fd, r->refid, r->start, NULL))) {
- if (0 != cram_seek(fd, e->offset, SEEK_SET))
- if (0 != cram_seek(fd, e->offset - fd->first_container, SEEK_CUR))
- return -1;
- } else {
- fprintf(stderr, "Unknown reference ID. Missing from index?\n");
- return -1;
- }
-
- if (fd->ctr) {
- cram_free_container(fd->ctr);
- fd->ctr = NULL;
- fd->ooc = 0;
- }
-
- return 0;
-}
-
-
-/*
- * A specialised form of cram_index_build (below) that deals with slices
- * having multiple references in this (ref_id -2). In this scenario we
- * decode the slice to look at the RI data series instead.
- *
- * Returns 0 on success
- * -1 on failure
- */
-static int cram_index_build_multiref(cram_fd *fd,
- cram_container *c,
- cram_slice *s,
- zfp *fp,
- off_t cpos,
- int32_t landmark,
- int sz) {
- int i, ref = -2, ref_start = 0, ref_end;
- char buf[1024];
-
- if (0 != cram_decode_slice(fd, c, s, fd->header))
- return -1;
-
- ref_end = INT_MIN;
- for (i = 0; i < s->hdr->num_records; i++) {
- if (s->crecs[i].ref_id == ref) {
- if (ref_end < s->crecs[i].aend)
- ref_end = s->crecs[i].aend;
- continue;
- }
-
- if (ref != -2) {
- sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n",
- ref, ref_start, ref_end - ref_start + 1,
- (int64_t)cpos, landmark, sz);
- zfputs(buf, fp);
- }
-
- ref = s->crecs[i].ref_id;
- ref_start = s->crecs[i].apos;
- ref_end = INT_MIN;
- }
-
- if (ref != -2) {
- sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n",
- ref, ref_start, ref_end - ref_start + 1,
- (int64_t)cpos, landmark, sz);
- zfputs(buf, fp);
- }
-
- return 0;
-}
-
-/*
- * Builds an index file.
- *
- * fd is a newly opened cram file that we wish to index.
- * fn_base is the filename of the associated CRAM file. Internally we
- * add ".crai" to this to get the index filename.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_index_build(cram_fd *fd, const char *fn_base) {
- cram_container *c;
- off_t cpos, spos, hpos;
- zfp *fp;
- char fn_idx[PATH_MAX];
-
- if (strlen(fn_base) > PATH_MAX-6)
- return -1;
-
- sprintf(fn_idx, "%s.crai", fn_base);
- if (!(fp = zfopen(fn_idx, "wz"))) {
- perror(fn_idx);
- return -1;
- }
-
- cpos = htell(fd->fp);
- while ((c = cram_read_container(fd))) {
- int j;
-
- if (fd->err) {
- perror("Cram container read");
- return 1;
- }
-
- hpos = htell(fd->fp);
-
- if (!(c->comp_hdr_block = cram_read_block(fd)))
- return 1;
- assert(c->comp_hdr_block->content_type == COMPRESSION_HEADER);
-
- c->comp_hdr = cram_decode_compression_header(fd, c->comp_hdr_block);
- if (!c->comp_hdr)
- return -1;
-
- // 2.0 format
- for (j = 0; j < c->num_landmarks; j++) {
- char buf[1024];
- cram_slice *s;
- int sz;
-
- spos = htell(fd->fp);
- assert(spos - cpos - c->offset == c->landmark[j]);
-
- if (!(s = cram_read_slice(fd))) {
- zfclose(fp);
- return -1;
- }
-
- sz = (int)(htell(fd->fp) - spos);
-
- if (s->hdr->ref_seq_id == -2) {
- cram_index_build_multiref(fd, c, s, fp,
- cpos, c->landmark[j], sz);
- } else {
- sprintf(buf, "%d\t%d\t%d\t%"PRId64"\t%d\t%d\n",
- s->hdr->ref_seq_id, s->hdr->ref_seq_start,
- s->hdr->ref_seq_span, (int64_t)cpos,
- c->landmark[j], sz);
- zfputs(buf, fp);
- }
-
- cram_free_slice(s);
- }
-
- cpos = htell(fd->fp);
- assert(cpos == hpos + c->length);
-
- cram_free_container(c);
- }
- if (fd->err) {
- zfclose(fp);
- return -1;
- }
-
-
- return zfclose(fp);
-}
diff --git a/htslib/cram/cram_index.h b/htslib/cram/cram_index.h
deleted file mode 100644
index 5e3b8f5..0000000
--- a/htslib/cram/cram_index.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-Copyright (c) 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _CRAM_INDEX_H_
-#define _CRAM_INDEX_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Loads a CRAM .crai index into memory.
- * Returns 0 for success
- * -1 for failure
- */
-int cram_index_load(cram_fd *fd, const char *fn);
-
-void cram_index_free(cram_fd *fd);
-
-/*
- * Searches the index for the first slice overlapping a reference ID
- * and position.
- *
- * Returns the cram_index pointer on sucess
- * NULL on failure
- */
-cram_index *cram_index_query(cram_fd *fd, int refid, int pos, cram_index *frm);
-
-/*
- * Skips to a container overlapping the start coordinate listed in
- * cram_range.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_seek_to_refpos(cram_fd *fd, cram_range *r);
-
-void cram_index_free(cram_fd *fd);
-
-/*
- * Skips to a container overlapping the start coordinate listed in
- * cram_range.
- *
- * In theory we call cram_index_query multiple times, once per slice
- * overlapping the range. However slices may be absent from the index
- * which makes this problematic. Instead we find the left-most slice
- * and then read from then on, skipping decoding of slices and/or
- * whole containers when they don't overlap the specified cram_range.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_seek_to_refpos(cram_fd *fd, cram_range *r);
-
-/*
- * Builds an index file.
- *
- * fd is a newly opened cram file that we wish to index.
- * fn_base is the filename of the associated CRAM file. Internally we
- * add ".crai" to this to get the index filename.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_index_build(cram_fd *fd, const char *fn_base);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/cram/cram_io.c b/htslib/cram/cram_io.c
deleted file mode 100644
index 5efc92d..0000000
--- a/htslib/cram/cram_io.c
+++ /dev/null
@@ -1,4202 +0,0 @@
-/*
-Copyright (c) 2012-2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * CRAM I/O primitives.
- *
- * - ITF8 encoding and decoding.
- * - Block based I/O
- * - Zlib inflating and deflating (memory)
- * - CRAM basic data structure reading and writing
- * - File opening / closing
- * - Reference sequence handling
- */
-
-/*
- * TODO: BLOCK_GROW, BLOCK_RESIZE, BLOCK_APPEND and itf8_put_blk all need
- * a way to return errors for when malloc fails.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <zlib.h>
-#ifdef HAVE_LIBBZ2
-#include <bzlib.h>
-#endif
-#ifdef HAVE_LIBLZMA
-#include <lzma.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "cram/cram.h"
-#include "cram/os.h"
-#include "cram/md5.h"
-#include "cram/open_trace_file.h"
-#include "cram/rANS_static.h"
-
-//#define REF_DEBUG
-
-#ifdef REF_DEBUG
-#include <sys/syscall.h>
-#define gettid() (int)syscall(SYS_gettid)
-
-#define RP(...) fprintf (stderr, __VA_ARGS__)
-#else
-#define RP(...)
-#endif
-
-#include "htslib/hfile.h"
-#include "htslib/bgzf.h"
-#include "htslib/faidx.h"
-
-#define TRIAL_SPAN 50
-#define NTRIALS 3
-
-
-/* ----------------------------------------------------------------------
- * ITF8 encoding and decoding.
- *
-* Also see the itf8_get and itf8_put macros in cram_io.h
- */
-
-/*
- * Reads an integer in ITF-8 encoding from 'cp' and stores it in
- * *val.
- *
- * Returns the number of bytes read on success
- * -1 on failure
- */
-int itf8_decode(cram_fd *fd, int32_t *val_p) {
- static int nbytes[16] = {
- 0,0,0,0, 0,0,0,0, // 0000xxxx - 0111xxxx
- 1,1,1,1, // 1000xxxx - 1011xxxx
- 2,2, // 1100xxxx - 1101xxxx
- 3, // 1110xxxx
- 4, // 1111xxxx
- };
-
- static int nbits[16] = {
- 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, // 0000xxxx - 0111xxxx
- 0x3f, 0x3f, 0x3f, 0x3f, // 1000xxxx - 1011xxxx
- 0x1f, 0x1f, // 1100xxxx - 1101xxxx
- 0x0f, // 1110xxxx
- 0x0f, // 1111xxxx
- };
-
- int32_t val = hgetc(fd->fp);
- if (val == -1)
- return -1;
-
- int i = nbytes[val>>4];
- val &= nbits[val>>4];
-
- switch(i) {
- case 0:
- *val_p = val;
- return 1;
-
- case 1:
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val;
- return 2;
-
- case 2:
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val;
- return 3;
-
- case 3:
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val;
- return 4;
-
- case 4: // really 3.5 more, why make it different?
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<4) | (((unsigned char)hgetc(fd->fp)) & 0x0f);
- *val_p = val;
- }
-
- return 5;
-}
-
-/*
- * Encodes and writes a single integer in ITF-8 format.
- * Returns 0 on success
- * -1 on failure
- */
-int itf8_encode(cram_fd *fd, int32_t val) {
- char buf[5];
- int len = itf8_put(buf, val);
- return hwrite(fd->fp, buf, len) == len ? 0 : -1;
-}
-
-#ifndef ITF8_MACROS
-/*
- * As above, but decoding from memory
- */
-int itf8_get(char *cp, int32_t *val_p) {
- unsigned char *up = (unsigned char *)cp;
-
- if (up[0] < 0x80) {
- *val_p = up[0];
- return 1;
- } else if (up[0] < 0xc0) {
- *val_p = ((up[0] <<8) | up[1]) & 0x3fff;
- return 2;
- } else if (up[0] < 0xe0) {
- *val_p = ((up[0]<<16) | (up[1]<< 8) | up[2]) & 0x1fffff;
- return 3;
- } else if (up[0] < 0xf0) {
- *val_p = ((up[0]<<24) | (up[1]<<16) | (up[2]<<8) | up[3]) & 0x0fffffff;
- return 4;
- } else {
- *val_p = ((up[0] & 0x0f)<<28) | (up[1]<<20) | (up[2]<<12) | (up[3]<<4) | (up[4] & 0x0f);
- return 5;
- }
-}
-
-/*
- * Stores a value to memory in ITF-8 format.
- *
- * Returns the number of bytes required to store the number.
- * This is a maximum of 5 bytes.
- */
-int itf8_put(char *cp, int32_t val) {
- if (!(val & ~0x00000007f)) { // 1 byte
- *cp = val;
- return 1;
- } else if (!(val & ~0x00003fff)) { // 2 byte
- *cp++ = (val >> 8 ) | 0x80;
- *cp = val & 0xff;
- return 2;
- } else if (!(val & ~0x01fffff)) { // 3 byte
- *cp++ = (val >> 16) | 0xc0;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 3;
- } else if (!(val & ~0x0fffffff)) { // 4 byte
- *cp++ = (val >> 24) | 0xe0;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 4;
- } else { // 5 byte
- *cp++ = 0xf0 | ((val>>28) & 0xff);
- *cp++ = (val >> 20) & 0xff;
- *cp++ = (val >> 12) & 0xff;
- *cp++ = (val >> 4 ) & 0xff;
- *cp = val & 0x0f;
- return 5;
- }
-}
-#endif
-
-/* 64-bit itf8 variant */
-int ltf8_put(char *cp, int64_t val) {
- if (!(val & ~((1LL<<7)-1))) {
- *cp = val;
- return 1;
- } else if (!(val & ~((1LL<<(6+8))-1))) {
- *cp++ = (val >> 8 ) | 0x80;
- *cp = val & 0xff;
- return 2;
- } else if (!(val & ~((1LL<<(5+2*8))-1))) {
- *cp++ = (val >> 16) | 0xc0;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 3;
- } else if (!(val & ~((1LL<<(4+3*8))-1))) {
- *cp++ = (val >> 24) | 0xe0;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 4;
- } else if (!(val & ~((1LL<<(3+4*8))-1))) {
- *cp++ = (val >> 32) | 0xf0;
- *cp++ = (val >> 24) & 0xff;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 5;
- } else if (!(val & ~((1LL<<(2+5*8))-1))) {
- *cp++ = (val >> 40) | 0xf8;
- *cp++ = (val >> 32) & 0xff;
- *cp++ = (val >> 24) & 0xff;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 6;
- } else if (!(val & ~((1LL<<(1+6*8))-1))) {
- *cp++ = (val >> 48) | 0xfc;
- *cp++ = (val >> 40) & 0xff;
- *cp++ = (val >> 32) & 0xff;
- *cp++ = (val >> 24) & 0xff;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 7;
- } else if (!(val & ~((1LL<<(7*8))-1))) {
- *cp++ = (val >> 56) | 0xfe;
- *cp++ = (val >> 48) & 0xff;
- *cp++ = (val >> 40) & 0xff;
- *cp++ = (val >> 32) & 0xff;
- *cp++ = (val >> 24) & 0xff;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 8;
- } else {
- *cp++ = 0xff;
- *cp++ = (val >> 56) & 0xff;
- *cp++ = (val >> 48) & 0xff;
- *cp++ = (val >> 40) & 0xff;
- *cp++ = (val >> 32) & 0xff;
- *cp++ = (val >> 24) & 0xff;
- *cp++ = (val >> 16) & 0xff;
- *cp++ = (val >> 8 ) & 0xff;
- *cp = val & 0xff;
- return 9;
- }
-}
-
-int ltf8_get(char *cp, int64_t *val_p) {
- unsigned char *up = (unsigned char *)cp;
-
- if (up[0] < 0x80) {
- *val_p = up[0];
- return 1;
- } else if (up[0] < 0xc0) {
- *val_p = (((uint64_t)up[0]<< 8) |
- (uint64_t)up[1]) & (((1LL<<(6+8)))-1);
- return 2;
- } else if (up[0] < 0xe0) {
- *val_p = (((uint64_t)up[0]<<16) |
- ((uint64_t)up[1]<< 8) |
- (uint64_t)up[2]) & ((1LL<<(5+2*8))-1);
- return 3;
- } else if (up[0] < 0xf0) {
- *val_p = (((uint64_t)up[0]<<24) |
- ((uint64_t)up[1]<<16) |
- ((uint64_t)up[2]<< 8) |
- (uint64_t)up[3]) & ((1LL<<(4+3*8))-1);
- return 4;
- } else if (up[0] < 0xf8) {
- *val_p = (((uint64_t)up[0]<<32) |
- ((uint64_t)up[1]<<24) |
- ((uint64_t)up[2]<<16) |
- ((uint64_t)up[3]<< 8) |
- (uint64_t)up[4]) & ((1LL<<(3+4*8))-1);
- return 5;
- } else if (up[0] < 0xfc) {
- *val_p = (((uint64_t)up[0]<<40) |
- ((uint64_t)up[1]<<32) |
- ((uint64_t)up[2]<<24) |
- ((uint64_t)up[3]<<16) |
- ((uint64_t)up[4]<< 8) |
- (uint64_t)up[5]) & ((1LL<<(2+5*8))-1);
- return 6;
- } else if (up[0] < 0xfe) {
- *val_p = (((uint64_t)up[0]<<48) |
- ((uint64_t)up[1]<<40) |
- ((uint64_t)up[2]<<32) |
- ((uint64_t)up[3]<<24) |
- ((uint64_t)up[4]<<16) |
- ((uint64_t)up[5]<< 8) |
- (uint64_t)up[6]) & ((1LL<<(1+6*8))-1);
- return 7;
- } else if (up[0] < 0xff) {
- *val_p = (((uint64_t)up[1]<<48) |
- ((uint64_t)up[2]<<40) |
- ((uint64_t)up[3]<<32) |
- ((uint64_t)up[4]<<24) |
- ((uint64_t)up[5]<<16) |
- ((uint64_t)up[6]<< 8) |
- (uint64_t)up[7]) & ((1LL<<(7*8))-1);
- return 8;
- } else {
- *val_p = (((uint64_t)up[1]<<56) |
- ((uint64_t)up[2]<<48) |
- ((uint64_t)up[3]<<40) |
- ((uint64_t)up[4]<<32) |
- ((uint64_t)up[5]<<24) |
- ((uint64_t)up[6]<<16) |
- ((uint64_t)up[7]<< 8) |
- (uint64_t)up[8]);
- return 9;
- }
-}
-
-int ltf8_decode(cram_fd *fd, int64_t *val_p) {
- int c = hgetc(fd->fp);
- int64_t val = (unsigned char)c;
- if (c == -1)
- return -1;
-
- if (val < 0x80) {
- *val_p = val;
- return 1;
-
- } else if (val < 0xc0) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & (((1LL<<(6+8)))-1);
- return 2;
-
- } else if (val < 0xe0) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(5+2*8))-1);
- return 3;
-
- } else if (val < 0xf0) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(4+3*8))-1);
- return 4;
-
- } else if (val < 0xf8) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(3+4*8))-1);
- return 5;
-
- } else if (val < 0xfc) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(2+5*8))-1);
- return 6;
-
- } else if (val < 0xfe) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(1+6*8))-1);
- return 7;
-
- } else if (val < 0xff) {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val & ((1LL<<(7*8))-1);
- return 8;
-
- } else {
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- val = (val<<8) | (unsigned char)hgetc(fd->fp);
- *val_p = val;
- }
-
- return 9;
-}
-
-/*
- * Pushes a value in ITF8 format onto the end of a block.
- * This shouldn't be used for high-volume data as it is not the fastest
- * method.
- *
- * Returns the number of bytes written
- */
-int itf8_put_blk(cram_block *blk, int val) {
- char buf[5];
- int sz;
-
- sz = itf8_put(buf, val);
- BLOCK_APPEND(blk, buf, sz);
- return sz;
-}
-
-/*
- * Decodes a 32-bit little endian value from fd and stores in val.
- *
- * Returns the number of bytes read on success
- * -1 on failure
- */
-int int32_decode(cram_fd *fd, int32_t *val) {
- int32_t i;
- if (4 != hread(fd->fp, &i, 4))
- return -1;
-
- *val = le_int4(i);
- return 4;
-}
-
-/*
- * Encodes a 32-bit little endian value 'val' and writes to fd.
- *
- * Returns the number of bytes written on success
- * -1 on failure
- */
-int int32_encode(cram_fd *fd, int32_t val) {
- val = le_int4(val);
- if (4 != hwrite(fd->fp, &val, 4))
- return -1;
-
- return 4;
-}
-
-/* As int32_decoded/encode, but from/to blocks instead of cram_fd */
-int int32_get(cram_block *b, int32_t *val) {
- if (b->uncomp_size - BLOCK_SIZE(b) < 4)
- return -1;
-
- *val =
- b->data[b->byte ] |
- (b->data[b->byte+1] << 8) |
- (b->data[b->byte+2] << 16) |
- (b->data[b->byte+3] << 24);
- BLOCK_SIZE(b) += 4;
- return 4;
-}
-
-/* As int32_decoded/encode, but from/to blocks instead of cram_fd */
-int int32_put(cram_block *b, int32_t val) {
- unsigned char cp[4];
- cp[0] = ( val & 0xff);
- cp[1] = ((val>>8) & 0xff);
- cp[2] = ((val>>16) & 0xff);
- cp[3] = ((val>>24) & 0xff);
-
- BLOCK_APPEND(b, cp, 4);
- return b->data ? 0 : -1;
-}
-
-/* ----------------------------------------------------------------------
- * zlib compression code - from Gap5's tg_iface_g.c
- * They're static here as they're only used within the cram_compress_block
- * and cram_uncompress_block functions, which are the external interface.
- */
-char *zlib_mem_inflate(char *cdata, size_t csize, size_t *size) {
- z_stream s;
- unsigned char *data = NULL; /* Uncompressed output */
- int data_alloc = 0;
- int err;
-
- /* Starting point at uncompressed size, and scale after that */
- data = malloc(data_alloc = csize*1.2+100);
- if (!data)
- return NULL;
-
- /* Initialise zlib stream */
- s.zalloc = Z_NULL; /* use default allocation functions */
- s.zfree = Z_NULL;
- s.opaque = Z_NULL;
- s.next_in = (unsigned char *)cdata;
- s.avail_in = csize;
- s.total_in = 0;
- s.next_out = data;
- s.avail_out = data_alloc;
- s.total_out = 0;
-
- //err = inflateInit(&s);
- err = inflateInit2(&s, 15 + 32);
- if (err != Z_OK) {
- fprintf(stderr, "zlib inflateInit error: %s\n", s.msg);
- free(data);
- return NULL;
- }
-
- /* Decode to 'data' array */
- for (;s.avail_in;) {
- unsigned char *data_tmp;
- int alloc_inc;
-
- s.next_out = &data[s.total_out];
- err = inflate(&s, Z_NO_FLUSH);
- if (err == Z_STREAM_END)
- break;
-
- if (err != Z_OK) {
- fprintf(stderr, "zlib inflate error: %s\n", s.msg);
- break;
- }
-
- /* More to come, so realloc based on growth so far */
- alloc_inc = (double)s.avail_in/s.total_in * s.total_out + 100;
- data = realloc((data_tmp = data), data_alloc += alloc_inc);
- if (!data) {
- free(data_tmp);
- return NULL;
- }
- s.avail_out += alloc_inc;
- }
- inflateEnd(&s);
-
- *size = s.total_out;
- return (char *)data;
-}
-
-static char *zlib_mem_deflate(char *data, size_t size, size_t *cdata_size,
- int level, int strat) {
- z_stream s;
- unsigned char *cdata = NULL; /* Compressed output */
- int cdata_alloc = 0;
- int cdata_pos = 0;
- int err;
-
- cdata = malloc(cdata_alloc = size*1.05+100);
- if (!cdata)
- return NULL;
- cdata_pos = 0;
-
- /* Initialise zlib stream */
- s.zalloc = Z_NULL; /* use default allocation functions */
- s.zfree = Z_NULL;
- s.opaque = Z_NULL;
- s.next_in = (unsigned char *)data;
- s.avail_in = size;
- s.total_in = 0;
- s.next_out = cdata;
- s.avail_out = cdata_alloc;
- s.total_out = 0;
- s.data_type = Z_BINARY;
-
- err = deflateInit2(&s, level, Z_DEFLATED, 15|16, 9, strat);
- if (err != Z_OK) {
- fprintf(stderr, "zlib deflateInit2 error: %s\n", s.msg);
- return NULL;
- }
-
- /* Encode to 'cdata' array */
- for (;s.avail_in;) {
- s.next_out = &cdata[cdata_pos];
- s.avail_out = cdata_alloc - cdata_pos;
- if (cdata_alloc - cdata_pos <= 0) {
- fprintf(stderr, "Deflate produced larger output than expected. Abort\n");
- return NULL;
- }
- err = deflate(&s, Z_NO_FLUSH);
- cdata_pos = cdata_alloc - s.avail_out;
- if (err != Z_OK) {
- fprintf(stderr, "zlib deflate error: %s\n", s.msg);
- break;
- }
- }
- if (deflate(&s, Z_FINISH) != Z_STREAM_END) {
- fprintf(stderr, "zlib deflate error: %s\n", s.msg);
- }
- *cdata_size = s.total_out;
-
- if (deflateEnd(&s) != Z_OK) {
- fprintf(stderr, "zlib deflate error: %s\n", s.msg);
- }
- return (char *)cdata;
-}
-
-#ifdef HAVE_LIBLZMA
-/* ------------------------------------------------------------------------ */
-/*
- * Data compression routines using liblzma (xz)
- *
- * On a test set this shrunk the main db from 136157104 bytes to 114796168, but
- * caused tg_index to grow from 2m43.707s to 15m3.961s. Exporting as bfastq
- * went from 18.3s to 36.3s. So decompression suffers too, but not as bad
- * as compression times.
- *
- * For now we disable this functionality. If it's to be reenabled make sure you
- * improve the mem_inflate implementation as it's just a test hack at the
- * moment.
- */
-
-static char *lzma_mem_deflate(char *data, size_t size, size_t *cdata_size,
- int level) {
- char *out;
- size_t out_size = lzma_stream_buffer_bound(size);
- *cdata_size = 0;
-
- out = malloc(out_size);
-
- /* Single call compression */
- if (LZMA_OK != lzma_easy_buffer_encode(level, LZMA_CHECK_CRC32, NULL,
- (uint8_t *)data, size,
- (uint8_t *)out, cdata_size,
- out_size))
- return NULL;
-
- return out;
-}
-
-static char *lzma_mem_inflate(char *cdata, size_t csize, size_t *size) {
- lzma_stream strm = LZMA_STREAM_INIT;
- size_t out_size = 0, out_pos = 0;
- char *out = NULL;
- int r;
-
- /* Initiate the decoder */
- if (LZMA_OK != lzma_stream_decoder(&strm, 50000000, 0))
- return NULL;
-
- /* Decode loop */
- strm.avail_in = csize;
- strm.next_in = (uint8_t *)cdata;
-
- for (;strm.avail_in;) {
- if (strm.avail_in > out_size - out_pos) {
- out_size += strm.avail_in * 4 + 32768;
- out = realloc(out, out_size);
- }
- strm.avail_out = out_size - out_pos;
- strm.next_out = (uint8_t *)&out[out_pos];
-
- r = lzma_code(&strm, LZMA_RUN);
- if (LZMA_OK != r && LZMA_STREAM_END != r) {
- fprintf(stderr, "r=%d\n", r);
- fprintf(stderr, "mem=%"PRId64"d\n", (int64_t)lzma_memusage(&strm));
- return NULL;
- }
-
- out_pos = strm.total_out;
-
- if (r == LZMA_STREAM_END)
- break;
- }
-
- /* finish up any unflushed data; necessary? */
- r = lzma_code(&strm, LZMA_FINISH);
- if (r != LZMA_OK && r != LZMA_STREAM_END) {
- fprintf(stderr, "r=%d\n", r);
- return NULL;
- }
-
- out = realloc(out, strm.total_out);
- *size = strm.total_out;
-
- lzma_end(&strm);
-
- return out;
-}
-#endif
-
-/* ----------------------------------------------------------------------
- * CRAM blocks - the dynamically growable data block. We have code to
- * create, update, (un)compress and read/write.
- *
- * These are derived from the deflate_interlaced.c blocks, but with the
- * CRAM extension of content types and IDs.
- */
-
-/*
- * Allocates a new cram_block structure with a specified content_type and
- * id.
- *
- * Returns block pointer on success
- * NULL on failure
- */
-cram_block *cram_new_block(enum cram_content_type content_type,
- int content_id) {
- cram_block *b = malloc(sizeof(*b));
- if (!b)
- return NULL;
- b->method = b->orig_method = RAW;
- b->content_type = content_type;
- b->content_id = content_id;
- b->comp_size = 0;
- b->uncomp_size = 0;
- b->data = NULL;
- b->alloc = 0;
- b->byte = 0;
- b->bit = 7; // MSB
-
- return b;
-}
-
-/*
- * Reads a block from a cram file.
- * Returns cram_block pointer on success.
- * NULL on failure
- */
-cram_block *cram_read_block(cram_fd *fd) {
- cram_block *b = malloc(sizeof(*b));
- if (!b)
- return NULL;
-
- //fprintf(stderr, "Block at %d\n", (int)ftell(fd->fp));
-
- if (-1 == (b->method = hgetc(fd->fp))) { free(b); return NULL; }
- if (-1 == (b->content_type= hgetc(fd->fp))) { free(b); return NULL; }
- if (-1 == itf8_decode(fd, &b->content_id)) { free(b); return NULL; }
- if (-1 == itf8_decode(fd, &b->comp_size)) { free(b); return NULL; }
- if (-1 == itf8_decode(fd, &b->uncomp_size)) { free(b); return NULL; }
-
- // fprintf(stderr, " method %d, ctype %d, cid %d, csize %d, ucsize %d\n",
- // b->method, b->content_type, b->content_id, b->comp_size, b->uncomp_size);
-
- if (b->method == RAW) {
- b->alloc = b->uncomp_size;
- if (!(b->data = malloc(b->uncomp_size))){ free(b); return NULL; }
- if (b->uncomp_size != hread(fd->fp, b->data, b->uncomp_size)) {
- free(b->data);
- free(b);
- return NULL;
- }
- } else {
- b->alloc = b->comp_size;
- if (!(b->data = malloc(b->comp_size))) { free(b); return NULL; }
- if (b->comp_size != hread(fd->fp, b->data, b->comp_size)) {
- free(b->data);
- free(b);
- return NULL;
- }
- }
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- unsigned char dat[100], *cp = dat;;
- uint32_t crc;
-
-
- if (-1 == int32_decode(fd, (int32_t *)&b->crc32)) {
- free(b);
- return NULL;
- }
-
- *cp++ = b->method;
- *cp++ = b->content_type;
- cp += itf8_put(cp, b->content_id);
- cp += itf8_put(cp, b->comp_size);
- cp += itf8_put(cp, b->uncomp_size);
- crc = crc32(0L, dat, cp-dat);
- crc = crc32(crc, b->data ? b->data : (uc *)"", b->alloc);
-
- if (crc != b->crc32) {
- fprintf(stderr, "Block CRC32 failure\n");
- free(b->data);
- free(b);
- return NULL;
- }
- }
-
- b->orig_method = b->method;
- b->idx = 0;
- b->byte = 0;
- b->bit = 7; // MSB
-
- return b;
-}
-
-/*
- * Writes a CRAM block.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_write_block(cram_fd *fd, cram_block *b) {
- assert(b->method != RAW || (b->comp_size == b->uncomp_size));
-
- if (hputc(b->method, fd->fp) == EOF) return -1;
- if (hputc(b->content_type, fd->fp) == EOF) return -1;
- if (itf8_encode(fd, b->content_id) == -1) return -1;
- if (itf8_encode(fd, b->comp_size) == -1) return -1;
- if (itf8_encode(fd, b->uncomp_size) == -1) return -1;
-
- if (b->method == RAW) {
- if (b->uncomp_size != hwrite(fd->fp, b->data, b->uncomp_size))
- return -1;
- } else {
- if (b->comp_size != hwrite(fd->fp, b->data, b->comp_size))
- return -1;
- }
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- unsigned char dat[100], *cp = dat;;
- uint32_t crc;
-
- *cp++ = b->method;
- *cp++ = b->content_type;
- cp += itf8_put(cp, b->content_id);
- cp += itf8_put(cp, b->comp_size);
- cp += itf8_put(cp, b->uncomp_size);
- crc = crc32(0L, dat, cp-dat);
-
- if (b->method == RAW) {
- b->crc32 = crc32(crc, b->data ? b->data : (uc*)"", b->uncomp_size);
- } else {
- b->crc32 = crc32(crc, b->data ? b->data : (uc*)"", b->comp_size);
- }
-
- if (-1 == int32_encode(fd, b->crc32))
- return -1;
- }
-
- return 0;
-}
-
-/*
- * Frees a CRAM block, deallocating internal data too.
- */
-void cram_free_block(cram_block *b) {
- if (!b)
- return;
- if (b->data)
- free(b->data);
- free(b);
-}
-
-/*
- * Uncompresses a CRAM block, if compressed.
- */
-int cram_uncompress_block(cram_block *b) {
- char *uncomp;
- size_t uncomp_size = 0;
-
- if (b->uncomp_size == 0) {
- // blank block
- b->method = RAW;
- return 0;
- }
-
- switch (b->method) {
- case RAW:
- return 0;
-
- case GZIP:
- uncomp = zlib_mem_inflate((char *)b->data, b->comp_size, &uncomp_size);
- if (!uncomp)
- return -1;
- if ((int)uncomp_size != b->uncomp_size) {
- free(uncomp);
- return -1;
- }
- free(b->data);
- b->data = (unsigned char *)uncomp;
- b->alloc = uncomp_size;
- b->method = RAW;
- break;
-
-#ifdef HAVE_LIBBZ2
- case BZIP2: {
- unsigned int usize = b->uncomp_size;
- if (!(uncomp = malloc(usize)))
- return -1;
- if (BZ_OK != BZ2_bzBuffToBuffDecompress(uncomp, &usize,
- (char *)b->data, b->comp_size,
- 0, 0)) {
- free(uncomp);
- return -1;
- }
- free(b->data);
- b->data = (unsigned char *)uncomp;
- b->alloc = usize;
- b->method = RAW;
- b->uncomp_size = usize; // Just incase it differs
- break;
- }
-#else
- case BZIP2:
- fprintf(stderr, "Bzip2 compression is not compiled into this "
- "version.\nPlease rebuild and try again.\n");
- return -1;
-#endif
-
-#ifdef HAVE_LIBLZMA
- case LZMA:
- uncomp = lzma_mem_inflate((char *)b->data, b->comp_size, &uncomp_size);
- if (!uncomp)
- return -1;
- if ((int)uncomp_size != b->uncomp_size)
- return -1;
- free(b->data);
- b->data = (unsigned char *)uncomp;
- b->alloc = uncomp_size;
- b->method = RAW;
- break;
-#else
- case LZMA:
- fprintf(stderr, "Lzma compression is not compiled into this "
- "version.\nPlease rebuild and try again.\n");
- return -1;
- break;
-#endif
-
- case RANS: {
- unsigned int usize = b->uncomp_size, usize2;
- uncomp = (char *)rans_uncompress(b->data, b->comp_size, &usize2);
- assert(usize == usize2);
- free(b->data);
- b->data = (unsigned char *)uncomp;
- b->alloc = usize2;
- b->method = RAW;
- b->uncomp_size = usize2; // Just incase it differs
- //fprintf(stderr, "Expanded %d to %d\n", b->comp_size, b->uncomp_size);
- break;
- }
-
- default:
- return -1;
- }
-
- return 0;
-}
-
-static char *cram_compress_by_method(char *in, size_t in_size,
- size_t *out_size,
- enum cram_block_method method,
- int level, int strat) {
- switch (method) {
- case GZIP:
- return zlib_mem_deflate(in, in_size, out_size, level, strat);
-
- case BZIP2: {
-#ifdef HAVE_LIBBZ2
- unsigned int comp_size = in_size*1.01 + 600;
- char *comp = malloc(comp_size);
- if (!comp)
- return NULL;
-
- if (BZ_OK != BZ2_bzBuffToBuffCompress(comp, &comp_size,
- in, in_size,
- level, 0, 30)) {
- free(comp);
- return NULL;
- }
- *out_size = comp_size;
- return comp;
-#else
- return NULL;
-#endif
- }
-
- case LZMA:
-#ifdef HAVE_LIBLZMA
- return lzma_mem_deflate(in, in_size, out_size, level);
-#else
- return NULL;
-#endif
-
- case RANS0: {
- unsigned int out_size_i;
- unsigned char *cp;
- cp = rans_compress((unsigned char *)in, in_size, &out_size_i, 0);
- *out_size = out_size_i;
- return (char *)cp;
- }
-
- case RANS1: {
- unsigned int out_size_i;
- unsigned char *cp;
-
- cp = rans_compress((unsigned char *)in, in_size, &out_size_i, 1);
- *out_size = out_size_i;
- return (char *)cp;
- }
-
- case RAW:
- break;
-
- default:
- return NULL;
- }
-
- return NULL;
-}
-
-
-/*
- * Compresses a block using one of two different zlib strategies. If we only
- * want one choice set strat2 to be -1.
- *
- * The logic here is that sometimes Z_RLE does a better job than Z_FILTERED
- * or Z_DEFAULT_STRATEGY on quality data. If so, we'd rather use it as it is
- * significantly faster.
- */
-int cram_compress_block(cram_fd *fd, cram_block *b, cram_metrics *metrics,
- int method, int level) {
-
- char *comp = NULL;
- size_t comp_size = 0;
- int strat;
-
- //fprintf(stderr, "IN: block %d, sz %d\n", b->content_id, b->uncomp_size);
-
- if (method == RAW || level == 0 || b->uncomp_size == 0) {
- b->method = RAW;
- b->comp_size = b->uncomp_size;
- //fprintf(stderr, "Skip block id %d\n", b->content_id);
- return 0;
- }
-
- if (metrics) {
- pthread_mutex_lock(&fd->metrics_lock);
- if (metrics->trial > 0 || --metrics->next_trial <= 0) {
- size_t sz_best = INT_MAX;
- size_t sz_gz_rle = 0;
- size_t sz_gz_def = 0;
- size_t sz_rans0 = 0;
- size_t sz_rans1 = 0;
- size_t sz_bzip2 = 0;
- size_t sz_lzma = 0;
- int method_best = 0;
- char *c_best = NULL, *c = NULL;
-
- if (metrics->revised_method)
- method = metrics->revised_method;
- else
- metrics->revised_method = method;
-
- if (metrics->next_trial == 0) {
- metrics->next_trial = TRIAL_SPAN;
- metrics->trial = NTRIALS;
- metrics->sz_gz_rle /= 2;
- metrics->sz_gz_def /= 2;
- metrics->sz_rans0 /= 2;
- metrics->sz_rans1 /= 2;
- metrics->sz_bzip2 /= 2;
- metrics->sz_lzma /= 2;
- }
-
- pthread_mutex_unlock(&fd->metrics_lock);
-
- if (method & (1<<GZIP_RLE)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_gz_rle, GZIP, 1, Z_RLE);
- if (c && sz_best > sz_gz_rle) {
- sz_best = sz_gz_rle;
- method_best = GZIP_RLE;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_gz_rle = b->uncomp_size*2+1000;
- }
-
- //fprintf(stderr, "Block %d; %d->%d\n", b->content_id, b->uncomp_size, sz_gz_rle);
- }
-
- if (method & (1<<GZIP)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_gz_def, GZIP, level,
- Z_FILTERED);
- if (c && sz_best > sz_gz_def) {
- sz_best = sz_gz_def;
- method_best = GZIP;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_gz_def = b->uncomp_size*2+1000;
- }
-
- //fprintf(stderr, "Block %d; %d->%d\n", b->content_id, b->uncomp_size, sz_gz_def);
- }
-
- if (method & (1<<RANS0)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_rans0, RANS0, 0, 0);
- if (c && sz_best > sz_rans0) {
- sz_best = sz_rans0;
- method_best = RANS0;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_rans0 = b->uncomp_size*2+1000;
- }
- }
-
- if (method & (1<<RANS1)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_rans1, RANS1, 0, 0);
- if (c && sz_best > sz_rans1) {
- sz_best = sz_rans1;
- method_best = RANS1;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_rans1 = b->uncomp_size*2+1000;
- }
- }
-
- if (method & (1<<BZIP2)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_bzip2, BZIP2, level, 0);
- if (c && sz_best > sz_bzip2) {
- sz_best = sz_bzip2;
- method_best = BZIP2;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_bzip2 = b->uncomp_size*2+1000;
- }
- }
-
- if (method & (1<<LZMA)) {
- c = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &sz_lzma, LZMA, level, 0);
- if (c && sz_best > sz_lzma) {
- sz_best = sz_lzma;
- method_best = LZMA;
- if (c_best)
- free(c_best);
- c_best = c;
- } else if (c) {
- free(c);
- } else {
- sz_lzma = b->uncomp_size*2+1000;
- }
- }
-
- //fprintf(stderr, "sz_best = %d\n", sz_best);
-
- free(b->data);
- b->data = (unsigned char *)c_best;
- //printf("method_best = %s\n", cram_block_method2str(method_best));
- b->method = method_best == GZIP_RLE ? GZIP : method_best;
- b->comp_size = sz_best;
-
- pthread_mutex_lock(&fd->metrics_lock);
- metrics->sz_gz_rle += sz_gz_rle;
- metrics->sz_gz_def += sz_gz_def;
- metrics->sz_rans0 += sz_rans0;
- metrics->sz_rans1 += sz_rans1;
- metrics->sz_bzip2 += sz_bzip2;
- metrics->sz_lzma += sz_lzma;
- if (--metrics->trial == 0) {
- int best_method = RAW;
- int best_sz = INT_MAX;
-
- // Scale methods by cost
- if (fd->level <= 3) {
- metrics->sz_rans1 *= 1.02;
- metrics->sz_gz_def *= 1.04;
- metrics->sz_bzip2 *= 1.08;
- metrics->sz_lzma *= 1.10;
- } else if (fd->level <= 6) {
- metrics->sz_rans1 *= 1.01;
- metrics->sz_gz_def *= 1.02;
- metrics->sz_bzip2 *= 1.03;
- metrics->sz_lzma *= 1.05;
- }
-
- if (method & (1<<GZIP_RLE) && best_sz > metrics->sz_gz_rle)
- best_sz = metrics->sz_gz_rle, best_method = GZIP_RLE;
-
- if (method & (1<<GZIP) && best_sz > metrics->sz_gz_def)
- best_sz = metrics->sz_gz_def, best_method = GZIP;
-
- if (method & (1<<RANS0) && best_sz > metrics->sz_rans0)
- best_sz = metrics->sz_rans0, best_method = RANS0;
-
- if (method & (1<<RANS1) && best_sz > metrics->sz_rans1)
- best_sz = metrics->sz_rans1, best_method = RANS1;
-
- if (method & (1<<BZIP2) && best_sz > metrics->sz_bzip2)
- best_sz = metrics->sz_bzip2, best_method = BZIP2;
-
- if (method & (1<<LZMA) && best_sz > metrics->sz_lzma)
- best_sz = metrics->sz_lzma, best_method = LZMA;
-
- if (best_method == GZIP_RLE) {
- metrics->method = GZIP;
- metrics->strat = Z_RLE;
- } else {
- metrics->method = best_method;
- metrics->strat = Z_FILTERED;
- }
-
- // If we see at least MAXFAIL trials in a row for a specific
- // compression method with more than MAXDELTA aggregate
- // size then we drop this from the list of methods used
- // for this block type.
-#define MAXDELTA 0.20
-#define MAXFAILS 4
- if (best_method == GZIP_RLE) {
- metrics->gz_rle_cnt = 0;
- metrics->gz_rle_extra = 0;
- } else if (best_sz < metrics->sz_gz_rle) {
- double r = (double)metrics->sz_gz_rle / best_sz - 1;
- if (++metrics->gz_rle_cnt >= MAXFAILS &&
- (metrics->gz_rle_extra += r) >= MAXDELTA)
- method &= ~(1<<GZIP_RLE);
- }
-
- if (best_method == GZIP) {
- metrics->gz_def_cnt = 0;
- metrics->gz_def_extra = 0;
- } else if (best_sz < metrics->sz_gz_def) {
- double r = (double)metrics->sz_gz_def / best_sz - 1;
- if (++metrics->gz_def_cnt >= MAXFAILS &&
- (metrics->gz_def_extra += r) >= MAXDELTA)
- method &= ~(1<<GZIP);
- }
-
- if (best_method == RANS0) {
- metrics->rans0_cnt = 0;
- metrics->rans0_extra = 0;
- } else if (best_sz < metrics->sz_rans0) {
- double r = (double)metrics->sz_rans0 / best_sz - 1;
- if (++metrics->rans0_cnt >= MAXFAILS &&
- (metrics->rans0_extra += r) >= MAXDELTA)
- method &= ~(1<<RANS0);
- }
-
- if (best_method == RANS1) {
- metrics->rans1_cnt = 0;
- metrics->rans1_extra = 0;
- } else if (best_sz < metrics->sz_rans1) {
- double r = (double)metrics->sz_rans1 / best_sz - 1;
- if (++metrics->rans1_cnt >= MAXFAILS &&
- (metrics->rans1_extra += r) >= MAXDELTA)
- method &= ~(1<<RANS1);
- }
-
- if (best_method == BZIP2) {
- metrics->bzip2_cnt = 0;
- metrics->bzip2_extra = 0;
- } else if (best_sz < metrics->sz_bzip2) {
- double r = (double)metrics->sz_bzip2 / best_sz - 1;
- if (++metrics->bzip2_cnt >= MAXFAILS &&
- (metrics->bzip2_extra += r) >= MAXDELTA)
- method &= ~(1<<BZIP2);
- }
-
- if (best_method == LZMA) {
- metrics->lzma_cnt = 0;
- metrics->lzma_extra = 0;
- } else if (best_sz < metrics->sz_lzma) {
- double r = (double)metrics->sz_lzma / best_sz - 1;
- if (++metrics->lzma_cnt >= MAXFAILS &&
- (metrics->lzma_extra += r) >= MAXDELTA)
- method &= ~(1<<LZMA);
- }
-
- //if (method != metrics->revised_method)
- // fprintf(stderr, "%d: method from %x to %x\n",
- // b->content_id, metrics->revised_method, method);
- metrics->revised_method = method;
- }
- pthread_mutex_unlock(&fd->metrics_lock);
- } else {
- strat = metrics->strat;
- method = metrics->method;
-
- pthread_mutex_unlock(&fd->metrics_lock);
- comp = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &comp_size, method,
- level, strat);
- if (!comp)
- return -1;
- free(b->data);
- b->data = (unsigned char *)comp;
- b->comp_size = comp_size;
- b->method = method;
- }
-
- } else {
- // no cached metrics, so just do zlib?
- comp = cram_compress_by_method((char *)b->data, b->uncomp_size,
- &comp_size, GZIP, level, Z_FILTERED);
- if (!comp) {
- fprintf(stderr, "Compression failed!\n");
- return -1;
- }
- free(b->data);
- b->data = (unsigned char *)comp;
- b->comp_size = comp_size;
- b->method = GZIP;
- }
-
- if (fd->verbose)
- fprintf(stderr, "Compressed block ID %d from %d to %d by method %s\n",
- b->content_id, b->uncomp_size, b->comp_size,
- cram_block_method2str(b->method));
-
- if (b->method == RANS1)
- b->method = RANS0; // Spec just has RANS (not 0/1) with auto-sensing
-
- return 0;
-}
-
-cram_metrics *cram_new_metrics(void) {
- cram_metrics *m = calloc(1, sizeof(*m));
- if (!m)
- return NULL;
- m->trial = NTRIALS-1;
- m->next_trial = TRIAL_SPAN;
- m->method = RAW;
- m->strat = 0;
- m->revised_method = 0;
-
- return m;
-}
-
-char *cram_block_method2str(enum cram_block_method m) {
- switch(m) {
- case RAW: return "RAW";
- case GZIP: return "GZIP";
- case BZIP2: return "BZIP2";
- case LZMA: return "LZMA";
- case RANS0: return "RANS0";
- case RANS1: return "RANS1";
- case GZIP_RLE: return "GZIP_RLE";
- case ERROR: break;
- }
- return "?";
-}
-
-char *cram_content_type2str(enum cram_content_type t) {
- switch (t) {
- case FILE_HEADER: return "FILE_HEADER";
- case COMPRESSION_HEADER: return "COMPRESSION_HEADER";
- case MAPPED_SLICE: return "MAPPED_SLICE";
- case UNMAPPED_SLICE: return "UNMAPPED_SLICE";
- case EXTERNAL: return "EXTERNAL";
- case CORE: return "CORE";
- case CT_ERROR: break;
- }
- return "?";
-}
-
-/*
- * Extra error checking on fclose to really ensure data is written.
- * Care needs to be taken to handle pipes vs real files.
- *
- * Returns 0 on success
- * -1 on failure.
- */
-int paranoid_fclose(FILE *fp) {
- if (-1 == fflush(fp) && errno != EBADF) {
- fclose(fp);
- return -1;
- }
-
- errno = 0;
- if (-1 == fsync(fileno(fp))) {
- if (errno != EINVAL) { // eg pipe
- fclose(fp);
- return -1;
- }
- }
- return fclose(fp);
-}
-
-/* ----------------------------------------------------------------------
- * Reference sequence handling
- *
- * These revolve around the refs_t structure, which may potentially be
- * shared between multiple cram_fd.
- *
- * We start with refs_create() to allocate an empty refs_t and then
- * populate it with @SQ line data using refs_from_header(). This is done on
- * cram_open(). Also at start up we can call cram_load_reference() which
- * is used with "scramble -r foo.fa". This replaces the fd->refs with the
- * new one specified. In either case refs2id() is then called which
- * maps ref_entry names to @SQ ids (refs_t->ref_id[]).
- *
- * Later, possibly within a thread, we will want to know the actual ref
- * seq itself, obtained by calling cram_get_ref(). This may use the
- * UR: or M5: fields or the filename specified in the original
- * cram_load_reference() call.
- *
- * Given the potential for multi-threaded reference usage, we have
- * reference counting (sorry for the confusing double use of "ref") to
- * track the number of callers interested in any specific reference.
- */
-
-void refs_free(refs_t *r) {
- RP("refs_free()\n");
-
- if (--r->count > 0)
- return;
-
- if (!r)
- return;
-
- if (r->pool)
- string_pool_destroy(r->pool);
-
- if (r->h_meta) {
- khint_t k;
-
- for (k = kh_begin(r->h_meta); k != kh_end(r->h_meta); k++) {
- ref_entry *e;
-
- if (!kh_exist(r->h_meta, k))
- continue;
- if (!(e = kh_val(r->h_meta, k)))
- continue;
- if (e->seq)
- free(e->seq);
- free(e);
- }
-
- kh_destroy(refs, r->h_meta);
- }
-
- if (r->ref_id)
- free(r->ref_id);
-
- if (r->fp)
- bgzf_close(r->fp);
-
- pthread_mutex_destroy(&r->lock);
-
- free(r);
-}
-
-static refs_t *refs_create(void) {
- refs_t *r = calloc(1, sizeof(*r));
-
- RP("refs_create()\n");
-
- if (!r)
- return NULL;
-
- if (!(r->pool = string_pool_create(8192)))
- goto err;
-
- r->ref_id = NULL; // see refs2id() to populate.
- r->count = 1;
- r->last = NULL;
- r->last_id = -1;
-
- if (!(r->h_meta = kh_init(refs)))
- goto err;
-
- pthread_mutex_init(&r->lock, NULL);
-
- return r;
-
- err:
- refs_free(r);
- return NULL;
-}
-
-/*
- * Opens a reference fasta file as a BGZF stream, allowing for
- * compressed files. It automatically builds a .fai file if
- * required and if compressed a .gzi bgzf index too.
- *
- * Returns a BGZF handle on success;
- * NULL on failure.
- */
-static BGZF *bgzf_open_ref(char *fn, char *mode) {
- BGZF *fp;
- char fai_file[PATH_MAX];
-
- snprintf(fai_file, PATH_MAX, "%s.fai", fn);
- if (access(fai_file, R_OK) != 0)
- if (fai_build(fn) != 0)
- return NULL;
-
- if (!(fp = bgzf_open(fn, mode))) {
- perror(fn);
- return NULL;
- }
-
- if (fp->is_compressed == 1 && bgzf_index_load(fp, fn, ".gzi") < 0) {
- fprintf(stderr, "Unable to load .gzi index '%s.gzi'\n", fn);
- bgzf_close(fp);
- return NULL;
- }
-
- return fp;
-}
-
-/*
- * Loads a FAI file for a reference.fasta.
- * "is_err" indicates whether failure to load is worthy of emitting an
- * error message. In some cases (eg with embedded references) we
- * speculatively load, just incase, and silently ignore errors.
- *
- * Returns the refs_t struct on success (maybe newly allocated);
- * NULL on failure
- */
-static refs_t *refs_load_fai(refs_t *r_orig, char *fn, int is_err) {
- struct stat sb;
- FILE *fp = NULL;
- char fai_fn[PATH_MAX];
- char line[8192];
- refs_t *r = r_orig;
- size_t fn_l = strlen(fn);
- int id = 0, id_alloc = 0;
-
- RP("refs_load_fai %s\n", fn);
-
- if (!r)
- if (!(r = refs_create()))
- goto err;
-
- /* Open reference, for later use */
- if (stat(fn, &sb) != 0) {
- if (is_err)
- perror(fn);
- goto err;
- }
-
- if (r->fp)
- if (bgzf_close(r->fp) != 0)
- goto err;
- r->fp = NULL;
-
- if (!(r->fn = string_dup(r->pool, fn)))
- goto err;
-
- if (fn_l > 4 && strcmp(&fn[fn_l-4], ".fai") == 0)
- r->fn[fn_l-4] = 0;
-
- if (!(r->fp = bgzf_open_ref(r->fn, "r")))
- goto err;
-
- /* Parse .fai file and load meta-data */
- sprintf(fai_fn, "%.*s.fai", PATH_MAX-5, r->fn);
-
- if (stat(fai_fn, &sb) != 0) {
- if (is_err)
- perror(fai_fn);
- goto err;
- }
- if (!(fp = fopen(fai_fn, "r"))) {
- if (is_err)
- perror(fai_fn);
- goto err;
- }
- while (fgets(line, 8192, fp) != NULL) {
- ref_entry *e = malloc(sizeof(*e));
- char *cp;
- int n;
- khint_t k;
-
- if (!e)
- return NULL;
-
- // id
- for (cp = line; *cp && !isspace(*cp); cp++)
- ;
- *cp++ = 0;
- e->name = string_dup(r->pool, line);
-
- // length
- while (*cp && isspace(*cp))
- cp++;
- e->length = strtoll(cp, &cp, 10);
-
- // offset
- while (*cp && isspace(*cp))
- cp++;
- e->offset = strtoll(cp, &cp, 10);
-
- // bases per line
- while (*cp && isspace(*cp))
- cp++;
- e->bases_per_line = strtol(cp, &cp, 10);
-
- // line length
- while (*cp && isspace(*cp))
- cp++;
- e->line_length = strtol(cp, &cp, 10);
-
- // filename
- e->fn = r->fn;
-
- e->count = 0;
- e->seq = NULL;
-
- k = kh_put(refs, r->h_meta, e->name, &n);
- if (-1 == n) {
- free(e);
- return NULL;
- }
-
- if (n) {
- kh_val(r->h_meta, k) = e;
- } else {
- ref_entry *re = kh_val(r->h_meta, k);
- if (re && (re->count != 0 || re->length != 0)) {
- /* Keep old */
- free(e);
- } else {
- /* Replace old */
- if (re)
- free(re);
- kh_val(r->h_meta, k) = e;
- }
- }
-
- if (id >= id_alloc) {
- int x;
-
- id_alloc = id_alloc ?id_alloc*2 : 16;
- r->ref_id = realloc(r->ref_id, id_alloc * sizeof(*r->ref_id));
-
- for (x = id; x < id_alloc; x++)
- r->ref_id[x] = NULL;
- }
- r->ref_id[id] = e;
- r->nref = ++id;
- }
-
- return r;
-
- err:
- if (fp)
- fclose(fp);
-
- if (!r_orig)
- refs_free(r);
-
- return NULL;
-}
-
-/*
- * Indexes references by the order they appear in a BAM file. This may not
- * necessarily be the same order they appear in the fasta reference file.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int refs2id(refs_t *r, SAM_hdr *h) {
- int i;
-
- if (r->ref_id)
- free(r->ref_id);
- if (r->last)
- r->last = NULL;
-
- r->ref_id = calloc(h->nref, sizeof(*r->ref_id));
- if (!r->ref_id)
- return -1;
-
- r->nref = h->nref;
- for (i = 0; i < h->nref; i++) {
- khint_t k = kh_get(refs, r->h_meta, h->ref[i].name);
- if (k != kh_end(r->h_meta)) {
- r->ref_id[i] = kh_val(r->h_meta, k);
- } else {
- fprintf(stderr, "Unable to find ref name '%s'\n",
- h->ref[i].name);
- }
- }
-
- return 0;
-}
-
-/*
- * Generates refs_t entries based on @SQ lines in the header.
- * Returns 0 on success
- * -1 on failure
- */
-static int refs_from_header(refs_t *r, cram_fd *fd, SAM_hdr *h) {
- int i, j;
-
- if (!h || h->nref == 0)
- return 0;
-
- //fprintf(stderr, "refs_from_header for %p mode %c\n", fd, fd->mode);
-
- /* Existing refs are fine, as long as they're compatible with the hdr. */
- if (!(r->ref_id = realloc(r->ref_id, (r->nref + h->nref) * sizeof(*r->ref_id))))
- return -1;
-
- /* Copy info from h->ref[i] over to r */
- for (i = 0, j = r->nref; i < h->nref; i++) {
- SAM_hdr_type *ty;
- SAM_hdr_tag *tag;
- khint_t k;
- int n;
-
- k = kh_get(refs, r->h_meta, h->ref[i].name);
- if (k != kh_end(r->h_meta))
- // Ref already known about
- continue;
-
- if (!(r->ref_id[j] = calloc(1, sizeof(ref_entry))))
- return -1;
-
- if (!h->ref[j].name)
- return -1;
-
- r->ref_id[j]->name = string_dup(r->pool, h->ref[i].name);
- r->ref_id[j]->length = 0; // marker for not yet loaded
-
- /* Initialise likely filename if known */
- if ((ty = sam_hdr_find(h, "SQ", "SN", h->ref[i].name))) {
- if ((tag = sam_hdr_find_key(h, ty, "M5", NULL))) {
- r->ref_id[j]->fn = string_dup(r->pool, tag->str+3);
- //fprintf(stderr, "Tagging @SQ %s / %s\n", r->ref_id[h]->name, r->ref_id[h]->fn);
- }
- }
-
- k = kh_put(refs, r->h_meta, r->ref_id[j]->name, &n);
- if (n <= 0) // already exists or error
- return -1;
- kh_val(r->h_meta, k) = r->ref_id[j];
-
- j++;
- }
- r->nref = j;
-
- return 0;
-}
-
-/*
- * Attaches a header to a cram_fd.
- *
- * This should be used when creating a new cram_fd for writing where
- * we have an SAM_hdr already constructed (eg from a file we've read
- * in).
- */
-int cram_set_header(cram_fd *fd, SAM_hdr *hdr) {
- if (fd->header)
- sam_hdr_free(fd->header);
- fd->header = hdr;
- return refs_from_header(fd->refs, fd, hdr);
-}
-
-/*
- * Converts a directory and a filename into an expanded path, replacing %s
- * in directory with the filename and %[0-9]+s with portions of the filename
- * Any remaining parts of filename are added to the end with /%s.
- */
-void expand_cache_path(char *path, char *dir, char *fn) {
- char *cp;
-
- while ((cp = strchr(dir, '%'))) {
- strncpy(path, dir, cp-dir);
- path += cp-dir;
-
- if (*++cp == 's') {
- strcpy(path, fn);
- path += strlen(fn);
- fn += strlen(fn);
- cp++;
- } else if (*cp >= '0' && *cp <= '9') {
- char *endp;
- long l;
-
- l = strtol(cp, &endp, 10);
- l = MIN(l, strlen(fn));
- if (*endp == 's') {
- strncpy(path, fn, l);
- path += l;
- fn += l;
- *path = 0;
- cp = endp+1;
- } else {
- *path++ = '%';
- *path++ = *cp++;
- }
- } else {
- *path++ = '%';
- *path++ = *cp++;
- }
- dir = cp;
- }
- strcpy(path, dir);
- path += strlen(dir);
- if (*fn && path[-1] != '/')
- *path++ = '/';
- strcpy(path, fn);
-}
-
-/*
- * Make the directory containing path and any prefix directories.
- */
-void mkdir_prefix(char *path, int mode) {
- char *cp = strrchr(path, '/');
- if (!cp)
- return;
-
- *cp = 0;
- if (is_directory(path)) {
- *cp = '/';
- return;
- }
-
- if (mkdir(path, mode) == 0) {
- chmod(path, mode);
- *cp = '/';
- return;
- }
-
- mkdir_prefix(path, mode);
- mkdir(path, mode);
- chmod(path, mode);
- *cp = '/';
-}
-
-/*
- * Return the cache directory to use, based on the first of these
- * environment variables to be set to a non-empty value.
- */
-static const char *get_cache_basedir(const char **extra) {
- char *base;
-
- *extra = "";
-
- base = getenv("XDG_CACHE_HOME");
- if (base && *base) return base;
-
- base = getenv("HOME");
- if (base && *base) { *extra = "/.cache"; return base; }
-
- base = getenv("TMPDIR");
- if (base && *base) return base;
-
- base = getenv("TEMP");
- if (base && *base) return base;
-
- return "/tmp";
-}
-
-/*
- * Queries the M5 string from the header and attempts to populate the
- * reference from this using the REF_PATH environment.
- *
- * Returns 0 on sucess
- * -1 on failure
- */
-static int cram_populate_ref(cram_fd *fd, int id, ref_entry *r) {
- char *ref_path = getenv("REF_PATH");
- SAM_hdr_type *ty;
- SAM_hdr_tag *tag;
- char path[PATH_MAX], path_tmp[PATH_MAX], cache[PATH_MAX];
- char *local_cache = getenv("REF_CACHE");
- mFILE *mf;
-
- if (fd->verbose)
- fprintf(stderr, "cram_populate_ref on fd %p, id %d\n", fd, id);
-
- if (!ref_path || *ref_path == '\0') {
- /*
- * If we have no ref path, we use the EBI server.
- * However to avoid spamming it we require a local ref cache too.
- */
- ref_path = "http://www.ebi.ac.uk:80/ena/cram/md5/%s";
- if (!local_cache || *local_cache == '\0') {
- const char *extra;
- const char *base = get_cache_basedir(&extra);
- snprintf(cache,PATH_MAX, "%s%s/hts-ref/%%2s/%%2s/%%s", base, extra);
- local_cache = cache;
- if (fd->verbose)
- fprintf(stderr, "Populating local cache: %s\n", local_cache);
- }
- }
-
- if (!r->name)
- return -1;
-
- if (!(ty = sam_hdr_find(fd->header, "SQ", "SN", r->name)))
- return -1;
-
- if (!(tag = sam_hdr_find_key(fd->header, ty, "M5", NULL)))
- goto no_M5;
-
- if (fd->verbose)
- fprintf(stderr, "Querying ref %s\n", tag->str+3);
-
- /* Use cache if available */
- if (local_cache && *local_cache) {
- struct stat sb;
- BGZF *fp;
-
- expand_cache_path(path, local_cache, tag->str+3);
-
- if (0 == stat(path, &sb) && (fp = bgzf_open(path, "r"))) {
- r->length = sb.st_size;
- r->offset = r->line_length = r->bases_per_line = 0;
-
- r->fn = string_dup(fd->refs->pool, path);
-
- if (fd->refs->fp)
- if (bgzf_close(fd->refs->fp) != 0)
- return -1;
- fd->refs->fp = fp;
- fd->refs->fn = r->fn;
-
- // Fall back to cram_get_ref() where it'll do the actual
- // reading of the file.
- return 0;
- }
- }
-
- /* Otherwise search */
- if ((mf = open_path_mfile(tag->str+3, ref_path, NULL))) {
- size_t sz;
- r->seq = mfsteal(mf, &sz);
- r->length = sz;
- } else {
- refs_t *refs;
- char *fn;
-
- no_M5:
- /* Failed to find in search path or M5 cache, see if @SQ UR: tag? */
- if (!(tag = sam_hdr_find_key(fd->header, ty, "UR", NULL)))
- return -1;
-
- fn = (strncmp(tag->str+3, "file:", 5) == 0)
- ? tag->str+8
- : tag->str+3;
-
- if (fd->refs->fp) {
- if (bgzf_close(fd->refs->fp) != 0)
- return -1;
- fd->refs->fp = NULL;
- }
- if (!(refs = refs_load_fai(fd->refs, fn, 0)))
- return -1;
- fd->refs = refs;
- if (fd->refs->fp) {
- if (bgzf_close(fd->refs->fp) != 0)
- return -1;
- fd->refs->fp = NULL;
- }
-
- if (!fd->refs->fn)
- return -1;
-
- if (-1 == refs2id(fd->refs, fd->header))
- return -1;
- if (!fd->refs->ref_id || !fd->refs->ref_id[id])
- return -1;
-
- // Local copy already, so fall back to cram_get_ref().
- return 0;
- }
-
- /* Populate the local disk cache if required */
- if (local_cache && *local_cache) {
- FILE *fp;
- int i;
-
- expand_cache_path(path, local_cache, tag->str+3);
- if (fd->verbose)
- fprintf(stderr, "Path='%s'\n", path);
- mkdir_prefix(path, 01777);
-
- i = 0;
- do {
- sprintf(path_tmp, "%s.tmp_%d", path, /*getpid(),*/ i);
- i++;
- fp = fopen(path_tmp, "wx");
- } while (fp == NULL && errno == EEXIST);
- if (!fp) {
- perror(path_tmp);
-
- // Not fatal - we have the data already so keep going.
- return 0;
- }
-
- if (r->length != fwrite(r->seq, 1, r->length, fp)) {
- perror(path);
- }
- if (-1 == paranoid_fclose(fp)) {
- unlink(path_tmp);
- } else {
- if (0 == chmod(path_tmp, 0444))
- rename(path_tmp, path);
- else
- unlink(path_tmp);
- }
- }
-
- return 0;
-}
-
-static void cram_ref_incr_locked(refs_t *r, int id) {
- RP("%d INC REF %d, %d %p\n", gettid(), id, (int)(id>=0?r->ref_id[id]->count+1:-999), id>=0?r->ref_id[id]->seq:(char *)1);
-
- if (id < 0 || !r->ref_id[id]->seq)
- return;
-
- if (r->last_id == id)
- r->last_id = -1;
-
- ++r->ref_id[id]->count;
-}
-
-void cram_ref_incr(refs_t *r, int id) {
- pthread_mutex_lock(&r->lock);
- cram_ref_incr_locked(r, id);
- pthread_mutex_unlock(&r->lock);
-}
-
-static void cram_ref_decr_locked(refs_t *r, int id) {
- RP("%d DEC REF %d, %d %p\n", gettid(), id, (int)(id>=0?r->ref_id[id]->count-1:-999), id>=0?r->ref_id[id]->seq:(char *)1);
-
- if (id < 0 || !r->ref_id[id]->seq) {
- assert(r->ref_id[id]->count >= 0);
- return;
- }
-
- if (--r->ref_id[id]->count <= 0) {
- assert(r->ref_id[id]->count == 0);
- if (r->last_id >= 0) {
- if (r->ref_id[r->last_id]->count <= 0 &&
- r->ref_id[r->last_id]->seq) {
- RP("%d FREE REF %d (%p)\n", gettid(),
- r->last_id, r->ref_id[r->last_id]->seq);
- free(r->ref_id[r->last_id]->seq);
- r->ref_id[r->last_id]->seq = NULL;
- r->ref_id[r->last_id]->length = 0;
- }
- }
- r->last_id = id;
- }
-}
-
-void cram_ref_decr(refs_t *r, int id) {
- pthread_mutex_lock(&r->lock);
- cram_ref_decr_locked(r, id);
- pthread_mutex_unlock(&r->lock);
-}
-
-/*
- * Used by cram_ref_load and cram_ref_get. The file handle will have
- * already been opened, so we can catch it. The ref_entry *e informs us
- * of whether this is a multi-line fasta file or a raw MD5 style file.
- * Either way we create a single contiguous sequence.
- *
- * Returns all or part of a reference sequence on success (malloced);
- * NULL on failure.
- */
-static char *load_ref_portion(BGZF *fp, ref_entry *e, int start, int end) {
- off_t offset, len;
- char *seq;
-
- if (end < start)
- end = start;
-
- /*
- * Compute locations in file. This is trivial for the MD5 files, but
- * is still necessary for the fasta variants.
- */
- offset = e->line_length
- ? e->offset + (start-1)/e->bases_per_line * e->line_length +
- (start-1) % e->bases_per_line
- : start-1;
-
- len = (e->line_length
- ? e->offset + (end-1)/e->bases_per_line * e->line_length +
- (end-1) % e->bases_per_line
- : end-1) - offset + 1;
-
- if (bgzf_useek(fp, offset, SEEK_SET) < 0) {
- perror("bgzf_useek() on reference file");
- return NULL;
- }
-
- if (len == 0 || !(seq = malloc(len))) {
- return NULL;
- }
-
- if (len != bgzf_read(fp, seq, len)) {
- perror("bgzf_read() on reference file");
- free(seq);
- return NULL;
- }
-
- /* Strip white-space if required. */
- if (len != end-start+1) {
- int i, j;
- char *cp = seq;
- char *cp_to;
-
- for (i = j = 0; i < len; i++) {
- if (cp[i] >= '!' && cp[i] <= '~')
- cp[j++] = cp[i] & ~0x20;
- }
- cp_to = cp+j;
-
- if (cp_to - seq != end-start+1) {
- fprintf(stderr, "Malformed reference file?\n");
- free(seq);
- return NULL;
- }
- } else {
- int i;
- for (i = 0; i < len; i++) {
- seq[i] = seq[i] & ~0x20; // uppercase in ASCII
- }
- }
-
- return seq;
-}
-
-/*
- * Load the entire reference 'id'.
- * This also increments the reference count by 1.
- *
- * Returns ref_entry on success;
- * NULL on failure
- */
-ref_entry *cram_ref_load(refs_t *r, int id) {
- ref_entry *e = r->ref_id[id];
- int start = 1, end = e->length;
- char *seq;
-
- if (e->seq) {
- return e;
- }
-
- assert(e->count == 0);
-
- if (r->last) {
-#ifdef REF_DEBUG
- int idx = 0;
- for (idx = 0; idx < r->nref; idx++)
- if (r->last == r->ref_id[idx])
- break;
- RP("%d cram_ref_load DECR %d\n", gettid(), idx);
-#endif
- assert(r->last->count > 0);
- if (--r->last->count <= 0) {
- RP("%d FREE REF %d (%p)\n", gettid(), id, r->ref_id[id]->seq);
- if (r->last->seq) {
- free(r->last->seq);
- r->last->seq = NULL;
- }
- }
- }
-
- /* Open file if it's not already the current open reference */
- if (strcmp(r->fn, e->fn) || r->fp == NULL) {
- if (r->fp)
- if (bgzf_close(r->fp) != 0)
- return NULL;
- r->fn = e->fn;
- if (!(r->fp = bgzf_open_ref(r->fn, "r")))
- return NULL;
- }
-
- RP("%d Loading ref %d (%d..%d)\n", gettid(), id, start, end);
-
- if (!(seq = load_ref_portion(r->fp, e, start, end))) {
- return NULL;
- }
-
- RP("%d Loaded ref %d (%d..%d) = %p\n", gettid(), id, start, end, seq);
-
- RP("%d INC REF %d, %d\n", gettid(), id, (int)(e->count+1));
- e->seq = seq;
- e->count++;
-
- /*
- * Also keep track of last used ref so incr/decr loops on the same
- * sequence don't cause load/free loops.
- */
- RP("%d cram_ref_load INCR %d => %d\n", gettid(), id, e->count+1);
- r->last = e;
- e->count++;
-
- return e;
-}
-
-/*
- * Returns a portion of a reference sequence from start to end inclusive.
- * The returned pointer is owned by either the cram_file fd or by the
- * internal refs_t structure and should not be freed by the caller.
- *
- * The difference is whether or not this refs_t is in use by just the one
- * cram_fd or by multiples, or whether we have multiple threads accessing
- * references. In either case fd->shared will be true and we start using
- * reference counting to track the number of users of a specific reference
- * sequence.
- *
- * Otherwise the ref seq returned is allocated as part of cram_fd itself
- * and will be freed up on the next call to cram_get_ref or cram_close.
- *
- * To return the entire reference sequence, specify start as 1 and end
- * as 0.
- *
- * To cease using a reference, call cram_ref_decr().
- *
- * Returns reference on success,
- * NULL on failure
- */
-char *cram_get_ref(cram_fd *fd, int id, int start, int end) {
- ref_entry *r;
- char *seq;
- int ostart = start;
-
- if (id == -1)
- return NULL;
-
- /* FIXME: axiomatic query of r->seq being true?
- * Or shortcut for unsorted data where we load once and never free?
- */
-
- //fd->shared_ref = 1; // hard code for now to simplify things
-
- pthread_mutex_lock(&fd->ref_lock);
-
- RP("%d cram_get_ref on fd %p, id %d, range %d..%d\n", gettid(), fd, id, start, end);
-
- /*
- * Unsorted data implies we want to fetch an entire reference at a time.
- * We just deal with this at the moment by claiming we're sharing
- * references instead, which has the same requirement.
- */
- if (fd->unsorted)
- fd->shared_ref = 1;
-
-
- /* Sanity checking: does this ID exist? */
- if (id >= fd->refs->nref) {
- fprintf(stderr, "No reference found for id %d\n", id);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
- if (!fd->refs || !fd->refs->ref_id[id]) {
- fprintf(stderr, "No reference found for id %d\n", id);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
- if (!(r = fd->refs->ref_id[id])) {
- fprintf(stderr, "No reference found for id %d\n", id);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
-
- /*
- * It has an entry, but may not have been populated yet.
- * Any manually loaded .fai files have their lengths known.
- * A ref entry computed from @SQ lines (M5 or UR field) will have
- * r->length == 0 unless it's been loaded once and verified that we have
- * an on-disk filename for it.
- *
- * 19 Sep 2013: Moved the lock here as the cram_populate_ref code calls
- * open_path_mfile and libcurl, which isn't multi-thread safe unless I
- * rewrite my code to have one curl handle per thread.
- */
- pthread_mutex_lock(&fd->refs->lock);
- if (r->length == 0) {
- if (cram_populate_ref(fd, id, r) == -1) {
- fprintf(stderr, "Failed to populate reference for id %d\n", id);
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
- r = fd->refs->ref_id[id];
- if (fd->unsorted)
- cram_ref_incr_locked(fd->refs, id);
- }
-
-
- /*
- * We now know that we the filename containing the reference, so check
- * for limits. If it's over half the reference we'll load all of it in
- * memory as this will speed up subsequent calls.
- */
- if (end < 1)
- end = r->length;
- if (end >= r->length)
- end = r->length;
- assert(start >= 1);
-
- if (end - start >= 0.5*r->length || fd->shared_ref) {
- start = 1;
- end = r->length;
- }
-
- /*
- * Maybe we have it cached already? If so use it.
- *
- * Alternatively if we don't have the sequence but we're sharing
- * references and/or are asking for the entire length of it, then
- * load the full reference into the refs structure and return
- * a pointer to that one instead.
- */
- if (fd->shared_ref || r->seq || (start == 1 && end == r->length)) {
- char *cp;
-
- if (id >= 0) {
- if (r->seq) {
- cram_ref_incr_locked(fd->refs, id);
- } else {
- ref_entry *e;
- if (!(e = cram_ref_load(fd->refs, id))) {
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
- /* unsorted data implies cache ref indefinitely, to avoid
- * continually loading and unloading.
- */
- if (fd->unsorted)
- cram_ref_incr_locked(fd->refs, id);
- }
-
- fd->ref = NULL; /* We never access it directly */
- fd->ref_start = 1;
- fd->ref_end = r->length;
- fd->ref_id = id;
-
- cp = fd->refs->ref_id[id]->seq + ostart-1;
- } else {
- fd->ref = NULL;
- cp = NULL;
- }
-
- RP("%d cram_get_ref returning for id %d, count %d\n", gettid(), id, (int)r->count);
-
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return cp;
- }
-
- /*
- * Otherwise we're not sharing, we don't have a copy of it already and
- * we're only asking for a small portion of it.
- *
- * In this case load up just that segment ourselves, freeing any old
- * small segments in the process.
- */
-
- /* Unmapped ref ID */
- if (id < 0) {
- if (fd->ref_free) {
- free(fd->ref_free);
- fd->ref_free = NULL;
- }
- fd->ref = NULL;
- fd->ref_id = id;
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
- /* Open file if it's not already the current open reference */
- if (strcmp(fd->refs->fn, r->fn) || fd->refs->fp == NULL) {
- if (fd->refs->fp)
- if (bgzf_close(fd->refs->fp) != 0)
- return NULL;
- fd->refs->fn = r->fn;
- if (!(fd->refs->fp = bgzf_open_ref(fd->refs->fn, "r"))) {
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
- }
-
- if (!(fd->ref = load_ref_portion(fd->refs->fp, r, start, end))) {
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
- return NULL;
- }
-
- if (fd->ref_free)
- free(fd->ref_free);
-
- fd->ref_id = id;
- fd->ref_start = start;
- fd->ref_end = end;
- fd->ref_free = fd->ref;
- seq = fd->ref;
-
- pthread_mutex_unlock(&fd->refs->lock);
- pthread_mutex_unlock(&fd->ref_lock);
-
- return seq + ostart - start;
-}
-
-/*
- * If fd has been opened for reading, it may be permitted to specify 'fn'
- * as NULL and let the code auto-detect the reference by parsing the
- * SAM header @SQ lines.
- */
-int cram_load_reference(cram_fd *fd, char *fn) {
- if (fn) {
- fd->refs = refs_load_fai(fd->refs, fn,
- !(fd->embed_ref && fd->mode == 'r'));
- fn = fd->refs ? fd->refs->fn : NULL;
- }
- fd->ref_fn = fn;
-
- if ((!fd->refs || (fd->refs->nref == 0 && !fn)) && fd->header) {
- if (fd->refs)
- refs_free(fd->refs);
- if (!(fd->refs = refs_create()))
- return -1;
- if (-1 == refs_from_header(fd->refs, fd, fd->header))
- return -1;
- }
-
- if (fd->header)
- if (-1 == refs2id(fd->refs, fd->header))
- return -1;
-
- return fn ? 0 : -1;
-}
-
-/* ----------------------------------------------------------------------
- * Containers
- */
-
-/*
- * Creates a new container, specifying the maximum number of slices
- * and records permitted.
- *
- * Returns cram_container ptr on success
- * NULL on failure
- */
-cram_container *cram_new_container(int nrec, int nslice) {
- cram_container *c = calloc(1, sizeof(*c));
- enum cram_DS_ID id;
-
- if (!c)
- return NULL;
-
- c->curr_ref = -2;
-
- c->max_c_rec = nrec * nslice;
- c->curr_c_rec = 0;
-
- c->max_rec = nrec;
- c->record_counter = 0;
- c->num_bases = 0;
-
- c->max_slice = nslice;
- c->curr_slice = 0;
-
- c->pos_sorted = 1;
- c->max_apos = 0;
- c->multi_seq = 0;
-
- c->bams = NULL;
-
- if (!(c->slices = (cram_slice **)calloc(nslice, sizeof(cram_slice *))))
- goto err;
- c->slice = NULL;
-
- if (!(c->comp_hdr = cram_new_compression_header()))
- goto err;
- c->comp_hdr_block = NULL;
-
- for (id = DS_RN; id < DS_TN; id++)
- if (!(c->stats[id] = cram_stats_create())) goto err;
-
- //c->aux_B_stats = cram_stats_create();
-
- if (!(c->tags_used = kh_init(s_i2i)))
- goto err;
- c->refs_used = 0;
-
- return c;
-
- err:
- if (c) {
- if (c->slices)
- free(c->slices);
- free(c);
- }
- return NULL;
-}
-
-void cram_free_container(cram_container *c) {
- enum cram_DS_ID id;
- int i;
-
- if (!c)
- return;
-
- if (c->refs_used)
- free(c->refs_used);
-
- if (c->landmark)
- free(c->landmark);
-
- if (c->comp_hdr)
- cram_free_compression_header(c->comp_hdr);
-
- if (c->comp_hdr_block)
- cram_free_block(c->comp_hdr_block);
-
- if (c->slices) {
- for (i = 0; i < c->max_slice; i++)
- if (c->slices[i])
- cram_free_slice(c->slices[i]);
- free(c->slices);
- }
-
- for (id = DS_RN; id < DS_TN; id++)
- if (c->stats[id]) cram_stats_free(c->stats[id]);
-
- //if (c->aux_B_stats) cram_stats_free(c->aux_B_stats);
-
- if (c->tags_used) kh_destroy(s_i2i, c->tags_used);
-
- free(c);
-}
-
-/*
- * Reads a container header.
- *
- * Returns cram_container on success
- * NULL on failure or no container left (fd->err == 0).
- */
-cram_container *cram_read_container(cram_fd *fd) {
- cram_container c2, *c;
- int i, s;
- size_t rd = 0;
-
- fd->err = 0;
- fd->eof = 0;
-
- memset(&c2, 0, sizeof(c2));
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- if ((s = itf8_decode(fd, &c2.length)) == -1) {
- fd->eof = fd->empty_container ? 1 : 2;
- return NULL;
- } else {
- rd+=s;
- }
- } else {
- if ((s = int32_decode(fd, &c2.length)) == -1) {
- if (CRAM_MAJOR_VERS(fd->version) == 2 &&
- CRAM_MINOR_VERS(fd->version) == 0)
- fd->eof = 1; // EOF blocks arrived in v2.1
- else
- fd->eof = fd->empty_container ? 1 : 2;
- return NULL;
- } else {
- rd+=s;
- }
- }
- if ((s = itf8_decode(fd, &c2.ref_seq_id)) == -1) return NULL; else rd+=s;
- if ((s = itf8_decode(fd, &c2.ref_seq_start))== -1) return NULL; else rd+=s;
- if ((s = itf8_decode(fd, &c2.ref_seq_span)) == -1) return NULL; else rd+=s;
- if ((s = itf8_decode(fd, &c2.num_records)) == -1) return NULL; else rd+=s;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- c2.record_counter = 0;
- c2.num_bases = 0;
- } else {
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- if ((s = ltf8_decode(fd, &c2.record_counter)) == -1)
- return NULL;
- else
- rd += s;
- } else {
- int32_t i32;
- if ((s = itf8_decode(fd, &i32)) == -1)
- return NULL;
- else
- rd += s;
- c2.record_counter = i32;
- }
-
- if ((s = ltf8_decode(fd, &c2.num_bases))== -1)
- return NULL;
- else
- rd += s;
- }
- if ((s = itf8_decode(fd, &c2.num_blocks)) == -1) return NULL; else rd+=s;
- if ((s = itf8_decode(fd, &c2.num_landmarks))== -1) return NULL; else rd+=s;
-
- if (!(c = calloc(1, sizeof(*c))))
- return NULL;
-
- *c = c2;
-
- if (!(c->landmark = malloc(c->num_landmarks * sizeof(int32_t))) &&
- c->num_landmarks) {
- fd->err = errno;
- cram_free_container(c);
- return NULL;
- }
- for (i = 0; i < c->num_landmarks; i++) {
- if ((s = itf8_decode(fd, &c->landmark[i])) == -1) {
- cram_free_container(c);
- return NULL;
- } else {
- rd += s;
- }
- }
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- uint32_t crc, i;
- unsigned char *dat = malloc(50 + 5*(c->num_landmarks)), *cp = dat;
- if (!dat) {
- cram_free_container(c);
- return NULL;
- }
- if (-1 == int32_decode(fd, (int32_t *)&c->crc32))
- return NULL;
- else
- rd+=4;
-
- /* Reencode first as we can't easily access the original byte stream.
- *
- * FIXME: Technically this means this may not be fool proof. We could
- * create a CRAM file using a 2 byte ITF8 value that can fit in a
- * 1 byte field, meaning the encoding is different to the original
- * form and so has a different CRC.
- *
- * The correct implementation would be to have an alternative form
- * of itf8_decode which also squirrels away the raw byte stream
- * during decoding so we can then CRC that.
- */
- *(unsigned int *)cp = le_int4(c->length); cp += 4;
- cp += itf8_put(cp, c->ref_seq_id);
- cp += itf8_put(cp, c->ref_seq_start);
- cp += itf8_put(cp, c->ref_seq_span);
- cp += itf8_put(cp, c->num_records);
- cp += ltf8_put((char *)cp, c->record_counter);
- cp += itf8_put(cp, c->num_bases);
- cp += itf8_put(cp, c->num_blocks);
- cp += itf8_put(cp, c->num_landmarks);
- for (i = 0; i < c->num_landmarks; i++) {
- cp += itf8_put(cp, c->landmark[i]);
- }
-
- crc = crc32(0L, dat, cp-dat);
- if (crc != c->crc32) {
- fprintf(stderr, "Container header CRC32 failure\n");
- cram_free_container(c);
- return NULL;
- }
- }
-
- c->offset = rd;
- c->slices = NULL;
- c->curr_slice = 0;
- c->max_slice = c->num_landmarks;
- c->slice_rec = 0;
- c->curr_rec = 0;
- c->max_rec = 0;
-
- if (c->ref_seq_id == -2) {
- c->multi_seq = 1;
- fd->multi_seq = 1;
- }
-
- fd->empty_container =
- (c->num_records == 0 &&
- c->ref_seq_id == -1 &&
- c->ref_seq_start == 0x454f46 /* EOF */) ? 1 : 0;
-
- return c;
-}
-
-/*
- * Writes a container structure.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_write_container(cram_fd *fd, cram_container *c) {
- char buf_a[1024], *buf = buf_a, *cp;
- int i;
-
- if (55 + c->num_landmarks * 5 >= 1024)
- buf = malloc(55 + c->num_landmarks * 5);
- cp = buf;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- cp += itf8_put(cp, c->length);
- } else {
- *(int32_t *)cp = le_int4(c->length);
- cp += 4;
- }
- if (c->multi_seq) {
- cp += itf8_put(cp, -2);
- cp += itf8_put(cp, 0);
- cp += itf8_put(cp, 0);
- } else {
- cp += itf8_put(cp, c->ref_seq_id);
- cp += itf8_put(cp, c->ref_seq_start);
- cp += itf8_put(cp, c->ref_seq_span);
- }
- cp += itf8_put(cp, c->num_records);
- if (CRAM_MAJOR_VERS(fd->version) == 2) {
- cp += itf8_put(cp, c->record_counter);
- cp += ltf8_put(cp, c->num_bases);
- } else if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- cp += ltf8_put(cp, c->record_counter);
- cp += ltf8_put(cp, c->num_bases);
- }
-
- cp += itf8_put(cp, c->num_blocks);
- cp += itf8_put(cp, c->num_landmarks);
- for (i = 0; i < c->num_landmarks; i++)
- cp += itf8_put(cp, c->landmark[i]);
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3) {
- c->crc32 = crc32(0L, (uc *)buf, cp-buf);
- cp[0] = c->crc32 & 0xff;
- cp[1] = (c->crc32 >> 8) & 0xff;
- cp[2] = (c->crc32 >> 16) & 0xff;
- cp[3] = (c->crc32 >> 24) & 0xff;
- cp += 4;
- }
-
- if (cp-buf != hwrite(fd->fp, buf, cp-buf)) {
- if (buf != buf_a)
- free(buf);
- return -1;
- }
-
- if (buf != buf_a)
- free(buf);
-
- return 0;
-}
-
-// common component shared by cram_flush_container{,_mt}
-static int cram_flush_container2(cram_fd *fd, cram_container *c) {
- int i, j;
-
- //fprintf(stderr, "Writing container %d, sum %u\n", c->record_counter, sum);
-
- /* Write the container struct itself */
- if (0 != cram_write_container(fd, c))
- return -1;
-
- /* And the compression header */
- if (0 != cram_write_block(fd, c->comp_hdr_block))
- return -1;
-
- /* Followed by the slice blocks */
- for (i = 0; i < c->curr_slice; i++) {
- cram_slice *s = c->slices[i];
-
- if (0 != cram_write_block(fd, s->hdr_block))
- return -1;
-
- for (j = 0; j < s->hdr->num_blocks; j++) {
- if (0 != cram_write_block(fd, s->block[j]))
- return -1;
- }
- }
-
- return hflush(fd->fp) == 0 ? 0 : -1;
-}
-
-/*
- * Flushes a completely or partially full container to disk, writing
- * container structure, header and blocks. This also calls the encoder
- * functions.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_flush_container(cram_fd *fd, cram_container *c) {
- /* Encode the container blocks and generate compression header */
- if (0 != cram_encode_container(fd, c))
- return -1;
-
- return cram_flush_container2(fd, c);
-}
-
-typedef struct {
- cram_fd *fd;
- cram_container *c;
-} cram_job;
-
-void *cram_flush_thread(void *arg) {
- cram_job *j = (cram_job *)arg;
-
- /* Encode the container blocks and generate compression header */
- if (0 != cram_encode_container(j->fd, j->c)) {
- fprintf(stderr, "cram_encode_container failed\n");
- return NULL;
- }
-
- return arg;
-}
-
-static int cram_flush_result(cram_fd *fd) {
- int i, ret = 0;
- t_pool_result *r;
-
- while ((r = t_pool_next_result(fd->rqueue))) {
- cram_job *j = (cram_job *)r->data;
- cram_container *c;
-
- if (!j) {
- t_pool_delete_result(r, 0);
- return -1;
- }
-
- fd = j->fd;
- c = j->c;
-
- if (0 != cram_flush_container2(fd, c))
- return -1;
-
- /* Free the container */
- for (i = 0; i < c->max_slice; i++) {
- cram_free_slice(c->slices[i]);
- c->slices[i] = NULL;
- }
-
- c->slice = NULL;
- c->curr_slice = 0;
-
- cram_free_container(c);
-
- ret |= hflush(fd->fp) == 0 ? 0 : -1;
-
- t_pool_delete_result(r, 1);
- }
-
- return ret;
-}
-
-int cram_flush_container_mt(cram_fd *fd, cram_container *c) {
- cram_job *j;
-
- if (!fd->pool)
- return cram_flush_container(fd, c);
-
- if (!(j = malloc(sizeof(*j))))
- return -1;
- j->fd = fd;
- j->c = c;
-
- t_pool_dispatch(fd->pool, fd->rqueue, cram_flush_thread, j);
-
- return cram_flush_result(fd);
-}
-
-/* ----------------------------------------------------------------------
- * Compression headers; the first part of the container
- */
-
-/*
- * Creates a new blank container compression header
- *
- * Returns header ptr on success
- * NULL on failure
- */
-cram_block_compression_hdr *cram_new_compression_header(void) {
- cram_block_compression_hdr *hdr = calloc(1, sizeof(*hdr));
- if (!hdr)
- return NULL;
-
- if (!(hdr->TD_blk = cram_new_block(CORE, 0))) {
- free(hdr);
- return NULL;
- }
-
- if (!(hdr->TD_hash = kh_init(m_s2i))) {
- cram_free_block(hdr->TD_blk);
- free(hdr);
- return NULL;
- }
-
- if (!(hdr->TD_keys = string_pool_create(8192))) {
- kh_destroy(m_s2i, hdr->TD_hash);
- cram_free_block(hdr->TD_blk);
- free(hdr);
- return NULL;
- }
-
- return hdr;
-}
-
-void cram_free_compression_header(cram_block_compression_hdr *hdr) {
- int i;
-
- if (hdr->landmark)
- free(hdr->landmark);
-
- if (hdr->preservation_map)
- kh_destroy(map, hdr->preservation_map);
-
- for (i = 0; i < CRAM_MAP_HASH; i++) {
- cram_map *m, *m2;
- for (m = hdr->rec_encoding_map[i]; m; m = m2) {
- m2 = m->next;
- if (m->codec)
- m->codec->free(m->codec);
- free(m);
- }
- }
-
- for (i = 0; i < CRAM_MAP_HASH; i++) {
- cram_map *m, *m2;
- for (m = hdr->tag_encoding_map[i]; m; m = m2) {
- m2 = m->next;
- if (m->codec)
- m->codec->free(m->codec);
- free(m);
- }
- }
-
- for (i = 0; i < DS_END; i++) {
- if (hdr->codecs[i])
- hdr->codecs[i]->free(hdr->codecs[i]);
- }
-
- if (hdr->TL)
- free(hdr->TL);
- if (hdr->TD_blk)
- cram_free_block(hdr->TD_blk);
- if (hdr->TD_hash)
- kh_destroy(m_s2i, hdr->TD_hash);
- if (hdr->TD_keys)
- string_pool_destroy(hdr->TD_keys);
-
- free(hdr);
-}
-
-
-/* ----------------------------------------------------------------------
- * Slices and slice headers
- */
-
-void cram_free_slice_header(cram_block_slice_hdr *hdr) {
- if (!hdr)
- return;
-
- if (hdr->block_content_ids)
- free(hdr->block_content_ids);
-
- free(hdr);
-
- return;
-}
-
-void cram_free_slice(cram_slice *s) {
- if (!s)
- return;
-
- if (s->hdr_block)
- cram_free_block(s->hdr_block);
-
- if (s->block) {
- int i;
-
- if (s->hdr) {
- for (i = 0; i < s->hdr->num_blocks; i++) {
- cram_free_block(s->block[i]);
- }
- }
- free(s->block);
- }
-
- if (s->block_by_id)
- free(s->block_by_id);
-
- if (s->hdr)
- cram_free_slice_header(s->hdr);
-
- if (s->seqs_blk)
- cram_free_block(s->seqs_blk);
-
- if (s->qual_blk)
- cram_free_block(s->qual_blk);
-
- if (s->name_blk)
- cram_free_block(s->name_blk);
-
- if (s->aux_blk)
- cram_free_block(s->aux_blk);
-
- if (s->aux_OQ_blk)
- cram_free_block(s->aux_OQ_blk);
-
- if (s->aux_BQ_blk)
- cram_free_block(s->aux_BQ_blk);
-
- if (s->aux_FZ_blk)
- cram_free_block(s->aux_FZ_blk);
-
- if (s->aux_oq_blk)
- cram_free_block(s->aux_oq_blk);
-
- if (s->aux_os_blk)
- cram_free_block(s->aux_os_blk);
-
- if (s->aux_oz_blk)
- cram_free_block(s->aux_oz_blk);
-
- if (s->base_blk)
- cram_free_block(s->base_blk);
-
- if (s->soft_blk)
- cram_free_block(s->soft_blk);
-
- if (s->cigar)
- free(s->cigar);
-
- if (s->crecs)
- free(s->crecs);
-
- if (s->features)
- free(s->features);
-
- if (s->TN)
- free(s->TN);
-
- if (s->pair_keys)
- string_pool_destroy(s->pair_keys);
-
- if (s->pair[0])
- kh_destroy(m_s2i, s->pair[0]);
- if (s->pair[1])
- kh_destroy(m_s2i, s->pair[1]);
-
- free(s);
-}
-
-/*
- * Creates a new empty slice in memory, for subsequent writing to
- * disk.
- *
- * Returns cram_slice ptr on success
- * NULL on failure
- */
-cram_slice *cram_new_slice(enum cram_content_type type, int nrecs) {
- cram_slice *s = calloc(1, sizeof(*s));
- if (!s)
- return NULL;
-
- if (!(s->hdr = (cram_block_slice_hdr *)calloc(1, sizeof(*s->hdr))))
- goto err;
- s->hdr->content_type = type;
-
- s->hdr_block = NULL;
- s->block = NULL;
- s->block_by_id = NULL;
- s->last_apos = 0;
- if (!(s->crecs = malloc(nrecs * sizeof(cram_record)))) goto err;
- s->cigar = NULL;
- s->cigar_alloc = 0;
- s->ncigar = 0;
-
- if (!(s->seqs_blk = cram_new_block(EXTERNAL, 0))) goto err;
- if (!(s->qual_blk = cram_new_block(EXTERNAL, DS_QS))) goto err;
- if (!(s->name_blk = cram_new_block(EXTERNAL, DS_RN))) goto err;
- if (!(s->aux_blk = cram_new_block(EXTERNAL, DS_aux))) goto err;
- if (!(s->base_blk = cram_new_block(EXTERNAL, DS_IN))) goto err;
- if (!(s->soft_blk = cram_new_block(EXTERNAL, DS_SC))) goto err;
-
- s->features = NULL;
- s->nfeatures = s->afeatures = 0;
-
-#ifndef TN_external
- s->TN = NULL;
- s->nTN = s->aTN = 0;
-#endif
-
- // Volatile keys as we do realloc in dstring
- if (!(s->pair_keys = string_pool_create(8192))) goto err;
- if (!(s->pair[0] = kh_init(m_s2i))) goto err;
- if (!(s->pair[1] = kh_init(m_s2i))) goto err;
-
-#ifdef BA_external
- s->BA_len = 0;
-#endif
-
- return s;
-
- err:
- if (s)
- cram_free_slice(s);
-
- return NULL;
-}
-
-/*
- * Loads an entire slice.
- * FIXME: In 1.0 the native unit of slices within CRAM is broken
- * as slices contain references to objects in other slices.
- * To work around this while keeping the slice oriented outer loop
- * we read all slices and stitch them together into a fake large
- * slice instead.
- *
- * Returns cram_slice ptr on success
- * NULL on failure
- */
-cram_slice *cram_read_slice(cram_fd *fd) {
- cram_block *b = cram_read_block(fd);
- cram_slice *s = calloc(1, sizeof(*s));
- int i, n, max_id, min_id;
-
- if (!b || !s)
- goto err;
-
- s->hdr_block = b;
- switch (b->content_type) {
- case MAPPED_SLICE:
- case UNMAPPED_SLICE:
- if (!(s->hdr = cram_decode_slice_header(fd, b)))
- goto err;
- break;
-
- default:
- fprintf(stderr, "Unexpected block of type %s\n",
- cram_content_type2str(b->content_type));
- goto err;
- }
-
- s->block = calloc(n = s->hdr->num_blocks, sizeof(*s->block));
- if (!s->block)
- goto err;
-
- for (max_id = i = 0, min_id = INT_MAX; i < n; i++) {
- if (!(s->block[i] = cram_read_block(fd)))
- goto err;
-
- if (s->block[i]->content_type == EXTERNAL) {
- if (max_id < s->block[i]->content_id)
- max_id = s->block[i]->content_id;
- if (min_id > s->block[i]->content_id)
- min_id = s->block[i]->content_id;
- }
- }
- if (min_id >= 0 && max_id < 1024) {
- if (!(s->block_by_id = calloc(1024, sizeof(s->block[0]))))
- goto err;
-
- for (i = 0; i < n; i++) {
- if (s->block[i]->content_type != EXTERNAL)
- continue;
- s->block_by_id[s->block[i]->content_id] = s->block[i];
- }
- }
-
- /* Initialise encoding/decoding tables */
- s->cigar = NULL;
- s->cigar_alloc = 0;
- s->ncigar = 0;
-
- if (!(s->seqs_blk = cram_new_block(EXTERNAL, 0))) goto err;
- if (!(s->qual_blk = cram_new_block(EXTERNAL, DS_QS))) goto err;
- if (!(s->name_blk = cram_new_block(EXTERNAL, DS_RN))) goto err;
- if (!(s->aux_blk = cram_new_block(EXTERNAL, DS_aux))) goto err;
- if (!(s->base_blk = cram_new_block(EXTERNAL, DS_IN))) goto err;
- if (!(s->soft_blk = cram_new_block(EXTERNAL, DS_SC))) goto err;
-
- s->crecs = NULL;
-
- s->last_apos = s->hdr->ref_seq_start;
-
- return s;
-
- err:
- if (b)
- cram_free_block(b);
- if (s) {
- s->hdr_block = NULL;
- cram_free_slice(s);
- }
- return NULL;
-}
-
-
-/* ----------------------------------------------------------------------
- * CRAM file definition (header)
- */
-
-/*
- * Reads a CRAM file definition structure.
- * Returns file_def ptr on success
- * NULL on failure
- */
-cram_file_def *cram_read_file_def(cram_fd *fd) {
- cram_file_def *def = malloc(sizeof(*def));
- if (!def)
- return NULL;
-
- if (26 != hread(fd->fp, &def->magic[0], 26)) {
- free(def);
- return NULL;
- }
-
- if (memcmp(def->magic, "CRAM", 4) != 0) {
- free(def);
- return NULL;
- }
-
- if (def->major_version > 3) {
- fprintf(stderr, "CRAM version number mismatch\n"
- "Expected 1.x, 2.x or 3.x, got %d.%d\n",
- def->major_version, def->minor_version);
- free(def);
- return NULL;
- }
-
- fd->first_container += 26;
- fd->last_slice = 0;
-
- return def;
-}
-
-/*
- * Writes a cram_file_def structure to cram_fd.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_write_file_def(cram_fd *fd, cram_file_def *def) {
- return (hwrite(fd->fp, &def->magic[0], 26) == 26) ? 0 : -1;
-}
-
-void cram_free_file_def(cram_file_def *def) {
- if (def) free(def);
-}
-
-/* ----------------------------------------------------------------------
- * SAM header I/O
- */
-
-
-/*
- * Reads the SAM header from the first CRAM data block.
- * Also performs minimal parsing to extract read-group
- * and sample information.
-
- * Returns SAM hdr ptr on success
- * NULL on failure
- */
-SAM_hdr *cram_read_SAM_hdr(cram_fd *fd) {
- int32_t header_len;
- char *header;
- SAM_hdr *hdr;
-
- /* 1.1 onwards stores the header in the first block of a container */
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- /* Length */
- if (-1 == int32_decode(fd, &header_len))
- return NULL;
-
- /* Alloc and read */
- if (NULL == (header = malloc(header_len+1)))
- return NULL;
-
- *header = 0;
- if (header_len != hread(fd->fp, header, header_len))
- return NULL;
-
- fd->first_container += 4 + header_len;
- } else {
- cram_container *c = cram_read_container(fd);
- cram_block *b;
- int i, len;
-
- if (!c)
- return NULL;
-
- if (c->num_blocks < 1) {
- cram_free_container(c);
- return NULL;
- }
-
- if (!(b = cram_read_block(fd))) {
- cram_free_container(c);
- return NULL;
- }
- cram_uncompress_block(b);
-
- len = b->comp_size + 2 + 4*(CRAM_MAJOR_VERS(fd->version) >= 3) +
- itf8_size(b->content_id) +
- itf8_size(b->uncomp_size) +
- itf8_size(b->comp_size);
-
- /* Extract header from 1st block */
- if (-1 == int32_get(b, &header_len) ||
- b->uncomp_size - 4 < header_len) {
- cram_free_container(c);
- cram_free_block(b);
- return NULL;
- }
- if (NULL == (header = malloc(header_len+1))) {
- cram_free_container(c);
- cram_free_block(b);
- return NULL;
- }
- memcpy(header, BLOCK_END(b), header_len);
- header[header_len]='\0';
- cram_free_block(b);
-
- /* Consume any remaining blocks */
- for (i = 1; i < c->num_blocks; i++) {
- if (!(b = cram_read_block(fd))) {
- cram_free_container(c);
- return NULL;
- }
- len += b->comp_size + 2 + 4*(CRAM_MAJOR_VERS(fd->version) >= 3) +
- itf8_size(b->content_id) +
- itf8_size(b->uncomp_size) +
- itf8_size(b->comp_size);
- cram_free_block(b);
- }
-
- if (c->length && c->length > len) {
- // Consume padding
- char *pads = malloc(c->length - len);
- if (!pads) {
- cram_free_container(c);
- return NULL;
- }
-
- if (c->length - len != hread(fd->fp, pads, c->length - len)) {
- cram_free_container(c);
- return NULL;
- }
- free(pads);
- }
-
- cram_free_container(c);
- }
-
- /* Parse */
- hdr = sam_hdr_parse_(header, header_len);
- free(header);
-
- return hdr;
-}
-
-/*
- * Converts 'in' to a full pathname to store in out.
- * Out must be at least PATH_MAX bytes long.
- */
-static void full_path(char *out, char *in) {
- if (*in == '/') {
- strncpy(out, in, PATH_MAX);
- out[PATH_MAX-1] = 0;
- } else {
- int len;
-
- // unable to get dir or out+in is too long
- if (!getcwd(out, PATH_MAX) ||
- (len = strlen(out))+1+strlen(in) >= PATH_MAX) {
- strncpy(out, in, PATH_MAX);
- out[PATH_MAX-1] = 0;
- return;
- }
-
- sprintf(out+len, "/%.*s", PATH_MAX - len, in);
-
- // FIXME: cope with `pwd`/../../../foo.fa ?
- }
-}
-
-/*
- * Writes a CRAM SAM header.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_write_SAM_hdr(cram_fd *fd, SAM_hdr *hdr) {
- int header_len;
- int blank_block = (CRAM_MAJOR_VERS(fd->version) >= 3);
-
- /* Write CRAM MAGIC if not yet written. */
- if (fd->file_def->major_version == 0) {
- fd->file_def->major_version = CRAM_MAJOR_VERS(fd->version);
- fd->file_def->minor_version = CRAM_MINOR_VERS(fd->version);
- if (0 != cram_write_file_def(fd, fd->file_def))
- return -1;
- }
-
- /* 1.0 requires and UNKNOWN read-group */
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- if (!sam_hdr_find_rg(hdr, "UNKNOWN"))
- if (sam_hdr_add(hdr, "RG",
- "ID", "UNKNOWN", "SM", "UNKNOWN", NULL))
- return -1;
- }
-
- /* Fix M5 strings */
- if (fd->refs && !fd->no_ref) {
- int i;
- for (i = 0; i < hdr->nref; i++) {
- SAM_hdr_type *ty;
- char *ref;
-
- if (!(ty = sam_hdr_find(hdr, "SQ", "SN", hdr->ref[i].name)))
- return -1;
-
- if (!sam_hdr_find_key(hdr, ty, "M5", NULL)) {
- char unsigned buf[16], buf2[33];
- int j, rlen;
- MD5_CTX md5;
-
- if (!fd->refs ||
- !fd->refs->ref_id ||
- !fd->refs->ref_id[i]) {
- return -1;
- }
- rlen = fd->refs->ref_id[i]->length;
- MD5_Init(&md5);
- ref = cram_get_ref(fd, i, 1, rlen);
- if (NULL == ref) return -1;
- rlen = fd->refs->ref_id[i]->length; /* In case it just loaded */
- MD5_Update(&md5, ref, rlen);
- MD5_Final(buf, &md5);
- cram_ref_decr(fd->refs, i);
-
- for (j = 0; j < 16; j++) {
- buf2[j*2+0] = "0123456789abcdef"[buf[j]>>4];
- buf2[j*2+1] = "0123456789abcdef"[buf[j]&15];
- }
- buf2[32] = 0;
- if (sam_hdr_update(hdr, ty, "M5", buf2, NULL))
- return -1;
- }
-
- if (fd->ref_fn) {
- char ref_fn[PATH_MAX];
- full_path(ref_fn, fd->ref_fn);
- if (sam_hdr_update(hdr, ty, "UR", ref_fn, NULL))
- return -1;
- }
- }
- }
-
- if (sam_hdr_rebuild(hdr))
- return -1;
-
- /* Length */
- header_len = sam_hdr_length(hdr);
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- if (-1 == int32_encode(fd, header_len))
- return -1;
-
- /* Text data */
- if (header_len != hwrite(fd->fp, sam_hdr_str(hdr), header_len))
- return -1;
- } else {
- /* Create block(s) inside a container */
- cram_block *b = cram_new_block(FILE_HEADER, 0);
- cram_container *c = cram_new_container(0, 0);
- int padded_length;
- char *pads;
- int is_cram_3 = (CRAM_MAJOR_VERS(fd->version) >= 3);
-
- if (!b || !c) {
- if (b) cram_free_block(b);
- if (c) cram_free_container(c);
- return -1;
- }
-
- int32_put(b, header_len);
- BLOCK_APPEND(b, sam_hdr_str(hdr), header_len);
- BLOCK_UPLEN(b);
-
- // Compress header block if V3.0 and above
- if (CRAM_MAJOR_VERS(fd->version) >= 3 && fd->level > 0) {
- int method = 1<<GZIP;
- if (fd->use_bz2)
- method |= 1<<BZIP2;
- if (fd->use_lzma)
- method |= 1<<LZMA;
- cram_compress_block(fd, b, NULL, method, fd->level);
- }
-
- if (blank_block) {
- c->length = b->comp_size + 2 + 4*is_cram_3 +
- itf8_size(b->content_id) +
- itf8_size(b->uncomp_size) +
- itf8_size(b->comp_size);
-
- c->num_blocks = 2;
- c->num_landmarks = 2;
- if (!(c->landmark = malloc(2*sizeof(*c->landmark)))) {
- cram_free_block(b);
- cram_free_container(c);
- return -1;
- }
- c->landmark[0] = 0;
- c->landmark[1] = c->length;
-
- // Plus extra storage for uncompressed secondary blank block
- padded_length = MIN(c->length*.5, 10000);
- c->length += padded_length + 2 + 4*is_cram_3 +
- itf8_size(b->content_id) +
- itf8_size(padded_length)*2;
- } else {
- // Pad the block instead.
- c->num_blocks = 1;
- c->num_landmarks = 1;
- if (!(c->landmark = malloc(sizeof(*c->landmark))))
- return -1;
- c->landmark[0] = 0;
-
- padded_length = MAX(c->length*1.5, 10000) - c->length;
-
- c->length = b->comp_size + padded_length +
- 2 + 4*is_cram_3 +
- itf8_size(b->content_id) +
- itf8_size(b->uncomp_size) +
- itf8_size(b->comp_size);
-
- if (NULL == (pads = calloc(1, padded_length))) {
- cram_free_block(b);
- cram_free_container(c);
- return -1;
- }
- BLOCK_APPEND(b, pads, padded_length);
- BLOCK_UPLEN(b);
- free(pads);
- }
-
- if (-1 == cram_write_container(fd, c)) {
- cram_free_block(b);
- cram_free_container(c);
- return -1;
- }
-
- if (-1 == cram_write_block(fd, b)) {
- cram_free_block(b);
- cram_free_container(c);
- return -1;
- }
-
- if (blank_block) {
- BLOCK_RESIZE(b, padded_length);
- memset(BLOCK_DATA(b), 0, padded_length);
- BLOCK_SIZE(b) = padded_length;
- BLOCK_UPLEN(b);
- b->method = RAW;
- if (-1 == cram_write_block(fd, b)) {
- cram_free_block(b);
- cram_free_container(c);
- return -1;
- }
- }
-
- cram_free_block(b);
- cram_free_container(c);
- }
-
- if (-1 == refs_from_header(fd->refs, fd, fd->header))
- return -1;
- if (-1 == refs2id(fd->refs, fd->header))
- return -1;
-
- if (0 != hflush(fd->fp))
- return -1;
-
- RP("=== Finishing saving header ===\n");
-
- return 0;
-}
-
-/* ----------------------------------------------------------------------
- * The top-level cram opening, closing and option handling
- */
-
-/*
- * Initialises the lookup tables. These could be global statics, but they're
- * clumsy to setup in a multi-threaded environment unless we generate
- * verbatim code and include that.
- */
-static void cram_init_tables(cram_fd *fd) {
- int i;
-
- memset(fd->L1, 4, 256);
- fd->L1['A'] = 0; fd->L1['a'] = 0;
- fd->L1['C'] = 1; fd->L1['c'] = 1;
- fd->L1['G'] = 2; fd->L1['g'] = 2;
- fd->L1['T'] = 3; fd->L1['t'] = 3;
-
- memset(fd->L2, 5, 256);
- fd->L2['A'] = 0; fd->L2['a'] = 0;
- fd->L2['C'] = 1; fd->L2['c'] = 1;
- fd->L2['G'] = 2; fd->L2['g'] = 2;
- fd->L2['T'] = 3; fd->L2['t'] = 3;
- fd->L2['N'] = 4; fd->L2['n'] = 4;
-
- if (CRAM_MAJOR_VERS(fd->version) == 1) {
- for (i = 0; i < 0x200; i++) {
- int f = 0;
-
- if (i & CRAM_FPAIRED) f |= BAM_FPAIRED;
- if (i & CRAM_FPROPER_PAIR) f |= BAM_FPROPER_PAIR;
- if (i & CRAM_FUNMAP) f |= BAM_FUNMAP;
- if (i & CRAM_FREVERSE) f |= BAM_FREVERSE;
- if (i & CRAM_FREAD1) f |= BAM_FREAD1;
- if (i & CRAM_FREAD2) f |= BAM_FREAD2;
- if (i & CRAM_FSECONDARY) f |= BAM_FSECONDARY;
- if (i & CRAM_FQCFAIL) f |= BAM_FQCFAIL;
- if (i & CRAM_FDUP) f |= BAM_FDUP;
-
- fd->bam_flag_swap[i] = f;
- }
-
- for (i = 0; i < 0x1000; i++) {
- int g = 0;
-
- if (i & BAM_FPAIRED) g |= CRAM_FPAIRED;
- if (i & BAM_FPROPER_PAIR) g |= CRAM_FPROPER_PAIR;
- if (i & BAM_FUNMAP) g |= CRAM_FUNMAP;
- if (i & BAM_FREVERSE) g |= CRAM_FREVERSE;
- if (i & BAM_FREAD1) g |= CRAM_FREAD1;
- if (i & BAM_FREAD2) g |= CRAM_FREAD2;
- if (i & BAM_FSECONDARY) g |= CRAM_FSECONDARY;
- if (i & BAM_FQCFAIL) g |= CRAM_FQCFAIL;
- if (i & BAM_FDUP) g |= CRAM_FDUP;
-
- fd->cram_flag_swap[i] = g;
- }
- } else {
- /* NOP */
- for (i = 0; i < 0x1000; i++)
- fd->bam_flag_swap[i] = i;
- for (i = 0; i < 0x1000; i++)
- fd->cram_flag_swap[i] = i;
- }
-
- memset(fd->cram_sub_matrix, 4, 32*32);
- for (i = 0; i < 32; i++) {
- fd->cram_sub_matrix[i]['A'&0x1f]=0;
- fd->cram_sub_matrix[i]['C'&0x1f]=1;
- fd->cram_sub_matrix[i]['G'&0x1f]=2;
- fd->cram_sub_matrix[i]['T'&0x1f]=3;
- fd->cram_sub_matrix[i]['N'&0x1f]=4;
- }
- for (i = 0; i < 20; i+=4) {
- int j;
- for (j = 0; j < 20; j++) {
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][j]=3;
- }
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+0]&0x1f]=0;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+1]&0x1f]=1;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+2]&0x1f]=2;
- fd->cram_sub_matrix["ACGTN"[i>>2]&0x1f][CRAM_SUBST_MATRIX[i+3]&0x1f]=3;
- }
-}
-
-// Default version numbers for CRAM
-static int major_version = 2;
-static int minor_version = 1;
-
-/*
- * Opens a CRAM file for read (mode "rb") or write ("wb").
- * The filename may be "-" to indicate stdin or stdout.
- *
- * Returns file handle on success
- * NULL on failure.
- */
-cram_fd *cram_open(const char *filename, const char *mode) {
- hFILE *fp;
- cram_fd *fd;
- char fmode[3]= { mode[0], '\0', '\0' };
-
- if (strlen(mode) > 1 && (mode[1] == 'b' || mode[1] == 'c')) {
- fmode[1] = 'b';
- }
-
- fp = hopen(filename, fmode);
- if (!fp)
- return NULL;
-
- fd = cram_dopen(fp, filename, mode);
- if (!fd)
- hclose_abruptly(fp);
-
- return fd;
-}
-
-/* Opens an existing stream for reading or writing.
- *
- * Returns file handle on success;
- * NULL on failure.
- */
-cram_fd *cram_dopen(hFILE *fp, const char *filename, const char *mode) {
- int i;
- char *cp;
- cram_fd *fd = calloc(1, sizeof(*fd));
- if (!fd)
- return NULL;
-
- fd->level = 5;
- for (i = 0; mode[i]; i++) {
- if (mode[i] >= '0' && mode[i] <= '9') {
- fd->level = mode[i] - '0';
- break;
- }
- }
-
- fd->fp = fp;
- fd->mode = *mode;
- fd->first_container = 0;
-
- if (fd->mode == 'r') {
- /* Reader */
-
- if (!(fd->file_def = cram_read_file_def(fd)))
- goto err;
-
- fd->version = fd->file_def->major_version * 256 +
- fd->file_def->minor_version;
-
- if (!(fd->header = cram_read_SAM_hdr(fd)))
- goto err;
-
- } else {
- /* Writer */
- cram_file_def *def = calloc(1, sizeof(*def));
- if (!def)
- return NULL;
-
- fd->file_def = def;
-
- def->magic[0] = 'C';
- def->magic[1] = 'R';
- def->magic[2] = 'A';
- def->magic[3] = 'M';
- def->major_version = 0; // Indicator to write file def later.
- def->minor_version = 0;
- memset(def->file_id, 0, 20);
- strncpy(def->file_id, filename, 20);
-
- fd->version = major_version * 256 + minor_version;
-
- /* SAM header written later along with this file_def */
- }
-
- cram_init_tables(fd);
-
- fd->prefix = strdup((cp = strrchr(filename, '/')) ? cp+1 : filename);
- if (!fd->prefix)
- goto err;
- fd->first_base = fd->last_base = -1;
- fd->record_counter = 0;
-
- fd->ctr = NULL;
- fd->refs = refs_create();
- if (!fd->refs)
- goto err;
- fd->ref_id = -2;
- fd->ref = NULL;
-
- fd->decode_md = 0;
- fd->verbose = 0;
- fd->seqs_per_slice = SEQS_PER_SLICE;
- fd->slices_per_container = SLICE_PER_CNT;
- fd->embed_ref = 0;
- fd->no_ref = 0;
- fd->ignore_md5 = 0;
- fd->use_bz2 = 0;
- fd->use_rans = (CRAM_MAJOR_VERS(fd->version) >= 3);
- fd->use_lzma = 0;
- fd->multi_seq = -1;
- fd->unsorted = 0;
- fd->shared_ref = 0;
-
- fd->index = NULL;
- fd->own_pool = 0;
- fd->pool = NULL;
- fd->rqueue = NULL;
- fd->job_pending = NULL;
- fd->ooc = 0;
- fd->required_fields = INT_MAX;
-
- for (i = 0; i < DS_END; i++)
- fd->m[i] = cram_new_metrics();
-
- fd->range.refid = -2; // no ref.
- fd->eof = 1; // See samtools issue #150
- fd->ref_fn = NULL;
-
- fd->bl = NULL;
-
- /* Initialise dummy refs from the @SQ headers */
- if (-1 == refs_from_header(fd->refs, fd, fd->header))
- goto err;
-
- return fd;
-
- err:
- if (fd)
- free(fd);
-
- return NULL;
-}
-
-/*
- * Seek within a CRAM file.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_seek(cram_fd *fd, off_t offset, int whence) {
- char buf[65536];
-
- fd->ooc = 0;
-
- if (hseek(fd->fp, offset, whence) >= 0)
- return 0;
-
- if (!(whence == SEEK_CUR && offset >= 0))
- return -1;
-
- /* Couldn't fseek, but we're in SEEK_CUR mode so read instead */
- while (offset > 0) {
- int len = MIN(65536, offset);
- if (len != hread(fd->fp, buf, len))
- return -1;
- offset -= len;
- }
-
- return 0;
-}
-
-/*
- * Flushes a CRAM file.
- * Useful for when writing to stdout without wishing to close the stream.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_flush(cram_fd *fd) {
- if (!fd)
- return -1;
-
- if (fd->mode == 'w' && fd->ctr) {
- if(fd->ctr->slice)
- fd->ctr->curr_slice++;
- if (-1 == cram_flush_container_mt(fd, fd->ctr))
- return -1;
- }
-
- return 0;
-}
-
-/*
- * Closes a CRAM file.
- * Returns 0 on success
- * -1 on failure
- */
-int cram_close(cram_fd *fd) {
- spare_bams *bl, *next;
- int i;
-
- if (!fd)
- return -1;
-
- if (fd->mode == 'w' && fd->ctr) {
- if(fd->ctr->slice)
- fd->ctr->curr_slice++;
- if (-1 == cram_flush_container_mt(fd, fd->ctr))
- return -1;
- }
-
- if (fd->pool) {
- t_pool_flush(fd->pool);
-
- if (0 != cram_flush_result(fd))
- return -1;
-
- pthread_mutex_destroy(&fd->metrics_lock);
- pthread_mutex_destroy(&fd->ref_lock);
- pthread_mutex_destroy(&fd->bam_list_lock);
-
- fd->ctr = NULL; // prevent double freeing
-
- //fprintf(stderr, "CRAM: destroy queue %p\n", fd->rqueue);
-
- t_results_queue_destroy(fd->rqueue);
- }
-
- if (fd->mode == 'w') {
- /* Write EOF block */
- if (CRAM_MAJOR_VERS(fd->version) == 3) {
- if (38 != hwrite(fd->fp,
- "\x0f\x00\x00\x00\xff\xff\xff\xff" // Cont HDR
- "\x0f\xe0\x45\x4f\x46\x00\x00\x00" // Cont HDR
- "\x00\x01\x00" // Cont HDR
- "\x05\xbd\xd9\x4f" // CRC32
- "\x00\x01\x00\x06\x06" // Comp.HDR blk
- "\x01\x00\x01\x00\x01\x00" // Comp.HDR blk
- "\xee\x63\x01\x4b", // CRC32
- 38))
- return -1;
- } else {
- if (30 != hwrite(fd->fp,
- "\x0b\x00\x00\x00\xff\xff\xff\xff"
- "\x0f\xe0\x45\x4f\x46\x00\x00\x00"
- "\x00\x01\x00\x00\x01\x00\x06\x06"
- "\x01\x00\x01\x00\x01\x00", 30))
- return -1;
- }
- }
-
- for (bl = fd->bl; bl; bl = next) {
- int i, max_rec = fd->seqs_per_slice * fd->slices_per_container;
-
- next = bl->next;
- for (i = 0; i < max_rec; i++) {
- if (bl->bams[i])
- bam_free(bl->bams[i]);
- }
- free(bl->bams);
- free(bl);
- }
-
- if (hclose(fd->fp) != 0)
- return -1;
-
- if (fd->file_def)
- cram_free_file_def(fd->file_def);
-
- if (fd->header)
- sam_hdr_free(fd->header);
-
- free(fd->prefix);
-
- if (fd->ctr)
- cram_free_container(fd->ctr);
-
- if (fd->refs)
- refs_free(fd->refs);
- if (fd->ref_free)
- free(fd->ref_free);
-
- for (i = 0; i < DS_END; i++)
- if (fd->m[i])
- free(fd->m[i]);
-
- if (fd->index)
- cram_index_free(fd);
-
- if (fd->own_pool && fd->pool)
- t_pool_destroy(fd->pool, 0);
-
- free(fd);
- return 0;
-}
-
-/*
- * Returns 1 if we hit an EOF while reading.
- */
-int cram_eof(cram_fd *fd) {
- return fd->eof;
-}
-
-
-/*
- * Sets options on the cram_fd. See CRAM_OPT_* definitions in cram_structs.h.
- * Use this immediately after opening.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_set_option(cram_fd *fd, enum cram_option opt, ...) {
- int r;
- va_list args;
-
- va_start(args, opt);
- r = cram_set_voption(fd, opt, args);
- va_end(args);
-
- return r;
-}
-
-/*
- * Sets options on the cram_fd. See CRAM_OPT_* definitions in cram_structs.h.
- * Use this immediately after opening.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_set_voption(cram_fd *fd, enum cram_option opt, va_list args) {
- refs_t *refs;
-
- if (!fd)
- return -1;
-
- switch (opt) {
- case CRAM_OPT_DECODE_MD:
- fd->decode_md = va_arg(args, int);
- break;
-
- case CRAM_OPT_PREFIX:
- if (fd->prefix)
- free(fd->prefix);
- if (!(fd->prefix = strdup(va_arg(args, char *))))
- return -1;
- break;
-
- case CRAM_OPT_VERBOSITY:
- fd->verbose = va_arg(args, int);
- break;
-
- case CRAM_OPT_SEQS_PER_SLICE:
- fd->seqs_per_slice = va_arg(args, int);
- break;
-
- case CRAM_OPT_SLICES_PER_CONTAINER:
- fd->slices_per_container = va_arg(args, int);
- break;
-
- case CRAM_OPT_EMBED_REF:
- fd->embed_ref = va_arg(args, int);
- break;
-
- case CRAM_OPT_NO_REF:
- fd->no_ref = va_arg(args, int);
- break;
-
- case CRAM_OPT_IGNORE_MD5:
- fd->ignore_md5 = va_arg(args, int);
- break;
-
- case CRAM_OPT_USE_BZIP2:
- fd->use_bz2 = va_arg(args, int);
- break;
-
- case CRAM_OPT_USE_RANS:
- fd->use_rans = va_arg(args, int);
- break;
-
- case CRAM_OPT_USE_LZMA:
- fd->use_lzma = va_arg(args, int);
- break;
-
- case CRAM_OPT_SHARED_REF:
- fd->shared_ref = 1;
- refs = va_arg(args, refs_t *);
- if (refs != fd->refs) {
- if (fd->refs)
- refs_free(fd->refs);
- fd->refs = refs;
- fd->refs->count++;
- }
- break;
-
- case CRAM_OPT_RANGE:
- fd->range = *va_arg(args, cram_range *);
- return cram_seek_to_refpos(fd, &fd->range);
-
- case CRAM_OPT_REFERENCE:
- return cram_load_reference(fd, va_arg(args, char *));
-
- case CRAM_OPT_VERSION: {
- int major, minor;
- char *s = va_arg(args, char *);
- if (2 != sscanf(s, "%d.%d", &major, &minor)) {
- fprintf(stderr, "Malformed version string %s\n", s);
- return -1;
- }
- if (!((major == 1 && minor == 0) ||
- (major == 2 && (minor == 0 || minor == 1)) ||
- (major == 3 && minor == 0))) {
- fprintf(stderr, "Unknown version string; "
- "use 1.0, 2.0, 2.1 or 3.0\n");
- return -1;
- }
- fd->version = major*256 + minor;
-
- if (CRAM_MAJOR_VERS(fd->version) >= 3)
- fd->use_rans = 1;
- break;
- }
-
- case CRAM_OPT_MULTI_SEQ_PER_SLICE:
- fd->multi_seq = va_arg(args, int);
- break;
-
- case CRAM_OPT_NTHREADS: {
- int nthreads = va_arg(args, int);
- if (nthreads > 1) {
- if (!(fd->pool = t_pool_init(nthreads*2, nthreads)))
- return -1;
-
- fd->rqueue = t_results_queue_init();
- pthread_mutex_init(&fd->metrics_lock, NULL);
- pthread_mutex_init(&fd->ref_lock, NULL);
- pthread_mutex_init(&fd->bam_list_lock, NULL);
- fd->shared_ref = 1;
- fd->own_pool = 1;
- }
- break;
- }
-
- case CRAM_OPT_THREAD_POOL:
- fd->pool = va_arg(args, t_pool *);
- if (fd->pool) {
- fd->rqueue = t_results_queue_init();
- pthread_mutex_init(&fd->metrics_lock, NULL);
- pthread_mutex_init(&fd->ref_lock, NULL);
- pthread_mutex_init(&fd->bam_list_lock, NULL);
- }
- fd->shared_ref = 1; // Needed to avoid clobbering ref between threads
- fd->own_pool = 0;
-
- //fd->qsize = 1;
- //fd->decoded = calloc(fd->qsize, sizeof(cram_container *));
- //t_pool_dispatch(fd->pool, cram_decoder_thread, fd);
- break;
-
- case CRAM_OPT_REQUIRED_FIELDS:
- fd->required_fields = va_arg(args, int);
- break;
-
- default:
- fprintf(stderr, "Unknown CRAM option code %d\n", opt);
- return -1;
- }
-
- return 0;
-}
diff --git a/htslib/cram/cram_io.h b/htslib/cram/cram_io.h
deleted file mode 100644
index 43344c2..0000000
--- a/htslib/cram/cram_io.h
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
-Copyright (c) 2012-2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*! \file
- * Include cram.h instead.
- *
- * This is an internal part of the CRAM system and is automatically included
- * when you #include cram.h.
- *
- * Implements the low level CRAM I/O primitives.
- * This includes basic data types such as byte, int, ITF-8,
- * maps, bitwise I/O, etc.
- */
-
-#ifndef _CRAM_IO_H_
-#define _CRAM_IO_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ITF8_MACROS
-
-#include <stdint.h>
-#include <cram/misc.h>
-
-/**@{ ----------------------------------------------------------------------
- * ITF8 encoding and decoding.
- *
- * Also see the itf8_get and itf8_put macros.
- */
-
-/*! INTERNAL: Converts two characters into an integer for use in switch{} */
-#define CRAM_KEY(a,b) (((a)<<8)|((b)))
-
-/*! Reads an integer in ITF-8 encoding from 'fd' and stores it in
- * *val.
- *
- * @return
- * Returns the number of bytes read on success;
- * -1 on failure
- */
-int itf8_decode(cram_fd *fd, int32_t *val);
-
-#ifndef ITF8_MACROS
-/*! Reads an integer in ITF-8 encoding from 'cp' and stores it in
- * *val.
- *
- * @return
- * Returns the number of bytes read on success;
- * -1 on failure
- */
-int itf8_get(char *cp, int32_t *val_p);
-
-/*! Stores a value to memory in ITF-8 format.
- *
- * @return
- * Returns the number of bytes required to store the number.
- * This is a maximum of 5 bytes.
- */
-int itf8_put(char *cp, int32_t val);
-
-#else
-
-/*
- * Macro implementations of the above
- */
-#define itf8_get(c,v) (((uc)(c)[0]<0x80)?(*(v)=(uc)(c)[0],1):(((uc)(c)[0]<0xc0)?(*(v)=(((uc)(c)[0]<<8)|(uc)(c)[1])&0x3fff,2):(((uc)(c)[0]<0xe0)?(*(v)=(((uc)(c)[0]<<16)|((uc)(c)[1]<<8)|(uc)(c)[2])&0x1fffff,3):(((uc)(c)[0]<0xf0)?(*(v)=(((uc)(c)[0]<<24)|((uc)(c)[1]<<16)|((uc)(c)[2]<<8)|(uc)(c)[3])&0x0fffffff,4):(*(v)=(((uc)(c)[0]&0x0f)<<28)|((uc)(c)[1]<<20)|((uc)(c)[2]<<12)|((uc)(c)[3]<<4)|((uc)(c)[4]&0x0f),5)))))
-
-#define itf8_put(c,v) ((!((v)&~0x7f))?((c)[0]=(v),1):(!((v)&~0x3fff))?((c)[0]=((v)>>8)|0x80,(c)[1]=(v)&0xff,2):(!((v)&~0x1fffff))?((c)[0]=((v)>>16)|0xc0,(c)[1]=((v)>>8)&0xff,(c)[2]=(v)&0xff,3):(!((v)&~0xfffffff))?((c)[0]=((v)>>24)|0xe0,(c)[1]=((v)>>16)&0xff,(c)[2]=((v)>>8)&0xff,(c)[3]=(v)&0xff,4):((c)[0]=0xf0|(((v)>>28)&0xff),(c)[1]=((v)>>20)&0xff,(c)[2]=((v)>>12)&0xff,(c)[3]=((v)>>4)&0xff,(c)[4]=(v)&0xf,5))
-
-#define itf8_size(v) ((!((v)&~0x7f))?1:(!((v)&~0x3fff))?2:(!((v)&~0x1fffff))?3:(!((v)&~0xfffffff))?4:5)
-
-#endif
-
-int ltf8_get(char *cp, int64_t *val_p);
-int ltf8_put(char *cp, int64_t val);
-
-/*! Pushes a value in ITF8 format onto the end of a block.
- *
- * This shouldn't be used for high-volume data as it is not the fastest
- * method.
- *
- * @return
- * Returns the number of bytes written
- */
-int itf8_put_blk(cram_block *blk, int val);
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * CRAM blocks - the dynamically growable data block. We have code to
- * create, update, (un)compress and read/write.
- *
- * These are derived from the deflate_interlaced.c blocks, but with the
- * CRAM extension of content types and IDs.
- */
-
-/*! Allocates a new cram_block structure with a specified content_type and
- * id.
- *
- * @return
- * Returns block pointer on success;
- * NULL on failure
- */
-cram_block *cram_new_block(enum cram_content_type content_type,
- int content_id);
-
-/*! Reads a block from a cram file.
- *
- * @return
- * Returns cram_block pointer on success;
- * NULL on failure
- */
-cram_block *cram_read_block(cram_fd *fd);
-
-/*! Writes a CRAM block.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_write_block(cram_fd *fd, cram_block *b);
-
-/*! Frees a CRAM block, deallocating internal data too.
- */
-void cram_free_block(cram_block *b);
-
-/*! Uncompress a memory block using Zlib.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-char *zlib_mem_inflate(char *cdata, size_t csize, size_t *size);
-
-/*! Uncompresses a CRAM block, if compressed.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_uncompress_block(cram_block *b);
-
-/*! Compresses a block.
- *
- * Compresses a block using one of two different zlib strategies. If we only
- * want one choice set strat2 to be -1.
- *
- * The logic here is that sometimes Z_RLE does a better job than Z_FILTERED
- * or Z_DEFAULT_STRATEGY on quality data. If so, we'd rather use it as it is
- * significantly faster.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_compress_block(cram_fd *fd, cram_block *b, cram_metrics *metrics,
- int method, int level);
-
-cram_metrics *cram_new_metrics(void);
-char *cram_block_method2str(enum cram_block_method m);
-char *cram_content_type2str(enum cram_content_type t);
-
-/* --- Accessor macros for manipulating blocks on a byte by byte basis --- */
-
-/* Block size and data pointer. */
-#define BLOCK_SIZE(b) ((b)->byte)
-#define BLOCK_DATA(b) ((b)->data)
-
-/* Returns the address one past the end of the block */
-#define BLOCK_END(b) (&(b)->data[(b)->byte])
-
-/* Request block to be at least 'l' bytes long */
-#define BLOCK_RESIZE(b,l) \
- do { \
- while((b)->alloc <= (l)) { \
- (b)->alloc = (b)->alloc ? (b)->alloc*1.5 : 1024; \
- (b)->data = realloc((b)->data, (b)->alloc); \
- } \
- } while(0)
-
-/* Ensure the block can hold at least another 'l' bytes */
-#define BLOCK_GROW(b,l) BLOCK_RESIZE((b), BLOCK_SIZE((b)) + (l))
-
-/* Append string 's' of length 'l' */
-#define BLOCK_APPEND(b,s,l) \
- do { \
- BLOCK_GROW((b),(l)); \
- memcpy(BLOCK_END((b)), (s), (l)); \
- BLOCK_SIZE((b)) += (l); \
- } while (0)
-
-/* Append as single character 'c' */
-#define BLOCK_APPEND_CHAR(b,c) \
- do { \
- BLOCK_GROW((b),1); \
- (b)->data[(b)->byte++] = (c); \
- } while (0)
-
-/* Append a single unsigned integer */
-#define BLOCK_APPEND_UINT(b,i) \
- do { \
- unsigned char *cp; \
- BLOCK_GROW((b),11); \
- cp = &(b)->data[(b)->byte]; \
- (b)->byte += append_uint32(cp, (i)) - cp; \
- } while (0)
-
-static inline unsigned char *append_uint32(unsigned char *cp, uint32_t i) {
- uint32_t j;
-
- if (i == 0) {
- *cp++ = '0';
- return cp;
- }
-
- if (i < 100) goto b1;
- if (i < 10000) goto b3;
- if (i < 1000000) goto b5;
- if (i < 100000000) goto b7;
-
- if ((j = i / 1000000000)) {*cp++ = j + '0'; i -= j*1000000000; goto x8;}
- if ((j = i / 100000000)) {*cp++ = j + '0'; i -= j*100000000; goto x7;}
- b7:if ((j = i / 10000000)) {*cp++ = j + '0'; i -= j*10000000; goto x6;}
- if ((j = i / 1000000)) {*cp++ = j + '0', i -= j*1000000; goto x5;}
- b5:if ((j = i / 100000)) {*cp++ = j + '0', i -= j*100000; goto x4;}
- if ((j = i / 10000)) {*cp++ = j + '0', i -= j*10000; goto x3;}
- b3:if ((j = i / 1000)) {*cp++ = j + '0', i -= j*1000; goto x2;}
- if ((j = i / 100)) {*cp++ = j + '0', i -= j*100; goto x1;}
- b1:if ((j = i / 10)) {*cp++ = j + '0', i -= j*10; goto x0;}
- if (i) *cp++ = i + '0';
- return cp;
-
- x8: *cp++ = i / 100000000 + '0', i %= 100000000;
- x7: *cp++ = i / 10000000 + '0', i %= 10000000;
- x6: *cp++ = i / 1000000 + '0', i %= 1000000;
- x5: *cp++ = i / 100000 + '0', i %= 100000;
- x4: *cp++ = i / 10000 + '0', i %= 10000;
- x3: *cp++ = i / 1000 + '0', i %= 1000;
- x2: *cp++ = i / 100 + '0', i %= 100;
- x1: *cp++ = i / 10 + '0', i %= 10;
- x0: *cp++ = i + '0';
-
- return cp;
-}
-
-static inline unsigned char *append_sub32(unsigned char *cp, uint32_t i) {
- *cp++ = i / 100000000 + '0', i %= 100000000;
- *cp++ = i / 10000000 + '0', i %= 10000000;
- *cp++ = i / 1000000 + '0', i %= 1000000;
- *cp++ = i / 100000 + '0', i %= 100000;
- *cp++ = i / 10000 + '0', i %= 10000;
- *cp++ = i / 1000 + '0', i %= 1000;
- *cp++ = i / 100 + '0', i %= 100;
- *cp++ = i / 10 + '0', i %= 10;
- *cp++ = i + '0';
-
- return cp;
-}
-
-static inline unsigned char *append_uint64(unsigned char *cp, uint64_t i) {
- uint64_t j;
-
- if (i <= 0xffffffff)
- return append_uint32(cp, i);
-
- if ((j = i/1000000000) > 1000000000) {
- cp = append_uint32(cp, j/1000000000);
- j %= 1000000000;
- cp = append_sub32(cp, j);
- } else {
- cp = append_uint32(cp, i / 1000000000);
- }
- cp = append_sub32(cp, i % 1000000000);
-
- return cp;
-}
-
-#define BLOCK_UPLEN(b) \
- (b)->comp_size = (b)->uncomp_size = BLOCK_SIZE((b))
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * Reference sequence handling
- */
-
-/*! Loads a reference set from fn and stores in the cram_fd.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_load_reference(cram_fd *fd, char *fn);
-
-/*! Generates a lookup table in refs based on the SQ headers in SAM_hdr.
- *
- * Indexes references by the order they appear in a BAM file. This may not
- * necessarily be the same order they appear in the fasta reference file.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int refs2id(refs_t *r, SAM_hdr *bfd);
-
-void refs_free(refs_t *r);
-
-/*! Returns a portion of a reference sequence from start to end inclusive.
- *
- * The returned pointer is owned by the cram_file fd and should not be freed
- * by the caller. It is valid only until the next cram_get_ref is called
- * with the same fd parameter (so is thread-safe if given multiple files).
- *
- * To return the entire reference sequence, specify start as 1 and end
- * as 0.
- *
- * @return
- * Returns reference on success;
- * NULL on failure
- */
-char *cram_get_ref(cram_fd *fd, int id, int start, int end);
-void cram_ref_incr(refs_t *r, int id);
-void cram_ref_decr(refs_t *r, int id);
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * Containers
- */
-
-/*! Creates a new container, specifying the maximum number of slices
- * and records permitted.
- *
- * @return
- * Returns cram_container ptr on success;
- * NULL on failure
- */
-cram_container *cram_new_container(int nrec, int nslice);
-void cram_free_container(cram_container *c);
-
-/*! Reads a container header.
- *
- * @return
- * Returns cram_container on success;
- * NULL on failure or no container left (fd->err == 0).
- */
-cram_container *cram_read_container(cram_fd *fd);
-
-/*! Writes a container structure.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_write_container(cram_fd *fd, cram_container *h);
-
-/*! Flushes a container to disk.
- *
- * Flushes a completely or partially full container to disk, writing
- * container structure, header and blocks. This also calls the encoder
- * functions.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_flush_container(cram_fd *fd, cram_container *c);
-int cram_flush_container_mt(cram_fd *fd, cram_container *c);
-
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * Compression headers; the first part of the container
- */
-
-/*! Creates a new blank container compression header
- *
- * @return
- * Returns header ptr on success;
- * NULL on failure
- */
-cram_block_compression_hdr *cram_new_compression_header(void);
-
-/*! Frees a cram_block_compression_hdr */
-void cram_free_compression_header(cram_block_compression_hdr *hdr);
-
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * Slices and slice headers
- */
-
-/*! Frees a slice header */
-void cram_free_slice_header(cram_block_slice_hdr *hdr);
-
-/*! Frees a slice */
-void cram_free_slice(cram_slice *s);
-
-/*! Creates a new empty slice in memory, for subsequent writing to
- * disk.
- *
- * @return
- * Returns cram_slice ptr on success;
- * NULL on failure
- */
-cram_slice *cram_new_slice(enum cram_content_type type, int nrecs);
-
-/*! Loads an entire slice.
- *
- * FIXME: In 1.0 the native unit of slices within CRAM is broken
- * as slices contain references to objects in other slices.
- * To work around this while keeping the slice oriented outer loop
- * we read all slices and stitch them together into a fake large
- * slice instead.
- *
- * @return
- * Returns cram_slice ptr on success;
- * NULL on failure
- */
-cram_slice *cram_read_slice(cram_fd *fd);
-
-
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * CRAM file definition (header)
- */
-
-/*! Reads a CRAM file definition structure.
- *
- * @return
- * Returns file_def ptr on success;
- * NULL on failure
- */
-cram_file_def *cram_read_file_def(cram_fd *fd);
-
-/*! Writes a cram_file_def structure to cram_fd.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_write_file_def(cram_fd *fd, cram_file_def *def);
-
-/*! Frees a cram_file_def structure. */
-void cram_free_file_def(cram_file_def *def);
-
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * SAM header I/O
- */
-
-/*! Reads the SAM header from the first CRAM data block.
- *
- * Also performs minimal parsing to extract read-group
- * and sample information.
- *
- * @return
- * Returns SAM hdr ptr on success;
- * NULL on failure
- */
-SAM_hdr *cram_read_SAM_hdr(cram_fd *fd);
-
-/*! Writes a CRAM SAM header.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_write_SAM_hdr(cram_fd *fd, SAM_hdr *hdr);
-
-
-/**@}*/
-/**@{ ----------------------------------------------------------------------
- * The top-level cram opening, closing and option handling
- */
-
-/*! Opens a CRAM file for read (mode "rb") or write ("wb").
- *
- * The filename may be "-" to indicate stdin or stdout.
- *
- * @return
- * Returns file handle on success;
- * NULL on failure.
- */
-cram_fd *cram_open(const char *filename, const char *mode);
-
-/*! Opens an existing stream for reading or writing.
- *
- * @return
- * Returns file handle on success;
- * NULL on failure.
- */
-cram_fd *cram_dopen(struct hFILE *fp, const char *filename, const char *mode);
-
-/*! Closes a CRAM file.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_close(cram_fd *fd);
-
-/*
- * Seek within a CRAM file.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_seek(cram_fd *fd, off_t offset, int whence);
-
-/*
- * Flushes a CRAM file.
- * Useful for when writing to stdout without wishing to close the stream.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int cram_flush(cram_fd *fd);
-
-/*! Checks for end of file on a cram_fd stream.
- *
- * @return
- * Returns 0 if not at end of file
- * 1 if we hit an expected EOF (end of range or EOF block)
- * 2 for other EOF (end of stream without EOF block)
- */
-int cram_eof(cram_fd *fd);
-
-/*! Sets options on the cram_fd.
- *
- * See CRAM_OPT_* definitions in cram_structs.h.
- * Use this immediately after opening.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_set_option(cram_fd *fd, enum cram_option opt, ...);
-
-/*! Sets options on the cram_fd.
- *
- * See CRAM_OPT_* definitions in cram_structs.h.
- * Use this immediately after opening.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_set_voption(cram_fd *fd, enum cram_option opt, va_list args);
-
-/*!
- * Attaches a header to a cram_fd.
- *
- * This should be used when creating a new cram_fd for writing where
- * we have an SAM_hdr already constructed (eg from a file we've read
- * in).
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int cram_set_header(cram_fd *fd, SAM_hdr *hdr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CRAM_IO_H_ */
diff --git a/htslib/cram/cram_samtools.c b/htslib/cram/cram_samtools.c
deleted file mode 100644
index 27c54e5..0000000
--- a/htslib/cram/cram_samtools.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-Copyright (c) 2010-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "cram/cram.h"
-#include "htslib/sam.h"
-
-/*---------------------------------------------------------------------------
- * Samtools compatibility portion
- */
-int bam_construct_seq(bam_seq_t **bp, size_t extra_len,
- const char *qname, size_t qname_len,
- int flag,
- int rname, // Ref ID
- int pos,
- int end, // aligned start/end coords
- int mapq,
- uint32_t ncigar, const uint32_t *cigar,
- int mrnm, // Mate Ref ID
- int mpos,
- int isize,
- int len,
- const char *seq,
- const char *qual) {
- static const char L[256] = {
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15, 0,15,15,
- 15, 1,14, 2,13,15,15, 4,11,15,15,12,15, 3,15,15,
- 15,15, 5, 6, 8,15, 7, 9,15,10,15,15,15,15,15,15,
- 15, 1,14, 2,13,15,15, 4,11,15,15,12,15, 3,15,15,
- 15,15, 5, 6, 8,15, 7, 9,15,10,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
- 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
- };
- bam1_t *b = (bam1_t *)*bp;
- uint8_t *cp;
- int i, bam_len;
-
- //b->l_aux = extra_len; // we fill this out later
-
- bam_len = qname_len + 1 + ncigar*4 + (len+1)/2 + len + extra_len;
- if (b->m_data < bam_len) {
- b->m_data = bam_len;
- kroundup32(b->m_data);
- b->data = (uint8_t*)realloc(b->data, b->m_data);
- if (!b->data)
- return -1;
- }
- b->l_data = bam_len;
-
- b->core.tid = rname;
- b->core.pos = pos-1;
- b->core.bin = bam_reg2bin(pos, end);
- b->core.qual = mapq;
- b->core.l_qname = qname_len+1;
- b->core.flag = flag;
- b->core.n_cigar = ncigar;
- b->core.l_qseq = len;
- b->core.mtid = mrnm;
- b->core.mpos = mpos-1;
- b->core.isize = isize;
-
- cp = b->data;
-
- strncpy((char *)cp, qname, qname_len);
- cp[qname_len] = 0;
- cp += qname_len+1;
- memcpy(cp, cigar, ncigar*4);
- cp += ncigar*4;
-
- for (i = 0; i+1 < len; i+=2) {
- *cp++ = (L[(uc)seq[i]]<<4) + L[(uc)seq[i+1]];
- }
- if (i < len)
- *cp++ = L[(uc)seq[i]]<<4;
-
- if (qual)
- memcpy(cp, qual, len);
- else
- memset(cp, '\xff', len);
-
- return 0;
-}
-
-bam_hdr_t *cram_header_to_bam(SAM_hdr *h) {
- int i;
- bam_hdr_t *header = bam_hdr_init();
-
- header->l_text = ks_len(&h->text);
- header->text = malloc(header->l_text+1);
- memcpy(header->text, ks_str(&h->text), header->l_text);
- header->text[header->l_text] = 0;
-
- header->n_targets = h->nref;
- header->target_name = (char **)calloc(header->n_targets,
- sizeof(char *));
- header->target_len = (uint32_t *)calloc(header->n_targets, 4);
-
- for (i = 0; i < h->nref; i++) {
- header->target_name[i] = strdup(h->ref[i].name);
- header->target_len[i] = h->ref[i].len;
- }
-
- return header;
-}
-
-SAM_hdr *bam_header_to_cram(bam_hdr_t *h) {
- return sam_hdr_parse_(h->text, h->l_text);
-}
diff --git a/htslib/cram/cram_samtools.h b/htslib/cram/cram_samtools.h
deleted file mode 100644
index f7949d0..0000000
--- a/htslib/cram/cram_samtools.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Copyright (c) 2010-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _CRAM_SAMTOOLS_H_
-#define _CRAM_SAMTOOLS_H_
-
-/* Samtools compatible API */
-#define bam_blk_size(b) ((b)->l_data)
-#define bam_set_blk_size(b,v) ((b)->data_len = (v))
-
-#define bam_ref(b) (b)->core.tid
-#define bam_pos(b) (b)->core.pos
-#define bam_mate_pos(b) (b)->core.mpos
-#define bam_mate_ref(b) (b)->core.mtid
-#define bam_ins_size(b) (b)->core.isize
-#define bam_seq_len(b) (b)->core.l_qseq
-#define bam_cigar_len(b) (b)->core.n_cigar
-#define bam_flag(b) (b)->core.flag
-#define bam_bin(b) (b)->core.bin
-#define bam_map_qual(b) (b)->core.qual
-#define bam_name_len(b) (b)->core.l_qname
-#define bam_name(b) bam_get_qname((b))
-#define bam_qual(b) bam_get_qual((b))
-#define bam_seq(b) bam_get_seq((b))
-#define bam_cigar(b) bam_get_cigar((b))
-#define bam_aux(b) bam_get_aux((b))
-
-#define bam_dup(b) bam_copy1(bam_init1(), (b))
-
-#define bam_free(b) bam_destroy1((b))
-
-#define bam_reg2bin(beg,end) hts_reg2bin((beg),(end),14,5)
-
-#include "htslib/sam.h"
-
-enum cigar_op {
- BAM_CMATCH_=BAM_CMATCH,
- BAM_CINS_=BAM_CINS,
- BAM_CDEL_=BAM_CDEL,
- BAM_CREF_SKIP_=BAM_CREF_SKIP,
- BAM_CSOFT_CLIP_=BAM_CSOFT_CLIP,
- BAM_CHARD_CLIP_=BAM_CHARD_CLIP,
- BAM_CPAD_=BAM_CPAD,
- BAM_CBASE_MATCH=BAM_CEQUAL,
- BAM_CBASE_MISMATCH=BAM_CDIFF
-};
-
-typedef bam1_t bam_seq_t;
-
-#include "cram/sam_header.h"
-
-bam_hdr_t *cram_header_to_bam(SAM_hdr *h);
-SAM_hdr *bam_header_to_cram(bam_hdr_t *h);
-
-int bam_construct_seq(bam_seq_t **bp, size_t extra_len,
- const char *qname, size_t qname_len,
- int flag,
- int rname, // Ref ID
- int pos,
- int end, // aligned start/end coords
- int mapq,
- uint32_t ncigar, const uint32_t *cigar,
- int mrnm, // Mate Ref ID
- int mpos,
- int isize,
- int len,
- const char *seq,
- const char *qual);
-
-#endif /* _CRAM_SAMTOOLS_H_ */
diff --git a/htslib/cram/cram_stats.c b/htslib/cram/cram_stats.c
deleted file mode 100644
index 9551f00..0000000
--- a/htslib/cram/cram_stats.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <zlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "cram/cram.h"
-#include "cram/os.h"
-
-cram_stats *cram_stats_create(void) {
- return calloc(1, sizeof(cram_stats));
-}
-
-void cram_stats_add(cram_stats *st, int32_t val) {
- st->nsamp++;
-
- //assert(val >= 0);
-
- if (val < MAX_STAT_VAL && val >= 0) {
- st->freqs[val]++;
- } else {
- khint_t k;
- int r;
-
- if (!st->h) {
- st->h = kh_init(m_i2i);
- }
-
- k = kh_put(m_i2i, st->h, val, &r);
- if (r == 0)
- kh_val(st->h, k)++;
- else if (r != -1)
- kh_val(st->h, k) = 1;
- else
- ; // FIXME: handle error
- }
-}
-
-void cram_stats_del(cram_stats *st, int32_t val) {
- st->nsamp--;
-
- //assert(val >= 0);
-
- if (val < MAX_STAT_VAL && val >= 0) {
- st->freqs[val]--;
- assert(st->freqs[val] >= 0);
- } else if (st->h) {
- khint_t k = kh_get(m_i2i, st->h, val);
-
- if (k != kh_end(st->h)) {
- if (--kh_val(st->h, k) == 0)
- kh_del(m_i2i, st->h, k);
- } else {
- fprintf(stderr, "Failed to remove val %d from cram_stats\n", val);
- st->nsamp++;
- }
- } else {
- fprintf(stderr, "Failed to remove val %d from cram_stats\n", val);
- st->nsamp++;
- }
-}
-
-void cram_stats_dump(cram_stats *st) {
- int i;
- fprintf(stderr, "cram_stats:\n");
- for (i = 0; i < MAX_STAT_VAL; i++) {
- if (!st->freqs[i])
- continue;
- fprintf(stderr, "\t%d\t%d\n", i, st->freqs[i]);
- }
- if (st->h) {
- khint_t k;
- for (k = kh_begin(st->h); k != kh_end(st->h); k++) {
- if (!kh_exist(st->h, k))
- continue;
-
- fprintf(stderr, "\t%d\t%d\n", kh_key(st->h, k), kh_val(st->h, k));
- }
- }
-}
-
-#if 1
-/* Returns the number of bits set in val; it the highest bit used */
-static int nbits(int v) {
- static const int MultiplyDeBruijnBitPosition[32] = {
- 1, 10, 2, 11, 14, 22, 3, 30, 12, 15, 17, 19, 23, 26, 4, 31,
- 9, 13, 21, 29, 16, 18, 25, 8, 20, 28, 24, 7, 27, 6, 5, 32
- };
-
- v |= v >> 1; // first up to set all bits 1 after the first 1 */
- v |= v >> 2;
- v |= v >> 4;
- v |= v >> 8;
- v |= v >> 16;
-
- // DeBruijn magic to find top bit
- return MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27];
-}
-#endif
-
-/*
- * Computes entropy from integer frequencies for various encoding methods and
- * picks the best encoding.
- *
- * FIXME: we could reuse some of the code here for the actual encoding
- * parameters too. Eg the best 'k' for SUBEXP or the code lengths for huffman.
- *
- * Returns the best codec to use.
- */
-enum cram_encoding cram_stats_encoding(cram_fd *fd, cram_stats *st) {
- enum cram_encoding best_encoding = E_NULL;
- int best_size = INT_MAX, bits;
- int nvals, i, ntot = 0, max_val = 0, min_val = INT_MAX, k;
- int *vals = NULL, *freqs = NULL, vals_alloc = 0, *codes;
-
- //cram_stats_dump(st);
-
- /* Count number of unique symbols */
- for (nvals = i = 0; i < MAX_STAT_VAL; i++) {
- if (!st->freqs[i])
- continue;
- if (nvals >= vals_alloc) {
- vals_alloc = vals_alloc ? vals_alloc*2 : 1024;
- vals = realloc(vals, vals_alloc * sizeof(int));
- freqs = realloc(freqs, vals_alloc * sizeof(int));
- if (!vals || !freqs) {
- if (vals) free(vals);
- if (freqs) free(freqs);
- return E_HUFFMAN; // Cannot do much else atm
- }
- }
- vals[nvals] = i;
- freqs[nvals] = st->freqs[i];
- ntot += freqs[nvals];
- if (max_val < i) max_val = i;
- if (min_val > i) min_val = i;
- nvals++;
- }
- if (st->h) {
- khint_t k;
- int i;
-
- for (k = kh_begin(st->h); k != kh_end(st->h); k++) {
- if (!kh_exist(st->h, k))
- continue;
-
- if (nvals >= vals_alloc) {
- vals_alloc = vals_alloc ? vals_alloc*2 : 1024;
- vals = realloc(vals, vals_alloc * sizeof(int));
- freqs = realloc(freqs, vals_alloc * sizeof(int));
- if (!vals || !freqs)
- return E_HUFFMAN; // Cannot do much else atm
- }
- i = kh_key(st->h, k);
- vals[nvals]=i;
- freqs[nvals] = kh_val(st->h, k);
- ntot += freqs[nvals];
- if (max_val < i) max_val = i;
- if (min_val > i) min_val = i;
- nvals++;
- }
- }
-
- st->nvals = nvals;
- assert(ntot == st->nsamp);
-
- if (nvals <= 1) {
- free(vals);
- free(freqs);
- return E_HUFFMAN;
- }
-
- if (fd->verbose > 1)
- fprintf(stderr, "Range = %d..%d, nvals=%d, ntot=%d\n",
- min_val, max_val, nvals, ntot);
-
- /* Theoretical entropy */
-// if (fd->verbose > 1) {
-// double dbits = 0;
-// for (i = 0; i < nvals; i++) {
-// dbits += freqs[i] * log((double)freqs[i]/ntot);
-// }
-// dbits /= -log(2);
-// if (fd->verbose > 1)
-// fprintf(stderr, "Entropy = %f\n", dbits);
-// }
-
- if (nvals > 1 && ntot > 256) {
-#if 0
- /*
- * CRUDE huffman estimator. Round to closest and round up from 0
- * to 1 bit.
- *
- * With and without ITF8 incase we have a few discrete values but with
- * large magnitude.
- *
- * Note rans0/arith0 and Z_HUFFMAN_ONLY vs internal huffman can be
- * compared in this way, but order-1 (eg rans1) or maybe LZ77 modes
- * may detect the correlation of high bytes to low bytes in multi-
- * byte values. So this predictor breaks down.
- */
- double dbits = 0; // entropy + ~huffman
- double dbitsH = 0;
- double dbitsE = 0; // external entropy + ~huffman
- double dbitsEH = 0;
- int F[256] = {0}, n = 0;
- double e = 0; // accumulated error bits
- for (i = 0; i < nvals; i++) {
- double x; int X;
- unsigned int v = vals[i];
-
- //Better encoding would cope with sign.
- //v = ABS(vals[i])*2+(vals[i]<0);
-
- if (!(v & ~0x7f)) {
- F[v] += freqs[i], n+=freqs[i];
- } else if (!(v & ~0x3fff)) {
- F[(v>>8) |0x80] += freqs[i];
- F[ v &0xff] += freqs[i], n+=2*freqs[i];
- } else if (!(v & ~0x1fffff)) {
- F[(v>>16)|0xc0] += freqs[i];
- F[(v>>8 )&0xff] += freqs[i];
- F[ v &0xff] += freqs[i], n+=3*freqs[i];
- } else if (!(v & ~0x0fffffff)) {
- F[(v>>24)|0xe0] += freqs[i];
- F[(v>>16)&0xff] += freqs[i];
- F[(v>>8 )&0xff] += freqs[i];
- F[ v &0xff] += freqs[i], n+=4*freqs[i];
- } else {
- F[(v>>28)|0xf0] += freqs[i];
- F[(v>>20)&0xff] += freqs[i];
- F[(v>>12)&0xff] += freqs[i];
- F[(v>>4 )&0xff] += freqs[i];
- F[ v &0x0f] += freqs[i], n+=5*freqs[i];
- }
-
- x = -log((double)freqs[i]/ntot)/.69314718055994530941;
- X = x+0.5;
- if ((int)(x+((double)e/freqs[i])+.5)>X) {
- X++;
- } else if ((int)(x+((double)e/freqs[i])+.5)<X) {
- X--;
- }
- e-=freqs[i]*(X-x);
- X += (X==0);
-
- //fprintf(stderr, "Val %d = %d x %d (ent %f, %d) e %f\n", i, v, freqs[i], x, X, e);
-
- dbits += freqs[i] * x;
- dbitsH += freqs[i] * X;
- }
-
- for (i = 0; i < 256; i++) {
- if (F[i]) {
- double x = -log((double)F[i]/n)/.69314718055994530941;
- int X = x+0.5;
- X += (X==0);
- dbitsE += F[i] * x;
- dbitsEH += F[i] * X;
-
- //fprintf(stderr, "Val %d = %d x %d (e %f, %d)\n", i, i, F[i], x, X);
- }
- }
-
- //fprintf(stderr, "CORE Entropy = %f, %f\n", dbits/8, dbitsH/8);
- //fprintf(stderr, "Ext. Entropy = %f, %f\n", dbitsE/8, dbitsEH/8);
-
- if (dbitsE < 1000 || dbitsE / dbits > 1.1) {
- //fprintf(stderr, "=> %d < 200 ? E_HUFFMAN : E_BETA\n", nvals);
- free(vals); free(freqs);
- return nvals < 200 ? E_HUFFMAN : E_BETA;
- }
-#endif
- free(vals); free(freqs);
- return E_EXTERNAL;
- }
-
- /*
- * Avoid complex stats for now, just do heuristic of HUFFMAN for small
- * alphabets and BETA for anything large.
- */
- free(vals); free(freqs);
- return nvals < 200 ? E_HUFFMAN : E_BETA;
- //return E_HUFFMAN;
- //return E_EXTERNAL;
-
-
- /* We only support huffman now anyway... */
- //free(vals); free(freqs); return E_HUFFMAN;
-
- /* Beta */
- bits = nbits(max_val - min_val) * ntot;
- if (fd->verbose > 1)
- fprintf(stderr, "BETA = %d\n", bits);
- if (best_size > bits)
- best_size = bits, best_encoding = E_BETA;
-
-#if 0
- /* Unary */
- if (min_val >= 0) {
- for (bits = i = 0; i < nvals; i++)
- bits += freqs[i]*(vals[i]+1);
- if (fd->verbose > 1)
- fprintf(stderr, "UNARY = %d\n", bits);
- if (best_size > bits)
- best_size = bits, best_encoding = E_NULL; //E_UNARY;
- }
-
- /* Gamma */
- for (bits = i = 0; i < nvals; i++)
- bits += ((nbits(vals[i]-min_val+1)-1) + nbits(vals[i]-min_val+1)) * freqs[i];
- if (fd->verbose > 1)
- fprintf(stderr, "GAMMA = %d\n", bits);
- if (best_size > bits)
- best_size = bits, best_encoding = E_GAMMA;
-
- /* Subexponential */
- for (k = 0; k < 10; k++) {
- for (bits = i = 0; i < nvals; i++) {
- if (vals[i]-min_val < (1<<k))
- bits += (1 + k)*freqs[i];
- else
- bits += (nbits(vals[i]-min_val)*2-k)*freqs[i];
- }
-
- if (fd->verbose > 1)
- fprintf(stderr, "SUBEXP%d = %d\n", k, bits);
- if (best_size > bits)
- best_size = bits, best_encoding = E_SUBEXP;
- }
-#endif
-
- /* byte array len */
-
- /* byte array stop */
-
- /* External? Guesswork! */
-
- /* Huffman */
-// qsort(freqs, nvals, sizeof(freqs[0]), sort_freqs);
-// for (i = 0; i < nvals; i++) {
-// fprintf(stderr, "%d = %d\n", i, freqs[i]);
-// vals[i] = 0;
-// }
-
- /* Grow freqs to 2*freqs, to store sums */
- /* Vals holds link data */
- freqs = realloc(freqs, 2*nvals*sizeof(*freqs));
- codes = calloc(2*nvals, sizeof(*codes));
- if (!freqs || !codes)
- return E_HUFFMAN; // Cannot do much else atm
-
- /* Inefficient, use pointers to form chain so we can insert and maintain
- * a sorted list? This is currently O(nvals^2) complexity.
- */
- for (;;) {
- int low1 = INT_MAX, low2 = INT_MAX;
- int ind1 = 0, ind2 = 0;
- for (i = 0; i < nvals; i++) {
- if (freqs[i] < 0)
- continue;
- if (low1 > freqs[i])
- low2 = low1, ind2 = ind1, low1 = freqs[i], ind1 = i;
- else if (low2 > freqs[i])
- low2 = freqs[i], ind2 = i;
- }
- if (low2 == INT_MAX)
- break;
-
- //fprintf(stderr, "Merge ind %d (%d), %d (%d) = %d+%d, => %d=%d\n",
- // ind1, vals[ind1], ind2, vals[ind2], low1, low2,
- // nvals, low1+low2);
-
- freqs[nvals] = low1 + low2;
- codes[ind1] = nvals;
- codes[ind2] = nvals;
- freqs[ind1] *= -1;
- freqs[ind2] *= -1;
- nvals++;
- }
- nvals = nvals/2+1;
-
- for (i = 0; i < nvals; i++) {
- int code_len = 0;
- for (k = codes[i]; k; k = codes[k])
- code_len++;
- codes[i] = code_len;
- freqs[i] *= -1;
- //fprintf(stderr, "%d / %d => %d\n", vals[i], freqs[i], codes[i]);
- }
-
- for (bits = i = 0; i < nvals; i++) {
- bits += freqs[i] * codes[i];
- }
- if (fd->verbose > 1)
- fprintf(stderr, "HUFFMAN = %d\n", bits);
- if (best_size >= bits)
- best_size = bits, best_encoding = E_HUFFMAN;
- free(codes);
-
- free(vals);
- free(freqs);
-
- return best_encoding;
-}
-
-void cram_stats_free(cram_stats *st) {
- if (st->h)
- kh_destroy(m_i2i, st->h);
- free(st);
-}
diff --git a/htslib/cram/cram_stats.h b/htslib/cram/cram_stats.h
deleted file mode 100644
index b471e68..0000000
--- a/htslib/cram/cram_stats.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _CRAM_STATS_H_
-#define _CRAM_STATS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-cram_stats *cram_stats_create(void);
-void cram_stats_add(cram_stats *st, int32_t val);
-void cram_stats_del(cram_stats *st, int32_t val);
-void cram_stats_dump(cram_stats *st);
-void cram_stats_free(cram_stats *st);
-
-/*
- * Computes entropy from integer frequencies for various encoding methods and
- * picks the best encoding.
- *
- * FIXME: we could reuse some of the code here for the actual encoding
- * parameters too. Eg the best 'k' for SUBEXP or the code lengths for huffman.
- *
- * Returns the best codec to use.
- */
-enum cram_encoding cram_stats_encoding(cram_fd *fd, cram_stats *st);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/cram/cram_structs.h b/htslib/cram/cram_structs.h
deleted file mode 100644
index ab9f5bf..0000000
--- a/htslib/cram/cram_structs.h
+++ /dev/null
@@ -1,809 +0,0 @@
-/*
-Copyright (c) 2012-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _CRAM_STRUCTS_H_
-#define _CRAM_STRUCTS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Defines in-memory structs for the basic file-format objects in the
- * CRAM format.
- *
- * The basic file format is:
- * File-def SAM-hdr Container Container ...
- *
- * Container:
- * Service-block data-block data-block ...
- *
- * Multiple blocks in a container are grouped together as slices,
- * also sometimes referred to as landmarks in the spec.
- */
-
-
-#include <stdint.h>
-
-#include "cram/thread_pool.h"
-#include "cram/string_alloc.h"
-#include "htslib/khash.h"
-
-// Generic hash-map integer -> integer
-KHASH_MAP_INIT_INT(m_i2i, int)
-
-// Generic hash-set integer -> (existance)
-KHASH_SET_INIT_INT(s_i2i)
-
-// For brevity
-typedef unsigned char uc;
-
-/*
- * A union for the preservation map. Required for khash.
- */
-typedef union {
- int i;
- char *p;
-} pmap_t;
-
-// Generates static functions here which isn't ideal, but we have no way
-// currently to declare the kh_map_t structure here without also declaring a
-// duplicate in the .c files due to the nature of the KHASH macros.
-KHASH_MAP_INIT_STR(map, pmap_t)
-
-struct hFILE;
-
-#define SEQS_PER_SLICE 10000
-#define SLICE_PER_CNT 1
-
-#define CRAM_SUBST_MATRIX "CGTNAGTNACTNACGNACGT"
-
-#define MAX_STAT_VAL 1024
-//#define MAX_STAT_VAL 16
-typedef struct {
- int freqs[MAX_STAT_VAL];
- khash_t(m_i2i) *h;
- int nsamp; // total number of values added
- int nvals; // total number of unique values added
-} cram_stats;
-
-/* NB: matches java impl, not the spec */
-enum cram_encoding {
- E_NULL = 0,
- E_EXTERNAL = 1,
- E_GOLOMB = 2,
- E_HUFFMAN = 3,
- E_BYTE_ARRAY_LEN = 4,
- E_BYTE_ARRAY_STOP = 5,
- E_BETA = 6,
- E_SUBEXP = 7,
- E_GOLOMB_RICE = 8,
- E_GAMMA = 9
-};
-
-enum cram_external_type {
- E_INT = 1,
- E_LONG = 2,
- E_BYTE = 3,
- E_BYTE_ARRAY = 4,
- E_BYTE_ARRAY_BLOCK = 5,
-};
-
-/* External IDs used by this implementation (only assumed during writing) */
-enum cram_DS_ID {
- DS_CORE = 0,
- DS_aux = 1, // aux_blk
- DS_aux_OQ = 2,
- DS_aux_BQ = 3,
- DS_aux_BD = 4,
- DS_aux_BI = 5,
- DS_aux_FZ = 6, // also ZM:B
- DS_aux_oq = 7, // other qualities
- DS_aux_os = 8, // other sequences
- DS_aux_oz = 9, // other strings
- DS_ref,
- DS_RN, // name_blk
- DS_QS, // qual_blk
- DS_IN, // base_blk
- DS_SC, // soft_blk
-
- DS_BF, // start loop
- DS_CF,
- DS_AP,
- DS_RG,
- DS_MQ,
- DS_NS,
- DS_MF,
- DS_TS,
- DS_NP,
- DS_NF,
- DS_RL,
- DS_FN,
- DS_FC,
- DS_FP,
- DS_DL,
- DS_BA,
- DS_BS,
- DS_TL,
- DS_RI,
- DS_RS,
- DS_PD,
- DS_HC,
- DS_BB,
- DS_QQ,
-
- DS_TN, // end loop
-
- DS_RN_len,
- DS_SC_len,
- DS_BB_len,
- DS_QQ_len,
-
- DS_TC, // CRAM v1.0 tags
- DS_TM, // test
- DS_TV, // test
-
- DS_END,
-};
-
-/* "File Definition Structure" */
-typedef struct {
- char magic[4];
- uint8_t major_version;
- uint8_t minor_version;
- char file_id[20]; // Filename or SHA1 checksum
-} cram_file_def;
-
-#define CRAM_MAJOR_VERS(v) ((v) >> 8)
-#define CRAM_MINOR_VERS(v) ((v) & 0xff)
-
-struct cram_slice;
-
-enum cram_block_method {
- ERROR = -1,
- RAW = 0,
- GZIP = 1,
- BZIP2 = 2,
- LZMA = 3,
- RANS = 4, // Generic; either order
- RANS0 = 4,
- RANS1 = 10, // Not externalised; stored as RANS (generic)
- GZIP_RLE = 11, // NB: not externalised in CRAM
-};
-
-enum cram_content_type {
- CT_ERROR = -1,
- FILE_HEADER = 0,
- COMPRESSION_HEADER = 1,
- MAPPED_SLICE = 2,
- UNMAPPED_SLICE = 3, // CRAM V1.0 only
- EXTERNAL = 4,
- CORE = 5,
-};
-
-/* Compression metrics */
-typedef struct {
- // number of trials and time to next trial
- int trial;
- int next_trial;
-
- // aggregate sizes during trials
- int sz_gz_rle;
- int sz_gz_def;
- int sz_rans0;
- int sz_rans1;
- int sz_bzip2;
- int sz_lzma;
-
- // resultant method from trials
- int method;
- int strat;
-
- // Revisions of method, to allow culling of continually failing ones.
- int gz_rle_cnt;
- int gz_def_cnt;
- int rans0_cnt;
- int rans1_cnt;
- int bzip2_cnt;
- int lzma_cnt;
- int revised_method;
-
- double gz_rle_extra;
- double gz_def_extra;
- double rans0_extra;
- double rans1_extra;
- double bzip2_extra;
- double lzma_extra;
-} cram_metrics;
-
-/* Block */
-typedef struct {
- enum cram_block_method method, orig_method;
- enum cram_content_type content_type;
- int32_t content_id;
- int32_t comp_size;
- int32_t uncomp_size;
- uint32_t crc32;
- int32_t idx; /* offset into data */
- unsigned char *data;
-
- // For bit I/O
- size_t alloc;
- size_t byte;
- int bit;
-} cram_block;
-
-struct cram_codec; /* defined in cram_codecs.h */
-struct cram_map;
-
-#define CRAM_MAP_HASH 32
-#define CRAM_MAP(a,b) (((a)*3+(b))&(CRAM_MAP_HASH-1))
-
-/* Compression header block */
-typedef struct {
- int32_t ref_seq_id;
- int32_t ref_seq_start;
- int32_t ref_seq_span;
- int32_t num_records;
- int32_t num_landmarks;
- int32_t *landmark;
-
- /* Flags from preservation map */
- int mapped_qs_included;
- int unmapped_qs_included;
- int unmapped_placed;
- int qs_included;
- int read_names_included;
- int AP_delta;
- // indexed by ref-base and subst. code
- char substitution_matrix[5][4];
-
- // TD Dictionary as a concatenated block
- cram_block *TD_blk; // Tag Dictionary
- int nTL; // number of TL entries in TD
- unsigned char **TL; // array of size nTL, pointer into TD_blk.
- khash_t(m_s2i) *TD_hash; // Keyed on TD strings, map to TL[] indices
- string_alloc_t *TD_keys; // Pooled keys for TD hash.
-
- khash_t(map) *preservation_map;
- struct cram_map *rec_encoding_map[CRAM_MAP_HASH];
- struct cram_map *tag_encoding_map[CRAM_MAP_HASH];
-
- struct cram_codec *codecs[DS_END];
-
- char *uncomp; // A single block of uncompressed data
- size_t uncomp_size, uncomp_alloc;
-
- unsigned int data_series; // See cram_fields enum below
-} cram_block_compression_hdr;
-
-typedef struct cram_map {
- int key; /* 0xe0 + 3 bytes */
- enum cram_encoding encoding;
- int offset; /* Offset into a single block of memory */
- int size; /* Size */
- struct cram_codec *codec;
- struct cram_map *next; // for noddy internal hash
-} cram_map;
-
-/* Mapped or unmapped slice header block */
-typedef struct {
- enum cram_content_type content_type;
- int32_t ref_seq_id; /* if content_type == MAPPED_SLICE */
- int32_t ref_seq_start; /* if content_type == MAPPED_SLICE */
- int32_t ref_seq_span; /* if content_type == MAPPED_SLICE */
- int32_t num_records;
- int64_t record_counter;
- int32_t num_blocks;
- int32_t num_content_ids;
- int32_t *block_content_ids;
- int32_t ref_base_id; /* if content_type == MAPPED_SLICE */
- unsigned char md5[16];
-} cram_block_slice_hdr;
-
-struct ref_entry;
-
-/*
- * Container.
- *
- * Conceptually a container is split into slices, and slices into blocks.
- * However on disk it's just a list of blocks and we need to query the
- * block types to identify the start/end points of the slices.
- *
- * OR... are landmarks the start/end points of slices?
- */
-typedef struct {
- int32_t length;
- int32_t ref_seq_id;
- int32_t ref_seq_start;
- int32_t ref_seq_span;
- int64_t record_counter;
- int64_t num_bases;
- int32_t num_records;
- int32_t num_blocks;
- int32_t num_landmarks;
- int32_t *landmark;
-
- /* Size of container header above */
- size_t offset;
-
- /* Compression header is always the first block? */
- cram_block_compression_hdr *comp_hdr;
- cram_block *comp_hdr_block;
-
- /* For construction purposes */
- int max_slice, curr_slice; // maximum number of slices
- int max_rec, curr_rec; // current and max recs per slice
- int max_c_rec, curr_c_rec; // current and max recs per container
- int slice_rec; // rec no. for start of this slice
- int curr_ref; // current ref ID. -2 for no previous
- int last_pos; // last record position
- struct cram_slice **slices, *slice;
- int pos_sorted; // boolean, 1=>position sorted data
- int max_apos; // maximum position, used if pos_sorted==0
- int last_slice; // number of reads in last slice (0 for 1st)
- int multi_seq; // true if packing multi seqs per cont/slice
- int unsorted; // true is AP_delta is 0.
-
- /* Copied from fd before encoding, to allow multi-threading */
- int ref_start, first_base, last_base, ref_id, ref_end;
- char *ref;
- //struct ref_entry *ref;
-
- /* For multi-threading */
- bam_seq_t **bams;
-
- /* Statistics for encoding */
- cram_stats *stats[DS_END];
-
- khash_t(s_i2i) *tags_used; // set of tag types in use, for tag encoding map
- int *refs_used; // array of frequency of ref seq IDs
-
- uint32_t crc32; // CRC32
-} cram_container;
-
-/*
- * A single cram record
- */
-typedef struct {
- struct cram_slice *s; // Filled out by cram_decode only
-
- int32_t ref_id; // fixed for all recs in slice?
- int32_t flags; // BF
- int32_t cram_flags; // CF
- int32_t len; // RL
- int32_t apos; // AP
- int32_t rg; // RG
- int32_t name; // RN; idx to s->names_blk
- int32_t name_len;
- int32_t mate_line; // index to another cram_record
- int32_t mate_ref_id;
- int32_t mate_pos; // NP
- int32_t tlen; // TS
-
- // Auxiliary data
- int32_t ntags; // TC
- int32_t aux; // idx to s->aux_blk
- int32_t aux_size; // total size of packed ntags in aux_blk
-#ifndef TN_external
- int32_t TN_idx; // TN; idx to s->TN;
-#else
- int32_t tn; // idx to s->tn_blk
-#endif
- int TL;
-
- int32_t seq; // idx to s->seqs_blk
- int32_t qual; // idx to s->qual_blk
- int32_t cigar; // idx to s->cigar
- int32_t ncigar;
- int32_t aend; // alignment end
- int32_t mqual; // MQ
-
- int32_t feature; // idx to s->feature
- int32_t nfeature; // number of features
- int32_t mate_flags; // MF
-} cram_record;
-
-// Accessor macros as an analogue of the bam ones
-#define cram_qname(c) (&(c)->s->name_blk->data[(c)->name])
-#define cram_seq(c) (&(c)->s->seqs_blk->data[(c)->seq])
-#define cram_qual(c) (&(c)->s->qual_blk->data[(c)->qual])
-#define cram_aux(c) (&(c)->s->aux_blk->data[(c)->aux])
-#define cram_seqi(c,i) (cram_seq((c))[(i)])
-#define cram_name_len(c) ((c)->name_len)
-#define cram_strand(c) (((c)->flags & BAM_FREVERSE) != 0)
-#define cram_mstrand(c) (((c)->flags & BAM_FMREVERSE) != 0)
-#define cram_cigar(c) (&((cr)->s->cigar)[(c)->cigar])
-
-/*
- * A feature is a base difference, used for the sequence reference encoding.
- * (We generate these internally when writing CRAM.)
- */
-typedef struct {
- union {
- struct {
- int pos;
- int code;
- int base; // substitution code
- } X;
- struct {
- int pos;
- int code;
- int base; // actual base & qual
- int qual;
- } B;
- struct {
- int pos;
- int code;
- int seq_idx; // index to s->seqs_blk
- int len;
- } b;
- struct {
- int pos;
- int code;
- int qual;
- } Q;
- struct {
- int pos;
- int code;
- int len;
- int seq_idx; // soft-clip multiple bases
- } S;
- struct {
- int pos;
- int code;
- int len;
- int seq_idx; // insertion multiple bases
- } I;
- struct {
- int pos;
- int code;
- int base; // insertion single base
- } i;
- struct {
- int pos;
- int code;
- int len;
- } D;
- struct {
- int pos;
- int code;
- int len;
- } N;
- struct {
- int pos;
- int code;
- int len;
- } P;
- struct {
- int pos;
- int code;
- int len;
- } H;
- };
-} cram_feature;
-
-/*
- * A slice is really just a set of blocks, but it
- * is the logical unit for decoding a number of
- * sequences.
- */
-typedef struct cram_slice {
- cram_block_slice_hdr *hdr;
- cram_block *hdr_block;
- cram_block **block;
- cram_block **block_by_id;
-
- /* State used during encoding/decoding */
- int last_apos, max_apos;
-
- /* Array of decoded cram records */
- cram_record *crecs;
-
- /* An dynamically growing buffers for data pointed
- * to by crecs[] array.
- */
- uint32_t *cigar;
- uint32_t cigar_alloc;
- uint32_t ncigar;
-
- cram_feature *features;
- int nfeatures;
- int afeatures; // allocated size of features
-
-#ifndef TN_external
- // TN field (Tag Name)
- uint32_t *TN;
- int nTN, aTN; // used and allocated size for TN[]
-#else
- cram_block *tn_blk;
- int tn_id;
-#endif
-
- // For variable sized elements which are always external blocks.
- cram_block *name_blk;
- cram_block *seqs_blk;
- cram_block *qual_blk;
- cram_block *base_blk;
- cram_block *soft_blk;
- cram_block *aux_blk;
- cram_block *aux_OQ_blk;
- cram_block *aux_BQ_blk;
- cram_block *aux_BD_blk;
- cram_block *aux_BI_blk;
- cram_block *aux_FZ_blk;
- cram_block *aux_oq_blk;
- cram_block *aux_os_blk;
- cram_block *aux_oz_blk;
-
- string_alloc_t *pair_keys; // Pooled keys for pair hash.
- khash_t(m_s2i) *pair[2]; // for identifying read-pairs in this slice.
-
- char *ref; // slice of current reference
- int ref_start; // start position of current reference;
- int ref_end; // end position of current reference;
- int ref_id;
-} cram_slice;
-
-/*-----------------------------------------------------------------------------
- * Consider moving reference handling to cram_refs.[ch]
- */
-// from fa.fai / samtools faidx files
-typedef struct ref_entry {
- char *name;
- char *fn;
- int64_t length;
- int64_t offset;
- int bases_per_line;
- int line_length;
- int64_t count; // for shared references so we know to dealloc seq
- char *seq;
-} ref_entry;
-
-KHASH_MAP_INIT_STR(refs, ref_entry*)
-
-// References structure.
-typedef struct {
- string_alloc_t *pool; // String pool for holding filenames and SN vals
-
- khash_t(refs) *h_meta; // ref_entry*, index by name
- ref_entry **ref_id; // ref_entry*, index by ID
- int nref; // number of ref_entry
-
- char *fn; // current file opened
- BGZF *fp; // and the hFILE* to go with it.
-
- int count; // how many cram_fd sharing this refs struct
-
- pthread_mutex_t lock; // Mutex for multi-threaded updating
- ref_entry *last; // Last queried sequence
- int last_id; // Used in cram_ref_decr_locked to delay free
-} refs_t;
-
-/*-----------------------------------------------------------------------------
- * CRAM index
- *
- * Detect format by number of entries per line.
- * 5 => 1.0 (refid, start, nseq, C offset, slice)
- * 6 => 1.1 (refid, start, span, C offset, S offset, S size)
- *
- * Indices are stored in a nested containment list, which is trivial to set
- * up as the indices are on sorted data so we're appending to the nclist
- * in sorted order. Basically if a slice entirely fits within a previous
- * slice then we append to that slices list. This is done recursively.
- *
- * Lists are sorted on two dimensions: ref id + slice coords.
- */
-typedef struct cram_index {
- int nslice, nalloc; // total number of slices
- struct cram_index *e; // array of size nslice
-
- int refid; // 1.0 1.1
- int start; // 1.0 1.1
- int end; // 1.1
- int nseq; // 1.0 - undocumented
- int slice; // 1.0 landmark index, 1.1 landmark value
- int len; // 1.1 - size of slice in bytes
- int64_t offset; // 1.0 1.1
-} cram_index;
-
-typedef struct {
- int refid;
- int start;
- int end;
-} cram_range;
-
-/*-----------------------------------------------------------------------------
- */
-/* CRAM File handle */
-
-typedef struct spare_bams {
- bam_seq_t **bams;
- struct spare_bams *next;
-} spare_bams;
-
-typedef struct cram_fd {
- struct hFILE *fp;
- int mode; // 'r' or 'w'
- int version;
- cram_file_def *file_def;
- SAM_hdr *header;
-
- char *prefix;
- int64_t record_counter;
- int err;
-
- // Most recent compression header decoded
- //cram_block_compression_hdr *comp_hdr;
- //cram_block_slice_hdr *slice_hdr;
-
- // Current container being processed.
- cram_container *ctr;
-
- // positions for encoding or decoding
- int first_base, last_base;
-
- // cached reference portion
- refs_t *refs; // ref meta-data structure
- char *ref, *ref_free; // current portion held in memory
- int ref_id;
- int ref_start;
- int ref_end;
- char *ref_fn; // reference fasta filename
-
- // compression level and metrics
- int level;
- cram_metrics *m[DS_END];
-
- // options
- int decode_md; // Whether to export MD and NM tags
- int verbose;
- int seqs_per_slice;
- int slices_per_container;
- int embed_ref;
- int no_ref;
- int ignore_md5;
- int use_bz2;
- int use_rans;
- int use_lzma;
- int shared_ref;
- unsigned int required_fields;
- cram_range range;
-
- // lookup tables, stored here so we can be trivially multi-threaded
- unsigned int bam_flag_swap[0x1000]; // cram -> bam flags
- unsigned int cram_flag_swap[0x1000];// bam -> cram flags
- unsigned char L1[256]; // ACGT{*} ->0123{4}
- unsigned char L2[256]; // ACGTN{*}->01234{5}
- char cram_sub_matrix[32][32]; // base substituion codes
-
- int index_sz;
- cram_index *index; // array, sizeof index_sz
- off_t first_container;
- int eof;
- int last_slice; // number of recs encoded in last slice
- int multi_seq;
- int unsorted;
- int empty_container; // Marker for EOF block
-
- // thread pool
- int own_pool;
- t_pool *pool;
- t_results_queue *rqueue;
- pthread_mutex_t metrics_lock;
- pthread_mutex_t ref_lock;
- spare_bams *bl;
- pthread_mutex_t bam_list_lock;
- void *job_pending;
- int ooc; // out of containers.
-} cram_fd;
-
-// Translation of required fields to cram data series
-enum cram_fields {
- CRAM_BF = 0x00000001,
- CRAM_AP = 0x00000002,
- CRAM_FP = 0x00000004,
- CRAM_RL = 0x00000008,
- CRAM_DL = 0x00000010,
- CRAM_NF = 0x00000020,
- CRAM_BA = 0x00000040,
- CRAM_QS = 0x00000080,
- CRAM_FC = 0x00000100,
- CRAM_FN = 0x00000200,
- CRAM_BS = 0x00000400,
- CRAM_IN = 0x00000800,
- CRAM_RG = 0x00001000,
- CRAM_MQ = 0x00002000,
- CRAM_TL = 0x00004000,
- CRAM_RN = 0x00008000,
- CRAM_NS = 0x00010000,
- CRAM_NP = 0x00020000,
- CRAM_TS = 0x00040000,
- CRAM_MF = 0x00080000,
- CRAM_CF = 0x00100000,
- CRAM_RI = 0x00200000,
- CRAM_RS = 0x00400000,
- CRAM_PD = 0x00800000,
- CRAM_HC = 0x01000000,
- CRAM_SC = 0x02000000,
- CRAM_BB = 0x04000000,
- CRAM_BB_len = 0x08000000,
- CRAM_QQ = 0x10000000,
- CRAM_QQ_len = 0x20000000,
- CRAM_aux= 0x40000000,
- CRAM_ALL= 0x7fffffff,
-};
-
-// A CIGAR opcode, but not necessarily the implications of it. Eg FC/FP may
-// encode a base difference, but we don't need to know what it is for CIGAR.
-// If we have a soft-clip or insertion, we do need SC/IN though to know how
-// long that array is.
-#define CRAM_CIGAR (CRAM_FN | CRAM_FP | CRAM_FC | CRAM_DL | CRAM_IN | \
- CRAM_SC | CRAM_HC | CRAM_PD | CRAM_RS | CRAM_RL | CRAM_BF)
-
-#define CRAM_SEQ (CRAM_CIGAR | CRAM_BA | CRAM_QS | CRAM_BS | \
- CRAM_RL | CRAM_AP | CRAM_BB | CRAM_QQ)
-
-/* BF bitfields */
-/* Corrected in 1.1. Use bam_flag_swap[bf] and BAM_* macros for 1.0 & 1.1 */
-#define CRAM_FPAIRED 256
-#define CRAM_FPROPER_PAIR 128
-#define CRAM_FUNMAP 64
-#define CRAM_FREVERSE 32
-#define CRAM_FREAD1 16
-#define CRAM_FREAD2 8
-#define CRAM_FSECONDARY 4
-#define CRAM_FQCFAIL 2
-#define CRAM_FDUP 1
-
-#define DS_aux_S "\001"
-#define DS_aux_OQ_S "\002"
-#define DS_aux_BQ_S "\003"
-#define DS_aux_BD_S "\004"
-#define DS_aux_BI_S "\005"
-#define DS_aux_FZ_S "\006"
-#define DS_aux_oq_S "\007"
-#define DS_aux_os_S "\010"
-#define DS_aux_oz_S "\011"
-
-#define CRAM_M_REVERSE 1
-#define CRAM_M_UNMAP 2
-
-
-/* CF bitfields */
-#define CRAM_FLAG_PRESERVE_QUAL_SCORES (1<<0)
-#define CRAM_FLAG_DETACHED (1<<1)
-#define CRAM_FLAG_MATE_DOWNSTREAM (1<<2)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CRAM_STRUCTS_H_ */
diff --git a/htslib/cram/files.c b/htslib/cram/files.c
deleted file mode 100644
index 48f5c32..0000000
--- a/htslib/cram/files.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright (c) 1994, 1996-1997, 2000, 2003 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1 Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2 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.
-
- 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include "cram/misc.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Alliant's Concentrix <sys/stat.h> is hugely deficient */
-/* Define things we require in this program */
-/* Methinks S_IFMT and S_IFDIR aren't defined in POSIX */
-#ifndef S_ISDIR
-#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
-#endif /*!S_ISDIR*/
-#ifndef S_ISREG
-#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG)
-#endif /*!S_ISREG*/
-
-int is_directory(char * fn)
-{
- struct stat buf;
- if ( stat(fn,&buf) ) return 0;
- return S_ISDIR(buf.st_mode);
-}
-
-int is_file(char * fn)
-{
- struct stat buf;
- if ( stat(fn,&buf) ) return 0;
- return S_ISREG(buf.st_mode);
-}
-
-int file_exists(char * fn)
-{
- struct stat buf;
- return ( stat(fn,&buf) == 0);
-}
-
-int file_size(char * fn)
-{
- struct stat buf;
- if ( stat(fn,&buf) != 0) return 0;
- return buf.st_size;
-}
-
diff --git a/htslib/cram/mFILE.c b/htslib/cram/mFILE.c
deleted file mode 100644
index 6407b76..0000000
--- a/htslib/cram/mFILE.c
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
-Copyright (c) 2005-2006, 2008-2009, 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdarg.h>
-
-#include "cram/os.h"
-#include "cram/mFILE.h"
-#include "cram/vlen.h"
-
-/*
- * This file contains memory-based versions of the most commonly used
- * (by io_lib) stdio functions.
- *
- * Actual file IO takes place either on opening or closing an mFILE.
- *
- * Coupled to this are a bunch of rather scary macros which can be obtained
- * by including stdio_hack.h. It is recommended though that you use mFILE.h
- * instead and replace fopen with mfopen (etc). This is more or less
- * mandatory if you wish to use both FILE and mFILE structs in a single file.
- */
-
-static mFILE *m_channel[3]; /* stdin, stdout and stderr fakes */
-
-/*
- * Reads the entirety of fp into memory. If 'fn' exists it is the filename
- * associated with fp. This will be used for more optimal reading (via a
- * stat to identify the size and a single read). Otherwise we use successive
- * reads until EOF.
- *
- * Returns a malloced buffer on success of length *size
- * NULL on failure
- */
-static char *mfload(FILE *fp, const char *fn, size_t *size, int binary) {
- struct stat sb;
- char *data = NULL;
- size_t allocated = 0, used = 0;
- int bufsize = 8192;
-
-#ifdef _WIN32
- if (binary)
- _setmode(_fileno(fp), _O_BINARY);
- else
- _setmode(_fileno(fp), _O_TEXT);
-#endif
-
- if (fn && -1 != stat(fn, &sb)) {
- data = malloc(allocated = sb.st_size);
- bufsize = sb.st_size;
- } else {
- fn = NULL;
- }
-
- do {
- size_t len;
- if (used + bufsize > allocated) {
- allocated += bufsize;
- data = realloc(data, allocated);
- }
- len = fread(data + used, 1, allocated - used, fp);
- if (len > 0)
- used += len;
- } while (!feof(fp) && (fn == NULL || used < sb.st_size));
-
- *size = used;
-
- return data;
-}
-
-/*
- * Creates and returns m_channel[0].
- * We initialise this on the first attempted read, which then slurps in
- * all of stdin until EOF is met.
- */
-mFILE *mstdin(void) {
- if (m_channel[0])
- return m_channel[0];
-
- m_channel[0] = mfcreate(NULL, 0);
- if (NULL == m_channel[0]) return NULL;
- m_channel[0]->fp = stdin;
- return m_channel[0];
-}
-
-static void init_mstdin(void) {
- static int done_stdin = 0;
- if (done_stdin)
- return;
-
- m_channel[0]->data = mfload(stdin, NULL, &m_channel[0]->size, 1);
- m_channel[0]->mode = MF_READ;
- done_stdin = 1;
-}
-
-/*
- * Creates and returns m_channel[1]. This is the fake for stdout. It starts as
- * an empty buffer which is physically written out only when mfflush or
- * mfclose are called.
- */
-mFILE *mstdout(void) {
- if (m_channel[1])
- return m_channel[1];
-
- m_channel[1] = mfcreate(NULL, 0);
- if (NULL == m_channel[1]) return NULL;
- m_channel[1]->fp = stdout;
- m_channel[1]->mode = MF_WRITE;
- return m_channel[1];
-}
-
-/*
- * Stderr as an mFILE.
- * The code handles stderr by returning m_channel[2], but also checking
- * for stderr in fprintf (the common usage of it) to auto-flush.
- */
-mFILE *mstderr(void) {
- if (m_channel[2])
- return m_channel[2];
-
- m_channel[2] = mfcreate(NULL, 0);
- if (NULL == m_channel[2]) return NULL;
- m_channel[2]->fp = stderr;
- m_channel[2]->mode = MF_WRITE;
- return m_channel[2];
-}
-
-
-/*
- * For creating existing mFILE pointers directly from memory buffers.
- */
-mFILE *mfcreate(char *data, int size) {
- mFILE *mf = (mFILE *)malloc(sizeof(*mf));
- if (NULL == mf) return NULL;
- mf->fp = NULL;
- mf->data = data;
- mf->alloced = size;
- mf->size = size;
- mf->eof = 0;
- mf->offset = 0;
- mf->flush_pos = 0;
- mf->mode = MF_READ | MF_WRITE;
- return mf;
-}
-
-/*
- * Recreate an existing mFILE to house new data/size.
- * It also rewinds the file.
- */
-void mfrecreate(mFILE *mf, char *data, int size) {
- if (mf->data)
- free(mf->data);
- mf->data = data;
- mf->size = size;
- mf->alloced = size;
- mf->eof = 0;
- mf->offset = 0;
- mf->flush_pos = 0;
-}
-
-
-/*
- * Creates a new mFILE to contain the contents of the FILE pointer.
- * This mFILE is purely for in-memory operations and has no links to the
- * original FILE* it came from. It also doesn't close the FILE pointer.
- * Consider using mfreopen() is you need different behaviour.
- *
- * Returns mFILE * on success
- * NULL on failure.
- */
-mFILE *mfcreate_from(const char *path, const char *mode_str, FILE *fp) {
- mFILE *mf;
-
- /* Open using mfreopen() */
- if (NULL == (mf = mfreopen(path, mode_str, fp)))
- return NULL;
-
- /* Disassociate from the input stream */
- mf->fp = NULL;
-
- return mf;
-}
-
-/*
- * Converts a FILE * to an mFILE *.
- * Use this for wrapper functions to turn external prototypes requring
- * FILE * as an argument into internal code using mFILE *.
- */
-mFILE *mfreopen(const char *path, const char *mode_str, FILE *fp) {
- mFILE *mf;
- int r = 0, w = 0, a = 0, b = 0, x = 0, mode = 0;
-
- /* Parse mode:
- * r = read file contents (if truncated => don't read)
- * w = write on close
- * a = position at end of buffer
- * x = position at same location as the original fp, don't seek on flush
- */
- if (strchr(mode_str, 'r'))
- r = 1, mode |= MF_READ;
- if (strchr(mode_str, 'w'))
- w = 1, mode |= MF_WRITE | MF_TRUNC;
- if (strchr(mode_str, 'a'))
- w = a = 1, mode |= MF_WRITE | MF_APPEND;
- if (strchr(mode_str, 'b'))
- b = 1, mode |= MF_BINARY;
- if (strchr(mode_str, 'x'))
- x = 1;
- if (strchr(mode_str, '+')) {
- w = 1, mode |= MF_READ | MF_WRITE;
- if (a)
- r = 1;
- }
-
- if (r) {
- mf = mfcreate(NULL, 0);
- if (NULL == mf) return NULL;
- if (!(mode & MF_TRUNC)) {
- mf->data = mfload(fp, path, &mf->size, b);
- mf->alloced = mf->size;
- if (!a)
- fseek(fp, 0, SEEK_SET);
- }
- } else if (w) {
- /* Write - initialise the data structures */
- mf = mfcreate(NULL, 0);
- if (NULL == mf) return NULL;
- } else {
- fprintf(stderr, "Must specify either r, w or a for mode\n");
- return NULL;
- }
- mf->fp = fp;
- mf->mode = mode;
-
- if (x) {
- mf->mode |= MF_MODEX;
- }
-
- if (a) {
- mf->flush_pos = mf->size;
- fseek(fp, 0, SEEK_END);
- }
-
- return mf;
-}
-
-/*
- * Opens a file. If we have read access (r or a+) then it loads the entire
- * file into memory. If We have write access then the pathname is stored.
- * We do not actually write until an mfclose, which then checks this pathname.
- */
-mFILE *mfopen(const char *path, const char *mode) {
- FILE *fp;
-
- if (NULL == (fp = fopen(path, mode)))
- return NULL;
- return mfreopen(path, mode, fp);
-}
-
-/*
- * Closes an mFILE. If the filename is known (implying write access) then this
- * also writes the data to disk.
- *
- * Stdout is handled by calling mfflush which writes to stdout if appropriate.
- */
-int mfclose(mFILE *mf) {
- if (!mf)
- return -1;
-
- mfflush(mf);
-
- if (mf->fp)
- fclose(mf->fp);
-
- mfdestroy(mf);
-
- return 0;
-}
-
-/*
- * Closes the file pointer contained within the mFILE without destroying
- * the in-memory data.
- */
-int mfdetach(mFILE *mf) {
- if (!mf)
- return -1;
-
- mfflush(mf);
-
- if (mf->fp) {
- fclose(mf->fp);
- mf->fp = NULL;
- }
-
- return 0;
-}
-
-/*
- * Destroys an mFILE structure but does not flush or close it
- */
-int mfdestroy(mFILE *mf) {
- if (!mf)
- return -1;
-
- if (mf->data)
- free(mf->data);
- free(mf);
-
- return 0;
-}
-
-/*
- * Steals that data out of an mFILE. The mFILE itself will be closed.
- * It is up to the caller to free the stolen buffer. If size_out is
- * not NULL, mf->size will be stored in it.
- * This is more-or-less the opposite of mfcreate().
- */
-
-void *mfsteal(mFILE *mf, size_t *size_out) {
- void *data;
-
- if (!mf) return NULL;
-
- data = mf->data;
-
- if (NULL != size_out) *size_out = mf->size;
-
- mfdetach(mf);
- mf->data = NULL;
- mfdestroy(mf);
-
- return data;
-}
-
-/*
- * Seek/tell functions. Nothing more than updating and reporting an
- * in-memory index. NB we can seek on stdin or stdout even provided we
- * haven't been flushing.
- */
-int mfseek(mFILE *mf, long offset, int whence) {
- switch (whence) {
- case SEEK_SET:
- mf->offset = offset;
- break;
- case SEEK_CUR:
- mf->offset += offset;
- break;
- case SEEK_END:
- mf->offset = mf->size + offset;
- break;
- default:
- errno = EINVAL;
- return -1;
- }
-
- mf->eof = 0;
- return 0;
-}
-
-long mftell(mFILE *mf) {
- return mf->offset;
-}
-
-void mrewind(mFILE *mf) {
- mf->offset = 0;
- mf->eof = 0;
-}
-
-/*
- * mftruncate is not directly a translation of ftruncate as the latter
- * takes a file descriptor instead of a FILE *. It performs the analogous
- * role though.
- *
- * If offset is -1 then the file is truncated to be the current file
- * offset.
- */
-void mftruncate(mFILE *mf, long offset) {
- mf->size = offset != -1 ? offset : mf->offset;
- if (mf->offset > mf->size)
- mf->offset = mf->size;
-}
-
-int mfeof(mFILE *mf) {
- return mf->eof;
-}
-
-/*
- * mFILE read/write functions. Basically these turn fread/fwrite syntax
- * into memcpy statements, with appropriate memory handling for writing.
- */
-size_t mfread(void *ptr, size_t size, size_t nmemb, mFILE *mf) {
- size_t len;
- char *cptr = (char *)ptr;
-
- if (mf == m_channel[0]) init_mstdin();
-
- if (mf->size <= mf->offset)
- return 0;
-
- len = size * nmemb <= mf->size - mf->offset
- ? size * nmemb
- : mf->size - mf->offset;
- if (!size)
- return 0;
-
- memcpy(cptr, &mf->data[mf->offset], len);
- mf->offset += len;
-
- if (len != size * nmemb) {
- mf->eof = 1;
- }
-
- return len / size;
-}
-
-size_t mfwrite(void *ptr, size_t size, size_t nmemb, mFILE *mf) {
- if (!(mf->mode & MF_WRITE))
- return 0;
-
- /* Append mode => forced all writes to end of file */
- if (mf->mode & MF_APPEND)
- mf->offset = mf->size;
-
- /* Make sure we have enough room */
- while (size * nmemb + mf->offset > mf->alloced) {
- size_t new_alloced = mf->alloced ? mf->alloced * 2 : 1024;
- void * new_data = realloc(mf->data, new_alloced);
- if (NULL == new_data) return 0;
- mf->alloced = new_alloced;
- mf->data = new_data;
- }
-
- /* Record where we need to reflush from */
- if (mf->offset < mf->flush_pos)
- mf->flush_pos = mf->offset;
-
- /* Copy the data over */
- memcpy(&mf->data[mf->offset], ptr, size * nmemb);
- mf->offset += size * nmemb;
- if (mf->size < mf->offset)
- mf->size = mf->offset;
-
- return nmemb;
-}
-
-int mfgetc(mFILE *mf) {
- if (mf == m_channel[0]) init_mstdin();
- if (mf->offset < mf->size) {
- return (unsigned char)mf->data[mf->offset++];
- }
-
- mf->eof = 1;
- return -1;
-}
-
-int mungetc(int c, mFILE *mf) {
- if (mf->offset > 0) {
- mf->data[--mf->offset] = c;
- return c;
- }
-
- mf->eof = 1;
- return -1;
-}
-
-char *mfgets(char *s, int size, mFILE *mf) {
- int i;
-
- if (mf == m_channel[0]) init_mstdin();
- *s = 0;
- for (i = 0; i < size-1;) {
- if (mf->offset < mf->size) {
- s[i] = mf->data[mf->offset++];
- if (s[i++] == '\n')
- break;
- } else {
- mf->eof = 1;
- break;
- }
- }
-
- s[i] = 0;
- return i ? s : NULL;
-}
-
-/*
- * Flushes an mFILE. If this is a real open of a file in write mode then
- * mFILE->fp will be set. We then write out any new data in mFILE since the
- * last flush. We cannot tell what may have been modified as we don't keep
- * track of that, so we typically rewrite out the entire file contents between
- * the last flush_pos and the end of file.
- *
- * For stderr/stdout we also reset the offsets so we cannot modify things
- * we've already output.
- */
-int mfflush(mFILE *mf) {
- if (!mf->fp)
- return 0;
-
- /* FIXME: only do this when opened in write mode */
- if (mf == m_channel[1] || mf == m_channel[2]) {
- if (mf->flush_pos < mf->size) {
- size_t bytes = mf->size - mf->flush_pos;
- if (fwrite(mf->data + mf->flush_pos, 1, bytes, mf->fp) < bytes)
- return -1;
- if (0 != fflush(mf->fp))
- return -1;
- }
-
- /* Stdout & stderr are non-seekable streams so throw away the data */
- mf->offset = mf->size = mf->flush_pos = 0;
- }
-
- /* only flush when opened in write mode */
- if (mf->mode & MF_WRITE) {
- if (mf->flush_pos < mf->size) {
- size_t bytes = mf->size - mf->flush_pos;
- if (!(mf->mode & MF_MODEX)) {
- fseek(mf->fp, mf->flush_pos, SEEK_SET);
- }
- if (fwrite(mf->data + mf->flush_pos, 1, bytes, mf->fp) < bytes)
- return -1;
- if (0 != fflush(mf->fp))
- return -1;
- }
- if (ftell(mf->fp) != -1 &&
- ftruncate(fileno(mf->fp), ftell(mf->fp)) == -1)
- return -1;
- mf->flush_pos = mf->size;
- }
-
- return 0;
-}
-
-/*
- * A wrapper around vsprintf() to write to an mFILE. This also uses vflen() to
- * estimate how many additional bytes of storage will be required for the
- * vsprintf to work.
- */
-int mfprintf(mFILE *mf, char *fmt, ...) {
- int ret;
- size_t est_length;
- va_list args;
-
- va_start(args, fmt);
- est_length = vflen(fmt, args);
- va_end(args);
- while (est_length + mf->offset > mf->alloced) {
- size_t new_alloced = mf->alloced ? mf->alloced * 2 : 1024;
- void * new_data = realloc(mf->data, new_alloced);
- if (NULL == new_data) return -1;
- mf->alloced = new_alloced;
- mf->data = new_data;
- }
-
- va_start(args, fmt);
- ret = vsprintf(&mf->data[mf->offset], fmt, args);
- va_end(args);
-
- if (ret > 0) {
- mf->offset += ret;
- if (mf->size < mf->offset)
- mf->size = mf->offset;
- }
-
- if (mf->fp == stderr) {
- /* Auto-flush for stderr */
- if (0 != mfflush(mf)) return -1;
- }
-
- return ret;
-}
-
-/*
- * Converts an mFILE from binary to ascii mode by replacing all
- * cr-nl with nl.
- *
- * Primarily used on windows when we've uncompressed a binary file which
- * happens to be a text file (eg Experiment File). Previously we would have
- * seeked back to the start and used _setmode(fileno(fp), _O_TEXT).
- *
- * Side effect: resets offset and flush_pos back to the start.
- */
-void mfascii(mFILE *mf) {
- size_t p1, p2;
-
- for (p1 = p2 = 1; p1 < mf->size; p1++, p2++) {
- if (mf->data[p1] == '\n' && mf->data[p1-1] == '\r') {
- p2--; /* delete the \r */
- }
- mf->data[p2] = mf->data[p1];
- }
- mf->size = p2;
-
- mf->offset = mf->flush_pos = 0;
-}
diff --git a/htslib/cram/mFILE.h b/htslib/cram/mFILE.h
deleted file mode 100644
index 5ded9a5..0000000
--- a/htslib/cram/mFILE.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-Copyright (c) 2005-2006, 2008-2009 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _MFILE_H_
-#define _MFILE_H_
-
-#include <stdio.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- FILE *fp;
- char *data;
- size_t alloced;
- int eof;
- int mode; /* open mode in MF_?? define bit pattern */
- size_t size;
- size_t offset;
- size_t flush_pos;
-} mFILE;
-
-#define MF_READ 1
-#define MF_WRITE 2
-#define MF_APPEND 4
-#define MF_BINARY 8
-#define MF_TRUNC 16
-#define MF_MODEX 32
-
-mFILE *mfreopen(const char *path, const char *mode, FILE *fp);
-mFILE *mfopen(const char *path, const char *mode);
-int mfdetach(mFILE *mf);
-int mfclose(mFILE *mf);
-int mfdestroy(mFILE *mf);
-int mfseek(mFILE *mf, long offset, int whence);
-long mftell(mFILE *mf);
-void mrewind(mFILE *mf);
-void mftruncate(mFILE *mf, long offset);
-int mfeof(mFILE *mf);
-size_t mfread(void *ptr, size_t size, size_t nmemb, mFILE *mf);
-size_t mfwrite(void *ptr, size_t size, size_t nmemb, mFILE *mf);
-int mfgetc(mFILE *mf);
-int mungetc(int c, mFILE *mf);
-mFILE *mfcreate(char *data, int size);
-mFILE *mfcreate_from(const char *path, const char *mode_str, FILE *fp);
-void mfrecreate(mFILE *mf, char *data, int size);
-void *mfsteal(mFILE *mf, size_t *size_out);
-char *mfgets(char *s, int size, mFILE *mf);
-int mfflush(mFILE *mf);
-int mfprintf(mFILE *mf, char *fmt, ...);
-mFILE *mstdin(void);
-mFILE *mstdout(void);
-mFILE *mstderr(void);
-void mfascii(mFILE *mf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MFILE_H_ */
diff --git a/htslib/cram/md5.c b/htslib/cram/md5.c
deleted file mode 100644
index 68123c0..0000000
--- a/htslib/cram/md5.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
- * MD5 Message-Digest Algorithm (RFC 1321).
- *
- * Homepage:
- * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- *
- * Author:
- * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
- *
- * This software was written by Alexander Peslyak in 2001. No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted.
- *
- * There's ABSOLUTELY NO WARRANTY, express or implied.
- *
- * (This is a heavily cut-down "BSD license".)
- *
- * This differs from Colin Plumb's older public domain implementation in that
- * no exactly 32-bit integer data type is required (any 32-bit or wider
- * unsigned integer data type will do), there's no compile-time endianness
- * configuration, and the function prototypes match OpenSSL's. No code from
- * Colin Plumb's implementation has been reused; this comment merely compares
- * the properties of the two independent implementations.
- *
- * The primary goals of this implementation are portability and ease of use.
- * It is meant to be fast, but not as fast as possible. Some known
- * optimizations are not included to reduce source code size and avoid
- * compile-time configuration.
- */
-
-#ifndef HAVE_OPENSSL
-
-#include <string.h>
-
-#include "md5.h"
-
-/*
- * The basic MD5 functions.
- *
- * F and G are optimized compared to their RFC 1321 definitions for
- * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
- * implementation.
- */
-#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
-#define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y))))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-
-/*
- * The MD5 transformation for all four rounds.
- */
-#define STEP(f, a, b, c, d, x, t, s) \
- (a) += f((b), (c), (d)) + (x) + (t); \
- (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
- (a) += (b);
-
-/*
- * SET reads 4 input bytes in little-endian byte order and stores them
- * in a properly aligned word in host byte order.
- *
- * The check for little-endian architectures that tolerate unaligned
- * memory accesses is just an optimization. Nothing will break if it
- * doesn't work.
- */
-#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
-#define SET(n) \
- (*(MD5_u32plus *)&ptr[(n) * 4])
-#define GET(n) \
- SET(n)
-#else
-#define SET(n) \
- (ctx->block[(n)] = \
- (MD5_u32plus)ptr[(n) * 4] | \
- ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \
- ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \
- ((MD5_u32plus)ptr[(n) * 4 + 3] << 24))
-#define GET(n) \
- (ctx->block[(n)])
-#endif
-
-/*
- * This processes one or more 64-byte data blocks, but does NOT update
- * the bit counters. There are no alignment requirements.
- */
-static void *body(MD5_CTX *ctx, void *data, unsigned long size)
-{
- unsigned char *ptr;
- MD5_u32plus a, b, c, d;
- MD5_u32plus saved_a, saved_b, saved_c, saved_d;
-
- ptr = data;
-
- a = ctx->a;
- b = ctx->b;
- c = ctx->c;
- d = ctx->d;
-
- do {
- saved_a = a;
- saved_b = b;
- saved_c = c;
- saved_d = d;
-
-/* Round 1 */
- STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
- STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
- STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
- STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
- STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
- STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
- STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
- STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
- STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
- STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
- STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
- STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
- STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
- STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
- STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
- STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
-
-/* Round 2 */
- STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
- STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
- STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
- STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
- STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
- STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
- STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
- STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
- STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
- STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
- STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
- STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
- STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
- STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
- STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
- STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
-
-/* Round 3 */
- STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
- STEP(H, d, a, b, c, GET(8), 0x8771f681, 11)
- STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
- STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23)
- STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
- STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11)
- STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
- STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23)
- STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
- STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11)
- STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
- STEP(H, b, c, d, a, GET(6), 0x04881d05, 23)
- STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
- STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11)
- STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
- STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23)
-
-/* Round 4 */
- STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
- STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
- STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
- STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
- STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
- STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
- STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
- STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
- STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
- STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
- STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
- STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
- STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
- STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
- STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
- STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
-
- a += saved_a;
- b += saved_b;
- c += saved_c;
- d += saved_d;
-
- ptr += 64;
- } while (size -= 64);
-
- ctx->a = a;
- ctx->b = b;
- ctx->c = c;
- ctx->d = d;
-
- return ptr;
-}
-
-void MD5_Init(MD5_CTX *ctx)
-{
- ctx->a = 0x67452301;
- ctx->b = 0xefcdab89;
- ctx->c = 0x98badcfe;
- ctx->d = 0x10325476;
-
- ctx->lo = 0;
- ctx->hi = 0;
-}
-
-void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size)
-{
- MD5_u32plus saved_lo;
- unsigned long used, free;
-
- saved_lo = ctx->lo;
- if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
- ctx->hi++;
- ctx->hi += size >> 29;
-
- used = saved_lo & 0x3f;
-
- if (used) {
- free = 64 - used;
-
- if (size < free) {
- memcpy(&ctx->buffer[used], data, size);
- return;
- }
-
- memcpy(&ctx->buffer[used], data, free);
- data = (unsigned char *)data + free;
- size -= free;
- body(ctx, ctx->buffer, 64);
- }
-
- if (size >= 64) {
- data = body(ctx, data, size & ~(unsigned long)0x3f);
- size &= 0x3f;
- }
-
- memcpy(ctx->buffer, data, size);
-}
-
-void MD5_Final(unsigned char *result, MD5_CTX *ctx)
-{
- unsigned long used, free;
-
- used = ctx->lo & 0x3f;
-
- ctx->buffer[used++] = 0x80;
-
- free = 64 - used;
-
- if (free < 8) {
- memset(&ctx->buffer[used], 0, free);
- body(ctx, ctx->buffer, 64);
- used = 0;
- free = 64;
- }
-
- memset(&ctx->buffer[used], 0, free - 8);
-
- ctx->lo <<= 3;
- ctx->buffer[56] = ctx->lo;
- ctx->buffer[57] = ctx->lo >> 8;
- ctx->buffer[58] = ctx->lo >> 16;
- ctx->buffer[59] = ctx->lo >> 24;
- ctx->buffer[60] = ctx->hi;
- ctx->buffer[61] = ctx->hi >> 8;
- ctx->buffer[62] = ctx->hi >> 16;
- ctx->buffer[63] = ctx->hi >> 24;
-
- body(ctx, ctx->buffer, 64);
-
- result[0] = ctx->a;
- result[1] = ctx->a >> 8;
- result[2] = ctx->a >> 16;
- result[3] = ctx->a >> 24;
- result[4] = ctx->b;
- result[5] = ctx->b >> 8;
- result[6] = ctx->b >> 16;
- result[7] = ctx->b >> 24;
- result[8] = ctx->c;
- result[9] = ctx->c >> 8;
- result[10] = ctx->c >> 16;
- result[11] = ctx->c >> 24;
- result[12] = ctx->d;
- result[13] = ctx->d >> 8;
- result[14] = ctx->d >> 16;
- result[15] = ctx->d >> 24;
-
- memset(ctx, 0, sizeof(*ctx));
-}
-
-#endif
diff --git a/htslib/cram/md5.h b/htslib/cram/md5.h
deleted file mode 100644
index 6b065a1..0000000
--- a/htslib/cram/md5.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
- * MD5 Message-Digest Algorithm (RFC 1321).
- *
- * Homepage:
- * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- *
- * Author:
- * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
- *
- * This software was written by Alexander Peslyak in 2001. No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted.
- *
- * There's ABSOLUTELY NO WARRANTY, express or implied.
- *
- * See md5.c for more information.
- */
-
-#ifdef HAVE_OPENSSL
-#include <openssl/md5.h>
-#elif !defined(_MD5_H)
-#define _MD5_H
-
-/* Any 32-bit or wider unsigned integer data type will do */
-typedef unsigned int MD5_u32plus;
-
-typedef struct {
- MD5_u32plus lo, hi;
- MD5_u32plus a, b, c, d;
- unsigned char buffer[64];
- MD5_u32plus block[16];
-} MD5_CTX;
-
-extern void MD5_Init(MD5_CTX *ctx);
-extern void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size);
-extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/htslib/cram/misc.h b/htslib/cram/misc.h
deleted file mode 100644
index 681b28c..0000000
--- a/htslib/cram/misc.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright (c) 1994-1997, 2001-2002 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1 Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2 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.
-
- 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
- */
-
-/*
-Copyright (c) 2003-2013 Genome Research Ltd.
-
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _misc_h
-#define _misc_h
-
-#include "cram/os.h"
-
-#include <stdio.h>
-#include <stdarg.h> /* varargs needed for v*printf() prototypes */
-#include <sys/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This informs gcc that crash() doesn't return, so it doesn't need to
- * concern itself that code paths going via crash could mean some variables
- * being undefined and then issuing uninitialised variable warnings.
- * This particularly affected convert.
- */
-#ifdef __GNUC__
-# define __NORETURN__ __attribute__ ((__noreturn__))
-#else
-# define __NORETURN__
-#endif
-
-/*
- * Used for printf style argument checking. We can request a function such
- * as vTcl_SetResult does argument checking, avoiding bugs with using
- * %d and passing in a 64-bit record.
- */
-#ifdef __GNUC__
-# define __PRINTF_FORMAT__(a,b) __attribute__ ((format (printf, a, b)))
-#else
-# define __PRINTF_FORMAT__(a,b)
-#endif
-
-extern int is_directory(char * fn);
-extern int is_file(char * fn);
-extern int file_size(char * fn);
-
-#define MIN(A,B) ( ( (A) < (B) ) ? (A) : (B) )
-#define MAX(A,B) ( ( (A) > (B) ) ? (A) : (B) )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*_misc_h*/
diff --git a/htslib/cram/open_trace_file.c b/htslib/cram/open_trace_file.c
deleted file mode 100644
index edad293..0000000
--- a/htslib/cram/open_trace_file.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
-Author: James Bonfield
-
-Copyright (c) 2000-2001 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
-*/
-
-/*
-Copyright (c) 2008, 2009, 2013, 2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <limits.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "cram/os.h"
-#ifndef PATH_MAX
-# define PATH_MAX 1024
-#endif
-
-#include "cram/open_trace_file.h"
-#include "cram/misc.h"
-#include "htslib/hfile.h"
-
-/*
- * Tokenises the search path splitting on colons (unix) or semicolons
- * (windows).
- * We also explicitly add a "./" to the end of the search path
- *
- * Returns: A new search path with items separated by nul chars. Two nul
- * chars in a row represent the end of the tokenised path.
- * Returns NULL for a failure.
- *
- * The returned data has been malloced. It is up to the caller to free this
- * memory.
- */
-char *tokenise_search_path(char *searchpath) {
- char *newsearch;
- unsigned int i, j;
- size_t len;
-#ifdef _WIN32
- char path_sep = ';';
-#else
- char path_sep = ':';
-#endif
-
- if (!searchpath)
- searchpath="";
-
- newsearch = (char *)malloc((len = strlen(searchpath))+5);
- if (!newsearch)
- return NULL;
-
- for (i = 0, j = 0; i < len; i++) {
- /* "::" => ":". Used for escaping colons in http://foo */
- if (i < len-1 && searchpath[i] == ':' && searchpath[i+1] == ':') {
- newsearch[j++] = ':';
- i++;
- continue;
- }
-
- /* Handle http:// and ftp:// too without :: */
- if (path_sep == ':') {
- if ((i == 0 || (i > 0 && searchpath[i-1] == ':')) &&
- (!strncmp(&searchpath[i], "http:", 5) ||
- !strncmp(&searchpath[i], "ftp:", 4) ||
- !strncmp(&searchpath[i], "|http:", 6) ||
- !strncmp(&searchpath[i], "|ftp:", 5) ||
- !strncmp(&searchpath[i], "URL=http:", 9) ||
- !strncmp(&searchpath[i], "URL=ftp:", 8))) {
- do {
- newsearch[j++] = searchpath[i];
- } while (i<len && searchpath[i++] != ':');
- if (searchpath[i] == ':')
- i++;
- if (searchpath[i]=='/')
- newsearch[j++] = searchpath[i++];
- if (searchpath[i]=='/')
- newsearch[j++] = searchpath[i++];
- // Look for host:port
- do {
- newsearch[j++] = searchpath[i++];
- } while (i<len && searchpath[i] != ':' && searchpath[i] != '/');
- newsearch[j++] = searchpath[i++];
- if (searchpath[i] == ':')
- i++;
- }
- }
-
- if (searchpath[i] == path_sep) {
- /* Skip blank path components */
- if (j && newsearch[j-1] != 0)
- newsearch[j++] = 0;
- } else {
- newsearch[j++] = searchpath[i];
- }
- }
-
- if (j)
- newsearch[j++] = 0;
- newsearch[j++] = '.';
- newsearch[j++] = '/';
- newsearch[j++] = 0;
- newsearch[j++] = 0;
-
- return newsearch;
-}
-
-mFILE *find_file_url(char *file, char *url) {
- char buf[8192], *cp;
- mFILE *mf = NULL;
- int maxlen = 8190 - strlen(file), len;
- hFILE *hf;
-
- /* Expand %s for the trace name */
- for (cp = buf; *url && cp - buf < maxlen; url++) {
- if (*url == '%' && *(url+1) == 's') {
- url++;
- cp += strlen(strcpy(cp, file));
- } else {
- *cp++ = *url;
- }
- }
- *cp++ = 0;
-
- if (!(hf = hopen(buf, "r")))
- return NULL;
-
- if (NULL == (mf = mfcreate(NULL, 0)))
- return NULL;
- while ((len = hread(hf, buf, 8192)) > 0) {
- if (mfwrite(buf, len, 1, mf) <= 0) {
- hclose_abruptly(hf);
- mfdestroy(mf);
- return NULL;
- }
- }
- if (hclose(hf) < 0) {
- mfdestroy(mf);
- return NULL;
- }
-
- mrewind(mf);
- return mf;
-}
-
-/*
- * Searches for file in the directory 'dirname'. If it finds it, it opens
- * it. This also searches for compressed versions of the file in dirname
- * too.
- *
- * Returns mFILE pointer if found
- * NULL if not
- */
-static mFILE *find_file_dir(char *file, char *dirname) {
- char path[PATH_MAX+1];
- size_t len = strlen(dirname);
- char *cp;
-
- if (dirname[len-1] == '/')
- len--;
-
- /* Special case for "./" or absolute filenames */
- if (*file == '/' || (len==1 && *dirname == '.')) {
- sprintf(path, "%s", file);
- } else {
- /* Handle %[0-9]*s expansions, if required */
- char *path_end = path;
- *path = 0;
- while ((cp = strchr(dirname, '%'))) {
- char *endp;
- long l = strtol(cp+1, &endp, 10);
- if (*endp != 's') {
- strncpy(path_end, dirname, (endp+1)-dirname);
- path_end += (endp+1)-dirname;
- dirname = endp+1;
- continue;
- }
-
- strncpy(path_end, dirname, cp-dirname);
- path_end += cp-dirname;
- if (l) {
- strncpy(path_end, file, l);
- path_end += MIN(strlen(file), l);
- file += MIN(strlen(file), l);
- } else {
- strcpy(path_end, file);
- path_end += strlen(file);
- file += strlen(file);
- }
- len -= (endp+1) - dirname;
- dirname = endp+1;
- }
- strncpy(path_end, dirname, len);
- path_end += MIN(strlen(dirname), len);
- *path_end = 0;
- if (*file) {
- *path_end++ = '/';
- strcpy(path_end, file);
- }
-
- //fprintf(stderr, "*PATH=\"%s\"\n", path);
- }
-
- if (is_file(path)) {
- return mfopen(path, "rb");
- }
-
- return NULL;
-}
-
-/*
- * ------------------------------------------------------------------------
- * Public functions below.
- */
-
-/*
- * Opens a trace file named 'file'. This is initially looked for as a
- * pathname relative to a file named "relative_to". This may (for
- * example) be the name of an experiment file referencing the trace
- * file. In this case by passing relative_to as the experiment file
- * filename the trace file will be picked up in the same directory as
- * the experiment file. Relative_to may be supplied as NULL.
- *
- * 'file' is looked for at relative_to, then the current directory, and then
- * all of the locations listed in 'path' (which is a colon separated list).
- * If 'path' is NULL it uses the RAWDATA environment variable instead.
- *
- * Returns a mFILE pointer when found.
- * NULL otherwise.
- */
-mFILE *open_path_mfile(char *file, char *path, char *relative_to) {
- char *newsearch;
- char *ele;
- mFILE *fp;
-
- /* Use path first */
- if (!path)
- path = getenv("RAWDATA");
- if (NULL == (newsearch = tokenise_search_path(path)))
- return NULL;
-
- /*
- * Step through the search path testing out each component.
- * We now look through each path element treating some prefixes as
- * special, otherwise we treat the element as a directory.
- */
- for (ele = newsearch; *ele; ele += strlen(ele)+1) {
- char *ele2;
-
- /*
- * '|' prefixing a path component indicates that we do not
- * wish to perform the compression extension searching in that
- * location.
- *
- * NB: this has been removed from the htslib implementation.
- */
- if (*ele == '|') {
- ele2 = ele+1;
- } else {
- ele2 = ele;
- }
-
- if (0 == strncmp(ele2, "URL=", 4)) {
- if ((fp = find_file_url(file, ele2+4))) {
- free(newsearch);
- return fp;
- }
- } else if (!strncmp(ele2, "http:", 5) ||
- !strncmp(ele2, "ftp:", 4)) {
- if ((fp = find_file_url(file, ele2))) {
- free(newsearch);
- return fp;
- }
- } else if ((fp = find_file_dir(file, ele2))) {
- free(newsearch);
- return fp;
- }
- }
-
- free(newsearch);
-
- /* Look in the same location as the incoming 'relative_to' filename */
- if (relative_to) {
- char *cp;
- char relative_path[PATH_MAX+1];
- strcpy(relative_path, relative_to);
- if ((cp = strrchr(relative_path, '/')))
- *cp = 0;
- if ((fp = find_file_dir(file, relative_path)))
- return fp;
- }
-
- return NULL;
-}
diff --git a/htslib/cram/open_trace_file.h b/htslib/cram/open_trace_file.h
deleted file mode 100644
index ee52cb0..0000000
--- a/htslib/cram/open_trace_file.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-Author: James Bonfield
-
-Copyright (c) 2000-2001 MEDICAL RESEARCH COUNCIL
-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.
-
- . Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
-*/
-
-/*
-Copyright (c) 2008, 2009, 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _OPEN_TRACE_FILE_H_
-#define _OPEN_TRACE_FILE_H_
-
-#include "cram/mFILE.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Tokenises the search path splitting on colons (unix) or semicolons
- * (windows).
- * We also explicitly add a "./" to the end of the search path
- *
- * Returns: A new search path with items separated by nul chars. Two nul
- * chars in a row represent the end of the tokenised path.
- * Returns NULL for a failure.
- *
- * The returned data has been malloced. It is up to the caller to free this
- * memory.
- */
-char *tokenise_search_path(char *searchpath);
-
-/*
- * Opens a trace file named 'file'. This is initially looked for as a
- * pathname relative to a file named "relative_to". This may (for
- * example) be the name of an experiment file referencing the trace
- * file. In this case by passing relative_to as the experiment file
- * filename the trace file will be picked up in the same directory as
- * the experiment file. Relative_to may be supplied as NULL.
- *
- * 'file' is looked for at relative_to, then the current directory, and then
- * all of the locations listed in 'path' (which is a colon separated list).
- * If 'path' is NULL it uses the RAWDATA environment variable instead.
- *
- * Returns a mFILE pointer when found.
- * NULL otherwise.
- */
-mFILE *open_path_mfile(char *file, char *path, char *relative_to);
-
-/*
- * Returns a mFILE containing the entire contents of the url;
- * NULL on failure.
- */
-mFILE *find_file_url(char *file, char *url);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OPEN_TRACE_FILE_H_ */
diff --git a/htslib/cram/os.h b/htslib/cram/os.h
deleted file mode 100644
index 22d8096..0000000
--- a/htslib/cram/os.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
-Copyright (c) 1993, 1995-2002 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1 Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2 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.
-
- 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
-*/
-
-/*
-Copyright (c) 2004, 2006, 2009-2011, 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * File: os.h
- *
- * Author:
- * MRC Laboratory of Molecular Biology
- * Hills Road
- * Cambridge CB2 2QH
- * United Kingdom
- *
- * Description: operating system specific type definitions
- *
- */
-
-#ifndef _OS_H_
-#define _OS_H_
-
-#include <limits.h>
-#include <inttypes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*-----------------------------------------------------------------------------
- * Detection of endianness. The main part of this is done in autoconf, but
- * for the case of MacOS FAT binaries we fall back on auto-sensing based on
- * processor type too.
- */
-
-/* Set by autoconf */
-#define SP_LITTLE_ENDIAN
-
-/* Mac FAT binaries or unknown. Auto detect based on CPU type */
-#if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN)
-
-/*
- * x86 equivalents
- */
-#if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686)
-# if defined(SP_BIG_ENDIAN)
-# undef SP_BIG_ENDIAN
-# endif
-# define SP_LITTLE_ENDIAN
-#endif
-
-/*
- * DEC Alpha
- */
-#if defined(__alpha__) || defined(__alpha)
-# if defined(SP_LITTLE_ENDIAN)
-# undef SP_LITTLE_ENDIAN
-# endif
-# define SP_BIG_ENDIAN
-#endif
-
-/*
- * SUN Sparc
- */
-#if defined(__sparc__) || defined(__sparc)
-# if defined(SP_LITTLE_ENDIAN)
-# undef SP_LITTLE_ENDIAN
-# endif
-# define SP_BIG_ENDIAN
-#endif
-
-/*
- * PowerPC
- */
-#if defined(__ppc__) || defined(__ppc)
-# if defined(SP_LITTLE_ENDIAN)
-# undef SP_LITTLE_ENDIAN
-# endif
-# define SP_BIG_ENDIAN
-#endif
-
-/* Some catch-alls */
-#if defined(__LITTLE_ENDIAN__) || defined(__LITTLEENDIAN__)
-# define SP_LITTLE_ENDIAN
-#endif
-
-#if defined(__BIG_ENDIAN__) || defined(__BIGENDIAN__)
-# define SP_BIG_ENDIAN
-#endif
-
-#if defined(SP_BIG_ENDIAN) && defined(SP_LITTLE_ENDIAN)
-# error Both BIG and LITTLE endian defined. Fix os.h and/or Makefile
-#endif
-
-#if !defined(SP_BIG_ENDIAN) && !defined(SP_LITTLE_ENDIAN)
-# error Neither BIG nor LITTLE endian defined. Fix os.h and/or Makefile
-#endif
-
-#endif
-
-/*-----------------------------------------------------------------------------
- * Allow for unaligned memory access. This is used in BAM code as the packed
- * structure has 4-byte cigar ints after the variable length name.
- *
- * Consider using AX_CHECK_ALIGNED_ACCESS_REQUIRED in autoconf.
- */
-#if defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(__i686__) || defined(__i686)
-# define ALLOW_UAC
-#endif
-
-/*-----------------------------------------------------------------------------
- * Byte swapping macros
- */
-
-/*
- * Our new swap runs at the same speed on Ultrix, but substantially faster
- * (300% for swap_int4, ~50% for swap_int2) on an Alpha (due to the lack of
- * decent 'char' support).
- *
- * They also have the ability to swap in situ (src == dst). Newer code now
- * relies on this so don't change back!
- */
-#define iswap_int8(x) \
- (((x & 0x00000000000000ffLL) << 56) + \
- ((x & 0x000000000000ff00LL) << 40) + \
- ((x & 0x0000000000ff0000LL) << 24) + \
- ((x & 0x00000000ff000000LL) << 8) + \
- ((x & 0x000000ff00000000LL) >> 8) + \
- ((x & 0x0000ff0000000000LL) >> 24) + \
- ((x & 0x00ff000000000000LL) >> 40) + \
- ((x & 0xff00000000000000LL) >> 56))
-
-#define iswap_int4(x) \
- (((x & 0x000000ff) << 24) + \
- ((x & 0x0000ff00) << 8) + \
- ((x & 0x00ff0000) >> 8) + \
- ((x & 0xff000000) >> 24))
-
-#define iswap_int2(x) \
- (((x & 0x00ff) << 8) + \
- ((x & 0xff00) >> 8))
-
-/*
- * Linux systems may use byteswap.h to get assembly versions of byte-swap
- * on intel systems. This can be as trivial as the bswap opcode, which works
- * out at over 2-times faster than iswap_int4 above.
- */
-#if 0
-#if defined(__linux__)
-# include <byteswap.h>
-# undef iswap_int8
-# undef iswap_int4
-# undef iswap_int2
-# define iswap_int8 bswap_64
-# define iswap_int4 bswap_32
-# define iswap_int2 bswap_16
-#endif
-#endif
-
-
-/*
- * Macros to specify that data read in is of a particular endianness.
- * The macros here swap to the appropriate order for the particular machine
- * running the macro and return the new answer. These may also be used when
- * writing to a file to specify that we wish to write in (eg) big endian
- * format.
- *
- * This leads to efficient code as most of the time these macros are
- * trivial.
- */
-#ifdef SP_BIG_ENDIAN
-#define le_int4(x) iswap_int4((x))
-#define le_int2(x) iswap_int2((x))
-#endif
-
-#ifdef SP_LITTLE_ENDIAN
-#define le_int4(x) (x)
-#define le_int2(x) (x)
-#endif
-
-/*-----------------------------------------------------------------------------
- * <inttypes.h> definitions, incase they're not present
- */
-
-#ifndef PRId64
-#define __PRI64__ "l"
-#define PRId64 __PRI64__ "d"
-#define PRId32 "d"
-#define PRId16 "d"
-#define PRId8 "d"
-#define PRIu64 __PRI64__ "u"
-#define PRIu32 "u"
-#define PRIu16 "u"
-#define PRIu8 "u"
-#endif
-
-/*-----------------------------------------------------------------------------
- * Operating system specifics.
- * These ought to be done by autoconf, but are legacy code.
- */
-/*
- * SunOS 4.x
- * Even though we use the ANSI gcc, we make use the the standard SunOS 4.x
- * libraries and include files, which are non-ansi
- */
-#if defined(__sun__) && !defined(__svr4__)
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#endif
-
-/*
- * Microsoft Visual C++
- * Windows
- */
-#if defined(_MSC_VER)
-#define popen _popen
-#define pclose _pclose
-#define ftruncate(fd,len) _chsize(fd,len)
-#endif
-
-
-/*
- * Microsoft Windows running MinGW
- */
-#if defined(__MINGW32__)
-/* #define mkdir(filename,mode) mkdir((filename)) */
-#define sysconf(x) 512
-#define ftruncate(fd,len) _chsize(fd,len)
-#endif
-
-/* Generic WIN32 API issues */
-#ifdef _WIN32
-# ifndef HAVE_FSEEKO
-# if __MSVCRT_VERSION__ >= 0x800
- /* if you have MSVCR80 installed then you can use these definitions: */
-# define off_t __int64
-# define fseeko _fseeki64
-# define ftello _ftelli64
-# else
- /* otherwise we're stuck with 32-bit file support */
-# define off_t long
-# define fseeko fseek
-# define ftello ftell
-# endif
-# endif /* !HAVE_FSEEKO */
-#endif /* _WIN32 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*_OS_H_*/
diff --git a/htslib/cram/pooled_alloc.c b/htslib/cram/pooled_alloc.c
deleted file mode 100644
index 0d061e7..0000000
--- a/htslib/cram/pooled_alloc.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-Copyright (c) 2009 Genome Research Ltd.
-Author: Rob Davies <rmd at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-
-#include "cram/pooled_alloc.h"
-
-//#define TEST_MAIN
-
-#define PSIZE 1024*1024
-
-pool_alloc_t *pool_create(size_t dsize) {
- pool_alloc_t *p;
-
- if (NULL == (p = (pool_alloc_t *)malloc(sizeof(*p))))
- return NULL;
-
- /* Minimum size is a pointer, for free list */
- dsize = (dsize + sizeof(void *) - 1) & ~(sizeof(void *)-1);
- if (dsize < sizeof(void *))
- dsize = sizeof(void *);
- p->dsize = dsize;
-
- p->npools = 0;
- p->pools = NULL;
- p->free = NULL;
-
- return p;
-}
-
-static pool_t *new_pool(pool_alloc_t *p) {
- size_t n = PSIZE / p->dsize;
- pool_t *pool;
-
- pool = realloc(p->pools, (p->npools + 1) * sizeof(*p->pools));
- if (NULL == pool) return NULL;
- p->pools = pool;
- pool = &p->pools[p->npools];
-
- pool->pool = malloc(n * p->dsize);
- if (NULL == pool->pool) return NULL;
-
- pool->used = 0;
-
- p->npools++;
-
- return pool;
-}
-
-void pool_destroy(pool_alloc_t *p) {
- size_t i;
-
- for (i = 0; i < p->npools; i++) {
- free(p->pools[i].pool);
- }
- free(p->pools);
- free(p);
-}
-
-void *pool_alloc(pool_alloc_t *p) {
- pool_t *pool;
- void *ret;
-
- /* Look on free list */
- if (NULL != p->free) {
- ret = p->free;
- p->free = *((void **)p->free);
- return ret;
- }
-
- /* Look for space in the last pool */
- if (p->npools) {
- pool = &p->pools[p->npools - 1];
- if (pool->used + p->dsize < PSIZE) {
- ret = ((char *) pool->pool) + pool->used;
- pool->used += p->dsize;
- return ret;
- }
- }
-
- /* Need a new pool */
- pool = new_pool(p);
- if (NULL == pool) return NULL;
-
- pool->used = p->dsize;
- return pool->pool;
-}
-
-void pool_free(pool_alloc_t *p, void *ptr) {
- *(void **)ptr = p->free;
- p->free = ptr;
-}
-
-#ifdef TEST_MAIN
-typedef struct {
- int x, y, z;
-} xyz;
-
-#define NP 10000
-int main(void) {
- int i;
- xyz *item;
- xyz **items;
- pool_alloc_t *p = pool_create(sizeof(xyz));
-
- items = (xyz **)malloc(NP * sizeof(*items));
-
- for (i = 0; i < NP; i++) {
- item = pool_alloc(p);
- item->x = i;
- item->y = i+1;
- item->z = i+2;
- items[i] = item;
- }
-
- for (i = 0; i < NP; i++) {
- item = items[i];
- if (i % 3)
- pool_free(p, item);
- }
-
- for (i = 0; i < NP; i++) {
- item = pool_alloc(p);
- item->x = 1000000+i;
- item->y = 1000000+i+1;
- item->z = 1000000+i+2;
- }
-
- for (i = 0; i < NP; i++) {
- item = items[i];
- printf("%d\t%d\t%d\t%d\n", i, item->x, item->y, item->z);
- pool_free(p, item);
- }
-
- return 0;
-}
-#endif
diff --git a/htslib/cram/pooled_alloc.h b/htslib/cram/pooled_alloc.h
deleted file mode 100644
index fa3c81f..0000000
--- a/htslib/cram/pooled_alloc.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright (c) 2009 Genome Research Ltd.
-Author: Rob Davies <rmd at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _POOLED_ALLOC_H_
-#define _POOLED_ALLOC_H_
-
-/*
- * Implements a pooled block allocator where all items are the same size,
- * but we need many of them.
- */
-typedef struct {
- void *pool;
- size_t used;
-} pool_t;
-
-typedef struct {
- size_t dsize;
- size_t npools;
- pool_t *pools;
- void *free;
-} pool_alloc_t;
-
-pool_alloc_t *pool_create(size_t dsize);
-void pool_destroy(pool_alloc_t *p);
-void *pool_alloc(pool_alloc_t *p);
-void pool_free(pool_alloc_t *p, void *ptr);
-
-
-#endif /*_POOLED_ALLOC_H_*/
diff --git a/htslib/cram/rANS_byte.h b/htslib/cram/rANS_byte.h
deleted file mode 100644
index c61ed9d..0000000
--- a/htslib/cram/rANS_byte.h
+++ /dev/null
@@ -1,336 +0,0 @@
-/* rans_byte.h originally from https://github.com/rygorous/ryg_rans
- *
- * This is a public-domain implementation of several rANS variants. rANS is an
- * entropy coder from the ANS family, as described in Jarek Duda's paper
- * "Asymmetric numeral systems" (http://arxiv.org/abs/1311.2540).
- */
-
-/*-------------------------------------------------------------------------- */
-
-// Simple byte-aligned rANS encoder/decoder - public domain - Fabian 'ryg' Giesen 2014
-//
-// Not intended to be "industrial strength"; just meant to illustrate the general
-// idea.
-
-#ifndef RANS_BYTE_HEADER
-#define RANS_BYTE_HEADER
-
-#include <stdint.h>
-
-#ifdef assert
-#define RansAssert assert
-#else
-#define RansAssert(x)
-#endif
-
-// READ ME FIRST:
-//
-// This is designed like a typical arithmetic coder API, but there's three
-// twists you absolutely should be aware of before you start hacking:
-//
-// 1. You need to encode data in *reverse* - last symbol first. rANS works
-// like a stack: last in, first out.
-// 2. Likewise, the encoder outputs bytes *in reverse* - that is, you give
-// it a pointer to the *end* of your buffer (exclusive), and it will
-// slowly move towards the beginning as more bytes are emitted.
-// 3. Unlike basically any other entropy coder implementation you might
-// have used, you can interleave data from multiple independent rANS
-// encoders into the same bytestream without any extra signaling;
-// you can also just write some bytes by yourself in the middle if
-// you want to. This is in addition to the usual arithmetic encoder
-// property of being able to switch models on the fly. Writing raw
-// bytes can be useful when you have some data that you know is
-// incompressible, and is cheaper than going through the rANS encode
-// function. Using multiple rANS coders on the same byte stream wastes
-// a few bytes compared to using just one, but execution of two
-// independent encoders can happen in parallel on superscalar and
-// Out-of-Order CPUs, so this can be *much* faster in tight decoding
-// loops.
-//
-// This is why all the rANS functions take the write pointer as an
-// argument instead of just storing it in some context struct.
-
-// --------------------------------------------------------------------------
-
-// L ('l' in the paper) is the lower bound of our normalization interval.
-// Between this and our byte-aligned emission, we use 31 (not 32!) bits.
-// This is done intentionally because exact reciprocals for 31-bit uints
-// fit in 32-bit uints: this permits some optimizations during encoding.
-#define RANS_BYTE_L (1u << 23) // lower bound of our normalization interval
-
-// State for a rANS encoder. Yep, that's all there is to it.
-typedef uint32_t RansState;
-
-// Initialize a rANS encoder.
-static inline void RansEncInit(RansState* r)
-{
- *r = RANS_BYTE_L;
-}
-
-// Renormalize the encoder. Internal function.
-static inline RansState RansEncRenorm(RansState x, uint8_t** pptr, uint32_t freq, uint32_t scale_bits)
-{
- uint32_t x_max = ((RANS_BYTE_L >> scale_bits) << 8) * freq; // this turns into a shift.
- if (x >= x_max) {
- uint8_t* ptr = *pptr;
- do {
- *--ptr = (uint8_t) (x & 0xff);
- x >>= 8;
- } while (x >= x_max);
- *pptr = ptr;
- }
- return x;
-}
-
-// Encodes a single symbol with range start "start" and frequency "freq".
-// All frequencies are assumed to sum to "1 << scale_bits", and the
-// resulting bytes get written to ptr (which is updated).
-//
-// NOTE: With rANS, you need to encode symbols in *reverse order*, i.e. from
-// beginning to end! Likewise, the output bytestream is written *backwards*:
-// ptr starts pointing at the end of the output buffer and keeps decrementing.
-static inline void RansEncPut(RansState* r, uint8_t** pptr, uint32_t start, uint32_t freq, uint32_t scale_bits)
-{
- // renormalize
- RansState x = RansEncRenorm(*r, pptr, freq, scale_bits);
-
- // x = C(s,x)
- *r = ((x / freq) << scale_bits) + (x % freq) + start;
-}
-
-// Flushes the rANS encoder.
-static inline void RansEncFlush(RansState* r, uint8_t** pptr)
-{
- uint32_t x = *r;
- uint8_t* ptr = *pptr;
-
- ptr -= 4;
- ptr[0] = (uint8_t) (x >> 0);
- ptr[1] = (uint8_t) (x >> 8);
- ptr[2] = (uint8_t) (x >> 16);
- ptr[3] = (uint8_t) (x >> 24);
-
- *pptr = ptr;
-}
-
-// Initializes a rANS decoder.
-// Unlike the encoder, the decoder works forwards as you'd expect.
-static inline void RansDecInit(RansState* r, uint8_t** pptr)
-{
- uint32_t x;
- uint8_t* ptr = *pptr;
-
- x = ptr[0] << 0;
- x |= ptr[1] << 8;
- x |= ptr[2] << 16;
- x |= ptr[3] << 24;
- ptr += 4;
-
- *pptr = ptr;
- *r = x;
-}
-
-// Returns the current cumulative frequency (map it to a symbol yourself!)
-static inline uint32_t RansDecGet(RansState* r, uint32_t scale_bits)
-{
- return *r & ((1u << scale_bits) - 1);
-}
-
-// Advances in the bit stream by "popping" a single symbol with range start
-// "start" and frequency "freq". All frequencies are assumed to sum to "1 << scale_bits",
-// and the resulting bytes get written to ptr (which is updated).
-static inline void RansDecAdvance(RansState* r, uint8_t** pptr, uint32_t start, uint32_t freq, uint32_t scale_bits)
-{
- uint32_t mask = (1u << scale_bits) - 1;
-
- // s, x = D(x)
- uint32_t x = *r;
- x = freq * (x >> scale_bits) + (x & mask) - start;
-
- // renormalize
- if (x < RANS_BYTE_L) {
- uint8_t* ptr = *pptr;
- do x = (x << 8) | *ptr++; while (x < RANS_BYTE_L);
- *pptr = ptr;
- }
-
- *r = x;
-}
-
-// --------------------------------------------------------------------------
-
-// That's all you need for a full encoder; below here are some utility
-// functions with extra convenience or optimizations.
-
-// Encoder symbol description
-// This (admittedly odd) selection of parameters was chosen to make
-// RansEncPutSymbol as cheap as possible.
-typedef struct {
- uint32_t x_max; // (Exclusive) upper bound of pre-normalization interval
- uint32_t rcp_freq; // Fixed-point reciprocal frequency
- uint32_t bias; // Bias
- uint16_t cmpl_freq; // Complement of frequency: (1 << scale_bits) - freq
- uint16_t rcp_shift; // Reciprocal shift
-} RansEncSymbol;
-
-// Decoder symbols are straightforward.
-typedef struct {
- uint16_t start; // Start of range.
- uint16_t freq; // Symbol frequency.
-} RansDecSymbol;
-
-// Initializes an encoder symbol to start "start" and frequency "freq"
-static inline void RansEncSymbolInit(RansEncSymbol* s, uint32_t start, uint32_t freq, uint32_t scale_bits)
-{
- RansAssert(scale_bits <= 16);
- RansAssert(start <= (1u << scale_bits));
- RansAssert(freq <= (1u << scale_bits) - start);
-
- // Say M := 1 << scale_bits.
- //
- // The original encoder does:
- // x_new = (x/freq)*M + start + (x%freq)
- //
- // The fast encoder does (schematically):
- // q = mul_hi(x, rcp_freq) >> rcp_shift (division)
- // r = x - q*freq (remainder)
- // x_new = q*M + bias + r (new x)
- // plugging in r into x_new yields:
- // x_new = bias + x + q*(M - freq)
- // =: bias + x + q*cmpl_freq (*)
- //
- // and we can just precompute cmpl_freq. Now we just need to
- // set up our parameters such that the original encoder and
- // the fast encoder agree.
-
- s->x_max = ((RANS_BYTE_L >> scale_bits) << 8) * freq;
- s->cmpl_freq = (uint16_t) ((1 << scale_bits) - freq);
- if (freq < 2) {
- // freq=0 symbols are never valid to encode, so it doesn't matter what
- // we set our values to.
- //
- // freq=1 is tricky, since the reciprocal of 1 is 1; unfortunately,
- // our fixed-point reciprocal approximation can only multiply by values
- // smaller than 1.
- //
- // So we use the "next best thing": rcp_freq=0xffffffff, rcp_shift=0.
- // This gives:
- // q = mul_hi(x, rcp_freq) >> rcp_shift
- // = mul_hi(x, (1<<32) - 1)) >> 0
- // = floor(x - x/(2^32))
- // = x - 1 if 1 <= x < 2^32
- // and we know that x>0 (x=0 is never in a valid normalization interval).
- //
- // So we now need to choose the other parameters such that
- // x_new = x*M + start
- // plug it in:
- // x*M + start (desired result)
- // = bias + x + q*cmpl_freq (*)
- // = bias + x + (x - 1)*(M - 1) (plug in q=x-1, cmpl_freq)
- // = bias + 1 + (x - 1)*M
- // = x*M + (bias + 1 - M)
- //
- // so we have start = bias + 1 - M, or equivalently
- // bias = start + M - 1.
- s->rcp_freq = ~0u;
- s->rcp_shift = 0;
- s->bias = start + (1 << scale_bits) - 1;
- } else {
- // Alverson, "Integer Division using reciprocals"
- // shift=ceil(log2(freq))
- uint32_t shift = 0;
- while (freq > (1u << shift))
- shift++;
-
- s->rcp_freq = (uint32_t) (((1ull << (shift + 31)) + freq-1) / freq);
- s->rcp_shift = shift - 1;
-
- // With these values, 'q' is the correct quotient, so we
- // have bias=start.
- s->bias = start;
- }
-
- s->rcp_shift += 32; // Avoid the extra >>32 in RansEncPutSymbol
-}
-
-// Initialize a decoder symbol to start "start" and frequency "freq"
-static inline void RansDecSymbolInit(RansDecSymbol* s, uint32_t start, uint32_t freq)
-{
- RansAssert(start <= (1 << 16));
- RansAssert(freq <= (1 << 16) - start);
- s->start = (uint16_t) start;
- s->freq = (uint16_t) freq;
-}
-
-// Encodes a given symbol. This is faster than straight RansEnc since we can do
-// multiplications instead of a divide.
-//
-// See RansEncSymbolInit for a description of how this works.
-static inline void RansEncPutSymbol(RansState* r, uint8_t** pptr, RansEncSymbol const* sym)
-{
- RansAssert(sym->x_max != 0); // can't encode symbol with freq=0
-
- // renormalize
- uint32_t x = *r;
- uint32_t x_max = sym->x_max;
-
- if (x >= x_max) {
- uint8_t* ptr = *pptr;
- do {
- *--ptr = (uint8_t) (x & 0xff);
- x >>= 8;
- } while (x >= x_max);
- *pptr = ptr;
- }
-
- // x = C(s,x)
- // NOTE: written this way so we get a 32-bit "multiply high" when
- // available. If you're on a 64-bit platform with cheap multiplies
- // (e.g. x64), just bake the +32 into rcp_shift.
- //uint32_t q = (uint32_t) (((uint64_t)x * sym->rcp_freq) >> 32) >> sym->rcp_shift;
-
- // The extra >>32 has already been added to RansEncSymbolInit
- uint32_t q = (uint32_t) (((uint64_t)x * sym->rcp_freq) >> sym->rcp_shift);
- *r = x + sym->bias + q * sym->cmpl_freq;
-}
-
-// Equivalent to RansDecAdvance that takes a symbol.
-static inline void RansDecAdvanceSymbol(RansState* r, uint8_t** pptr, RansDecSymbol const* sym, uint32_t scale_bits)
-{
- RansDecAdvance(r, pptr, sym->start, sym->freq, scale_bits);
-}
-
-// Advances in the bit stream by "popping" a single symbol with range start
-// "start" and frequency "freq". All frequencies are assumed to sum to "1 << scale_bits".
-// No renormalization or output happens.
-static inline void RansDecAdvanceStep(RansState* r, uint32_t start, uint32_t freq, uint32_t scale_bits)
-{
- uint32_t mask = (1u << scale_bits) - 1;
-
- // s, x = D(x)
- uint32_t x = *r;
- *r = freq * (x >> scale_bits) + (x & mask) - start;
-}
-
-// Equivalent to RansDecAdvanceStep that takes a symbol.
-static inline void RansDecAdvanceSymbolStep(RansState* r, RansDecSymbol const* sym, uint32_t scale_bits)
-{
- RansDecAdvanceStep(r, sym->start, sym->freq, scale_bits);
-}
-
-// Renormalize.
-static inline void RansDecRenorm(RansState* r, uint8_t** pptr)
-{
- // renormalize
- uint32_t x = *r;
-
- if (x < RANS_BYTE_L) {
- uint8_t* ptr = *pptr;
- do x = (x << 8) | *ptr++; while (x < RANS_BYTE_L);
- *pptr = ptr;
- }
-
- *r = x;
-}
-
-#endif // RANS_BYTE_HEADER
diff --git a/htslib/cram/rANS_static.c b/htslib/cram/rANS_static.c
deleted file mode 100644
index 19c26f3..0000000
--- a/htslib/cram/rANS_static.c
+++ /dev/null
@@ -1,841 +0,0 @@
-/*
- * Copyright (c) 2014 Genome Research Ltd.
- * Author(s): James Bonfield
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
- * Institute nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH
- * LTD OR CONTRIBUTORS 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.
- */
-
-/*
- * Author: James Bonfield, Wellcome Trust Sanger Institute. 2014
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <assert.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include "cram/rANS_static.h"
-#include "cram/rANS_byte.h"
-
-#define TF_SHIFT 12
-#define TOTFREQ (1<<TF_SHIFT)
-
-#define ABS(a) ((a)>0?(a):-(a))
-#ifndef BLK_SIZE
-# define BLK_SIZE 1024*1024
-#endif
-
-// Room to allow for expanded BLK_SIZE on worst case compression.
-#define BLK_SIZE2 ((int)(1.05*BLK_SIZE))
-
-/*-----------------------------------------------------------------------------
- * Memory to memory compression functions.
- *
- * These are original versions without any manual loop unrolling. They
- * are easier to understand, but can be up to 2x slower.
- */
-
-unsigned char *rans_compress_O0(unsigned char *in, unsigned int in_size,
- unsigned int *out_size) {
- unsigned char *out_buf = malloc(1.05*in_size + 257*257*3 + 9);
- unsigned char *cp, *out_end;
- RansEncSymbol syms[256];
- RansState rans0, rans1, rans2, rans3;
- uint8_t* ptr;
- int F[256] = {0}, i, j, tab_size, rle, x, fsum = 0;
- int m = 0, M = 0;
- uint64_t tr;
-
- if (!out_buf)
- return NULL;
-
- ptr = out_end = out_buf + (int)(1.05*in_size) + 257*257*3 + 9;
-
- // Compute statistics
- for (i = 0; i < in_size; i++) {
- F[in[i]]++;
- }
- tr = ((uint64_t)TOTFREQ<<31)/in_size + (1<<30)/in_size;
-
- // Normalise so T[i] == TOTFREQ
- for (m = M = j = 0; j < 256; j++) {
- if (!F[j])
- continue;
-
- if (m < F[j])
- m = F[j], M = j;
-
- if ((F[j] = (F[j]*tr)>>31) == 0)
- F[j] = 1;
- fsum += F[j];
- }
-
- fsum++;
- if (fsum < TOTFREQ)
- F[M] += TOTFREQ-fsum;
- else
- F[M] -= fsum-TOTFREQ;
-
- //printf("F[%d]=%d\n", M, F[M]);
- assert(F[M]>0);
-
- // Encode statistics.
- cp = out_buf+9;
-
- for (x = rle = j = 0; j < 256; j++) {
- if (F[j]) {
- // j
- if (rle) {
- rle--;
- } else {
- *cp++ = j;
- if (!rle && j && F[j-1]) {
- for(rle=j+1; rle<256 && F[rle]; rle++)
- ;
- rle -= j+1;
- *cp++ = rle;
- }
- //fprintf(stderr, "%d: %d %d\n", j, rle, N[j]);
- }
-
- // F[j]
- if (F[j]<128) {
- *cp++ = F[j];
- } else {
- *cp++ = 128 | (F[j]>>8);
- *cp++ = F[j]&0xff;
- }
- RansEncSymbolInit(&syms[j], x, F[j], TF_SHIFT);
- x += F[j];
- }
- }
- *cp++ = 0;
-
- //write(1, out_buf+4, cp-(out_buf+4));
- tab_size = cp-out_buf;
-
- RansEncInit(&rans0);
- RansEncInit(&rans1);
- RansEncInit(&rans2);
- RansEncInit(&rans3);
-
- switch (i=(in_size&3)) {
- case 3: RansEncPutSymbol(&rans2, &ptr, &syms[in[in_size-(i-2)]]);
- case 2: RansEncPutSymbol(&rans1, &ptr, &syms[in[in_size-(i-1)]]);
- case 1: RansEncPutSymbol(&rans0, &ptr, &syms[in[in_size-(i-0)]]);
- case 0:
- break;
- }
- for (i=(in_size &~3); i>0; i-=4) {
- RansEncSymbol *s3 = &syms[in[i-1]];
- RansEncSymbol *s2 = &syms[in[i-2]];
- RansEncSymbol *s1 = &syms[in[i-3]];
- RansEncSymbol *s0 = &syms[in[i-4]];
-
- RansEncPutSymbol(&rans3, &ptr, s3);
- RansEncPutSymbol(&rans2, &ptr, s2);
- RansEncPutSymbol(&rans1, &ptr, s1);
- RansEncPutSymbol(&rans0, &ptr, s0);
- }
-
- RansEncFlush(&rans3, &ptr);
- RansEncFlush(&rans2, &ptr);
- RansEncFlush(&rans1, &ptr);
- RansEncFlush(&rans0, &ptr);
-
- // Finalise block size and return it
- *out_size = (out_end - ptr) + tab_size;
-
- cp = out_buf;
-
- *cp++ = 0; // order
- *cp++ = ((*out_size-9)>> 0) & 0xff;
- *cp++ = ((*out_size-9)>> 8) & 0xff;
- *cp++ = ((*out_size-9)>>16) & 0xff;
- *cp++ = ((*out_size-9)>>24) & 0xff;
-
- *cp++ = (in_size>> 0) & 0xff;
- *cp++ = (in_size>> 8) & 0xff;
- *cp++ = (in_size>>16) & 0xff;
- *cp++ = (in_size>>24) & 0xff;
-
- memmove(out_buf + tab_size, ptr, out_end-ptr);
-
- return out_buf;
-}
-
-typedef struct {
- struct {
- int F;
- int C;
- } fc[256];
- unsigned char *R;
-} ari_decoder;
-
-unsigned char *rans_uncompress_O0(unsigned char *in, unsigned int in_size,
- unsigned int *out_size) {
- /* Load in the static tables */
- unsigned char *cp = in + 9;
- int i, j, x, out_sz, in_sz, rle;
- char *out_buf;
- ari_decoder D;
- RansDecSymbol syms[256];
-
- memset(&D, 0, sizeof(D));
-
- if (*in++ != 0) // Order-0 check
- return NULL;
-
- in_sz = ((in[0])<<0) | ((in[1])<<8) | ((in[2])<<16) | ((in[3])<<24);
- out_sz = ((in[4])<<0) | ((in[5])<<8) | ((in[6])<<16) | ((in[7])<<24);
- if (in_sz != in_size-9)
- return NULL;
-
- out_buf = malloc(out_sz);
- if (!out_buf)
- return NULL;
-
- //fprintf(stderr, "out_sz=%d\n", out_sz);
-
- // Precompute reverse lookup of frequency.
- rle = x = 0;
- j = *cp++;
- do {
- if ((D.fc[j].F = *cp++) >= 128) {
- D.fc[j].F &= ~128;
- D.fc[j].F = ((D.fc[j].F & 127) << 8) | *cp++;
- }
- D.fc[j].C = x;
-
- RansDecSymbolInit(&syms[j], D.fc[j].C, D.fc[j].F);
-
- /* Build reverse lookup table */
- if (!D.R) D.R = (unsigned char *)malloc(TOTFREQ);
- memset(&D.R[x], j, D.fc[j].F);
-
- x += D.fc[j].F;
-
- if (!rle && j+1 == *cp) {
- j = *cp++;
- rle = *cp++;
- } else if (rle) {
- rle--;
- j++;
- } else {
- j = *cp++;
- }
- } while(j);
-
- assert(x < TOTFREQ);
-
- RansState rans0, rans1, rans2, rans3;
- uint8_t *ptr = cp;
- RansDecInit(&rans0, &ptr);
- RansDecInit(&rans1, &ptr);
- RansDecInit(&rans2, &ptr);
- RansDecInit(&rans3, &ptr);
-
- int out_end = (out_sz&~3);
-
- RansState R[4];
- R[0] = rans0;
- R[1] = rans1;
- R[2] = rans2;
- R[3] = rans3;
- uint32_t mask = (1u << TF_SHIFT)-1;
-
- for (i=0; i < out_end; i+=4) {
- uint32_t m[4] = {R[0] & mask,
- R[1] & mask,
- R[2] & mask,
- R[3] & mask};
- uint8_t c[4] = {D.R[m[0]],
- D.R[m[1]],
- D.R[m[2]],
- D.R[m[3]]};
- out_buf[i+0] = c[0];
- out_buf[i+1] = c[1];
- out_buf[i+2] = c[2];
- out_buf[i+3] = c[3];
-
- // RansDecAdvanceSymbolStep(&R[0], &syms[c[0]], TF_SHIFT);
- // RansDecAdvanceSymbolStep(&R[1], &syms[c[1]], TF_SHIFT);
- // RansDecAdvanceSymbolStep(&R[2], &syms[c[2]], TF_SHIFT);
- // RansDecAdvanceSymbolStep(&R[3], &syms[c[3]], TF_SHIFT);
- R[0] = syms[c[0]].freq * (R[0]>>TF_SHIFT);
- R[1] = syms[c[1]].freq * (R[1]>>TF_SHIFT);
- R[2] = syms[c[2]].freq * (R[2]>>TF_SHIFT);
- R[3] = syms[c[3]].freq * (R[3]>>TF_SHIFT);
-
- R[0] += m[0] - syms[c[0]].start;
- R[1] += m[1] - syms[c[1]].start;
- R[2] += m[2] - syms[c[2]].start;
- R[3] += m[3] - syms[c[3]].start;
-
- RansDecRenorm(&R[0], &ptr);
- RansDecRenorm(&R[1], &ptr);
- RansDecRenorm(&R[2], &ptr);
- RansDecRenorm(&R[3], &ptr);
- }
-
- rans0 = R[0];
- rans1 = R[1];
- rans2 = R[2];
- rans3 = R[3];
-
- switch(out_sz&3) {
- unsigned char c;
- case 0:
- break;
- case 1:
- c = D.R[RansDecGet(&rans0, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end] = c;
- break;
-
- case 2:
- c = D.R[RansDecGet(&rans0, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end] = c;
-
- c = D.R[RansDecGet(&rans1, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans1, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end+1] = c;
- break;
-
- case 3:
- c = D.R[RansDecGet(&rans0, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans0, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end] = c;
-
- c = D.R[RansDecGet(&rans1, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans1, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end+1] = c;
-
- c = D.R[RansDecGet(&rans2, TF_SHIFT)];
- RansDecAdvanceSymbol(&rans2, &ptr, &syms[c], TF_SHIFT);
- out_buf[out_end+2] = c;
- break;
- }
-
- *out_size = out_sz;
-
- if (D.R) free(D.R);
-
- return (unsigned char *)out_buf;
-}
-
-unsigned char *rans_compress_O1(unsigned char *in, unsigned int in_size,
- unsigned int *out_size) {
- unsigned char *out_buf, *out_end, *cp;
- unsigned int last_i, tab_size, rle_i, rle_j;
- RansEncSymbol syms[256][256];
-
- if (in_size < 4)
- return rans_compress_O0(in, in_size, out_size);
-
- out_buf = malloc(1.05*in_size + 257*257*3 + 9);
- if (!out_buf)
- return NULL;
-
- out_end = out_buf + (int)(1.05*in_size) + 257*257*3 + 9;
- cp = out_buf+9;
-
- int F[256][256], T[256], i, j;
- unsigned char c;
-
- memset(F, 0, 256*256*sizeof(int));
- memset(T, 0, 256*sizeof(int));
- //for (last = 0, i=in_size-1; i>=0; i--) {
- // F[last][c = in[i]]++;
- // T[last]++;
- // last = c;
- //}
-
- for (last_i=i=0; i<in_size; i++) {
- F[last_i][c = in[i]]++;
- T[last_i]++;
- last_i = c;
- }
- F[0][in[1*(in_size>>2)]]++;
- F[0][in[2*(in_size>>2)]]++;
- F[0][in[3*(in_size>>2)]]++;
- T[0]+=3;
-
- // Normalise so T[i] == TOTFREQ
- for (rle_i = i = 0; i < 256; i++) {
- int t2, m, M;
- unsigned int x;
-
- if (T[i] == 0)
- continue;
-
- //uint64_t p = (TOTFREQ * TOTFREQ) / t;
- double p = ((double)TOTFREQ)/T[i];
- for (t2 = m = M = j = 0; j < 256; j++) {
- if (!F[i][j])
- continue;
-
- if (m < F[i][j])
- m = F[i][j], M = j;
-
- //if ((F[i][j] = (F[i][j] * p) / TOTFREQ) == 0)
- if ((F[i][j] *= p) == 0)
- F[i][j] = 1;
- t2 += F[i][j];
- }
-
- t2++;
- if (t2 < TOTFREQ)
- F[i][M] += TOTFREQ-t2;
- else
- F[i][M] -= t2-TOTFREQ;
-
- // Store frequency table
- // i
- if (rle_i) {
- rle_i--;
- } else {
- *cp++ = i;
- // FIXME: could use order-0 statistics to observe which alphabet
- // symbols are present and base RLE on that ordering instead.
- if (i && T[i-1]) {
- for(rle_i=i+1; rle_i<256 && T[rle_i]; rle_i++)
- ;
- rle_i -= i+1;
- *cp++ = rle_i;
- }
- }
-
- int *F_i_ = F[i];
- x = 0;
- rle_j = 0;
- for (j = 0; j < 256; j++) {
- if (F_i_[j]) {
- //fprintf(stderr, "F[%d][%d]=%d, x=%d\n", i, j, F_i_[j], x);
-
- // j
- if (rle_j) {
- rle_j--;
- } else {
- *cp++ = j;
- if (!rle_j && j && F_i_[j-1]) {
- for(rle_j=j+1; rle_j<256 && F_i_[rle_j]; rle_j++)
- ;
- rle_j -= j+1;
- *cp++ = rle_j;
- }
- }
-
- // F_i_[j]
- if (F_i_[j]<128) {
- *cp++ = F_i_[j];
- } else {
- *cp++ = 128 | (F_i_[j]>>8);
- *cp++ = F_i_[j]&0xff;
- }
-
- RansEncSymbolInit(&syms[i][j], x, F_i_[j], TF_SHIFT);
- x += F_i_[j];
- }
- }
- *cp++ = 0;
- }
- *cp++ = 0;
-
- //write(1, out_buf+4, cp-(out_buf+4));
- tab_size = cp - out_buf;
- assert(tab_size < 257*257*3);
-
- RansState rans0, rans1, rans2, rans3;
- RansEncInit(&rans0);
- RansEncInit(&rans1);
- RansEncInit(&rans2);
- RansEncInit(&rans3);
-
- uint8_t* ptr = out_end;
-
- int isz4 = in_size>>2;
- int i0 = 1*isz4-2;
- int i1 = 2*isz4-2;
- int i2 = 3*isz4-2;
- int i3 = 4*isz4-2;
-
- unsigned char l0 = in[i0+1];
- unsigned char l1 = in[i1+1];
- unsigned char l2 = in[i2+1];
- unsigned char l3 = in[i3+1];
-
- // Deal with the remainder
- l3 = in[in_size-1];
- for (i3 = in_size-2; i3 > 4*isz4-2; i3--) {
- unsigned char c3 = in[i3];
- RansEncPutSymbol(&rans3, &ptr, &syms[c3][l3]);
- l3 = c3;
- }
-
- for (; i0 >= 0; i0--, i1--, i2--, i3--) {
- unsigned char c0, c1, c2, c3;
- RansEncSymbol *s3 = &syms[c3 = in[i3]][l3];
- RansEncSymbol *s2 = &syms[c2 = in[i2]][l2];
- RansEncSymbol *s1 = &syms[c1 = in[i1]][l1];
- RansEncSymbol *s0 = &syms[c0 = in[i0]][l0];
-
- RansEncPutSymbol(&rans3, &ptr, s3);
- RansEncPutSymbol(&rans2, &ptr, s2);
- RansEncPutSymbol(&rans1, &ptr, s1);
- RansEncPutSymbol(&rans0, &ptr, s0);
-
- l0 = c0;
- l1 = c1;
- l2 = c2;
- l3 = c3;
- }
-
- RansEncPutSymbol(&rans3, &ptr, &syms[0][l3]);
- RansEncPutSymbol(&rans2, &ptr, &syms[0][l2]);
- RansEncPutSymbol(&rans1, &ptr, &syms[0][l1]);
- RansEncPutSymbol(&rans0, &ptr, &syms[0][l0]);
-
- RansEncFlush(&rans3, &ptr);
- RansEncFlush(&rans2, &ptr);
- RansEncFlush(&rans1, &ptr);
- RansEncFlush(&rans0, &ptr);
-
- *out_size = (out_end - ptr) + tab_size;
-
- cp = out_buf;
- *cp++ = 1; // order
-
- *cp++ = ((*out_size-9)>> 0) & 0xff;
- *cp++ = ((*out_size-9)>> 8) & 0xff;
- *cp++ = ((*out_size-9)>>16) & 0xff;
- *cp++ = ((*out_size-9)>>24) & 0xff;
-
- *cp++ = (in_size>> 0) & 0xff;
- *cp++ = (in_size>> 8) & 0xff;
- *cp++ = (in_size>>16) & 0xff;
- *cp++ = (in_size>>24) & 0xff;
-
- memmove(out_buf + tab_size, ptr, out_end-ptr);
-
- return out_buf;
-}
-
-unsigned char *rans_uncompress_O1(unsigned char *in, unsigned int in_size,
- unsigned int *out_size) {
- /* Load in the static tables */
- unsigned char *cp = in + 9;
- int i, j = -999, x, out_sz, in_sz, rle_i, rle_j;
- char *out_buf;
- ari_decoder D[256];
- RansDecSymbol syms[256][256];
-
- memset(D, 0, 256*sizeof(*D));
-
- if (*in++ != 1) // Order-1 check
- return NULL;
-
- in_sz = ((in[0])<<0) | ((in[1])<<8) | ((in[2])<<16) | ((in[3])<<24);
- out_sz = ((in[4])<<0) | ((in[5])<<8) | ((in[6])<<16) | ((in[7])<<24);
- if (in_sz != in_size-9)
- return NULL;
-
- out_buf = malloc(out_sz);
- if (!out_buf)
- return NULL;
-
- //fprintf(stderr, "out_sz=%d\n", out_sz);
-
- //i = *cp++;
- rle_i = 0;
- i = *cp++;
- do {
- rle_j = x = 0;
- j = *cp++;
- do {
- if ((D[i].fc[j].F = *cp++) >= 128) {
- D[i].fc[j].F &= ~128;
- D[i].fc[j].F = ((D[i].fc[j].F & 127) << 8) | *cp++;
- }
- D[i].fc[j].C = x;
-
- //fprintf(stderr, "i=%d j=%d F=%d C=%d\n", i, j, D[i].fc[j].F, D[i].fc[j].C);
-
- if (!D[i].fc[j].F)
- D[i].fc[j].F = TOTFREQ;
-
- RansDecSymbolInit(&syms[i][j], D[i].fc[j].C, D[i].fc[j].F);
-
- /* Build reverse lookup table */
- if (!D[i].R) D[i].R = (unsigned char *)malloc(TOTFREQ);
- memset(&D[i].R[x], j, D[i].fc[j].F);
-
- x += D[i].fc[j].F;
- assert(x <= TOTFREQ);
-
- if (!rle_j && j+1 == *cp) {
- j = *cp++;
- rle_j = *cp++;
- } else if (rle_j) {
- rle_j--;
- j++;
- } else {
- j = *cp++;
- }
- } while(j);
-
- if (!rle_i && i+1 == *cp) {
- i = *cp++;
- rle_i = *cp++;
- } else if (rle_i) {
- rle_i--;
- i++;
- } else {
- i = *cp++;
- }
- } while (i);
-
- // Precompute reverse lookup of frequency.
-
- RansState rans0, rans1, rans2, rans3;
- uint8_t *ptr = cp;
- RansDecInit(&rans0, &ptr);
- RansDecInit(&rans1, &ptr);
- RansDecInit(&rans2, &ptr);
- RansDecInit(&rans3, &ptr);
-
- int isz4 = out_sz>>2;
- int l0 = 0;
- int l1 = 0;
- int l2 = 0;
- int l3 = 0;
- int i4[] = {0*isz4, 1*isz4, 2*isz4, 3*isz4};
-
- RansState R[4];
- R[0] = rans0;
- R[1] = rans1;
- R[2] = rans2;
- R[3] = rans3;
-
- for (; i4[0] < isz4; i4[0]++, i4[1]++, i4[2]++, i4[3]++) {
- uint32_t m[4] = {R[0] & ((1u << TF_SHIFT)-1),
- R[1] & ((1u << TF_SHIFT)-1),
- R[2] & ((1u << TF_SHIFT)-1),
- R[3] & ((1u << TF_SHIFT)-1)};
-
- uint8_t c[4] = {D[l0].R[m[0]],
- D[l1].R[m[1]],
- D[l2].R[m[2]],
- D[l3].R[m[3]]};
-
- out_buf[i4[0]] = c[0];
- out_buf[i4[1]] = c[1];
- out_buf[i4[2]] = c[2];
- out_buf[i4[3]] = c[3];
-
- //RansDecAdvanceSymbolStep(&R[0], &syms[l0][c[0]], TF_SHIFT);
- //RansDecAdvanceSymbolStep(&R[1], &syms[l1][c[1]], TF_SHIFT);
- //RansDecAdvanceSymbolStep(&R[2], &syms[l2][c[2]], TF_SHIFT);
- //RansDecAdvanceSymbolStep(&R[3], &syms[l3][c[3]], TF_SHIFT);
-
- R[0] = syms[l0][c[0]].freq * (R[0]>>TF_SHIFT);
- R[1] = syms[l1][c[1]].freq * (R[1]>>TF_SHIFT);
- R[2] = syms[l2][c[2]].freq * (R[2]>>TF_SHIFT);
- R[3] = syms[l3][c[3]].freq * (R[3]>>TF_SHIFT);
-
- R[0] += m[0] - syms[l0][c[0]].start;
- R[1] += m[1] - syms[l1][c[1]].start;
- R[2] += m[2] - syms[l2][c[2]].start;
- R[3] += m[3] - syms[l3][c[3]].start;
-
- RansDecRenorm(&R[0], &ptr);
- RansDecRenorm(&R[1], &ptr);
- RansDecRenorm(&R[2], &ptr);
- RansDecRenorm(&R[3], &ptr);
-
- l0 = c[0];
- l1 = c[1];
- l2 = c[2];
- l3 = c[3];
- }
-
- rans0 = R[0];
- rans1 = R[1];
- rans2 = R[2];
- rans3 = R[3];
-
- // Remainder
- for (; i4[3] < out_sz; i4[3]++) {
- unsigned char c3 = D[l3].R[RansDecGet(&rans3, TF_SHIFT)];
- out_buf[i4[3]] = c3;
- RansDecAdvanceSymbol(&rans3, &ptr, &syms[l3][c3], TF_SHIFT);
- l3 = c3;
- }
-
- *out_size = out_sz;
-
- for (i = 0; i < 256; i++)
- if (D[i].R) free(D[i].R);
-
- return (unsigned char *)out_buf;
-}
-
-/*-----------------------------------------------------------------------------
- * Simple interface to the order-0 vs order-1 encoders and decoders.
- */
-unsigned char *rans_compress(unsigned char *in, unsigned int in_size,
- unsigned int *out_size, int order) {
- return order
- ? rans_compress_O1(in, in_size, out_size)
- : rans_compress_O0(in, in_size, out_size);
-}
-
-unsigned char *rans_uncompress(unsigned char *in, unsigned int in_size,
- unsigned int *out_size) {
- return in[0]
- ? rans_uncompress_O1(in, in_size, out_size)
- : rans_uncompress_O0(in, in_size, out_size);
-}
-
-
-#ifdef TEST_MAIN
-/*-----------------------------------------------------------------------------
- * Main.
- *
- * This is a simple command line tool for testing order-0 and order-1
- * compression using the rANS codec. Simply compile with
- *
- * gcc -DTEST_MAIN -O3 -I. cram/rANS_static.c -o cram/rANS_static
- *
- * Usage: cram/rANS_static -o0 < file > file.o0
- * cram/rANS_static -d < file.o0 > file2
- *
- * cram/rANS_static -o1 < file > file.o1
- * cram/rANS_static -d < file.o1 > file2
- */
-int main(int argc, char **argv) {
- int opt, order = 0;
- unsigned char in_buf[BLK_SIZE2+257*257*3];
- int decode = 0;
- FILE *infp = stdin, *outfp = stdout;
- struct timeval tv1, tv2;
- size_t bytes = 0;
-
- extern char *optarg;
- extern int optind;
-
- while ((opt = getopt(argc, argv, "o:d")) != -1) {
- switch (opt) {
- case 'o':
- order = atoi(optarg);
- break;
-
- case 'd':
- decode = 1;
- break;
- }
- }
-
- order = order ? 1 : 0; // Only support O(0) and O(1)
-
- if (optind < argc) {
- if (!(infp = fopen(argv[optind], "rb"))) {
- perror(argv[optind]);
- return 1;
- }
- optind++;
- }
-
- if (optind < argc) {
- if (!(outfp = fopen(argv[optind], "wb"))) {
- perror(argv[optind]);
- return 1;
- }
- optind++;
- }
-
- gettimeofday(&tv1, NULL);
-
- if (decode) {
- // Only used in some test implementations of RC_GetFreq()
- //RC_init();
- //RC_init2();
-
- for (;;) {
- uint32_t in_size, out_size;
- unsigned char *out;
-
- if (4 != fread(&in_size, 1, 4, infp))
- break;
- if (in_size != fread(in_buf, 1, in_size, infp)) {
- fprintf(stderr, "Truncated input\n");
- exit(1);
- }
- out = rans_uncompress(in_buf, in_size, &out_size);
- if (!out)
- abort();
-
- fwrite(out, 1, out_size, outfp);
- free(out);
-
- bytes += out_size;
- }
- } else {
- for (;;) {
- uint32_t in_size, out_size;
- unsigned char *out;
-
- in_size = fread(in_buf, 1, BLK_SIZE, infp);
- if (in_size <= 0)
- break;
-
- out = rans_compress(in_buf, in_size, &out_size, order);
-
- fwrite(&out_size, 1, 4, outfp);
- fwrite(out, 1, out_size, outfp);
- free(out);
-
- bytes += in_size;
- }
- }
-
- gettimeofday(&tv2, NULL);
-
- fprintf(stderr, "Took %ld microseconds, %5.1f MB/s\n",
- (long)(tv2.tv_sec - tv1.tv_sec)*1000000 +
- tv2.tv_usec - tv1.tv_usec,
- (double)bytes / ((long)(tv2.tv_sec - tv1.tv_sec)*1000000 +
- tv2.tv_usec - tv1.tv_usec));
- return 0;
-}
-#endif
diff --git a/htslib/cram/rANS_static.h b/htslib/cram/rANS_static.h
deleted file mode 100644
index 971099c..0000000
--- a/htslib/cram/rANS_static.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2014 Genome Research Ltd.
- * Author(s): James Bonfield
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
- * Institute nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH
- * LTD OR CONTRIBUTORS 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.
- */
-
-
-#ifndef RANS_STATIC_H
-#define RANS_STATIC_H
-
-unsigned char *rans_compress(unsigned char *in, unsigned int in_size,
- unsigned int *out_size, int order);
-unsigned char *rans_uncompress(unsigned char *in, unsigned int in_size,
- unsigned int *out_size);
-
-
-#endif /* RANS_STATIC_H */
diff --git a/htslib/cram/sam_header.c b/htslib/cram/sam_header.c
deleted file mode 100644
index 3367f19..0000000
--- a/htslib/cram/sam_header.c
+++ /dev/null
@@ -1,1218 +0,0 @@
-/*
-Copyright (c) 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <string.h>
-#include <assert.h>
-
-#include "cram/sam_header.h"
-#include "cram/string_alloc.h"
-
-static void sam_hdr_error(char *msg, char *line, int len, int lno) {
- int j;
-
- for (j = 0; j < len && line[j] != '\n'; j++)
- ;
- fprintf(stderr, "%s at line %d: \"%.*s\"\n", msg, lno, j, line);
-}
-
-void sam_hdr_dump(SAM_hdr *hdr) {
- khint_t k;
- int i;
-
- printf("===DUMP===\n");
- for (k = kh_begin(hdr->h); k != kh_end(hdr->h); k++) {
- SAM_hdr_type *t1, *t2;
- char c[2];
-
- if (!kh_exist(hdr->h, k))
- continue;
-
- t1 = t2 = kh_val(hdr->h, k);
- c[0] = kh_key(hdr->h, k)>>8;
- c[1] = kh_key(hdr->h, k)&0xff;
- printf("Type %.2s, count %d\n", c, t1->prev->order+1);
-
- do {
- SAM_hdr_tag *tag;
- printf(">>>%d ", t1->order);
- for (tag = t1->tag; tag; tag=tag->next) {
- printf("\"%.2s\":\"%.*s\"\t",
- tag->str, tag->len-3, tag->str+3);
- }
- putchar('\n');
- t1 = t1->next;
- } while (t1 != t2);
- }
-
- /* Dump out PG chains */
- printf("\n at PG chains:\n");
- for (i = 0; i < hdr->npg_end; i++) {
- int j;
- printf(" %d:", i);
- for (j = hdr->pg_end[i]; j != -1; j = hdr->pg[j].prev_id) {
- printf("%s%d(%.*s)",
- j == hdr->pg_end[i] ? " " : "->",
- j, hdr->pg[j].name_len, hdr->pg[j].name);
- }
- printf("\n");
- }
-
- puts("===END DUMP===");
-}
-
-/* Updates the hash tables in the SAM_hdr structure.
- *
- * Returns 0 on success;
- * -1 on failure
- */
-static int sam_hdr_update_hashes(SAM_hdr *sh,
- int type,
- SAM_hdr_type *h_type) {
- /* Add to reference hash? */
- if ((type>>8) == 'S' && (type&0xff) == 'Q') {
- SAM_hdr_tag *tag;
- int nref = sh->nref;
-
- sh->ref = realloc(sh->ref, (sh->nref+1)*sizeof(*sh->ref));
- if (!sh->ref)
- return -1;
-
- tag = h_type->tag;
- sh->ref[nref].name = NULL;
- sh->ref[nref].len = 0;
- sh->ref[nref].ty = h_type;
- sh->ref[nref].tag = tag;
-
- while (tag) {
- if (tag->str[0] == 'S' && tag->str[1] == 'N') {
- if (!(sh->ref[nref].name = malloc(tag->len)))
- return -1;
- strncpy(sh->ref[nref].name, tag->str+3, tag->len-3);
- sh->ref[nref].name[tag->len-3] = 0;
- } else if (tag->str[0] == 'L' && tag->str[1] == 'N') {
- sh->ref[nref].len = atoi(tag->str+3);
- }
- tag = tag->next;
- }
-
- if (sh->ref[nref].name) {
- khint_t k;
- int r;
- k = kh_put(m_s2i, sh->ref_hash, sh->ref[nref].name, &r);
- if (-1 == r) return -1;
- kh_val(sh->ref_hash, k) = nref;
- }
-
- sh->nref++;
- }
-
- /* Add to read-group hash? */
- if ((type>>8) == 'R' && (type&0xff) == 'G') {
- SAM_hdr_tag *tag;
- int nrg = sh->nrg;
-
- sh->rg = realloc(sh->rg, (sh->nrg+1)*sizeof(*sh->rg));
- if (!sh->rg)
- return -1;
-
- tag = h_type->tag;
- sh->rg[nrg].name = NULL;
- sh->rg[nrg].name_len = 0;
- sh->rg[nrg].ty = h_type;
- sh->rg[nrg].tag = tag;
- sh->rg[nrg].id = nrg;
-
- while (tag) {
- if (tag->str[0] == 'I' && tag->str[1] == 'D') {
- if (!(sh->rg[nrg].name = malloc(tag->len)))
- return -1;
- strncpy(sh->rg[nrg].name, tag->str+3, tag->len-3);
- sh->rg[nrg].name[tag->len-3] = 0;
- sh->rg[nrg].name_len = strlen(sh->rg[nrg].name);
- }
- tag = tag->next;
- }
-
- if (sh->rg[nrg].name) {
- khint_t k;
- int r;
- k = kh_put(m_s2i, sh->rg_hash, sh->rg[nrg].name, &r);
- if (-1 == r) return -1;
- kh_val(sh->rg_hash, k) = nrg;
- }
-
- sh->nrg++;
- }
-
- /* Add to program hash? */
- if ((type>>8) == 'P' && (type&0xff) == 'G') {
- SAM_hdr_tag *tag;
- int npg = sh->npg;
-
- sh->pg = realloc(sh->pg, (sh->npg+1)*sizeof(*sh->pg));
- if (!sh->pg)
- return -1;
-
- tag = h_type->tag;
- sh->pg[npg].name = NULL;
- sh->pg[npg].name_len = 0;
- sh->pg[npg].ty = h_type;
- sh->pg[npg].tag = tag;
- sh->pg[npg].id = npg;
- sh->pg[npg].prev_id = -1;
-
- while (tag) {
- if (tag->str[0] == 'I' && tag->str[1] == 'D') {
- if (!(sh->pg[npg].name = malloc(tag->len)))
- return -1;
- strncpy(sh->pg[npg].name, tag->str+3, tag->len-3);
- sh->pg[npg].name[tag->len-3] = 0;
- sh->pg[npg].name_len = strlen(sh->pg[npg].name);
- } else if (tag->str[0] == 'P' && tag->str[1] == 'P') {
- // Resolve later if needed
- khint_t k;
- char tmp = tag->str[tag->len]; tag->str[tag->len] = 0;
- k = kh_get(m_s2i, sh->pg_hash, tag->str+3);
- tag->str[tag->len] = tmp;
-
- if (k != kh_end(sh->pg_hash)) {
- int p_id = kh_val(sh->pg_hash, k);
- sh->pg[npg].prev_id = sh->pg[p_id].id;
-
- /* Unmark previous entry as a PG termination */
- if (sh->npg_end > 0 &&
- sh->pg_end[sh->npg_end-1] == p_id) {
- sh->npg_end--;
- } else {
- int i;
- for (i = 0; i < sh->npg_end; i++) {
- if (sh->pg_end[i] == p_id) {
- memmove(&sh->pg_end[i], &sh->pg_end[i+1],
- (sh->npg_end-i-1)*sizeof(*sh->pg_end));
- sh->npg_end--;
- }
- }
- }
- } else {
- sh->pg[npg].prev_id = -1;
- }
- }
- tag = tag->next;
- }
-
- if (sh->pg[npg].name) {
- khint_t k;
- int r;
- k = kh_put(m_s2i, sh->pg_hash, sh->pg[npg].name, &r);
- if (-1 == r) return -1;
- kh_val(sh->pg_hash, k) = npg;
- }
-
- /* Add to npg_end[] array. Remove later if we find a PP line */
- if (sh->npg_end >= sh->npg_end_alloc) {
- sh->npg_end_alloc = sh->npg_end_alloc
- ? sh->npg_end_alloc*2
- : 4;
- sh->pg_end = realloc(sh->pg_end,
- sh->npg_end_alloc * sizeof(int));
- if (!sh->pg_end)
- return -1;
- }
- sh->pg_end[sh->npg_end++] = npg;
-
- sh->npg++;
- }
-
- return 0;
-}
-
-/*
- * Appends a formatted line to an existing SAM header.
- * Line is a full SAM header record, eg "@SQ\tSN:foo\tLN:100", with
- * optional new-line. If it contains more than 1 line then multiple lines
- * will be added in order.
- *
- * Len is the length of the text data, or 0 if unknown (in which case
- * it should be null terminated).
- *
- * Returns 0 on success
- * -1 on failure
- */
-int sam_hdr_add_lines(SAM_hdr *sh, const char *lines, int len) {
- int i, lno = 1, text_offset;
- char *hdr;
-
- if (!len)
- len = strlen(lines);
-
- text_offset = ks_len(&sh->text);
- if (EOF == kputsn(lines, len, &sh->text))
- return -1;
- hdr = ks_str(&sh->text) + text_offset;
-
- for (i = 0; i < len; i++) {
- khint32_t type;
- khint_t k;
-
- int l_start = i, new;
- SAM_hdr_type *h_type;
- SAM_hdr_tag *h_tag, *last;
-
- if (hdr[i] != '@') {
- int j;
- for (j = i; j < len && hdr[j] != '\n'; j++)
- ;
- sam_hdr_error("Header line does not start with '@'",
- &hdr[l_start], len - l_start, lno);
- return -1;
- }
-
- type = (hdr[i+1]<<8) | hdr[i+2];
- if (hdr[i+1] < 'A' || hdr[i+1] > 'z' ||
- hdr[i+2] < 'A' || hdr[i+2] > 'z') {
- sam_hdr_error("Header line does not have a two character key",
- &hdr[l_start], len - l_start, lno);
- return -1;
- }
-
- i += 3;
- if (hdr[i] == '\n')
- continue;
-
- // Add the header line type
- if (!(h_type = pool_alloc(sh->type_pool)))
- return -1;
- if (-1 == (k = kh_put(sam_hdr, sh->h, type, &new)))
- return -1;
-
- // Form the ring, either with self or other lines of this type
- if (!new) {
- SAM_hdr_type *t = kh_val(sh->h, k), *p;
- p = t->prev;
-
- assert(p->next = t);
- p->next = h_type;
- h_type->prev = p;
-
- t->prev = h_type;
- h_type->next = t;
- h_type->order = p->order+1;
- } else {
- kh_val(sh->h, k) = h_type;
- h_type->prev = h_type->next = h_type;
- h_type->order = 0;
- }
-
- // Parse the tags on this line
- last = NULL;
- if ((type>>8) == 'C' && (type&0xff) == 'O') {
- int j;
- if (hdr[i] != '\t') {
- sam_hdr_error("Missing tab",
- &hdr[l_start], len - l_start, lno);
- return -1;
- }
-
- for (j = ++i; j < len && hdr[j] != '\n'; j++)
- ;
-
- if (!(h_type->tag = h_tag = pool_alloc(sh->tag_pool)))
- return -1;
- h_tag->str = string_ndup(sh->str_pool, &hdr[i], j-i);
- h_tag->len = j-i;
- h_tag->next = NULL;
- if (!h_tag->str)
- return -1;
-
- i = j;
-
- } else {
- do {
- int j;
- if (hdr[i] != '\t') {
- sam_hdr_error("Missing tab",
- &hdr[l_start], len - l_start, lno);
- return -1;
- }
-
- for (j = ++i; j < len && hdr[j] != '\n' && hdr[j] != '\t'; j++)
- ;
-
- if (!(h_tag = pool_alloc(sh->tag_pool)))
- return -1;
- h_tag->str = string_ndup(sh->str_pool, &hdr[i], j-i);
- h_tag->len = j-i;
- h_tag->next = NULL;
- if (!h_tag->str)
- return -1;
-
- if (h_tag->len < 3 || h_tag->str[2] != ':') {
- sam_hdr_error("Malformed key:value pair",
- &hdr[l_start], len - l_start, lno);
- return -1;
- }
-
- if (last)
- last->next = h_tag;
- else
- h_type->tag = h_tag;
-
- last = h_tag;
- i = j;
- } while (i < len && hdr[i] != '\n');
- }
-
- /* Update RG/SQ hashes */
- if (-1 == sam_hdr_update_hashes(sh, type, h_type))
- return -1;
- }
-
- return 0;
-}
-
-/*
- * Adds a single line to a SAM header.
- * Specify type and one or more key,value pairs, ending with the NULL key.
- * Eg. sam_hdr_add(h, "SQ", "ID", "foo", "LN", "100", NULL).
- *
- * Returns index for specific entry on success (eg 2nd SQ, 4th RG)
- * -1 on failure
- */
-int sam_hdr_add(SAM_hdr *sh, const char *type, ...) {
- va_list args;
- va_start(args, type);
- return sam_hdr_vadd(sh, type, args, NULL);
-}
-
-int sam_hdr_vadd(SAM_hdr *sh, const char *type, va_list ap, ...) {
- va_list args;
- SAM_hdr_type *h_type;
- SAM_hdr_tag *h_tag, *last;
- int new;
- khint32_t type_i = (type[0]<<8) | type[1], k;
-
-#if defined(HAVE_VA_COPY)
- va_list ap_local;
-#endif
-
- if (EOF == kputc_('@', &sh->text))
- return -1;
- if (EOF == kputsn(type, 2, &sh->text))
- return -1;
-
- if (!(h_type = pool_alloc(sh->type_pool)))
- return -1;
- if (-1 == (k = kh_put(sam_hdr, sh->h, type_i, &new)))
- return -1;
- kh_val(sh->h, k) = h_type;
-
- // Form the ring, either with self or other lines of this type
- if (!new) {
- SAM_hdr_type *t = kh_val(sh->h, k), *p;
- p = t->prev;
-
- assert(p->next = t);
- p->next = h_type;
- h_type->prev = p;
-
- t->prev = h_type;
- h_type->next = t;
- h_type->order = p->order + 1;
- } else {
- h_type->prev = h_type->next = h_type;
- h_type->order = 0;
- }
-
- last = NULL;
-
- // Any ... varargs
- va_start(args, ap);
- for (;;) {
- char *k, *v;
- int idx;
-
- if (!(k = (char *)va_arg(args, char *)))
- break;
- v = va_arg(args, char *);
-
- if (EOF == kputc_('\t', &sh->text))
- return -1;
-
- if (!(h_tag = pool_alloc(sh->tag_pool)))
- return -1;
- idx = ks_len(&sh->text);
-
- if (EOF == kputs(k, &sh->text))
- return -1;
- if (EOF == kputc_(':', &sh->text))
- return -1;
- if (EOF == kputs(v, &sh->text))
- return -1;
-
- h_tag->len = ks_len(&sh->text) - idx;
- h_tag->str = string_ndup(sh->str_pool,
- ks_str(&sh->text) + idx,
- h_tag->len);
- h_tag->next = NULL;
- if (!h_tag->str)
- return -1;
-
- if (last)
- last->next = h_tag;
- else
- h_type->tag = h_tag;
-
- last = h_tag;
- }
- va_end(args);
-
-#if defined(HAVE_VA_COPY)
- va_copy(ap_local, ap);
-# define ap ap_local
-#endif
-
- // Plus the specified va_list params
- for (;;) {
- char *k, *v;
- int idx;
-
- if (!(k = (char *)va_arg(ap, char *)))
- break;
- v = va_arg(ap, char *);
-
- if (EOF == kputc_('\t', &sh->text))
- return -1;
-
- if (!(h_tag = pool_alloc(sh->tag_pool)))
- return -1;
- idx = ks_len(&sh->text);
-
- if (EOF == kputs(k, &sh->text))
- return -1;
- if (EOF == kputc_(':', &sh->text))
- return -1;
- if (EOF == kputs(v, &sh->text))
- return -1;
-
- h_tag->len = ks_len(&sh->text) - idx;
- h_tag->str = string_ndup(sh->str_pool,
- ks_str(&sh->text) + idx,
- h_tag->len);
- h_tag->next = NULL;
- if (!h_tag->str)
- return -1;
-
- if (last)
- last->next = h_tag;
- else
- h_type->tag = h_tag;
-
- last = h_tag;
- }
- va_end(ap);
-
- if (EOF == kputc('\n', &sh->text))
- return -1;
-
- int itype = (type[0]<<8) | type[1];
- if (-1 == sam_hdr_update_hashes(sh, itype, h_type))
- return -1;
-
- return h_type->order;
-}
-
-/*
- * Returns the first header item matching 'type'. If ID is non-NULL it checks
- * for the tag ID: and compares against the specified ID.
- *
- * Returns NULL if no type/ID is found
- */
-SAM_hdr_type *sam_hdr_find(SAM_hdr *hdr, char *type,
- char *ID_key, char *ID_value) {
- SAM_hdr_type *t1, *t2;
- int itype = (type[0]<<8)|(type[1]);
- khint_t k;
-
- /* Special case for types we have prebuilt hashes on */
- if (ID_key) {
- if (type[0] == 'S' && type[1] == 'Q' &&
- ID_key[0] == 'S' && ID_key[1] == 'N') {
- k = kh_get(m_s2i, hdr->ref_hash, ID_value);
- return k != kh_end(hdr->ref_hash)
- ? hdr->ref[kh_val(hdr->ref_hash, k)].ty
- : NULL;
- }
-
- if (type[0] == 'R' && type[1] == 'G' &&
- ID_key[0] == 'I' && ID_key[1] == 'D') {
- k = kh_get(m_s2i, hdr->rg_hash, ID_value);
- return k != kh_end(hdr->rg_hash)
- ? hdr->rg[kh_val(hdr->rg_hash, k)].ty
- : NULL;
- }
-
- if (type[0] == 'P' && type[1] == 'G' &&
- ID_key[0] == 'I' && ID_key[1] == 'D') {
- k = kh_get(m_s2i, hdr->pg_hash, ID_value);
- return k != kh_end(hdr->pg_hash)
- ? hdr->pg[kh_val(hdr->pg_hash, k)].ty
- : NULL;
- }
- }
-
- k = kh_get(sam_hdr, hdr->h, itype);
- if (k == kh_end(hdr->h))
- return NULL;
-
- if (!ID_key)
- return kh_val(hdr->h, k);
-
- t1 = t2 = kh_val(hdr->h, k);
- do {
- SAM_hdr_tag *tag;
- for (tag = t1->tag; tag; tag = tag->next) {
- if (tag->str[0] == ID_key[0] && tag->str[1] == ID_key[1]) {
- char *cp1 = tag->str+3;
- char *cp2 = ID_value;
- while (*cp1 && *cp1 == *cp2)
- cp1++, cp2++;
- if (*cp2 || *cp1)
- continue;
- return t1;
- }
- }
- t1 = t1->next;
- } while (t1 != t2);
-
- return NULL;
-}
-
-/*
- * As per SAM_hdr_type, but returns a complete line of formatted text
- * for a specific head type/ID combination. If ID is NULL then it returns
- * the first line of the specified type.
- *
- * The returned string is malloced and should be freed by the calling
- * function with free().
- *
- * Returns NULL if no type/ID is found.
- */
-char *sam_hdr_find_line(SAM_hdr *hdr, char *type,
- char *ID_key, char *ID_value) {
- SAM_hdr_type *ty = sam_hdr_find(hdr, type, ID_key, ID_value);
- kstring_t ks = KS_INITIALIZER;
- SAM_hdr_tag *tag;
- int r = 0;
-
- if (!ty)
- return NULL;
-
- // Paste together the line from the hashed copy
- r |= (kputc_('@', &ks) == EOF);
- r |= (kputs(type, &ks) == EOF);
- for (tag = ty->tag; tag; tag = tag->next) {
- r |= (kputc_('\t', &ks) == EOF);
- r |= (kputsn(tag->str, tag->len, &ks) == EOF);
- }
-
- if (r) {
- KS_FREE(&ks);
- return NULL;
- }
-
- return ks_str(&ks);
-}
-
-
-/*
- * Looks for a specific key in a single sam header line.
- * If prev is non-NULL it also fills this out with the previous tag, to
- * permit use in key removal. *prev is set to NULL when the tag is the first
- * key in the list. When a tag isn't found, prev (if non NULL) will be the last
- * tag in the existing list.
- *
- * Returns the tag pointer on success
- * NULL on failure
- */
-SAM_hdr_tag *sam_hdr_find_key(SAM_hdr *sh,
- SAM_hdr_type *type,
- char *key,
- SAM_hdr_tag **prev) {
- SAM_hdr_tag *tag, *p = NULL;
-
- for (tag = type->tag; tag; p = tag, tag = tag->next) {
- if (tag->str[0] == key[0] && tag->str[1] == key[1]) {
- if (prev)
- *prev = p;
- return tag;
- }
- }
-
- if (prev)
- *prev = p;
-
- return NULL;
-}
-
-
-/*
- * Adds or updates tag key,value pairs in a header line.
- * Eg for adding M5 tags to @SQ lines or updating sort order for the
- * @HD line (although use the sam_hdr_sort_order() function for
- * HD manipulation, which is a wrapper around this funuction).
- *
- * Specify multiple key,value pairs ending in NULL.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int sam_hdr_update(SAM_hdr *hdr, SAM_hdr_type *type, ...) {
- va_list ap;
-
- va_start(ap, type);
-
- for (;;) {
- char *k, *v;
- int idx;
- SAM_hdr_tag *tag, *prev;
-
- if (!(k = (char *)va_arg(ap, char *)))
- break;
- v = va_arg(ap, char *);
-
- tag = sam_hdr_find_key(hdr, type, k, &prev);
- if (!tag) {
- if (!(tag = pool_alloc(hdr->tag_pool)))
- return -1;
- if (prev)
- prev->next = tag;
- else
- type->tag = tag;
-
- tag->next = NULL;
- }
-
- idx = ks_len(&hdr->text);
- if (ksprintf(&hdr->text, "%2.2s:%s", k, v) < 0)
- return -1;
- tag->len = ks_len(&hdr->text) - idx;
- tag->str = string_ndup(hdr->str_pool,
- ks_str(&hdr->text) + idx,
- tag->len);
- if (!tag->str)
- return -1;
- }
-
- va_end(ap);
-
- return 0;
-}
-
-#define K(a) (((a)[0]<<8)|((a)[1]))
-
-/*
- * Reconstructs the kstring from the header hash table.
- * Returns 0 on success
- * -1 on failure
- */
-int sam_hdr_rebuild(SAM_hdr *hdr) {
- /* Order: HD then others */
- kstring_t ks = KS_INITIALIZER;
- khint_t k;
-
-
- k = kh_get(sam_hdr, hdr->h, K("HD"));
- if (k != kh_end(hdr->h)) {
- SAM_hdr_type *ty = kh_val(hdr->h, k);
- SAM_hdr_tag *tag;
- if (EOF == kputs("@HD", &ks))
- return -1;
- for (tag = ty->tag; tag; tag = tag->next) {
- if (EOF == kputc_('\t', &ks))
- return -1;
- if (EOF == kputsn_(tag->str, tag->len, &ks))
- return -1;
- }
- if (EOF == kputc('\n', &ks))
- return -1;
- }
-
- for (k = kh_begin(hdr->h); k != kh_end(hdr->h); k++) {
- SAM_hdr_type *t1, *t2;
-
- if (!kh_exist(hdr->h, k))
- continue;
-
- if (kh_key(hdr->h, k) == K("HD"))
- continue;
-
- t1 = t2 = kh_val(hdr->h, k);
- do {
- SAM_hdr_tag *tag;
- char c[2];
-
- if (EOF == kputc_('@', &ks))
- return -1;
- c[0] = kh_key(hdr->h, k)>>8;
- c[1] = kh_key(hdr->h, k)&0xff;
- if (EOF == kputsn_(c, 2, &ks))
- return -1;
- for (tag = t1->tag; tag; tag=tag->next) {
- if (EOF == kputc_('\t', &ks))
- return -1;
- if (EOF == kputsn_(tag->str, tag->len, &ks))
- return -1;
- }
- if (EOF == kputc('\n', &ks))
- return -1;
- t1 = t1->next;
- } while (t1 != t2);
- }
-
- if (ks_str(&hdr->text))
- KS_FREE(&hdr->text);
-
- hdr->text = ks;
-
- return 0;
-}
-
-
-/*
- * Creates an empty SAM header, ready to be populated.
- *
- * Returns a SAM_hdr struct on success (free with sam_hdr_free())
- * NULL on failure
- */
-SAM_hdr *sam_hdr_new() {
- SAM_hdr *sh = calloc(1, sizeof(*sh));
-
- if (!sh)
- return NULL;
-
- sh->h = kh_init(sam_hdr);
- if (!sh->h)
- goto err;
-
- sh->ID_cnt = 1;
- sh->ref_count = 1;
-
- sh->nref = 0;
- sh->ref = NULL;
- if (!(sh->ref_hash = kh_init(m_s2i)))
- goto err;
-
- sh->nrg = 0;
- sh->rg = NULL;
- if (!(sh->rg_hash = kh_init(m_s2i)))
- goto err;
-
- sh->npg = 0;
- sh->pg = NULL;
- sh->npg_end = sh->npg_end_alloc = 0;
- sh->pg_end = NULL;
- if (!(sh->pg_hash = kh_init(m_s2i)))
- goto err;
-
- KS_INIT(&sh->text);
-
- if (!(sh->tag_pool = pool_create(sizeof(SAM_hdr_tag))))
- goto err;
-
- if (!(sh->type_pool = pool_create(sizeof(SAM_hdr_type))))
- goto err;
-
- if (!(sh->str_pool = string_pool_create(8192)))
- goto err;
-
- return sh;
-
- err:
- if (sh->h)
- kh_destroy(sam_hdr, sh->h);
-
- if (sh->tag_pool)
- pool_destroy(sh->tag_pool);
-
- if (sh->type_pool)
- pool_destroy(sh->type_pool);
-
- if (sh->str_pool)
- string_pool_destroy(sh->str_pool);
-
- free(sh);
-
- return NULL;
-}
-
-
-/*
- * Tokenises a SAM header into a hash table.
- * Also extracts a few bits on specific data types, such as @RG lines.
- *
- * Returns a SAM_hdr struct on success (free with sam_hdr_free())
- * NULL on failure
- */
-SAM_hdr *sam_hdr_parse_(const char *hdr, int len) {
- /* Make an empty SAM_hdr */
- SAM_hdr *sh;
-
- sh = sam_hdr_new();
- if (NULL == sh) return NULL;
-
- if (NULL == hdr) return sh; // empty header is permitted
-
- /* Parse the header, line by line */
- if (-1 == sam_hdr_add_lines(sh, hdr, len)) {
- sam_hdr_free(sh);
- return NULL;
- }
-
- //sam_hdr_dump(sh);
- //sam_hdr_add(sh, "RG", "ID", "foo", "SM", "bar", NULL);
- //sam_hdr_rebuild(sh);
- //printf(">>%s<<", ks_str(sh->text));
-
- //parse_references(sh);
- //parse_read_groups(sh);
-
- sam_hdr_link_pg(sh);
- //sam_hdr_dump(sh);
-
- return sh;
-}
-
-/*
- * Produces a duplicate copy of hdr and returns it.
- * Returns NULL on failure
- */
-SAM_hdr *sam_hdr_dup(SAM_hdr *hdr) {
- if (-1 == sam_hdr_rebuild(hdr))
- return NULL;
-
- return sam_hdr_parse_(sam_hdr_str(hdr), sam_hdr_length(hdr));
-}
-
-/*! Increments a reference count on hdr.
- *
- * This permits multiple files to share the same header, all calling
- * sam_hdr_free when done, without causing errors for other open files.
- */
-void sam_hdr_incr_ref(SAM_hdr *hdr) {
- hdr->ref_count++;
-}
-
-/*! Increments a reference count on hdr.
- *
- * This permits multiple files to share the same header, all calling
- * sam_hdr_free when done, without causing errors for other open files.
- *
- * If the reference count hits zero then the header is automatically
- * freed. This makes it a synonym for sam_hdr_free().
- */
-void sam_hdr_decr_ref(SAM_hdr *hdr) {
- sam_hdr_free(hdr);
-}
-
-/*! Deallocates all storage used by a SAM_hdr struct.
- *
- * This also decrements the header reference count. If after decrementing
- * it is still non-zero then the header is assumed to be in use by another
- * caller and the free is not done.
- *
- * This is a synonym for sam_hdr_dec_ref().
- */
-void sam_hdr_free(SAM_hdr *hdr) {
- if (!hdr)
- return;
-
- if (--hdr->ref_count > 0)
- return;
-
- if (ks_str(&hdr->text))
- KS_FREE(&hdr->text);
-
- if (hdr->h)
- kh_destroy(sam_hdr, hdr->h);
-
- if (hdr->ref_hash)
- kh_destroy(m_s2i, hdr->ref_hash);
-
- if (hdr->ref) {
- int i;
- for (i = 0; i < hdr->nref; i++)
- if (hdr->ref[i].name)
- free(hdr->ref[i].name);
- free(hdr->ref);
- }
-
- if (hdr->rg_hash)
- kh_destroy(m_s2i, hdr->rg_hash);
-
- if (hdr->rg) {
- int i;
- for (i = 0; i < hdr->nrg; i++)
- if (hdr->rg[i].name)
- free(hdr->rg[i].name);
- free(hdr->rg);
- }
-
- if (hdr->pg_hash)
- kh_destroy(m_s2i, hdr->pg_hash);
-
- if (hdr->pg) {
- int i;
- for (i = 0; i < hdr->npg; i++)
- if (hdr->pg[i].name)
- free(hdr->pg[i].name);
- free(hdr->pg);
- }
-
- if (hdr->pg_end)
- free(hdr->pg_end);
-
- if (hdr->type_pool)
- pool_destroy(hdr->type_pool);
-
- if (hdr->tag_pool)
- pool_destroy(hdr->tag_pool);
-
- if (hdr->str_pool)
- string_pool_destroy(hdr->str_pool);
-
- free(hdr);
-}
-
-int sam_hdr_length(SAM_hdr *hdr) {
- return ks_len(&hdr->text);
-}
-
-char *sam_hdr_str(SAM_hdr *hdr) {
- return ks_str(&hdr->text);
-}
-
-/*
- * Looks up a reference sequence by name and returns the numerical ID.
- * Returns -1 if unknown reference.
- */
-int sam_hdr_name2ref(SAM_hdr *hdr, const char *ref) {
- khint_t k = kh_get(m_s2i, hdr->ref_hash, ref);
- return k == kh_end(hdr->ref_hash) ? -1 : kh_val(hdr->ref_hash, k);
-}
-
-/*
- * Looks up a read-group by name and returns a pointer to the start of the
- * associated tag list.
- *
- * Returns NULL on failure
- */
-SAM_RG *sam_hdr_find_rg(SAM_hdr *hdr, const char *rg) {
- khint_t k = kh_get(m_s2i, hdr->rg_hash, rg);
- return k == kh_end(hdr->rg_hash)
- ? NULL
- : &hdr->rg[kh_val(hdr->rg_hash, k)];
-}
-
-
-/*
- * Fixes any PP links in @PG headers.
- * If the entries are in order then this doesn't need doing, but incase
- * our header is out of order this goes through the sh->pg[] array
- * setting the prev_id field.
- *
- * Note we can have multiple complete chains. This code should identify the
- * tails of these chains as these are the entries we have to link to in
- * subsequent PP records.
- *
- * Returns 0 on sucess
- * -1 on failure (indicating broken PG/PP records)
- */
-int sam_hdr_link_pg(SAM_hdr *hdr) {
- int i, j, ret = 0;
-
- hdr->npg_end_alloc = hdr->npg;
- hdr->pg_end = realloc(hdr->pg_end, hdr->npg * sizeof(*hdr->pg_end));
- if (!hdr->pg_end)
- return -1;
-
- for (i = 0; i < hdr->npg; i++)
- hdr->pg_end[i] = i;
-
- for (i = 0; i < hdr->npg; i++) {
- khint_t k;
- SAM_hdr_tag *tag;
- char tmp;
-
- for (tag = hdr->pg[i].tag; tag; tag = tag->next) {
- if (tag->str[0] == 'P' && tag->str[1] == 'P')
- break;
- }
- if (!tag) {
- /* Chain start points */
- continue;
- }
-
- tmp = tag->str[tag->len]; tag->str[tag->len] = 0;
- k = kh_get(m_s2i, hdr->pg_hash, tag->str+3);
- tag->str[tag->len] = tmp;
-
- if (k == kh_end(hdr->pg_hash)) {
- ret = -1;
- continue;
- }
-
- hdr->pg[i].prev_id = hdr->pg[kh_val(hdr->pg_hash, k)].id;
- hdr->pg_end[kh_val(hdr->pg_hash, k)] = -1;
- }
-
- for (i = j = 0; i < hdr->npg; i++) {
- if (hdr->pg_end[i] != -1)
- hdr->pg_end[j++] = hdr->pg_end[i];
- }
- hdr->npg_end = j;
-
- return ret;
-}
-
-/*
- * Returns a unique ID from a base name.
- *
- * The value returned is valid until the next call to
- * this function.
- */
-const char *sam_hdr_PG_ID(SAM_hdr *sh, const char *name) {
- khint_t k = kh_get(m_s2i, sh->pg_hash, name);
- if (k == kh_end(sh->pg_hash))
- return name;
-
- do {
- sprintf(sh->ID_buf, "%.1000s.%d", name, sh->ID_cnt++);
- k = kh_get(m_s2i, sh->pg_hash, sh->ID_buf);
- } while (k == kh_end(sh->pg_hash));
-
- return sh->ID_buf;
-}
-
-/*
- * Add an @PG line.
- *
- * If we wish complete control over this use sam_hdr_add() directly. This
- * function uses that, but attempts to do a lot of tedious house work for
- * you too.
- *
- * - It will generate a suitable ID if the supplied one clashes.
- * - It will generate multiple @PG records if we have multiple PG chains.
- *
- * Call it as per sam_hdr_add() with a series of key,value pairs ending
- * in NULL.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int sam_hdr_add_PG(SAM_hdr *sh, const char *name, ...) {
- va_list args;
- va_start(args, name);
-
- if (sh->npg_end) {
- /* Copy ends array to avoid us looping while modifying it */
- int *end = malloc(sh->npg_end * sizeof(int));
- int i, nends = sh->npg_end;
-
- if (!end)
- return -1;
-
- memcpy(end, sh->pg_end, nends * sizeof(*end));
-
- for (i = 0; i < nends; i++) {
- if (-1 == sam_hdr_vadd(sh, "PG", args,
- "ID", sam_hdr_PG_ID(sh, name),
- "PN", name,
- "PP", sh->pg[end[i]].name,
- NULL)) {
- free(end);
- return -1;
- }
- }
-
- free(end);
- } else {
- if (-1 == sam_hdr_vadd(sh, "PG", args,
- "ID", sam_hdr_PG_ID(sh, name),
- "PN", name,
- NULL))
- return -1;
- }
-
- //sam_hdr_dump(sh);
-
- return 0;
-}
-
-/*
- * A function to help with construction of CL tags in @PG records.
- * Takes an argc, argv pair and returns a single space-separated string.
- * This string should be deallocated by the calling function.
- *
- * Returns malloced char * on success
- * NULL on failure
- */
-char *stringify_argv(int argc, char *argv[]) {
- char *str, *cp;
- size_t nbytes = 1;
- int i, j;
-
- /* Allocate */
- for (i = 0; i < argc; i++) {
- nbytes += strlen(argv[i]) + 1;
- }
- if (!(str = malloc(nbytes)))
- return NULL;
-
- /* Copy */
- cp = str;
- for (i = 0; i < argc; i++) {
- j = 0;
- while (argv[i][j]) {
- if (argv[i][j] == '\t')
- *cp++ = ' ';
- else
- *cp++ = argv[i][j];
- j++;
- }
- *cp++ = ' ';
- }
- *cp++ = 0;
-
- return str;
-}
diff --git a/htslib/cram/sam_header.h b/htslib/cram/sam_header.h
deleted file mode 100644
index 8e0929e..0000000
--- a/htslib/cram/sam_header.h
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
-Copyright (c) 2013-2014 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*! \file
- * SAM header parsing.
- *
- * These functions can be shared between SAM, BAM and CRAM file
- * formats as all three internally use the same string encoding for
- * header fields.
- */
-
-/*
- * TODO.
- *
- * - Sort order (parse to struct, enum type, updating funcs)
- * - Removal of lines.
- * - Updating of lines
- */
-
-#ifndef _SAM_HDR_H_
-#define _SAM_HDR_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdarg.h>
-
-#include "cram/string_alloc.h"
-#include "cram/pooled_alloc.h"
-
-#include "htslib/khash.h"
-#include "htslib/kstring.h"
-
-// For structure assignment. Eg kstring_t s = KS_INITIALIZER;
-#define KS_INITIALIZER {0,0,0}
-
-// For initialisation elsewhere. Eg KS_INIT(x->str);
-#define KS_INIT(ks) ((ks)->l = 0, (ks)->m = 0, (ks)->s = NULL)
-
-// Frees the string subfield only. Assumes 's' itself is static.
-#define KS_FREE(ks) do { if ((ks)->s) free((ks)->s); } while(0)
-
-/*
- * Proposed new SAM header parsing
-
-1 @SQ ID:foo LN:100
-2 @SQ ID:bar LN:200
-3 @SQ ID:ram LN:300 UR:xyz
-4 @RG ID:r ...
-5 @RG ID:s ...
-
-Hash table for 2-char @keys without dup entries.
-If dup lines, we form a circular linked list. Ie hash keys = {RG, SQ}.
-
-HASH("SQ")--\
- |
- (3) <-> 1 <-> 2 <-> 3 <-> (1)
-
-HASH("RG")--\
- |
- (5) <-> 4 <-> 5 <-> (4)
-
-Items stored in the hash values also form their own linked lists:
-Ie SQ->ID(foo)->LN(100)
- SQ->ID(bar)->LN(200)
- SQ->ID(ram)->LN(300)->UR(xyz)
- RG->ID(r)
- */
-
-/*! A single key:value pair on a header line
- *
- * These form a linked list and hold strings. The strings are
- * allocated from a string_alloc_t pool referenced in the master
- * SAM_hdr structure. Do not attempt to free, malloc or manipulate
- * these strings directly.
- */
-typedef struct SAM_hdr_tag_s {
- struct SAM_hdr_tag_s *next;
- char *str;
- int len;
-} SAM_hdr_tag;
-
-/*! The parsed version of the SAM header string.
- *
- * Each header type (SQ, RG, HD, etc) points to its own SAM_hdr_type
- * struct via the main hash table h in the SAM_hdr struct.
- *
- * These in turn consist of circular bi-directional linked lists (ie
- * rings) to hold the multiple instances of the same header type
- * code. For example if we have 5 \@SQ lines the primary hash table
- * will key on \@SQ pointing to the first SAM_hdr_type and that in turn
- * will be part of a ring of 5 elements.
- *
- * For each SAM_hdr_type structure we also point to a SAM_hdr_tag
- * structure which holds the tokenised attributes; the tab separated
- * key:value pairs per line.
- */
-typedef struct SAM_hdr_item_s {
- struct SAM_hdr_item_s *next; // cirular
- struct SAM_hdr_item_s *prev;
- SAM_hdr_tag *tag; // first tag
- int order; // 0 upwards
-} SAM_hdr_type;
-
-/*! Parsed \@SQ lines */
-typedef struct {
- char *name;
- uint32_t len;
- SAM_hdr_type *ty;
- SAM_hdr_tag *tag;
-} SAM_SQ;
-
-/*! Parsed \@RG lines */
-typedef struct {
- char *name;
- SAM_hdr_type *ty;
- SAM_hdr_tag *tag;
- int name_len;
- int id; // numerical ID
-} SAM_RG;
-
-/*! Parsed \@PG lines */
-typedef struct {
- char *name;
- SAM_hdr_type *ty;
- SAM_hdr_tag *tag;
- int name_len;
- int id; // numerical ID
- int prev_id; // -1 if none
-} SAM_PG;
-
-KHASH_MAP_INIT_INT(sam_hdr, SAM_hdr_type*)
-KHASH_MAP_INIT_STR(m_s2i, int)
-
-/*! Primary structure for header manipulation
- *
- * The initial header text is held in the text kstring_t, but is also
- * parsed out into SQ, RG and PG arrays. These have a hash table
- * associated with each to allow lookup by ID or SN fields instead of
- * their numeric array indices. Additionally PG has an array to hold
- * the linked list start points (the last in a PP chain).
- *
- * Use the appropriate sam_hdr_* functions to edit the header, and
- * call sam_hdr_rebuild() any time the textual form needs to be
- * updated again.
- */
-typedef struct {
- kstring_t text; //!< concatenated text, indexed by SAM_hdr_tag
- khash_t(sam_hdr) *h;
- string_alloc_t *str_pool; //!< Pool of SAM_hdr_tag->str strings
- pool_alloc_t *type_pool;//!< Pool of SAM_hdr_type structs
- pool_alloc_t *tag_pool; //!< Pool of SAM_hdr_tag structs
-
- // @SQ lines / references
- int nref; //!< Number of \@SQ lines
- SAM_SQ *ref; //!< Array of parsed \@SQ lines
- khash_t(m_s2i) *ref_hash; //!< Maps SQ SN field to sq[] index
-
- // @RG lines / read-groups
- int nrg; //!< Number of \@RG lines
- SAM_RG *rg; //!< Array of parsed \@RG lines
- khash_t(m_s2i) *rg_hash; //!< Maps RG ID field to rg[] index
-
- // @PG lines / programs
- int npg; //!< Number of \@PG lines
- int npg_end; //!< Number of terminating \@PG lines
- int npg_end_alloc; //!< Size of pg_end field
- SAM_PG *pg; //!< Array of parsed \@PG lines
- khash_t(m_s2i) *pg_hash; //!< Maps PG ID field to pg[] index
- int *pg_end; //!< \@PG chain termination IDs
-
- // @cond internal
- char ID_buf[1024]; // temporary buffer
- int ID_cnt;
- int ref_count; // number of uses of this SAM_hdr
- // @endcond
-} SAM_hdr;
-
-/*! Creates an empty SAM header, ready to be populated.
- *
- * @return
- * Returns a SAM_hdr struct on success (free with sam_hdr_free())
- * NULL on failure
- */
-SAM_hdr *sam_hdr_new(void);
-
-/*! Tokenises a SAM header into a hash table.
- *
- * Also extracts a few bits on specific data types, such as @RG lines.
- *
- * @return
- * Returns a SAM_hdr struct on success (free with sam_hdr_free());
- * NULL on failure
- */
-SAM_hdr *sam_hdr_parse_(const char *hdr, int len);
-
-
-/*! Produces a duplicate copy of hdr and returns it.
- * @return
- * Returns NULL on failure
- */
-SAM_hdr *sam_hdr_dup(SAM_hdr *hdr);
-
-
-/*! Increments a reference count on hdr.
- *
- * This permits multiple files to share the same header, all calling
- * sam_hdr_free when done, without causing errors for other open files.
- */
-void sam_hdr_incr_ref(SAM_hdr *hdr);
-
-
-/*! Increments a reference count on hdr.
- *
- * This permits multiple files to share the same header, all calling
- * sam_hdr_free when done, without causing errors for other open files.
- *
- * If the reference count hits zero then the header is automatically
- * freed. This makes it a synonym for sam_hdr_free().
- */
-void sam_hdr_decr_ref(SAM_hdr *hdr);
-
-
-/*! Deallocates all storage used by a SAM_hdr struct.
- *
- * This also decrements the header reference count. If after decrementing
- * it is still non-zero then the header is assumed to be in use by another
- * caller and the free is not done.
- *
- * This is a synonym for sam_hdr_dec_ref().
- */
-void sam_hdr_free(SAM_hdr *hdr);
-
-/*! Returns the current length of the SAM_hdr in text form.
- *
- * Call sam_hdr_rebuild() first if editing has taken place.
- */
-int sam_hdr_length(SAM_hdr *hdr);
-
-/*! Returns the string form of the SAM_hdr.
- *
- * Call sam_hdr_rebuild() first if editing has taken place.
- */
-char *sam_hdr_str(SAM_hdr *hdr);
-
-/*! Appends a formatted line to an existing SAM header.
- *
- * Line is a full SAM header record, eg "@SQ\tSN:foo\tLN:100", with
- * optional new-line. If it contains more than 1 line then multiple lines
- * will be added in order.
- *
- * Len is the length of the text data, or 0 if unknown (in which case
- * it should be null terminated).
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_add_lines(SAM_hdr *sh, const char *lines, int len);
-
-/*! Adds a single line to a SAM header.
- *
- * Specify type and one or more key,value pairs, ending with the NULL key.
- * Eg. sam_hdr_add(h, "SQ", "ID", "foo", "LN", "100", NULL).
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_add(SAM_hdr *sh, const char *type, ...);
-
-/*! Adds a single line to a SAM header.
- *
- * This is much like sam_hdr_add() but with the additional va_list
- * argument. This is followed by specifying type and one or more
- * key,value pairs, ending with the NULL key.
- *
- * Eg. sam_hdr_vadd(h, "SQ", args, "ID", "foo", "LN", "100", NULL).
- *
- * The purpose of the additional va_list parameter is to permit other
- * varargs functions to call this while including their own additional
- * parameters; an example is in sam_hdr_add_PG().
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_vadd(SAM_hdr *sh, const char *type, va_list ap, ...);
-
-/*!
- * @return
- * Returns the first header item matching 'type'. If ID is non-NULL it checks
- * for the tag ID: and compares against the specified ID.
- *
- * Returns NULL if no type/ID is found
- */
-SAM_hdr_type *sam_hdr_find(SAM_hdr *hdr, char *type,
- char *ID_key, char *ID_value);
-
-/*!
- *
- * As per SAM_hdr_type, but returns a complete line of formatted text
- * for a specific head type/ID combination. If ID is NULL then it returns
- * the first line of the specified type.
- *
- * The returned string is malloced and should be freed by the calling
- * function with free().
- *
- * @return
- * Returns NULL if no type/ID is found.
- */
-char *sam_hdr_find_line(SAM_hdr *hdr, char *type,
- char *ID_key, char *ID_value);
-
-/*! Looks for a specific key in a single sam header line.
- *
- * If prev is non-NULL it also fills this out with the previous tag, to
- * permit use in key removal. *prev is set to NULL when the tag is the first
- * key in the list. When a tag isn't found, prev (if non NULL) will be the last
- * tag in the existing list.
- *
- * @return
- * Returns the tag pointer on success;
- * NULL on failure
- */
-SAM_hdr_tag *sam_hdr_find_key(SAM_hdr *sh,
- SAM_hdr_type *type,
- char *key,
- SAM_hdr_tag **prev);
-
-/*! Adds or updates tag key,value pairs in a header line.
- *
- * Eg for adding M5 tags to @SQ lines or updating sort order for the
- * @HD line (although use the sam_hdr_sort_order() function for
- * HD manipulation, which is a wrapper around this funuction).
- *
- * Specify multiple key,value pairs ending in NULL.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_update(SAM_hdr *hdr, SAM_hdr_type *type, ...);
-
-/*! Reconstructs the kstring from the header hash table.
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_rebuild(SAM_hdr *hdr);
-
-/*! Looks up a reference sequence by name and returns the numerical ID.
- * @return
- * Returns -1 if unknown reference.
- */
-int sam_hdr_name2ref(SAM_hdr *hdr, const char *ref);
-
-/*! Looks up a read-group by name and returns a pointer to the start of the
- * associated tag list.
- *
- * @return
- * Returns NULL on failure
- */
-SAM_RG *sam_hdr_find_rg(SAM_hdr *hdr, const char *rg);
-
-/*! Fixes any PP links in @PG headers.
- *
- * If the entries are in order then this doesn't need doing, but incase
- * our header is out of order this goes through the sh->pg[] array
- * setting the prev_id field.
- *
- * @return
- * Returns 0 on sucess;
- * -1 on failure (indicating broken PG/PP records)
- */
-int sam_hdr_link_pg(SAM_hdr *hdr);
-
-
-/*! Add an @PG line.
- *
- * If we wish complete control over this use sam_hdr_add() directly. This
- * function uses that, but attempts to do a lot of tedious house work for
- * you too.
- *
- * - It will generate a suitable ID if the supplied one clashes.
- * - It will generate multiple @PG records if we have multiple PG chains.
- *
- * Call it as per sam_hdr_add() with a series of key,value pairs ending
- * in NULL.
- *
- * @return
- * Returns 0 on success;
- * -1 on failure
- */
-int sam_hdr_add_PG(SAM_hdr *sh, const char *name, ...);
-
-/*!
- * A function to help with construction of CL tags in @PG records.
- * Takes an argc, argv pair and returns a single space-separated string.
- * This string should be deallocated by the calling function.
- *
- * @return
- * Returns malloced char * on success;
- * NULL on failure
- */
-char *stringify_argv(int argc, char *argv[]);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SAM_HDR_H_ */
diff --git a/htslib/cram/string_alloc.c b/htslib/cram/string_alloc.c
deleted file mode 100644
index d543e14..0000000
--- a/htslib/cram/string_alloc.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-Copyright (c) 2010 Genome Research Ltd.
-Author: Andrew Whitwham <aw7 at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-
-/*
- A pooled string allocator intended to cut down on the
- memory overhead of many small string allocations.
-
- Andrew Whitwham, September 2010.
-*/
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "string_alloc.h"
-
-#define MIN_STR_SIZE 1024
-
-
-/* creates the string pool. max_length is the initial size
- a single string can be. Tha max_length can grow as
- needed */
-
-string_alloc_t *string_pool_create(size_t max_length) {
- string_alloc_t *a_str;
-
- if (NULL == (a_str = (string_alloc_t *)malloc(sizeof(*a_str)))) {
- return NULL;
- }
-
- if (max_length < MIN_STR_SIZE) max_length = MIN_STR_SIZE;
-
- a_str->nstrings = 0;
- a_str->max_length = max_length;
- a_str->strings = NULL;
-
- return a_str;
-}
-
-
-/* internal function to do the actual memory allocation */
-
-static string_t *new_string_pool(string_alloc_t *a_str) {
- string_t *str;
-
- str = realloc(a_str->strings, (a_str->nstrings + 1) * sizeof(*a_str->strings));
-
- if (NULL == str) return NULL;
-
- a_str->strings = str;
- str = &a_str->strings[a_str->nstrings];
-
- str->str = malloc(a_str->max_length);;
-
- if (NULL == str->str) return NULL;
-
- str->used = 0;
- a_str->nstrings++;
-
- return str;
-}
-
-
-/* free allocated memory */
-
-void string_pool_destroy(string_alloc_t *a_str) {
- size_t i;
-
- for (i = 0; i < a_str->nstrings; i++) {
- free(a_str->strings[i].str);
- }
-
- free(a_str->strings);
- free(a_str);
-}
-
-
-/* allocate space for a string */
-
-char *string_alloc(string_alloc_t *a_str, size_t length) {
- string_t *str;
- char *ret;
-
- if (length <= 0) return NULL;
-
- // add to last string pool if we have space
- if (a_str->nstrings) {
- str = &a_str->strings[a_str->nstrings - 1];
-
- if (str->used + length < a_str->max_length) {
- ret = str->str + str->used;
- str->used += length;
- return ret;
- }
- }
-
- // increase the max length if needs be
- if (length > a_str->max_length) a_str->max_length = length;
-
- // need a new string pool
- str = new_string_pool(a_str);
-
- if (NULL == str) return NULL;
-
- str->used = length;
- return str->str;
-}
-
-
-/* equivalent to strdup */
-
-char *string_dup(string_alloc_t *a_str, char *instr) {
- return string_ndup(a_str, instr, strlen(instr));
-}
-
-char *string_ndup(string_alloc_t *a_str, char *instr, size_t len) {
- char *str = string_alloc(a_str, len + 1);
-
- if (NULL == str) return NULL;
-
- strncpy(str, instr, len);
- str[len] = 0;
-
- return str;
-}
diff --git a/htslib/cram/string_alloc.h b/htslib/cram/string_alloc.h
deleted file mode 100644
index 71ae26d..0000000
--- a/htslib/cram/string_alloc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright (c) 2010 Genome Research Ltd.
-Author: Andrew Whitwham <aw7 at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _STRING_ALLOC_H_
-#define _STRING_ALLOC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdlib.h>
-
-/*
- * A pooled string allocator intended to cut down on the
- * memory overhead of many small string allocations.
- *
- * Andrew Whitwham, September 2010.
- */
-
-typedef struct {
- char *str;
- size_t used;
-} string_t;
-
-typedef struct {
- size_t max_length;
- size_t nstrings;
- string_t *strings;
-} string_alloc_t;
-
-string_alloc_t *string_pool_create(size_t max_length);
-void string_pool_destroy(string_alloc_t *a_str);
-char *string_alloc(string_alloc_t *a_str, size_t length);
-char *string_dup(string_alloc_t *a_str, char *instr);
-char *string_ndup(string_alloc_t *a_str, char *instr, size_t len);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/htslib/cram/thread_pool.c b/htslib/cram/thread_pool.c
deleted file mode 100644
index dea9e90..0000000
--- a/htslib/cram/thread_pool.c
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
-Copyright (c) 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#include <stdlib.h>
-
-#include <signal.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-#include <assert.h>
-
-#include "cram/thread_pool.h"
-
-//#define DEBUG
-//#define DEBUG_TIME
-
-#define IN_ORDER
-
-#ifdef DEBUG
-static int worker_id(t_pool *p) {
- int i;
- pthread_t s = pthread_self();
- for (i = 0; i < p->tsize; i++) {
- if (pthread_equal(s, p->t[i].tid))
- return i;
- }
- return -1;
-}
-#endif
-
-/* ----------------------------------------------------------------------------
- * A queue to hold results from the thread pool.
- *
- * Each thread pool may have jobs of multiple types being queued up and
- * interleaved, so we allow several results queue per pool.
- *
- * The jobs themselves are expected to push their results onto their
- * appropriate results queue.
- */
-
-/*
- * Adds a result to the end of the result queue.
- *
- * Returns 0 on success;
- * -1 on failure
- */
-static int t_pool_add_result(t_pool_job *j, void *data) {
- t_results_queue *q = j->q;
- t_pool_result *r;
-
-#ifdef DEBUG
- fprintf(stderr, "%d: Adding resulting to queue %p, serial %d\n",
- worker_id(j->p), q, j->serial);
-#endif
-
- /* No results queue is fine if we don't want any results back */
- if (!q)
- return 0;
-
- if (!(r = malloc(sizeof(*r))))
- return -1;
-
- r->next = NULL;
- r->data = data;
- r->serial = j->serial;
-
- pthread_mutex_lock(&q->result_m);
- if (q->result_tail) {
- q->result_tail->next = r;
- q->result_tail = r;
- } else {
- q->result_head = q->result_tail = r;
- }
- q->queue_len++;
- q->pending--;
-
-#ifdef DEBUG
- fprintf(stderr, "%d: Broadcasting result_avail (id %d)\n",
- worker_id(j->p), r->serial);
-#endif
- pthread_cond_signal(&q->result_avail_c);
-#ifdef DEBUG
- fprintf(stderr, "%d: Broadcast complete\n", worker_id(j->p));
-#endif
-
- pthread_mutex_unlock(&q->result_m);
-
- return 0;
-}
-
-/* Core of t_pool_next_result() */
-static t_pool_result *t_pool_next_result_locked(t_results_queue *q) {
- t_pool_result *r, *last;
-
- for (last = NULL, r = q->result_head; r; last = r, r = r->next) {
- if (r->serial == q->next_serial)
- break;
- }
-
- if (r) {
- if (q->result_head == r)
- q->result_head = r->next;
- else
- last->next = r->next;
-
- if (q->result_tail == r)
- q->result_tail = last;
-
- if (!q->result_head)
- q->result_tail = NULL;
-
- q->next_serial++;
- q->queue_len--;
- }
-
- return r;
-}
-
-/*
- * Pulls a result off the head of the result queue. Caller should
- * free it (and any internals as appropriate) after use. This doesn't
- * wait for a result to be present.
- *
- * Results will be returned in strict order.
- *
- * Returns t_pool_result pointer if a result is ready.
- * NULL if not.
- */
-t_pool_result *t_pool_next_result(t_results_queue *q) {
- t_pool_result *r;
-
-#ifdef DEBUG
- fprintf(stderr, "Requesting next result on queue %p\n", q);
-#endif
-
- pthread_mutex_lock(&q->result_m);
- r = t_pool_next_result_locked(q);
- pthread_mutex_unlock(&q->result_m);
-
-#ifdef DEBUG
- fprintf(stderr, "(q=%p) Found %p\n", q, r);
-#endif
-
- return r;
-}
-
-t_pool_result *t_pool_next_result_wait(t_results_queue *q) {
- t_pool_result *r;
-
-#ifdef DEBUG
- fprintf(stderr, "Waiting for result %d...\n", q->next_serial);
-#endif
-
- pthread_mutex_lock(&q->result_m);
- while (!(r = t_pool_next_result_locked(q))) {
- /* Possible race here now avoided via _locked() call, but incase... */
- struct timeval now;
- struct timespec timeout;
-
- gettimeofday(&now, NULL);
- timeout.tv_sec = now.tv_sec + 10;
- timeout.tv_nsec = now.tv_usec * 1000;
-
- pthread_cond_timedwait(&q->result_avail_c, &q->result_m, &timeout);
- }
- pthread_mutex_unlock(&q->result_m);
-
- return r;
-}
-
-/*
- * Returns true if there are no items on the finished results queue and
- * also none still pending.
- */
-int t_pool_results_queue_empty(t_results_queue *q) {
- int empty;
-
- pthread_mutex_lock(&q->result_m);
- empty = q->queue_len == 0 && q->pending == 0;
- pthread_mutex_unlock(&q->result_m);
-
- return empty;
-}
-
-
-/*
- * Returns the number of completed jobs on the results queue.
- */
-int t_pool_results_queue_len(t_results_queue *q) {
- int len;
-
- pthread_mutex_lock(&q->result_m);
- len = q->queue_len;
- pthread_mutex_unlock(&q->result_m);
-
- return len;
-}
-
-int t_pool_results_queue_sz(t_results_queue *q) {
- int len;
-
- pthread_mutex_lock(&q->result_m);
- len = q->queue_len + q->pending;
- pthread_mutex_unlock(&q->result_m);
-
- return len;
-}
-
-/*
- * Frees a result 'r' and if free_data is true also frees
- * the internal r->data result too.
- */
-void t_pool_delete_result(t_pool_result *r, int free_data) {
- if (!r)
- return;
-
- if (free_data && r->data)
- free(r->data);
-
- free(r);
-}
-
-/*
- * Initialises a results queue.
- *
- * Results queue pointer on success;
- * NULL on failure
- */
-t_results_queue *t_results_queue_init(void) {
- t_results_queue *q = malloc(sizeof(*q));
-
- pthread_mutex_init(&q->result_m, NULL);
- pthread_cond_init(&q->result_avail_c, NULL);
-
- q->result_head = NULL;
- q->result_tail = NULL;
- q->next_serial = 0;
- q->curr_serial = 0;
- q->queue_len = 0;
- q->pending = 0;
-
- return q;
-}
-
-/* Deallocates memory for a results queue */
-void t_results_queue_destroy(t_results_queue *q) {
-#ifdef DEBUG
- fprintf(stderr, "Destroying results queue %p\n", q);
-#endif
-
- if (!q)
- return;
-
- pthread_mutex_destroy(&q->result_m);
- pthread_cond_destroy(&q->result_avail_c);
-
- memset(q, 0xbb, sizeof(*q));
- free(q);
-
-#ifdef DEBUG
- fprintf(stderr, "Destroyed results queue %p\n", q);
-#endif
-}
-
-/* ----------------------------------------------------------------------------
- * The thread pool.
- */
-
-#define TDIFF(t2,t1) ((t2.tv_sec-t1.tv_sec)*1000000 + t2.tv_usec-t1.tv_usec)
-
-/*
- * A worker thread.
- *
- * Each thread waits for the pool to be non-empty.
- * As soon as this applies, one of them succeeds in getting the lock
- * and then executes the job.
- */
-static void *t_pool_worker(void *arg) {
- t_pool_worker_t *w = (t_pool_worker_t *)arg;
- t_pool *p = w->p;
- t_pool_job *j;
-#ifdef DEBUG_TIME
- struct timeval t1, t2, t3;
-#endif
-
- for (;;) {
- // Pop an item off the pool queue
-#ifdef DEBUG_TIME
- gettimeofday(&t1, NULL);
-#endif
-
- pthread_mutex_lock(&p->pool_m);
-
-#ifdef DEBUG_TIME
- gettimeofday(&t2, NULL);
- p->wait_time += TDIFF(t2,t1);
- w->wait_time += TDIFF(t2,t1);
-#endif
-
- // If there is something on the job list and a higher priority
- // thread waiting, let it handle this instead.
-// while (p->head && p->t_stack_top != -1 && p->t_stack_top < w->idx) {
-// pthread_mutex_unlock(&p->pool_m);
-// pthread_cond_signal(&p->t[p->t_stack_top].pending_c);
-// pthread_mutex_lock(&p->pool_m);
-// }
-
- while (!p->head && !p->shutdown) {
- p->nwaiting++;
-
- if (p->njobs == 0)
- pthread_cond_signal(&p->empty_c);
-#ifdef DEBUG_TIME
- gettimeofday(&t2, NULL);
-#endif
-
-#ifdef IN_ORDER
- // Push this thread to the top of the waiting stack
- if (p->t_stack_top == -1 || p->t_stack_top > w->idx)
- p->t_stack_top = w->idx;
-
- p->t_stack[w->idx] = 1;
- pthread_cond_wait(&w->pending_c, &p->pool_m);
- p->t_stack[w->idx] = 0;
-
- /* Find new t_stack_top */
- {
- int i;
- p->t_stack_top = -1;
- for (i = 0; i < p->tsize; i++) {
- if (p->t_stack[i]) {
- p->t_stack_top = i;
- break;
- }
- }
- }
-#else
- pthread_cond_wait(&p->pending_c, &p->pool_m);
-#endif
-
-#ifdef DEBUG_TIME
- gettimeofday(&t3, NULL);
- p->wait_time += TDIFF(t3,t2);
- w->wait_time += TDIFF(t3,t2);
-#endif
- p->nwaiting--;
- }
-
- if (p->shutdown) {
-#ifdef DEBUG_TIME
- p->total_time += TDIFF(t3,t1);
-#endif
-#ifdef DEBUG
- fprintf(stderr, "%d: Shutting down\n", worker_id(p));
-#endif
- pthread_mutex_unlock(&p->pool_m);
- pthread_exit(NULL);
- }
-
- j = p->head;
- if (!(p->head = j->next))
- p->tail = NULL;
-
- if (p->njobs-- >= p->qsize)
- pthread_cond_signal(&p->full_c);
-
- if (p->njobs == 0)
- pthread_cond_signal(&p->empty_c);
-
- pthread_mutex_unlock(&p->pool_m);
-
- // We have job 'j' - now execute it.
- t_pool_add_result(j, j->func(j->arg));
-#ifdef DEBUG_TIME
- pthread_mutex_lock(&p->pool_m);
- gettimeofday(&t3, NULL);
- p->total_time += TDIFF(t3,t1);
- pthread_mutex_unlock(&p->pool_m);
-#endif
- memset(j, 0xbb, sizeof(*j));
- free(j);
- }
-
- return NULL;
-}
-
-/*
- * Creates a worker pool of length qsize with tsize worker threads.
- *
- * Returns pool pointer on success;
- * NULL on failure
- */
-t_pool *t_pool_init(int qsize, int tsize) {
- int i;
- t_pool *p = malloc(sizeof(*p));
- p->qsize = qsize;
- p->tsize = tsize;
- p->njobs = 0;
- p->nwaiting = 0;
- p->shutdown = 0;
- p->head = p->tail = NULL;
- p->t_stack = NULL;
-#ifdef DEBUG_TIME
- p->total_time = p->wait_time = 0;
-#endif
-
- p->t = malloc(tsize * sizeof(p->t[0]));
-
- pthread_mutex_init(&p->pool_m, NULL);
- pthread_cond_init(&p->empty_c, NULL);
- pthread_cond_init(&p->full_c, NULL);
-
- pthread_mutex_lock(&p->pool_m);
-
-#ifdef IN_ORDER
- if (!(p->t_stack = malloc(tsize * sizeof(*p->t_stack))))
- return NULL;
- p->t_stack_top = -1;
-
- for (i = 0; i < tsize; i++) {
- t_pool_worker_t *w = &p->t[i];
- p->t_stack[i] = 0;
- w->p = p;
- w->idx = i;
- w->wait_time = 0;
- pthread_cond_init(&w->pending_c, NULL);
- if (0 != pthread_create(&w->tid, NULL, t_pool_worker, w))
- return NULL;
- }
-#else
- pthread_cond_init(&p->pending_c, NULL);
-
- for (i = 0; i < tsize; i++) {
- t_pool_worker_t *w = &p->t[i];
- w->p = p;
- w->idx = i;
- pthread_cond_init(&w->pending_c, NULL);
- if (0 != pthread_create(&w->tid, NULL, t_pool_worker, w))
- return NULL;
- }
-#endif
-
- pthread_mutex_unlock(&p->pool_m);
-
- return p;
-}
-
-/*
- * Adds an item to the work pool.
- *
- * FIXME: Maybe return 1,0,-1 and distinguish between job dispathed vs
- * result returned. Ie rather than blocking on full queue we're permitted
- * to return early on "result available" event too.
- * Caller would then have a while loop around t_pool_dispatch.
- * Or, return -1 and set errno to EAGAIN to indicate job not yet submitted.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int t_pool_dispatch(t_pool *p, t_results_queue *q,
- void *(*func)(void *arg), void *arg) {
- t_pool_job *j = malloc(sizeof(*j));
-
- if (!j)
- return -1;
- j->func = func;
- j->arg = arg;
- j->next = NULL;
- j->p = p;
- j->q = q;
- if (q) {
- pthread_mutex_lock(&q->result_m);
- j->serial = q->curr_serial++;
- q->pending++;
- pthread_mutex_unlock(&q->result_m);
- } else {
- j->serial = 0;
- }
-
-#ifdef DEBUG
- fprintf(stderr, "Dispatching job %p for queue %p, serial %d\n", j, q, j->serial);
-#endif
-
- pthread_mutex_lock(&p->pool_m);
-
- // Check if queue is full
- while (p->njobs >= p->qsize)
- pthread_cond_wait(&p->full_c, &p->pool_m);
-
- p->njobs++;
-
- if (p->tail) {
- p->tail->next = j;
- p->tail = j;
- } else {
- p->head = p->tail = j;
- }
-
- // Let a worker know we have data.
-#ifdef IN_ORDER
- if (p->t_stack_top >= 0 && p->njobs > p->tsize - p->nwaiting)
- pthread_cond_signal(&p->t[p->t_stack_top].pending_c);
-#else
- pthread_cond_signal(&p->pending_c);
-#endif
- pthread_mutex_unlock(&p->pool_m);
-
-#ifdef DEBUG
- fprintf(stderr, "Dispatched (serial %d)\n", j->serial);
-#endif
-
- return 0;
-}
-
-/*
- * As above but optional non-block flag.
- *
- * nonblock 0 => block if input queue is full
- * nonblock +1 => don't block if input queue is full, but do not add task
- * nonblock -1 => add task regardless of whether queue is full (over-size)
- */
-int t_pool_dispatch2(t_pool *p, t_results_queue *q,
- void *(*func)(void *arg), void *arg, int nonblock) {
- t_pool_job *j;
-
-#ifdef DEBUG
- fprintf(stderr, "Dispatching job for queue %p, serial %d\n", q, q->curr_serial);
-#endif
-
- pthread_mutex_lock(&p->pool_m);
-
- if (p->njobs >= p->qsize && nonblock == 1) {
- pthread_mutex_unlock(&p->pool_m);
- errno = EAGAIN;
- return -1;
- }
-
- if (!(j = malloc(sizeof(*j))))
- return -1;
- j->func = func;
- j->arg = arg;
- j->next = NULL;
- j->p = p;
- j->q = q;
- if (q) {
- pthread_mutex_lock(&q->result_m);
- j->serial = q->curr_serial;
- pthread_mutex_unlock(&q->result_m);
- } else {
- j->serial = 0;
- }
-
- if (q) {
- pthread_mutex_lock(&q->result_m);
- q->curr_serial++;
- q->pending++;
- pthread_mutex_unlock(&q->result_m);
- }
-
- // Check if queue is full
- if (nonblock == 0)
- while (p->njobs >= p->qsize)
- pthread_cond_wait(&p->full_c, &p->pool_m);
-
- p->njobs++;
-
-// if (q->curr_serial % 100 == 0)
-// fprintf(stderr, "p->njobs = %d p->qsize = %d\n", p->njobs, p->qsize);
-
- if (p->tail) {
- p->tail->next = j;
- p->tail = j;
- } else {
- p->head = p->tail = j;
- }
-
-#ifdef DEBUG
- fprintf(stderr, "Dispatched (serial %d)\n", j->serial);
-#endif
-
- // Let a worker know we have data.
-#ifdef IN_ORDER
- // Keep incoming queue at 1 per running thread, so there is always
- // something waiting when they end their current task. If we go above
- // this signal to start more threads (if available). This has the effect
- // of concentrating jobs to fewer cores when we are I/O bound, which in
- // turn benefits systems with auto CPU frequency scaling.
- if (p->t_stack_top >= 0 && p->njobs > p->tsize - p->nwaiting)
- pthread_cond_signal(&p->t[p->t_stack_top].pending_c);
-#else
- pthread_cond_signal(&p->pending_c);
-#endif
-
- pthread_mutex_unlock(&p->pool_m);
-
- return 0;
-}
-
-/*
- * Flushes the pool, but doesn't exit. This simply drains the queue and
- * ensures all worker threads have finished their current task.
- *
- * Returns 0 on success;
- * -1 on failure
- */
-int t_pool_flush(t_pool *p) {
- int i;
-
-#ifdef DEBUG
- fprintf(stderr, "Flushing pool %p\n", p);
-#endif
-
- // Drains the queue
- pthread_mutex_lock(&p->pool_m);
-
- // Wake up everything for the final sprint!
- for (i = 0; i < p->tsize; i++)
- if (p->t_stack[i])
- pthread_cond_signal(&p->t[i].pending_c);
-
- while (p->njobs || p->nwaiting != p->tsize)
- pthread_cond_wait(&p->empty_c, &p->pool_m);
-
- pthread_mutex_unlock(&p->pool_m);
-
-#ifdef DEBUG
- fprintf(stderr, "Flushed complete for pool %p, njobs=%d, nwaiting=%d\n",
- p, p->njobs, p->nwaiting);
-#endif
-
- return 0;
-}
-
-/*
- * Destroys a thread pool. If 'kill' is true the threads are terminated now,
- * otherwise they are joined into the main thread so they will finish their
- * current work load.
- *
- * Use t_pool_destroy(p,0) after a t_pool_flush(p) on a normal shutdown or
- * t_pool_destroy(p,1) to quickly exit after a fatal error.
- */
-void t_pool_destroy(t_pool *p, int kill) {
- int i;
-
-#ifdef DEBUG
- fprintf(stderr, "Destroying pool %p, kill=%d\n", p, kill);
-#endif
-
- /* Send shutdown message to worker threads */
- if (!kill) {
- pthread_mutex_lock(&p->pool_m);
- p->shutdown = 1;
-
-#ifdef DEBUG
- fprintf(stderr, "Sending shutdown request\n");
-#endif
-
-#ifdef IN_ORDER
- for (i = 0; i < p->tsize; i++)
- pthread_cond_signal(&p->t[i].pending_c);
-#else
- pthread_cond_broadcast(&p->pending_c);
-#endif
- pthread_mutex_unlock(&p->pool_m);
-
-#ifdef DEBUG
- fprintf(stderr, "Shutdown complete\n");
-#endif
- for (i = 0; i < p->tsize; i++)
- pthread_join(p->t[i].tid, NULL);
- } else {
- for (i = 0; i < p->tsize; i++)
- pthread_kill(p->t[i].tid, SIGINT);
- }
-
- pthread_mutex_destroy(&p->pool_m);
- pthread_cond_destroy(&p->empty_c);
- pthread_cond_destroy(&p->full_c);
-#ifdef IN_ORDER
- for (i = 0; i < p->tsize; i++)
- pthread_cond_destroy(&p->t[i].pending_c);
-#else
- pthread_cond_destroy(&p->pending_c);
-#endif
-
-#ifdef DEBUG_TIME
- fprintf(stderr, "Total time=%f\n", p->total_time / 1000000.0);
- fprintf(stderr, "Wait time=%f\n", p->wait_time / 1000000.0);
- fprintf(stderr, "%d%% utilisation\n",
- (int)(100 - ((100.0 * p->wait_time) / p->total_time + 0.5)));
- for (i = 0; i < p->tsize; i++)
- fprintf(stderr, "%d: Wait time=%f\n", i,
- p->t[i].wait_time / 1000000.0);
-#endif
-
- if (p->t_stack)
- free(p->t_stack);
-
- free(p->t);
- free(p);
-
-#ifdef DEBUG
- fprintf(stderr, "Destroyed pool %p\n", p);
-#endif
-}
-
-
-/*-----------------------------------------------------------------------------
- * Test app.
- */
-
-#ifdef TEST_MAIN
-
-#include <stdio.h>
-#include <math.h>
-
-void *doit(void *arg) {
- int i, k, x = 0;
- int job = *(int *)arg;
- int *res;
-
- printf("Worker: execute job %d\n", job);
-
- usleep(random() % 1000000); // to coerce job completion out of order
- if (0) {
- for (k = 0; k < 100; k++) {
- for (i = 0; i < 100000; i++) {
- x++;
- x += x * sin(i);
- x += x * cos(x);
- }
- }
- x *= 100;
- x += job;
- } else {
- x = job*job;
- }
-
- printf("Worker: job %d terminating, x=%d\n", job, x);
-
- free(arg);
-
- res = malloc(sizeof(*res));
- *res = x;
-
- return res;
-}
-
-#define NTHREADS 8
-
-int main(int argc, char **argv) {
- t_pool *p = t_pool_init(NTHREADS*2, NTHREADS);
- t_results_queue *q = t_results_queue_init();
- int i;
- t_pool_result *r;
-
- // Dispatch jobs
- for (i = 0; i < 20; i++) {
- int *ip = malloc(sizeof(*ip));
- *ip = i;
- printf("Submitting %d\n", i);
- t_pool_dispatch(p, q, doit, ip);
-
- // Check for results
- if ((r = t_pool_next_result(q))) {
- printf("RESULT: %d\n", *(int *)r->data);
- t_pool_delete_result(r, 1);
- }
- }
-
- t_pool_flush(p);
-
- while ((r = t_pool_next_result(q))) {
- printf("RESULT: %d\n", *(int *)r->data);
- t_pool_delete_result(r, 1);
- }
-
- t_pool_destroy(p, 0);
- t_results_queue_destroy(q);
-
- return 0;
-}
-#endif
diff --git a/htslib/cram/thread_pool.h b/htslib/cram/thread_pool.h
deleted file mode 100644
index d26c5d9..0000000
--- a/htslib/cram/thread_pool.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-Copyright (c) 2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-/*
- * This file implements a thread pool for multi-threading applications.
- * It consists of two distinct interfaces: thread pools an results queues.
- *
- * The pool of threads is given a function pointer and void* data to pass in.
- * This means the pool can run jobs of multiple types, albeit first come
- * first served with no job scheduling.
- *
- * Upon completion, the return value from the function pointer is added to
- * a results queue. We may have multiple queues in use for the one pool.
- *
- * An example: reading from BAM and writing to CRAM with 10 threads. We'll
- * have a pool of 10 threads and two results queues holding decoded BAM blocks
- * and encoded CRAM blocks respectively.
- */
-
-#ifndef _THREAD_POOL_H_
-#define _THREAD_POOL_H_
-
-#include <pthread.h>
-
-struct t_pool;
-struct t_results_queue;
-
-typedef struct t_pool_job {
- void *(*func)(void *arg);
- void *arg;
- struct t_pool_job *next;
-
- struct t_pool *p;
- struct t_results_queue *q;
- int serial;
-} t_pool_job;
-
-typedef struct t_res {
- struct t_res *next;
- int serial; // sequential number for ordering
- void *data; // result itself
-} t_pool_result;
-
-struct t_pool;
-
-typedef struct {
- struct t_pool *p;
- int idx;
- pthread_t tid;
- pthread_cond_t pending_c;
- long long wait_time;
-} t_pool_worker_t;
-
-typedef struct t_pool {
- int qsize; // size of queue
- int njobs; // pending job count
- int nwaiting; // how many workers waiting for new jobs
- int shutdown; // true if pool is being destroyed
-
- // queue of pending jobs
- t_pool_job *head, *tail;
-
- // threads
- int tsize; // maximum number of jobs
- t_pool_worker_t *t;
-
- // Mutexes
- pthread_mutex_t pool_m; // used when updating head/tail
-
- pthread_cond_t empty_c;
- pthread_cond_t pending_c; // not empty
- pthread_cond_t full_c;
-
- // array of worker IDs free
- int *t_stack, t_stack_top;
-
- // Debugging to check wait time
- long long total_time, wait_time;
-} t_pool;
-
-typedef struct t_results_queue {
- t_pool_result *result_head;
- t_pool_result *result_tail;
- int next_serial;
- int curr_serial;
- int queue_len; // number of items in queue
- int pending; // number of pending items (in progress or in pool list)
- pthread_mutex_t result_m;
- pthread_cond_t result_avail_c;
-} t_results_queue;
-
-
-/*
- * Creates a worker pool of length qsize with tsize worker threads.
- *
- * Returns pool pointer on success;
- * NULL on failure
- */
-t_pool *t_pool_init(int qsize, int tsize);
-
-/*
- * Adds an item to the work pool.
- *
- * FIXME: Maybe return 1,0,-1 and distinguish between job dispathed vs
- * result returned. Ie rather than blocking on full queue we're permitted
- * to return early on "result available" event too.
- * Caller would then have a while loop around t_pool_dispatch.
- * Or, return -1 and set errno to E_AGAIN to indicate job not yet submitted.
- *
- * Returns 0 on success
- * -1 on failure
- */
-int t_pool_dispatch(t_pool *p, t_results_queue *q,
- void *(*func)(void *arg), void *arg);
-int t_pool_dispatch2(t_pool *p, t_results_queue *q,
- void *(*func)(void *arg), void *arg, int nonblock);
-
-/*
- * Flushes the pool, but doesn't exit. This simply drains the queue and
- * ensures all worker threads have finished their current task.
- *
- * Returns 0 on success;
- * -1 on failure
- */
-int t_pool_flush(t_pool *p);
-
-/*
- * Destroys a thread pool. If 'kill' is true the threads are terminated now,
- * otherwise they are joined into the main thread so they will finish their
- * current work load.
- *
- * Use t_pool_destroy(p,0) after a t_pool_flush(p) on a normal shutdown or
- * t_pool_destroy(p,1) to quickly exit after a fatal error.
- */
-void t_pool_destroy(t_pool *p, int kill);
-
-/*
- * Pulls a result off the head of the result queue. Caller should
- * free it (and any internals as appropriate) after use. This doesn't
- * wait for a result to be present.
- *
- * Results will be returned in strict order.
- *
- * Returns t_pool_result pointer if a result is ready.
- * NULL if not.
- */
-t_pool_result *t_pool_next_result(t_results_queue *q);
-t_pool_result *t_pool_next_result_wait(t_results_queue *q);
-
-/*
- * Frees a result 'r' and if free_data is true also frees
- * the internal r->data result too.
- */
-void t_pool_delete_result(t_pool_result *r, int free_data);
-
-/*
- * Initialises a results queue.
- *
- * Results queue pointer on success;
- * NULL on failure
- */
-t_results_queue *t_results_queue_init(void);
-
-/* Deallocates memory for a results queue */
-void t_results_queue_destroy(t_results_queue *q);
-
-/*
- * Returns true if there are no items on the finished results queue and
- * also none still pending.
- */
-int t_pool_results_queue_empty(t_results_queue *q);
-
-/*
- * Returns the number of completed jobs on the results queue.
- */
-int t_pool_results_queue_len(t_results_queue *q);
-
-/*
- * Returns the number of completed jobs plus the number queued up to run.
- */
-int t_pool_results_queue_sz(t_results_queue *q);
-
-#endif /* _THREAD_POOL_H_ */
diff --git a/htslib/cram/vlen.c b/htslib/cram/vlen.c
deleted file mode 100644
index e451bbd..0000000
--- a/htslib/cram/vlen.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
-Author: James Bonfield (jkb at sanger.ac.uk)
-
-Copyright (c) 1995-1996 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1 Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2 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.
-
- 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
- */
-
-/*
-Copyright (c) 2004, 2009, 2011-2012 Genome Research Ltd.
-
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <string.h>
-
-#include "cram/vlen.h"
-#include "cram/os.h"
-
-#ifndef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#endif
-
-#ifndef ABS
-#define ABS(a) ((a)>0?(a):-(a))
-#endif
-
-/* #define DEBUG_printf(a,n) printf(a,n) */
-#define DEBUG_printf(a,n)
-
-/*
- * vlen: 27/10/95 written by James Bonfield, jkb at mrc-lmb.cam.ac.uk
- *
- * Given sprintf style of arguments this routine returns the maximum
- * size of buffer needed to allocate to use with sprintf. It errs on
- * the side of caution by being simplistic in its approach: we assume
- * all numbers are of maximum length.
- *
- * Handles the usual type conversions (%[%diuaxXcfeEgGpns]), but not
- * the 'wide' character conversions (%C and %S).
- * Precision is handled in the correct formats, including %*.*
- * notations.
- * Additionally, some of the more dubious (but probably illegal) cases
- * are supported (eg "%10%" will expand to " %" on many
- * systems).
- *
- * We also assume that the largest integer and larger pointer are 64
- * bits, which at least covers the machines we'll need it for.
- */
-int flen(char *fmt, ...)
-{
- va_list args;
-
- va_start(args, fmt);
- return vflen(fmt, args);
-}
-
-int vflen(char *fmt, va_list ap)
-{
- int len = 0;
- char *cp, c;
- long long l;
- int i;
- double d;
-
- /*
- * This code modifies 'ap', but we do not know if va_list is a structure
- * or a pointer to an array so we do not know if it is a local variable
- * or not.
- * C99 gets around this by defining va_copy() to make copies of ap, but
- * this does not exist on all systems.
- * For now, I just assume that when va_list is a pointer the system also
- * provides a va_copy macro to work around this problem. The only system
- * I have seen needing this so far was Linux on AMD64.
- */
-#if defined(HAVE_VA_COPY)
- va_list ap_local;
- va_copy(ap_local, ap);
-# define ap ap_local
-#endif
-
- for(cp = fmt; *cp; cp++) {
- switch(*cp) {
-
- /* A format specifier */
- case '%': {
- char *endp;
- long conv_len1=0, conv_len2=0, conv_len=0;
- signed int arg_size;
-
- /* Firstly, strip the modifier flags (+-#0 and [space]) */
- for(; (c=*++cp);) {
- if ('#' == c)
- len+=2; /* Worst case of "0x" */
- else if ('-' == c || '+' == c || ' ' == c)
- len++;
- else
- break;
- }
-
- /* Width specifier */
- l = strtol(cp, &endp, 10);
- if (endp != cp) {
- cp = endp;
- conv_len = conv_len1 = l;
- } else if (*cp == '*') {
- conv_len = conv_len1 = (int)va_arg(ap, int);
- cp++;
- }
-
- /* Precision specifier */
- if ('.' == *cp) {
- cp++;
- conv_len2 = strtol(cp, &endp, 10);
- if (endp != cp) {
- cp = endp;
- } else if (*cp == '*') {
- conv_len2 = (int)va_arg(ap, int);
- cp++;
- }
- conv_len = MAX(conv_len1, conv_len2);
- }
-
- /* Short/long identifier */
- if ('h' == *cp) {
- arg_size = -1; /* short */
- cp++;
- } else if ('l' == *cp) {
- arg_size = 1; /* long */
- cp++;
- if ('l' == *cp) {
- arg_size = 2; /* long long */
- cp++;
- }
- } else {
- arg_size = 0; /* int */
- }
-
- /* The actual type */
- switch (*cp) {
- case '%':
- /*
- * Not real ANSI I suspect, but we'll allow for the
- * completely daft "%10%" example.
- */
- len += MAX(conv_len1, 1);
- break;
-
- case 'd':
- case 'i':
- case 'u':
- case 'a':
- case 'x':
- case 'X':
- /* Remember: char and short are sent as int on the stack */
- if (arg_size == -1)
- l = (long)va_arg(ap, int);
- else if (arg_size == 1)
- l = va_arg(ap, long);
- else if (arg_size == 2)
- l = va_arg(ap, long long);
- else
- l = (long)va_arg(ap, int);
-
- DEBUG_printf("%d", l);
-
- /*
- * No number can be more than 24 characters so we'll take
- * the max of conv_len and 24 (23 is len(2^64) in octal).
- * All that work above and we then go and estimate ;-),
- * but it's needed incase someone does %500d.
- */
- len += MAX(conv_len, 23);
- break;
-
- case 'c':
- i = va_arg(ap, int);
- DEBUG_printf("%c", i);
- /*
- * Note that %10c and %.10c act differently.
- * Besides, I think precision is not really allowed for %c.
- */
- len += MAX(conv_len1, i>=0x80 ?MB_CUR_MAX :1);
- break;
-
- case 'f':
- d = va_arg(ap, double);
- DEBUG_printf("%f", d);
- /*
- * Maybe "Inf" or "NaN", but we'll not worry about that.
- * Again, err on side of caution and take max of conv_len
- * and max length of a double. The worst case I can
- * think of is 317 characters (-1[308 zeros].000000)
- * without using precision codes. That's horrid. I
- * cheat and either use 317 or 15 depending on how
- * large the number is as I reckon 99% of floats
- * aren't that long.
- */
- l = (ABS(d) > 1000000) ? 317 : 15;
- l = MAX(l, conv_len1 + 2);
- if (conv_len2) l += conv_len2 - 6;
- len += l;
- break;
-
- case 'e':
- case 'E':
- case 'g':
- case 'G':
- d = va_arg(ap, double);
- DEBUG_printf("%g", d);
- /*
- * Maybe "Inf" or "NaN", but we'll not worry about that
- * Again, err on side of caution and take max of conv_len
- * and max length of a double (which defaults to only
- * '-' + 6 + '.' + 'E[+-]xxx' == 13.
- */
- len += MAX(conv_len, 13);
- break;
-
- case 'p':
- l = (long)va_arg(ap, void *);
- /*
- * Max pointer is 64bits == 16 chars (on alpha),
- * == 20 with + "0x".
- */
- DEBUG_printf("%p", (void *)l);
- len += MAX(conv_len, 20);
- break;
-
- case 'n':
- /* produces no output */
- break;
-
- case 's': {
- char *s = (char *)va_arg(ap, char *);
- DEBUG_printf("%s", s);
-
- if (!conv_len2) {
- len += MAX(conv_len, (int)strlen(s));
- } else {
- len += conv_len;
- }
- break;
- }
-
- default:
- /* wchar_t types of 'C' and 'S' aren't supported */
- DEBUG_printf("Arg is %c\n", *cp);
- }
-
- }
-
- case '\0':
- break;
-
- default:
- DEBUG_printf("%c", *cp);
- len++;
- }
- }
-
- va_end(ap);
-
- return len+1; /* one for the null character */
-}
-
-#if 0
-int main() {
- int l;
- char buf[10000];
-
- sprintf(buf, "d: %d\n", 500);
- l = flen("d: %d\n", 500);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "");
- l = flen("");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%s\n","test");
- l = flen("%s\n", "test");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%c\n", 'a');
- l = flen("%c\n", 'a');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%31.30f\n", -9999.99);
- l = flen("%31.30f\n", -9999.99);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%f\n", -1e308);
- l = flen("%f\n", -1e308);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.9f\n", -1e308);
- l = flen("%.9f\n", -1e308);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%10.20f\n", -1.999222333);
- l = flen("%10.20f\n", -1.999222333);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%#g\n", -3.14159265358e-222);
- l = flen("%#g\n", -3.1415927e-222);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%e\n", -123456789123456789.1);
- l = flen("%e\n", -123456789123456789.1);
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%c %f %d %s %c %g %ld %s\n", 'a', 3.1, 9, "one", 'b', 4.2, 9, "two");
- l = flen("%c %f %d %s %c %g %ld %s\n", 'a', 3.1, 9, "one", 'b', 4.2, 9, "two");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%*.*e %*c\n", 10, 5, 9.0, 20, 'x');
- l = flen("%*.*e %*c\n", 10, 5, 9.0, 20, 'x');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%10c\n", 'z');
- l = flen("%10c\n", 'z');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.10c\n", 'z');
- l = flen("%.10c\n", 'z');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%10d\n", 'z');
- l = flen("%10d\n", 'z');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.10d\n", 'z');
- l = flen("%.10d\n", 'z');
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%10%\n");
- l = flen("%10%\n");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.10%\n");
- l = flen("%.10%\n");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%s\n", "0123456789");
- l = flen("%s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%5s\n", "0123456789");
- l = flen("%5s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%50s\n", "0123456789");
- l = flen("%50s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.5s\n", "0123456789");
- l = flen("%.5s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%.50s\n", "0123456789");
- l = flen("%.50s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%5.50s\n", "0123456789");
- l = flen("%5.50s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- sprintf(buf, "%50.5s\n", "0123456789");
- l = flen("%50.5s\n", "0123456789");
- printf("%d %d\n\n", strlen(buf), l);
-
- return 0;
-}
-#endif
diff --git a/htslib/cram/vlen.h b/htslib/cram/vlen.h
deleted file mode 100644
index 6b9b07c..0000000
--- a/htslib/cram/vlen.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Author: James Bonfield (jkb at sanger.ac.uk)
-
-Copyright (c) 1995-1996 MEDICAL RESEARCH COUNCIL
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1 Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2 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.
-
- 3 Neither the name of the MEDICAL RESEARCH COUNCIL, THE LABORATORY OF
-MOLECULAR BIOLOGY nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
-*/
-
-#ifndef _VLEN_H_
-#define _VLEN_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int vflen(char *fmt, va_list ap);
-extern int flen(char *fmt, ...);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VLEN_H_ */
diff --git a/htslib/cram/zfio.c b/htslib/cram/zfio.c
deleted file mode 100644
index 0a0ae0c..0000000
--- a/htslib/cram/zfio.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-Copyright (c) 2009-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "io_lib_config.h"
-#endif
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "cram/os.h"
-#include "cram/zfio.h"
-
-/* ------------------------------------------------------------------------ */
-/* Some wrappers around FILE * vs gzFile *, allowing for either */
-
-/*
- * gzopen() works on both compressed and uncompressed data, but it has
- * a significant performance hit even for uncompressed data (tested as
- * 25s using FILE* to 46s via gzOpen and 66s via gzOpen when gzipped).
- *
- * Hence we use our own wrapper 'zfp' which is a FILE* when uncompressed
- * and gzFile* when compressed. This also means we could hide bzopen in
- * there too if desired.
- */
-
-off_t zftello(zfp *zf) {
- return zf->fp ? ftello(zf->fp) : -1;
-}
-
-int zfseeko(zfp *zf, off_t offset, int whence) {
- return zf->fp ? fseeko(zf->fp, offset, whence) : -1;
-}
-
-
-/*
- * A wrapper for either fgets or gzgets depending on what has been
- * opened.
- */
-char *zfgets(char *line, int size, zfp *zf) {
- if (zf->fp)
- return fgets(line, size, zf->fp);
- else
- return gzgets(zf->gz, line, size);
-}
-
-/*
- * A wrapper for either fputs or gzputs depending on what has been
- * opened.
- */
-int zfputs(char *line, zfp *zf) {
- if (zf->fp)
- return fputs(line, zf->fp);
- else
- return gzputs(zf->gz, line) ? 0 : EOF;
-}
-
-/*
- * Peeks at and returns the next character without consuming it from the
- * input. (Ie a combination of getc and ungetc).
- */
-int zfpeek(zfp *zf) {
- int c;
-
- if (zf->fp) {
- c = getc(zf->fp);
- if (c != EOF)
- ungetc(c, zf->fp);
- } else {
- c = gzgetc(zf->gz);
- if (c != EOF)
- gzungetc(c, zf->gz);
- }
-
- return c;
-}
-
-/* A replacement for either feof of gzeof */
-int zfeof(zfp *zf) {
- return zf->fp ? feof(zf->fp) : gzeof(zf->gz);
-}
-
-/* A replacement for either fopen or gzopen */
-zfp *zfopen(const char *path, const char *mode) {
- char path2[1024];
- zfp *zf;
-
- if (!(zf = (zfp *)malloc(sizeof(*zf))))
- return NULL;
- zf->fp = NULL;
- zf->gz = NULL;
-
- /* Try normal fopen */
- if (mode[0] != 'z' && mode[1] != 'z' &&
- NULL != (zf->fp = fopen(path, mode))) {
- unsigned char magic[2];
- if (2 != fread(magic, 1, 2, zf->fp)) {
- free(zf);
- return NULL;
- }
- if (!(magic[0] == 0x1f &&
- magic[1] == 0x8b)) {
- fseeko(zf->fp, 0, SEEK_SET);
- return zf;
- }
-
- fclose(zf->fp);
- zf->fp = NULL;
- }
-
-#ifdef HAVE_POPEN
- /*
- * I've no idea why, by gzgets is VERY slow, maybe because it handles
- * arbitrary seeks.
- * popen to gzip -cd is 3 times faster though.
- */
- if (*mode == 'w') {
- } else {
- if (access(path, R_OK) == 0) {
- sprintf(path2, "gzip -cd < %.*s", 1000, path);
- if (NULL != (zf->fp = popen(path2, "r")))
- return zf;
- }
-
- sprintf(path2, "gzip -cd < %.*s.gz", 1000, path);
- if (NULL != (zf->fp = popen(path2, "r")))
- return zf;
-
- printf("Failed on %s\n", path);
- } else {
- sprintf(path2, "gzip > %.*s", 1000, path);
- if (NULL != (zf->fp = popen(path2, "w")))
- return zf;
- }
-
- printf("Failed on %s\n", path);
- }
-#else
- /* Gzopen instead */
- if ((zf->gz = gzopen(path, mode)))
- return zf;
-
- sprintf(path2, "%.*s.gz", 1020, path);
- if ((zf->gz = gzopen(path2, mode)))
- return zf;
-#endif
-
- perror(path);
-
- free(zf);
- return NULL;
-}
-
-int zfclose(zfp *zf) {
- int r = (zf->fp) ? fclose(zf->fp) : gzclose(zf->gz);
- free(zf);
- return r;
-}
diff --git a/htslib/cram/zfio.h b/htslib/cram/zfio.h
deleted file mode 100644
index 2d0580f..0000000
--- a/htslib/cram/zfio.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-Copyright (c) 2009-2013 Genome Research Ltd.
-Author: James Bonfield <jkb at sanger.ac.uk>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
- 2. 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.
-
- 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
-Institute nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "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 GENOME RESEARCH LTD OR CONTRIBUTORS 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.
-*/
-
-#ifndef _ZFIO_H_
-#define _ZFIO_H_
-
-#include <stdio.h>
-#include <zlib.h>
-
-/*
- * Either a gzFile or a FILE.
- */
-typedef struct {
- FILE *fp;
- gzFile gz;
-} zfp;
-
-off_t zftello(zfp *zf);
-int zfseeko(zfp *zf, off_t offset, int whence);
-char *zfgets(char *line, int size, zfp *zf);
-int zfputs(char *line, zfp *zf);
-zfp *zfopen(const char *path, const char *mode);
-int zfclose(zfp *zf);
-int zfpeek(zfp *zf);
-int zfeof(zfp *zf);
-
-#endif /* _ZFIO_H_ */
diff --git a/htslib/faidx.5 b/htslib/faidx.5
deleted file mode 100644
index cb779a6..0000000
--- a/htslib/faidx.5
+++ /dev/null
@@ -1,147 +0,0 @@
-'\" t
-.TH faidx 5 "August 2013" "htslib" "Bioinformatics formats"
-.SH NAME
-faidx \- an index enabling random access to FASTA files
-.\"
-.\" Copyright (C) 2013 Genome Research Ltd.
-.\"
-.\" Author: John Marshall <jm18 at sanger.ac.uk>
-.\"
-.\" 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.
-.\"
-.SH SYNOPSIS
-.IR file.fa .fai,
-.IR file.fasta .fai
-.SH DESCRIPTION
-Using an \fBfai index\fP file in conjunction with a FASTA file containing
-reference sequences enables efficient access to arbitrary regions within
-those reference sequences.
-The index file typically has the same filename as the corresponding FASTA
-file, with \fB.fai\fP appended.
-.P
-An \fBfai index\fP file is a text file consisting of lines each with
-five TAB-delimited columns:
-.TS
-lbl.
-NAME Name of this reference sequence
-LENGTH Total length of this reference sequence, in bases
-OFFSET Offset within the FASTA file of this sequence's first base
-LINEBASES The number of bases on each line
-LINEWIDTH The number of bytes in each line, including the newline
-.TE
-.P
-The \fBNAME\fP and \fBLENGTH\fP columns contain the same
-data as would appear in the \fBSN\fP and \fBLN\fP fields of a
-SAM \fB at SQ\fP header for the same reference sequence.
-.P
-The \fBOFFSET\fP column contains the offset within the FASTA file, in bytes
-starting from zero, of the first base of this reference sequence, i.e., of
-the character following the newline at the end of the "\fB>\fP" header line.
-Typically the lines of a \fBfai index\fP file appear in the order in which the
-reference sequences appear in the FASTA file, so \fB.fai\fP files are typically
-sorted according to this column.
-.P
-The \fBLINEBASES\fP column contains the number of bases in each of the sequence
-lines that form the body of this reference sequence, apart from the final line
-which may be shorter.
-The \fBLINEWIDTH\fP column contains the number of \fIbytes\fP in each of
-the sequence lines (except perhaps the final line), thus differing from
-\fBLINEBASES\fP in that it also counts the bytes forming the line terminator.
-.SS FASTA Files
-In order to be indexed with \fBsamtools faidx\fP, a FASTA file must be a text
-file of the form
-.LP
-.RS
-.RI > name
-.RI [ description ...]
-.br
-ATGCATGCATGCATGCATGCATGCATGCAT
-.br
-GCATGCATGCATGCATGCATGCATGCATGC
-.br
-ATGCAT
-.br
-.RI > name
-.RI [ description ...]
-.br
-ATGCATGCATGCAT
-.br
-GCATGCATGCATGC
-.br
-[...]
-.RE
-.LP
-In particular, each reference sequence must be "well-formatted", i.e., all
-of its sequence lines must be the same length, apart from the final sequence
-line which may be shorter.
-(While this sequence line length must be the same within each sequence,
-it may vary between different reference sequences in the same FASTA file.)
-.P
-This also means that although the FASTA file may have Unix- or Windows-style
-or other line termination, the newline characters present must be consistent,
-at least within each reference sequence.
-.P
-The \fBsamtools\fP implementation uses the first word of the "\fB>\fP" header
-line text (i.e., up to the first whitespace character) as the \fBNAME\fP column.
-At present, there may be no whitespace between the
-">" character and the \fIname\fP.
-.SH EXAMPLE
-For example, given this FASTA file
-.LP
-.RS
->one
-.br
-ATGCATGCATGCATGCATGCATGCATGCAT
-.br
-GCATGCATGCATGCATGCATGCATGCATGC
-.br
-ATGCAT
-.br
->two another chromosome
-.br
-ATGCATGCATGCAT
-.br
-GCATGCATGCATGC
-.br
-.RE
-.LP
-formatted with Unix-style (LF) line termination, the corresponding fai index
-would be
-.RS
-.TS
-lnnnn.
-one 66 5 30 31
-two 28 98 14 15
-.TE
-.RE
-.LP
-If the FASTA file were formatted with Windows-style (CR-LF) line termination,
-the fai index would be
-.RS
-.TS
-lnnnn.
-one 66 6 30 32
-two 28 103 14 16
-.TE
-.RE
-.SH SEE ALSO
-.IR samtools (1)
-.TP
-http://en.wikipedia.org/wiki/FASTA_format
-Further description of the FASTA format
diff --git a/htslib/faidx.c b/htslib/faidx.c
deleted file mode 100644
index b48fce9..0000000
--- a/htslib/faidx.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/* faidx.c -- FASTA random access.
-
- Copyright (C) 2008, 2009, 2013-2015 Genome Research Ltd.
- Portions copyright (C) 2011 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-
-#include "htslib/bgzf.h"
-#include "htslib/faidx.h"
-#include "htslib/hfile.h"
-#include "htslib/khash.h"
-
-typedef struct {
- int32_t line_len, line_blen;
- int64_t len;
- uint64_t offset;
-} faidx1_t;
-KHASH_MAP_INIT_STR(s, faidx1_t)
-
-struct __faidx_t {
- BGZF *bgzf;
- int n, m;
- char **name;
- khash_t(s) *hash;
-};
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-static inline void fai_insert_index(faidx_t *idx, const char *name, int len, int line_len, int line_blen, uint64_t offset)
-{
- khint_t k;
- int ret;
- faidx1_t t;
- if (idx->n == idx->m) {
- idx->m = idx->m? idx->m<<1 : 16;
- idx->name = (char**)realloc(idx->name, sizeof(char*) * idx->m);
- }
- idx->name[idx->n] = strdup(name);
- k = kh_put(s, idx->hash, idx->name[idx->n], &ret);
- t.len = len; t.line_len = line_len; t.line_blen = line_blen; t.offset = offset;
- kh_value(idx->hash, k) = t;
- ++idx->n;
-}
-
-faidx_t *fai_build_core(BGZF *bgzf)
-{
- char *name;
- int c;
- int l_name, m_name;
- int line_len, line_blen, state;
- int l1, l2;
- faidx_t *idx;
- uint64_t offset;
- int64_t len;
-
- idx = (faidx_t*)calloc(1, sizeof(faidx_t));
- idx->hash = kh_init(s);
- name = 0; l_name = m_name = 0;
- len = line_len = line_blen = -1; state = 0; l1 = l2 = -1; offset = 0;
- while ( (c=bgzf_getc(bgzf))>=0 ) {
- if (c == '\n') { // an empty line
- if (state == 1) {
- offset = bgzf_utell(bgzf);
- continue;
- } else if ((state == 0 && len < 0) || state == 2) continue;
- }
- if (c == '>') { // fasta header
- if (len >= 0)
- fai_insert_index(idx, name, len, line_len, line_blen, offset);
- l_name = 0;
- while ( (c=bgzf_getc(bgzf))>=0 && !isspace(c)) {
- if (m_name < l_name + 2) {
- m_name = l_name + 2;
- kroundup32(m_name);
- name = (char*)realloc(name, m_name);
- }
- name[l_name++] = c;
- }
- name[l_name] = '\0';
- if ( c<0 ) {
- fprintf(stderr, "[fai_build_core] the last entry has no sequence\n");
- free(name); fai_destroy(idx);
- return 0;
- }
- if (c != '\n') while ( (c=bgzf_getc(bgzf))>=0 && c != '\n');
- state = 1; len = 0;
- offset = bgzf_utell(bgzf);
- } else {
- if (state == 3) {
- fprintf(stderr, "[fai_build_core] inlined empty line is not allowed in sequence '%s'.\n", name);
- free(name); fai_destroy(idx);
- return 0;
- }
- if (state == 2) state = 3;
- l1 = l2 = 0;
- do {
- ++l1;
- if (isgraph(c)) ++l2;
- } while ( (c=bgzf_getc(bgzf))>=0 && c != '\n');
- if (state == 3 && l2) {
- fprintf(stderr, "[fai_build_core] different line length in sequence '%s'.\n", name);
- free(name); fai_destroy(idx);
- return 0;
- }
- ++l1; len += l2;
- if (state == 1) line_len = l1, line_blen = l2, state = 0;
- else if (state == 0) {
- if (l1 != line_len || l2 != line_blen) state = 2;
- }
- }
- }
- if ( name )
- fai_insert_index(idx, name, len, line_len, line_blen, offset);
- else
- {
- free(idx);
- return NULL;
- }
- free(name);
- return idx;
-}
-
-void fai_save(const faidx_t *fai, FILE *fp)
-{
- khint_t k;
- int i;
- for (i = 0; i < fai->n; ++i) {
- faidx1_t x;
- k = kh_get(s, fai->hash, fai->name[i]);
- x = kh_value(fai->hash, k);
-#ifdef _WIN32
- fprintf(fp, "%s\t%d\t%ld\t%d\t%d\n", fai->name[i], (int)x.len, (long)x.offset, (int)x.line_blen, (int)x.line_len);
-#else
- fprintf(fp, "%s\t%d\t%lld\t%d\t%d\n", fai->name[i], (int)x.len, (long long)x.offset, (int)x.line_blen, (int)x.line_len);
-#endif
- }
-}
-
-faidx_t *fai_read(FILE *fp)
-{
- faidx_t *fai;
- char *buf, *p;
- int len, line_len, line_blen;
-#ifdef _WIN32
- long offset;
-#else
- long long offset;
-#endif
- fai = (faidx_t*)calloc(1, sizeof(faidx_t));
- fai->hash = kh_init(s);
- buf = (char*)calloc(0x10000, 1);
- while (!feof(fp) && fgets(buf, 0x10000, fp)) {
- for (p = buf; *p && isgraph(*p); ++p);
- *p = 0; ++p;
-#ifdef _WIN32
- sscanf(p, "%d%ld%d%d", &len, &offset, &line_blen, &line_len);
-#else
- sscanf(p, "%d%lld%d%d", &len, &offset, &line_blen, &line_len);
-#endif
- fai_insert_index(fai, buf, len, line_len, line_blen, offset);
- }
- free(buf);
- return fai;
-}
-
-void fai_destroy(faidx_t *fai)
-{
- int i;
- for (i = 0; i < fai->n; ++i) free(fai->name[i]);
- free(fai->name);
- kh_destroy(s, fai->hash);
- if (fai->bgzf) bgzf_close(fai->bgzf);
- free(fai);
-}
-
-int fai_build(const char *fn)
-{
- char *str;
- BGZF *bgzf;
- FILE *fp;
- faidx_t *fai;
- str = (char*)calloc(strlen(fn) + 5, 1);
- sprintf(str, "%s.fai", fn);
- bgzf = bgzf_open(fn, "r");
- if ( !bgzf ) {
- fprintf(stderr, "[fai_build] fail to open the FASTA file %s\n",fn);
- free(str);
- return -1;
- }
- if ( bgzf->is_compressed ) bgzf_index_build_init(bgzf);
- fai = fai_build_core(bgzf);
- if ( !fai )
- {
- if ( bgzf->is_compressed && bgzf->is_gzip ) fprintf(stderr,"Cannot index files compressed with gzip, please use bgzip\n");
- free(str);
- return -1;
- }
- if ( bgzf->is_compressed ) bgzf_index_dump(bgzf, fn, ".gzi");
- bgzf_close(bgzf);
- fp = fopen(str, "wb");
- if ( !fp ) {
- fprintf(stderr, "[fai_build] fail to write FASTA index %s\n",str);
- fai_destroy(fai); free(str);
- return -1;
- }
- fai_save(fai, fp);
- fclose(fp);
- free(str);
- fai_destroy(fai);
- return 0;
-}
-
-static FILE *download_and_open(const char *fn)
-{
- const int buf_size = 1 * 1024 * 1024;
- uint8_t *buf;
- FILE *fp;
- hFILE *fp_remote;
- const char *url = fn;
- const char *p;
- int l = strlen(fn);
- for (p = fn + l - 1; p >= fn; --p)
- if (*p == '/') break;
- fn = p + 1;
-
- // First try to open a local copy
- fp = fopen(fn, "r");
- if (fp)
- return fp;
-
- // If failed, download from remote and open
- fp_remote = hopen(url, "rb");
- if (fp_remote == 0) {
- fprintf(stderr, "[download_from_remote] fail to open remote file %s\n",url);
- return NULL;
- }
- if ((fp = fopen(fn, "wb")) == 0) {
- fprintf(stderr, "[download_from_remote] fail to create file in the working directory %s\n",fn);
- hclose_abruptly(fp_remote);
- return NULL;
- }
- buf = (uint8_t*)calloc(buf_size, 1);
- while ((l = hread(fp_remote, buf, buf_size)) > 0)
- fwrite(buf, 1, l, fp);
- free(buf);
- fclose(fp);
- if (hclose(fp_remote) != 0)
- fprintf(stderr, "[download_from_remote] fail to close remote file %s\n", url);
-
- return fopen(fn, "r");
-}
-
-faidx_t *fai_load(const char *fn)
-{
- char *str;
- FILE *fp;
- faidx_t *fai;
- str = (char*)calloc(strlen(fn) + 5, 1);
- sprintf(str, "%s.fai", fn);
-
- if (hisremote(str))
- {
- fp = download_and_open(str);
- if ( !fp )
- {
- fprintf(stderr, "[fai_load] failed to open remote FASTA index %s\n", str);
- free(str);
- return 0;
- }
- }
- else
- fp = fopen(str, "rb");
-
- if (fp == 0) {
- fprintf(stderr, "[fai_load] build FASTA index.\n");
- fai_build(fn);
- fp = fopen(str, "rb");
- if (fp == 0) {
- fprintf(stderr, "[fai_load] fail to open FASTA index.\n");
- free(str);
- return 0;
- }
- }
-
- fai = fai_read(fp);
- fclose(fp);
-
- fai->bgzf = bgzf_open(fn, "rb");
- free(str);
- if (fai->bgzf == 0) {
- fprintf(stderr, "[fai_load] fail to open FASTA file.\n");
- return 0;
- }
- if ( fai->bgzf->is_compressed==1 )
- {
- if ( bgzf_index_load(fai->bgzf, fn, ".gzi") < 0 )
- {
- fprintf(stderr, "[fai_load] failed to load .gzi index: %s[.gzi]\n", fn);
- fai_destroy(fai);
- return NULL;
- }
- }
- return fai;
-}
-
-char *fai_fetch(const faidx_t *fai, const char *str, int *len)
-{
- char *s;
- int c, i, l, k, name_end;
- khiter_t iter;
- faidx1_t val;
- khash_t(s) *h;
- int beg, end;
-
- beg = end = -1;
- h = fai->hash;
- name_end = l = strlen(str);
- s = (char*)malloc(l+1);
- // remove space
- for (i = k = 0; i < l; ++i)
- if (!isspace(str[i])) s[k++] = str[i];
- s[k] = 0; l = k;
- // determine the sequence name
- for (i = l - 1; i >= 0; --i) if (s[i] == ':') break; // look for colon from the end
- if (i >= 0) name_end = i;
- if (name_end < l) { // check if this is really the end
- int n_hyphen = 0;
- for (i = name_end + 1; i < l; ++i) {
- if (s[i] == '-') ++n_hyphen;
- else if (!isdigit(s[i]) && s[i] != ',') break;
- }
- if (i < l || n_hyphen > 1) name_end = l; // malformated region string; then take str as the name
- s[name_end] = 0;
- iter = kh_get(s, h, s);
- if (iter == kh_end(h)) { // cannot find the sequence name
- iter = kh_get(s, h, str); // try str as the name
- if (iter == kh_end(h)) {
- *len = 0;
- free(s); return 0;
- } else s[name_end] = ':', name_end = l;
- }
- } else iter = kh_get(s, h, str);
- if(iter == kh_end(h)) {
- fprintf(stderr, "[fai_fetch] Warning - Reference %s not found in FASTA file, returning empty sequence\n", str);
- free(s);
- *len = -2;
- return 0;
- };
- val = kh_value(h, iter);
- // parse the interval
- if (name_end < l) {
- for (i = k = name_end + 1; i < l; ++i)
- if (s[i] != ',') s[k++] = s[i];
- s[k] = 0;
- beg = atoi(s + name_end + 1);
- for (i = name_end + 1; i != k; ++i) if (s[i] == '-') break;
- end = i < k? atoi(s + i + 1) : val.len;
- if (beg > 0) --beg;
- } else beg = 0, end = val.len;
- if (beg >= val.len) beg = val.len;
- if (end >= val.len) end = val.len;
- if (beg > end) beg = end;
- free(s);
-
- // now retrieve the sequence
- int ret = bgzf_useek(fai->bgzf, val.offset + beg / val.line_blen * val.line_len + beg % val.line_blen, SEEK_SET);
- if ( ret<0 )
- {
- *len = -1;
- fprintf(stderr, "[fai_fetch] Error: fai_fetch failed. (Seeking in a compressed, .gzi unindexed, file?)\n");
- return NULL;
- }
- l = 0;
- s = (char*)malloc(end - beg + 2);
- while ( (c=bgzf_getc(fai->bgzf))>=0 && l < end - beg )
- if (isgraph(c)) s[l++] = c;
- s[l] = '\0';
- *len = l;
- return s;
-}
-
-int faidx_fetch_nseq(const faidx_t *fai)
-{
- return fai->n;
-}
-
-int faidx_nseq(const faidx_t *fai)
-{
- return fai->n;
-}
-
-const char *faidx_iseq(const faidx_t *fai, int i)
-{
- return fai->name[i];
-}
-
-int faidx_seq_len(const faidx_t *fai, const char *seq)
-{
- khint_t k = kh_get(s, fai->hash, seq);
- if ( k == kh_end(fai->hash) ) return -1;
- return kh_val(fai->hash, k).len;
-}
-
-char *faidx_fetch_seq(const faidx_t *fai, const char *c_name, int p_beg_i, int p_end_i, int *len)
-{
- int l, c;
- khiter_t iter;
- faidx1_t val;
- char *seq=NULL;
-
- // Adjust position
- iter = kh_get(s, fai->hash, c_name);
- if (iter == kh_end(fai->hash))
- {
- *len = -2;
- fprintf(stderr, "[fai_fetch_seq] The sequence \"%s\" not found\n", c_name);
- return NULL;
- }
- val = kh_value(fai->hash, iter);
- if(p_end_i < p_beg_i) p_beg_i = p_end_i;
- if(p_beg_i < 0) p_beg_i = 0;
- else if(val.len <= p_beg_i) p_beg_i = val.len - 1;
- if(p_end_i < 0) p_end_i = 0;
- else if(val.len <= p_end_i) p_end_i = val.len - 1;
-
- // Now retrieve the sequence
- int ret = bgzf_useek(fai->bgzf, val.offset + p_beg_i / val.line_blen * val.line_len + p_beg_i % val.line_blen, SEEK_SET);
- if ( ret<0 )
- {
- *len = -1;
- fprintf(stderr, "[fai_fetch_seq] Error: fai_fetch failed. (Seeking in a compressed, .gzi unindexed, file?)\n");
- return NULL;
- }
- l = 0;
- seq = (char*)malloc(p_end_i - p_beg_i + 2);
- while ( (c=bgzf_getc(fai->bgzf))>=0 && l < p_end_i - p_beg_i + 1)
- if (isgraph(c)) seq[l++] = c;
- seq[l] = '\0';
- *len = l;
- return seq;
-}
-
-int faidx_has_seq(const faidx_t *fai, const char *seq)
-{
- khiter_t iter = kh_get(s, fai->hash, seq);
- if (iter == kh_end(fai->hash)) return 0;
- return 1;
-}
-
diff --git a/htslib/hfile.c b/htslib/hfile.c
deleted file mode 100644
index d722c13..0000000
--- a/htslib/hfile.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/* hfile.c -- buffered low-level input/output streams.
-
- Copyright (C) 2013-2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include "htslib/hfile.h"
-#include "hfile_internal.h"
-
-/* hFILE fields are used as follows:
-
- char *buffer; // Pointer to the start of the I/O buffer
- char *begin; // First not-yet-read character / unused position
- char *end; // First unfilled/unfillable position
- char *limit; // Pointer to the first position past the buffer
-
- const hFILE_backend *backend; // Methods to refill/flush I/O buffer
-
- off_t offset; // Offset within the stream of buffer position 0
- int at_eof:1; // For reading, whether EOF has been seen
- int has_errno; // Error number from the last failure on this stream
-
-For reading, begin is the first unread character in the buffer and end is the
-first unfilled position:
-
- -----------ABCDEFGHIJKLMNO---------------
- ^buffer ^begin ^end ^limit
-
-For writing, begin is the first unused position and end is unused so remains
-equal to buffer:
-
- ABCDEFGHIJKLMNOPQRSTUVWXYZ---------------
- ^buffer ^begin ^limit
- ^end
-
-Thus if begin > end then there is a non-empty write buffer, if begin < end
-then there is a non-empty read buffer, and if begin == end then both buffers
-are empty. In all cases, the stream's file position indicator corresponds
-to the position pointed to by begin. */
-
-hFILE *hfile_init(size_t struct_size, const char *mode, size_t capacity)
-{
- hFILE *fp = (hFILE *) malloc(struct_size);
- if (fp == NULL) goto error;
-
- if (capacity == 0) capacity = 32768;
- // FIXME For now, clamp input buffer sizes so mpileup doesn't eat memory
- if (strchr(mode, 'r') && capacity > 32768) capacity = 32768;
-
- fp->buffer = (char *) malloc(capacity);
- if (fp->buffer == NULL) goto error;
-
- fp->begin = fp->end = fp->buffer;
- fp->limit = &fp->buffer[capacity];
-
- fp->offset = 0;
- fp->at_eof = 0;
- fp->has_errno = 0;
- return fp;
-
-error:
- hfile_destroy(fp);
- return NULL;
-}
-
-void hfile_destroy(hFILE *fp)
-{
- int save = errno;
- if (fp) free(fp->buffer);
- free(fp);
- errno = save;
-}
-
-static inline int writebuffer_is_nonempty(hFILE *fp)
-{
- return fp->begin > fp->end;
-}
-
-/* Refills the read buffer from the backend (once, so may only partially
- fill the buffer), returning the number of additional characters read
- (which might be 0), or negative when an error occurred. */
-static ssize_t refill_buffer(hFILE *fp)
-{
- ssize_t n;
-
- // Move any unread characters to the start of the buffer
- if (fp->begin > fp->buffer) {
- fp->offset += fp->begin - fp->buffer;
- memmove(fp->buffer, fp->begin, fp->end - fp->begin);
- fp->end = &fp->buffer[fp->end - fp->begin];
- fp->begin = fp->buffer;
- }
-
- // Read into the available buffer space at fp->[end,limit)
- if (fp->at_eof || fp->end == fp->limit) n = 0;
- else {
- n = fp->backend->read(fp, fp->end, fp->limit - fp->end);
- if (n < 0) { fp->has_errno = errno; return n; }
- else if (n == 0) fp->at_eof = 1;
- }
-
- fp->end += n;
- return n;
-}
-
-/* Called only from hgetc(), when our buffer is empty. */
-int hgetc2(hFILE *fp)
-{
- return (refill_buffer(fp) > 0)? (unsigned char) *(fp->begin++) : EOF;
-}
-
-ssize_t hpeek(hFILE *fp, void *buffer, size_t nbytes)
-{
- size_t n = fp->end - fp->begin;
- while (n < nbytes) {
- ssize_t ret = refill_buffer(fp);
- if (ret < 0) return ret;
- else if (ret == 0) break;
- else n += ret;
- }
-
- if (n > nbytes) n = nbytes;
- memcpy(buffer, fp->begin, n);
- return n;
-}
-
-/* Called only from hread(); when called, our buffer is empty and nread bytes
- have already been placed in the destination buffer. */
-ssize_t hread2(hFILE *fp, void *destv, size_t nbytes, size_t nread)
-{
- const size_t capacity = fp->limit - fp->buffer;
- char *dest = (char *) destv;
- dest += nread, nbytes -= nread;
-
- // Read large requests directly into the destination buffer
- while (nbytes * 2 >= capacity && !fp->at_eof) {
- ssize_t n = fp->backend->read(fp, dest, nbytes);
- if (n < 0) { fp->has_errno = errno; return n; }
- else if (n == 0) fp->at_eof = 1;
- fp->offset += n;
- dest += n, nbytes -= n;
- nread += n;
- }
-
- while (nbytes > 0 && !fp->at_eof) {
- size_t n;
- ssize_t ret = refill_buffer(fp);
- if (ret < 0) return ret;
-
- n = fp->end - fp->begin;
- if (n > nbytes) n = nbytes;
- memcpy(dest, fp->begin, n);
- fp->begin += n;
- dest += n, nbytes -= n;
- nread += n;
- }
-
- return nread;
-}
-
-/* Flushes the write buffer, fp->[buffer,begin), out through the backend
- returning 0 on success or negative if an error occurred. */
-static ssize_t flush_buffer(hFILE *fp)
-{
- const char *buffer = fp->buffer;
- while (buffer < fp->begin) {
- ssize_t n = fp->backend->write(fp, buffer, fp->begin - buffer);
- if (n < 0) { fp->has_errno = errno; return n; }
- buffer += n;
- fp->offset += n;
- }
-
- fp->begin = fp->buffer; // Leave the buffer empty
- return 0;
-}
-
-int hflush(hFILE *fp)
-{
- if (flush_buffer(fp) < 0) return EOF;
- if (fp->backend->flush(fp) < 0) { fp->has_errno = errno; return EOF; }
- return 0;
-}
-
-/* Called only from hputc(), when our buffer is already full. */
-int hputc2(int c, hFILE *fp)
-{
- if (flush_buffer(fp) < 0) return EOF;
- *(fp->begin++) = c;
- return c;
-}
-
-/* Called only from hwrite() and hputs2(); when called, our buffer is full and
- ncopied bytes from the source have already been copied to our buffer. */
-ssize_t hwrite2(hFILE *fp, const void *srcv, size_t totalbytes, size_t ncopied)
-{
- const char *src = (const char *) srcv;
- ssize_t ret;
- const size_t capacity = fp->limit - fp->buffer;
- size_t remaining = totalbytes - ncopied;
- src += ncopied;
-
- ret = flush_buffer(fp);
- if (ret < 0) return ret;
-
- // Write large blocks out directly from the source buffer
- while (remaining * 2 >= capacity) {
- ssize_t n = fp->backend->write(fp, src, remaining);
- if (n < 0) { fp->has_errno = errno; return n; }
- fp->offset += n;
- src += n, remaining -= n;
- }
-
- // Just buffer any remaining characters
- memcpy(fp->begin, src, remaining);
- fp->begin += remaining;
-
- return totalbytes;
-}
-
-/* Called only from hputs(), when our buffer is already full. */
-int hputs2(const char *text, size_t totalbytes, size_t ncopied, hFILE *fp)
-{
- return (hwrite2(fp, text, totalbytes, ncopied) >= 0)? 0 : EOF;
-}
-
-off_t hseek(hFILE *fp, off_t offset, int whence)
-{
- off_t pos;
-
- if (writebuffer_is_nonempty(fp)) {
- int ret = flush_buffer(fp);
- if (ret < 0) return ret;
- }
- else {
- // Convert relative offsets from being relative to the hFILE's stream
- // position (at begin) to being relative to the backend's physical
- // stream position (at end, due to the buffering read-ahead).
- if (whence == SEEK_CUR) offset -= fp->end - fp->begin;
- }
-
- pos = fp->backend->seek(fp, offset, whence);
- if (pos < 0) { fp->has_errno = errno; return pos; }
-
- // Seeking succeeded, so discard any non-empty read buffer
- fp->begin = fp->end = fp->buffer;
- fp->at_eof = 0;
-
- fp->offset = pos;
- return pos;
-}
-
-int hclose(hFILE *fp)
-{
- int err = fp->has_errno;
-
- if (writebuffer_is_nonempty(fp) && hflush(fp) < 0) err = fp->has_errno;
- if (fp->backend->close(fp) < 0) err = errno;
- hfile_destroy(fp);
-
- if (err) {
- errno = err;
- return EOF;
- }
- else return 0;
-}
-
-void hclose_abruptly(hFILE *fp)
-{
- int save = errno;
- if (fp->backend->close(fp) < 0) { /* Ignore subsequent errors */ }
- hfile_destroy(fp);
- errno = save;
-}
-
-
-/***************************
- * File descriptor backend *
- ***************************/
-
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#ifdef _WIN32
-#define HAVE_CLOSESOCKET
-#endif
-
-/* For Unix, it doesn't matter whether a file descriptor is a socket.
- However Windows insists on send()/recv() and its own closesocket()
- being used when fd happens to be a socket. */
-
-typedef struct {
- hFILE base;
- int fd;
- int is_socket:1;
-} hFILE_fd;
-
-static ssize_t fd_read(hFILE *fpv, void *buffer, size_t nbytes)
-{
- hFILE_fd *fp = (hFILE_fd *) fpv;
- ssize_t n;
- do {
- n = fp->is_socket? recv(fp->fd, buffer, nbytes, 0)
- : read(fp->fd, buffer, nbytes);
- } while (n < 0 && errno == EINTR);
- return n;
-}
-
-static ssize_t fd_write(hFILE *fpv, const void *buffer, size_t nbytes)
-{
- hFILE_fd *fp = (hFILE_fd *) fpv;
- ssize_t n;
- do {
- n = fp->is_socket? send(fp->fd, buffer, nbytes, 0)
- : write(fp->fd, buffer, nbytes);
- } while (n < 0 && errno == EINTR);
- return n;
-}
-
-static off_t fd_seek(hFILE *fpv, off_t offset, int whence)
-{
- hFILE_fd *fp = (hFILE_fd *) fpv;
- return lseek(fp->fd, offset, whence);
-}
-
-static int fd_flush(hFILE *fpv)
-{
- hFILE_fd *fp = (hFILE_fd *) fpv;
- int ret;
- do {
-#ifdef HAVE_FDATASYNC
- ret = fdatasync(fp->fd);
-#else
- ret = fsync(fp->fd);
-#endif
- // Ignore invalid-for-fsync(2) errors due to being, e.g., a pipe,
- // and operation-not-supported errors (Mac OS X)
- if (ret < 0 && (errno == EINVAL || errno == ENOTSUP)) ret = 0;
- } while (ret < 0 && errno == EINTR);
- return ret;
-}
-
-static int fd_close(hFILE *fpv)
-{
- hFILE_fd *fp = (hFILE_fd *) fpv;
- int ret;
- do {
-#ifdef HAVE_CLOSESOCKET
- ret = fp->is_socket? closesocket(fp->fd) : close(fp->fd);
-#else
- ret = close(fp->fd);
-#endif
- } while (ret < 0 && errno == EINTR);
- return ret;
-}
-
-static const struct hFILE_backend fd_backend =
-{
- fd_read, fd_write, fd_seek, fd_flush, fd_close
-};
-
-static size_t blksize(int fd)
-{
- struct stat sbuf;
- if (fstat(fd, &sbuf) != 0) return 0;
- return sbuf.st_blksize;
-}
-
-static hFILE *hopen_fd(const char *filename, const char *mode)
-{
- hFILE_fd *fp = NULL;
- int fd = open(filename, hfile_oflags(mode), 0666);
- if (fd < 0) goto error;
-
- fp = (hFILE_fd *) hfile_init(sizeof (hFILE_fd), mode, blksize(fd));
- if (fp == NULL) goto error;
-
- fp->fd = fd;
- fp->is_socket = 0;
- fp->base.backend = &fd_backend;
- return &fp->base;
-
-error:
- if (fd >= 0) { int save = errno; (void) close(fd); errno = save; }
- hfile_destroy((hFILE *) fp);
- return NULL;
-}
-
-hFILE *hdopen(int fd, const char *mode)
-{
- hFILE_fd *fp = (hFILE_fd*) hfile_init(sizeof (hFILE_fd), mode, blksize(fd));
- if (fp == NULL) return NULL;
-
- fp->fd = fd;
- fp->is_socket = (strchr(mode, 's') != NULL);
- fp->base.backend = &fd_backend;
- return &fp->base;
-}
-
-static hFILE *hopen_fd_stdinout(const char *mode)
-{
- int fd = (strchr(mode, 'r') != NULL)? STDIN_FILENO : STDOUT_FILENO;
- // TODO Set binary mode (for Windows)
- return hdopen(fd, mode);
-}
-
-int hfile_oflags(const char *mode)
-{
- int rdwr = 0, flags = 0;
- const char *s;
- for (s = mode; *s; s++)
- switch (*s) {
- case 'r': rdwr = O_RDONLY; break;
- case 'w': rdwr = O_WRONLY; flags |= O_CREAT | O_TRUNC; break;
- case 'a': rdwr = O_WRONLY; flags |= O_CREAT | O_APPEND; break;
- case '+': rdwr = O_RDWR; break;
- default: break;
- }
-
-#ifdef O_BINARY
- flags |= O_BINARY;
-#endif
-
- return rdwr | flags;
-}
-
-
-/*********************
- * In-memory backend *
- *********************/
-
-typedef struct {
- hFILE base;
- const char *buffer;
- size_t length, pos;
-} hFILE_mem;
-
-static ssize_t mem_read(hFILE *fpv, void *buffer, size_t nbytes)
-{
- hFILE_mem *fp = (hFILE_mem *) fpv;
- size_t avail = fp->length - fp->pos;
- if (nbytes > avail) nbytes = avail;
- memcpy(buffer, fp->buffer + fp->pos, nbytes);
- fp->pos += nbytes;
- return nbytes;
-}
-
-static off_t mem_seek(hFILE *fpv, off_t offset, int whence)
-{
- hFILE_mem *fp = (hFILE_mem *) fpv;
- size_t absoffset = (offset >= 0)? offset : -offset;
- size_t origin;
-
- switch (whence) {
- case SEEK_SET: origin = 0; break;
- case SEEK_CUR: origin = fp->pos; break;
- case SEEK_END: origin = fp->length; break;
- default: errno = EINVAL; return -1;
- }
-
- if ((offset < 0 && absoffset > origin) ||
- (offset >= 0 && absoffset > fp->length - origin)) {
- errno = EINVAL;
- return -1;
- }
-
- fp->pos = origin + offset;
- return fp->pos;
-}
-
-static int mem_close(hFILE *fpv)
-{
- return 0;
-}
-
-static const struct hFILE_backend mem_backend =
-{
- mem_read, NULL, mem_seek, NULL, mem_close
-};
-
-static hFILE *hopen_mem(const char *data, const char *mode)
-{
- // TODO Implement write modes, which will require memory allocation
- if (strchr(mode, 'r') == NULL) { errno = EINVAL; return NULL; }
-
- hFILE_mem *fp = (hFILE_mem *) hfile_init(sizeof (hFILE_mem), mode, 0);
- if (fp == NULL) return NULL;
-
- fp->buffer = data;
- fp->length = strlen(data);
- fp->pos = 0;
- fp->base.backend = &mem_backend;
- return &fp->base;
-}
-
-
-/******************************
- * hopen() backend dispatcher *
- ******************************/
-
-hFILE *hopen(const char *fname, const char *mode)
-{
- if (strncmp(fname, "http://", 7) == 0 ||
- strncmp(fname, "ftp://", 6) == 0) return hopen_net(fname, mode);
-#ifdef HAVE_IRODS
- else if (strncmp(fname, "irods:", 6) == 0) return hopen_irods(fname, mode);
-#endif
- else if (strncmp(fname, "data:", 5) == 0) return hopen_mem(fname + 5, mode);
- else if (strcmp(fname, "-") == 0) return hopen_fd_stdinout(mode);
- else return hopen_fd(fname, mode);
-}
-
-int hisremote(const char *fname)
-{
- // FIXME Make a new backend entry to return this
- if (strncmp(fname, "http://", 7) == 0 ||
- strncmp(fname, "https://", 8) == 0 ||
- strncmp(fname, "ftp://", 6) == 0) return 1;
-#ifdef HAVE_IRODS
- else if (strncmp(fname, "irods:", 6) == 0) return 1;
-#endif
- else return 0;
-}
diff --git a/htslib/hfile_internal.h b/htslib/hfile_internal.h
deleted file mode 100644
index bfce2f6..0000000
--- a/htslib/hfile_internal.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* hfile_internal.h -- internal parts of low-level input/output streams.
-
- Copyright (C) 2013-2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#ifndef HFILE_INTERNAL_H
-#define HFILE_INTERNAL_H
-
-#include "htslib/hfile.h"
-
-struct hFILE_backend {
- /* As per read(2), returning the number of bytes read (possibly 0) or
- negative (and setting errno) on errors. Front-end code will call this
- repeatedly if necessary to attempt to get the desired byte count. */
- ssize_t (*read)(hFILE *fp, void *buffer, size_t nbytes) HTS_RESULT_USED;
-
- /* As per write(2), returning the number of bytes written or negative (and
- setting errno) on errors. Front-end code will call this repeatedly if
- necessary until the desired block is written or an error occurs. */
- ssize_t (*write)(hFILE *fp, const void *buffer, size_t nbytes)
- HTS_RESULT_USED;
-
- /* As per lseek(2), returning the resulting offset within the stream or
- negative (and setting errno) on errors. */
- off_t (*seek)(hFILE *fp, off_t offset, int whence) HTS_RESULT_USED;
-
- /* Performs low-level flushing, if any, e.g., fsync(2); for writing streams
- only. Returns 0 for success or negative (and sets errno) on errors. */
- int (*flush)(hFILE *fp) HTS_RESULT_USED;
-
- /* Closes the underlying stream (for output streams, the buffer will
- already have been flushed), returning 0 for success or negative (and
- setting errno) on errors, as per close(2). */
- int (*close)(hFILE *fp) HTS_RESULT_USED;
-};
-
-/* These are called from the hopen() dispatcher, and should call hfile_init()
- to malloc a struct "derived" from hFILE and initialise it appropriately,
- including setting base.backend to their own backend vector. */
-hFILE *hopen_irods(const char *filename, const char *mode);
-hFILE *hopen_net(const char *filename, const char *mode);
-
-/* May be called by hopen_*() functions to decode a fopen()-style mode into
- open(2)-style flags. */
-int hfile_oflags(const char *mode);
-
-/* Must be called by hopen_*() functions to allocate the hFILE struct and set
- up its base. Capacity is a suggested buffer size (e.g., via fstat(2))
- or 0 for a default-sized buffer. */
-hFILE *hfile_init(size_t struct_size, const char *mode, size_t capacity);
-
-/* May be called by hopen_*() functions to undo the effects of hfile_init()
- in the event opening the stream subsequently fails. (This is safe to use
- even if fp is NULL. This takes care to preserve errno.) */
-void hfile_destroy(hFILE *fp);
-
-#endif
diff --git a/htslib/hfile_irods.c b/htslib/hfile_irods.c
deleted file mode 100644
index 6bdbf21..0000000
--- a/htslib/hfile_irods.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* hfile_irods.c -- iRODS backend for low-level file streams.
-
- Copyright (C) 2013, 2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include "hfile_internal.h"
-
-#include <rcConnect.h>
-#include <dataObjOpen.h>
-#include <dataObjRead.h>
-#include <dataObjWrite.h>
-#include <dataObjFsync.h>
-#include <dataObjLseek.h>
-#include <dataObjClose.h>
-
-typedef struct {
- hFILE base;
- int descriptor;
-} hFILE_irods;
-
-static int status_errno(int status)
-{
- switch (status) {
- case SYS_NO_API_PRIV: return EACCES;
- case SYS_MALLOC_ERR: return ENOMEM;
- case SYS_OUT_OF_FILE_DESC: return ENFILE;
- case SYS_BAD_FILE_DESCRIPTOR: return EBADF;
- case CAT_NO_ROWS_FOUND: return ENOENT;
- case CATALOG_ALREADY_HAS_ITEM_BY_THAT_NAME: return EEXIST;
- default: return EIO;
- }
-}
-
-static void set_errno(int status)
-{
- int err = abs(status) % 1000;
- errno = err? err : status_errno(status);
-}
-
-static struct {
- rcComm_t *conn;
- rodsEnv env;
-} irods = { NULL };
-
-static void irods_exit()
-{
- (void) rcDisconnect(irods.conn);
- irods.conn = NULL;
-}
-
-static int irods_init()
-{
- rErrMsg_t err;
- int ret;
-
- ret = getRodsEnv(&irods.env);
- if (ret < 0) goto error;
-
- irods.conn = rcConnect(irods.env.rodsHost, irods.env.rodsPort,
- irods.env.rodsUserName, irods.env.rodsZone,
- NO_RECONN, &err);
- if (irods.conn == NULL) { ret = err.status; goto error; }
-
- if (strcmp(irods.env.rodsUserName, PUBLIC_USER_NAME) != 0) {
- ret = clientLogin(irods.conn);
- if (ret != 0) goto error;
- }
-
- // In the unlikely event atexit() fails, it's better to succeed here and
- // carry on and do the I/O; then eventually when the program exits, we'll
- // merely disconnect from the server uncleanly, as if we had aborted.
- (void) atexit(irods_exit);
-
- return 0;
-
-error:
- if (irods.conn) { (void) rcDisconnect(irods.conn); }
- irods.conn = NULL;
- set_errno(ret);
- return -1;
-}
-
-static ssize_t irods_read(hFILE *fpv, void *buffer, size_t nbytes)
-{
- hFILE_irods *fp = (hFILE_irods *) fpv;
- openedDataObjInp_t args;
- bytesBuf_t buf;
- int ret;
-
- memset(&args, 0, sizeof args);
- args.l1descInx = fp->descriptor;
- args.len = nbytes;
-
- buf.buf = buffer;
- buf.len = nbytes;
-
- ret = rcDataObjRead(irods.conn, &args, &buf);
- if (ret < 0) set_errno(ret);
- return ret;
-}
-
-static ssize_t irods_write(hFILE *fpv, const void *buffer, size_t nbytes)
-{
- hFILE_irods *fp = (hFILE_irods *) fpv;
- openedDataObjInp_t args;
- bytesBuf_t buf;
- int ret;
-
- memset(&args, 0, sizeof args);
- args.l1descInx = fp->descriptor;
- args.len = nbytes;
-
- buf.buf = (void *) buffer; // ...the iRODS API is not const-correct here
- buf.len = nbytes;
-
- ret = rcDataObjWrite(irods.conn, &args, &buf);
- if (ret < 0) set_errno(ret);
- return ret;
-}
-
-static off_t irods_seek(hFILE *fpv, off_t offset, int whence)
-{
- hFILE_irods *fp = (hFILE_irods *) fpv;
- openedDataObjInp_t args;
- fileLseekOut_t *out = NULL;
- int ret;
-
- memset(&args, 0, sizeof args);
- args.l1descInx = fp->descriptor;
- args.offset = offset;
- args.whence = whence;
-
- ret = rcDataObjLseek(irods.conn, &args, &out);
-
- if (out) { offset = out->offset; free(out); }
- else offset = -1;
- if (ret < 0) { set_errno(ret); return -1; }
- return offset;
-}
-
-static int irods_flush(hFILE *fpv)
-{
-// FIXME rcDataObjFsync() doesn't seem to function as expected.
-// For now, flush is a no-op: see https://github.com/samtools/htslib/issues/168
-#if 0
- hFILE_irods *fp = (hFILE_irods *) fpv;
- openedDataObjInp_t args;
- int ret;
-
- memset(&args, 0, sizeof args);
- args.l1descInx = fp->descriptor;
-
- ret = rcDataObjFsync(irods.conn, &args);
- if (ret < 0) set_errno(ret);
- return ret;
-#endif
- return 0;
-}
-
-static int irods_close(hFILE *fpv)
-{
- hFILE_irods *fp = (hFILE_irods *) fpv;
- openedDataObjInp_t args;
- int ret;
-
- memset(&args, 0, sizeof args);
- args.l1descInx = fp->descriptor;
-
- ret = rcDataObjClose(irods.conn, &args);
- if (ret < 0) set_errno(ret);
- return ret;
-}
-
-static const struct hFILE_backend irods_backend =
-{
- irods_read, irods_write, irods_seek, irods_flush, irods_close
-};
-
-hFILE *hopen_irods(const char *filename, const char *mode)
-{
- hFILE_irods *fp;
- rodsPath_t path;
- dataObjInp_t args;
- int ret;
-
- // Initialise the iRODS connection if this is the first use.
- if (irods.conn == NULL) { if (irods_init() < 0) return NULL; }
-
- if (strncmp(filename, "irods:", 6) == 0) filename += 6;
- else { errno = EINVAL; return NULL; }
-
- fp = (hFILE_irods *) hfile_init(sizeof (hFILE_irods), mode, 0);
- if (fp == NULL) return NULL;
-
- strncpy(path.inPath, filename, MAX_NAME_LEN-1);
- path.inPath[MAX_NAME_LEN-1] = '\0';
-
- ret = parseRodsPath(&path, &irods.env);
- if (ret < 0) goto error;
-
- memset(&args, 0, sizeof args);
- strcpy(args.objPath, path.outPath);
- args.openFlags = hfile_oflags(mode);
- if (args.openFlags & O_CREAT) {
- args.createMode = 0666;
- addKeyVal(&args.condInput, DEST_RESC_NAME_KW,irods.env.rodsDefResource);
- }
-
- ret = rcDataObjOpen(irods.conn, &args);
- if (ret < 0) goto error;
- fp->descriptor = ret;
-
- fp->base.backend = &irods_backend;
- return &fp->base;
-
-error:
- hfile_destroy((hFILE *) fp);
- set_errno(ret);
- return NULL;
-}
diff --git a/htslib/hfile_net.c b/htslib/hfile_net.c
deleted file mode 100644
index 9506634..0000000
--- a/htslib/hfile_net.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* hfile_net.c -- network backend for low-level input/output streams.
-
- Copyright (C) 2013-2014 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "hfile_internal.h"
-
-#include "htslib/knetfile.h"
-
-typedef struct {
- hFILE base;
- knetFile *netfp;
-} hFILE_net;
-
-static int net_inited = 0;
-
-#ifdef _WIN32
-static void net_exit(void)
-{
- knet_win32_destroy();
-}
-#endif
-
-static int net_init(void)
-{
-#ifdef _WIN32
- if (knet_win32_init() != 0) return -1;
-
- // In the unlikely event atexit() fails, it's better to succeed here and
- // carry on and do the I/O; then eventually when the program exits, we'll
- // merely have failed to clean up properly, as if we had aborted.
- (void) atexit(net_exit);
-#endif
-
- net_inited = 1;
- return 0;
-}
-
-static ssize_t net_read(hFILE *fpv, void *buffer, size_t nbytes)
-{
- hFILE_net *fp = (hFILE_net *) fpv;
- return knet_read(fp->netfp, buffer, nbytes);
-}
-
-static off_t net_seek(hFILE *fpv, off_t offset, int whence)
-{
- hFILE_net *fp = (hFILE_net *) fpv;
- return knet_seek(fp->netfp, offset, whence);
-}
-
-static int net_close(hFILE *fpv)
-{
- hFILE_net *fp = (hFILE_net *) fpv;
- return knet_close(fp->netfp);
-}
-
-static const struct hFILE_backend net_backend =
-{
- net_read, NULL, net_seek, NULL, net_close
-};
-
-hFILE *hopen_net(const char *filename, const char *mode)
-{
- hFILE_net *fp;
-
- // Do any networking initialisation if this is the first use.
- if (! net_inited) { if (net_init() < 0) return NULL; }
-
- fp = (hFILE_net *) hfile_init(sizeof (hFILE_net), mode, 0);
- if (fp == NULL) return NULL;
-
- fp->netfp = knet_open(filename, mode);
- if (fp->netfp == NULL) { hfile_destroy((hFILE *) fp); return NULL; }
-
- fp->base.backend = &net_backend;
- return &fp->base;
-}
diff --git a/htslib/hts.c b/htslib/hts.c
deleted file mode 100644
index 5f4d677..0000000
--- a/htslib/hts.c
+++ /dev/null
@@ -1,1665 +0,0 @@
-/* hts.c -- format-neutral I/O, indexing, and iterator API functions.
-
- Copyright (C) 2008, 2009, 2012-2015 Genome Research Ltd.
- Copyright (C) 2012, 2013 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <zlib.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include "htslib/bgzf.h"
-#include "htslib/hts.h"
-#include "cram/cram.h"
-#include "htslib/hfile.h"
-#include "version.h"
-
-#include "htslib/kseq.h"
-#define KS_BGZF 1
-#if KS_BGZF
- // bgzf now supports gzip-compressed files, the gzFile branch can be removed
- KSTREAM_INIT2(, BGZF*, bgzf_read, 65536)
-#else
- KSTREAM_INIT2(, gzFile, gzread, 16384)
-#endif
-
-#include "htslib/khash.h"
-KHASH_INIT2(s2i,, kh_cstr_t, int64_t, 1, kh_str_hash_func, kh_str_hash_equal)
-
-int hts_verbose = 3;
-
-const char *hts_version()
-{
- return HTS_VERSION;
-}
-
-const unsigned char seq_nt16_table[256] = {
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 1, 2, 4, 8, 15,15,15,15, 15,15,15,15, 15, 0 /*=*/,15,15,
- 15, 1,14, 2, 13,15,15, 4, 11,15,15,12, 15, 3,15,15,
- 15,15, 5, 6, 8,15, 7, 9, 15,10,15,15, 15,15,15,15,
- 15, 1,14, 2, 13,15,15, 4, 11,15,15,12, 15, 3,15,15,
- 15,15, 5, 6, 8,15, 7, 9, 15,10,15,15, 15,15,15,15,
-
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
- 15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15
-};
-
-const char seq_nt16_str[] = "=ACMGRSVTWYHKDBN";
-
-const int seq_nt16_int[] = { 4, 0, 1, 4, 2, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4 };
-
-/**********************
- *** Basic file I/O ***
- **********************/
-
-static enum htsFormatCategory format_category(enum htsExactFormat fmt)
-{
- switch (fmt) {
- case bam:
- case sam:
- case cram:
- return sequence_data;
-
- case vcf:
- case bcf:
- return variant_data;
-
- case bai:
- case crai:
- case csi:
- case gzi:
- case tbi:
- return index_file;
-
- case bed:
- return region_list;
-
- case unknown_format:
- case binary_format:
- case text_format:
- case format_maximum:
- break;
- }
-
- return unknown_category;
-}
-
-// Decompress up to ten or so bytes by peeking at the file, which must be
-// positioned at the start of a GZIP block.
-static size_t decompress_peek(hFILE *fp, unsigned char *dest, size_t destsize)
-{
- // Typically at most a couple of hundred bytes of input are required
- // to get a few bytes of output from inflate(), so hopefully this buffer
- // size suffices in general.
- unsigned char buffer[512];
- z_stream zs;
- ssize_t npeek = hpeek(fp, buffer, sizeof buffer);
-
- if (npeek < 0) return 0;
-
- zs.zalloc = NULL;
- zs.zfree = NULL;
- zs.next_in = buffer;
- zs.avail_in = npeek;
- zs.next_out = dest;
- zs.avail_out = destsize;
- if (inflateInit2(&zs, 31) != Z_OK) return 0;
-
- while (zs.total_out < destsize)
- if (inflate(&zs, Z_SYNC_FLUSH) != Z_OK) break;
-
- destsize = zs.total_out;
- inflateEnd(&zs);
-
- return destsize;
-}
-
-// Parse "x.y" text, taking care because the string is not NUL-terminated
-// and filling in major/minor only when the digits are followed by a delimiter,
-// so we don't misread "1.10" as "1.1" due to reaching the end of the buffer.
-static void
-parse_version(htsFormat *fmt, const unsigned char *u, const unsigned char *ulim)
-{
- const char *str = (const char *) u;
- const char *slim = (const char *) ulim;
- const char *s;
-
- fmt->version.major = fmt->version.minor = -1;
-
- for (s = str; s < slim; s++) if (!isdigit(*s)) break;
- if (s < slim) {
- fmt->version.major = atoi(str);
- if (*s == '.') {
- str = &s[1];
- for (s = str; s < slim; s++) if (!isdigit(*s)) break;
- if (s < slim)
- fmt->version.minor = atoi(str);
- }
- else
- fmt->version.minor = 0;
- }
-}
-
-int hts_detect_format(hFILE *hfile, htsFormat *fmt)
-{
- unsigned char s[21];
- ssize_t len = hpeek(hfile, s, 18);
- if (len < 0) return -1;
-
- if (len >= 2 && s[0] == 0x1f && s[1] == 0x8b) {
- // The stream is either gzip-compressed or BGZF-compressed.
- // Determine which, and decompress the first few bytes.
- fmt->compression = (len >= 18 && (s[3] & 4) &&
- memcmp(&s[12], "BC\2\0", 4) == 0)? bgzf : gzip;
- len = decompress_peek(hfile, s, sizeof s);
- }
- else {
- fmt->compression = no_compression;
- len = hpeek(hfile, s, sizeof s);
- }
- if (len < 0) return -1;
-
- fmt->compression_level = -1;
- fmt->specific = NULL;
-
- if (len >= 6 && memcmp(s,"CRAM",4) == 0 && s[4]>=1 && s[4]<=3 && s[5]<=1) {
- fmt->category = sequence_data;
- fmt->format = cram;
- fmt->version.major = s[4], fmt->version.minor = s[5];
- fmt->compression = custom;
- return 0;
- }
- else if (len >= 4 && s[3] <= '\4') {
- if (memcmp(s, "BAM\1", 4) == 0) {
- fmt->category = sequence_data;
- fmt->format = bam;
- // TODO Decompress enough to pick version from @HD-VN header
- fmt->version.major = 1, fmt->version.minor = -1;
- return 0;
- }
- else if (memcmp(s, "BAI\1", 4) == 0) {
- fmt->category = index_file;
- fmt->format = bai;
- fmt->version.major = -1, fmt->version.minor = -1;
- return 0;
- }
- else if (memcmp(s, "BCF\4", 4) == 0) {
- fmt->category = variant_data;
- fmt->format = bcf;
- fmt->version.major = 1, fmt->version.minor = -1;
- return 0;
- }
- else if (memcmp(s, "BCF\2", 4) == 0) {
- fmt->category = variant_data;
- fmt->format = bcf;
- fmt->version.major = s[3];
- fmt->version.minor = (len >= 5 && s[4] <= 2)? s[4] : 0;
- return 0;
- }
- else if (memcmp(s, "CSI\1", 4) == 0) {
- fmt->category = index_file;
- fmt->format = csi;
- fmt->version.major = 1, fmt->version.minor = -1;
- return 0;
- }
- else if (memcmp(s, "TBI\1", 4) == 0) {
- fmt->category = index_file;
- fmt->format = tbi;
- fmt->version.major = -1, fmt->version.minor = -1;
- return 0;
- }
- }
- else if (len >= 16 && memcmp(s, "##fileformat=VCF", 16) == 0) {
- fmt->category = variant_data;
- fmt->format = vcf;
- if (len >= 21 && s[16] == 'v')
- parse_version(fmt, &s[17], &s[len]);
- else
- fmt->version.major = fmt->version.minor = -1;
- return 0;
- }
- else if (len >= 4 && s[0] == '@' &&
- (memcmp(s, "@HD\t", 4) == 0 || memcmp(s, "@SQ\t", 4) == 0 ||
- memcmp(s, "@RG\t", 4) == 0 || memcmp(s, "@PG\t", 4) == 0)) {
- fmt->category = sequence_data;
- fmt->format = sam;
- // @HD-VN is not guaranteed to be the first tag, but then @HD is
- // not guaranteed to be present at all...
- if (len >= 9 && memcmp(s, "@HD\tVN:", 7) == 0)
- parse_version(fmt, &s[7], &s[len]);
- else
- fmt->version.major = 1, fmt->version.minor = -1;
- return 0;
- }
- else {
- // Various possibilities for tab-delimited text:
- // .crai (gzipped tab-delimited six columns: seqid 5*number)
- // .bed ([3..12] tab-delimited columns)
- // .bedpe (>= 10 tab-delimited columns)
- // .sam (tab-delimited >= 11 columns: seqid number seqid...)
- // FIXME For now, assume it's SAM
- fmt->category = sequence_data;
- fmt->format = sam;
- fmt->version.major = 1, fmt->version.minor = -1;
- return 0;
- }
-
- fmt->category = unknown_category;
- fmt->format = unknown_format;
- fmt->version.major = fmt->version.minor = -1;
- fmt->compression = no_compression;
- return 0;
-}
-
-char *hts_format_description(const htsFormat *format)
-{
- kstring_t str = { 0, 0, NULL };
-
- switch (format->format) {
- case sam: kputs("SAM", &str); break;
- case bam: kputs("BAM", &str); break;
- case cram: kputs("CRAM", &str); break;
- case vcf: kputs("VCF", &str); break;
- case bcf:
- if (format->version.major == 1) kputs("Legacy BCF", &str);
- else kputs("BCF", &str);
- break;
- case bai: kputs("BAI", &str); break;
- case crai: kputs("CRAI", &str); break;
- case csi: kputs("CSI", &str); break;
- case tbi: kputs("Tabix", &str); break;
- default: kputs("unknown", &str); break;
- }
-
- if (format->version.major >= 0) {
- kputs(" version ", &str);
- kputw(format->version.major, &str);
- if (format->version.minor >= 0) {
- kputc('.', &str);
- kputw(format->version.minor, &str);
- }
- }
-
- switch (format->compression) {
- case custom: kputs(" compressed", &str); break;
- case gzip: kputs(" gzip-compressed", &str); break;
- case bgzf:
- switch (format->format) {
- case bam:
- case bcf:
- case csi:
- case tbi:
- // These are by definition BGZF, so just use the generic term
- kputs(" compressed", &str);
- break;
- default:
- kputs(" BGZF-compressed", &str);
- break;
- }
- break;
- default: break;
- }
-
- switch (format->category) {
- case sequence_data: kputs(" sequence", &str); break;
- case variant_data: kputs(" variant calling", &str); break;
- case index_file: kputs(" index", &str); break;
- case region_list: kputs(" genomic region", &str); break;
- default: break;
- }
-
- if (format->compression == no_compression)
- switch (format->format) {
- case sam:
- case crai:
- case vcf:
- case bed:
- kputs(" text", &str);
- break;
-
- default:
- kputs(" data", &str);
- break;
- }
- else
- kputs(" data", &str);
-
- return ks_release(&str);
-}
-
-htsFile *hts_open(const char *fn, const char *mode)
-{
- htsFile *fp = NULL;
- hFILE *hfile = hopen(fn, mode);
- if (hfile == NULL) goto error;
-
- fp = hts_hopen(hfile, fn, mode);
- if (fp == NULL) goto error;
-
- return fp;
-
-error:
- if (hts_verbose >= 2)
- fprintf(stderr, "[E::%s] fail to open file '%s'\n", __func__, fn);
-
- if (hfile)
- hclose_abruptly(hfile);
-
- return NULL;
-}
-
-htsFile *hts_hopen(struct hFILE *hfile, const char *fn, const char *mode)
-{
- htsFile *fp = (htsFile*)calloc(1, sizeof(htsFile));
- if (fp == NULL) goto error;
-
- fp->fn = strdup(fn);
- fp->is_be = ed_is_big();
-
- if (strchr(mode, 'r')) {
- if (hts_detect_format(hfile, &fp->format) < 0) goto error;
- }
- else if (strchr(mode, 'w') || strchr(mode, 'a')) {
- htsFormat *fmt = &fp->format;
- fp->is_write = 1;
-
- if (strchr(mode, 'b')) fmt->format = binary_format;
- else if (strchr(mode, 'c')) fmt->format = cram;
- else fmt->format = text_format;
-
- if (strchr(mode, 'z')) fmt->compression = bgzf;
- else if (strchr(mode, 'g')) fmt->compression = gzip;
- else if (strchr(mode, 'u')) fmt->compression = no_compression;
- else {
- // No compression mode specified, set to the default for the format
- switch (fmt->format) {
- case binary_format: fmt->compression = bgzf; break;
- case cram: fmt->compression = custom; break;
- case text_format: fmt->compression = no_compression; break;
- default: abort();
- }
- }
-
- // Fill in category (if determinable; e.g. 'b' could be BAM or BCF)
- fmt->category = format_category(fmt->format);
-
- fmt->version.major = fmt->version.minor = -1;
- fmt->compression_level = -1;
- fmt->specific = NULL;
- }
- else goto error;
-
- switch (fp->format.format) {
- case binary_format:
- case bam:
- case bcf:
- fp->fp.bgzf = bgzf_hopen(hfile, mode);
- if (fp->fp.bgzf == NULL) goto error;
- fp->is_bin = 1;
- break;
-
- case cram:
- fp->fp.cram = cram_dopen(hfile, fn, mode);
- if (fp->fp.cram == NULL) goto error;
- if (!fp->is_write)
- cram_set_option(fp->fp.cram, CRAM_OPT_DECODE_MD, 1);
- fp->is_cram = 1;
- break;
-
- case text_format:
- case sam:
- case vcf:
- if (!fp->is_write) {
- #if KS_BGZF
- BGZF *gzfp = bgzf_hopen(hfile, mode);
- #else
- // TODO Implement gzip hFILE adaptor
- hclose(hfile); // This won't work, especially for stdin
- gzFile gzfp = strcmp(fn, "-")? gzopen(fn, "rb") : gzdopen(fileno(stdin), "rb");
- #endif
- if (gzfp) fp->fp.voidp = ks_init(gzfp);
- else goto error;
- }
- else if (fp->format.compression != no_compression) {
- fp->fp.bgzf = bgzf_hopen(hfile, mode);
- if (fp->fp.bgzf == NULL) goto error;
- }
- else
- fp->fp.hfile = hfile;
- break;
-
- default:
- goto error;
- }
-
- return fp;
-
-error:
- if (hts_verbose >= 2)
- fprintf(stderr, "[E::%s] fail to open file '%s'\n", __func__, fn);
-
- if (fp) {
- free(fp->fn);
- free(fp->fn_aux);
- free(fp);
- }
- return NULL;
-}
-
-int hts_close(htsFile *fp)
-{
- int ret, save;
-
- switch (fp->format.format) {
- case binary_format:
- case bam:
- case bcf:
- ret = bgzf_close(fp->fp.bgzf);
- break;
-
- case cram:
- if (!fp->is_write) {
- switch (cram_eof(fp->fp.cram)) {
- case 0:
- fprintf(stderr, "[E::%s] Failed to decode sequence.\n", __func__);
- return -1;
- case 2:
- fprintf(stderr, "[W::%s] EOF marker is absent. The input is probably truncated.\n", __func__);
- break;
- default: /* case 1, expected EOF */
- break;
- }
- }
- ret = cram_close(fp->fp.cram);
- break;
-
- case text_format:
- case sam:
- case vcf:
- if (!fp->is_write) {
- #if KS_BGZF
- BGZF *gzfp = ((kstream_t*)fp->fp.voidp)->f;
- ret = bgzf_close(gzfp);
- #else
- gzFile gzfp = ((kstream_t*)fp->fp.voidp)->f;
- ret = gzclose(gzfp);
- #endif
- ks_destroy((kstream_t*)fp->fp.voidp);
- }
- else if (fp->format.compression != no_compression)
- ret = bgzf_close(fp->fp.bgzf);
- else
- ret = hclose(fp->fp.hfile);
- break;
-
- default:
- ret = -1;
- break;
- }
-
- save = errno;
- free(fp->fn);
- free(fp->fn_aux);
- free(fp->line.s);
- free(fp);
- errno = save;
- return ret;
-}
-
-const htsFormat *hts_get_format(htsFile *fp)
-{
- return fp? &fp->format : NULL;
-}
-
-int hts_set_opt(htsFile *fp, enum cram_option opt, ...) {
- int r;
- va_list args;
-
- if (fp->format.format != cram)
- return 0;
-
- va_start(args, opt);
- r = cram_set_voption(fp->fp.cram, opt, args);
- va_end(args);
-
- return r;
-}
-
-int hts_set_threads(htsFile *fp, int n)
-{
- if (fp->format.compression == bgzf) {
- return bgzf_mt(fp->fp.bgzf, n, 256);
- } else if (fp->format.format == cram) {
- return hts_set_opt(fp, CRAM_OPT_NTHREADS, n);
- }
- else return 0;
-}
-
-int hts_set_fai_filename(htsFile *fp, const char *fn_aux)
-{
- free(fp->fn_aux);
- if (fn_aux) {
- fp->fn_aux = strdup(fn_aux);
- if (fp->fn_aux == NULL) return -1;
- }
- else fp->fn_aux = NULL;
-
- if (fp->format.format == cram)
- cram_set_option(fp->fp.cram, CRAM_OPT_REFERENCE, fp->fn_aux);
-
- return 0;
-}
-
-// For VCF/BCF backward sweeper. Not exposing these functions because their
-// future is uncertain. Things will probably have to change with hFILE...
-BGZF *hts_get_bgzfp(htsFile *fp)
-{
- if ( fp->is_bin )
- return fp->fp.bgzf;
- else
- return ((kstream_t*)fp->fp.voidp)->f;
-}
-int hts_useek(htsFile *fp, long uoffset, int where)
-{
- if ( fp->is_bin )
- return bgzf_useek(fp->fp.bgzf, uoffset, where);
- else
- {
- ks_rewind((kstream_t*)fp->fp.voidp);
- ((kstream_t*)fp->fp.voidp)->seek_pos = uoffset;
- return bgzf_useek(((kstream_t*)fp->fp.voidp)->f, uoffset, where);
- }
-}
-long hts_utell(htsFile *fp)
-{
- if ( fp->is_bin )
- return bgzf_utell(fp->fp.bgzf);
- else
- return ((kstream_t*)fp->fp.voidp)->seek_pos;
-}
-
-int hts_getline(htsFile *fp, int delimiter, kstring_t *str)
-{
- int ret, dret;
- ret = ks_getuntil((kstream_t*)fp->fp.voidp, delimiter, str, &dret);
- ++fp->lineno;
- return ret;
-}
-
-char **hts_readlist(const char *string, int is_file, int *_n)
-{
- int m = 0, n = 0, dret;
- char **s = 0;
- if ( is_file )
- {
-#if KS_BGZF
- BGZF *fp = bgzf_open(string, "r");
-#else
- gzFile fp = gzopen(string, "r");
-#endif
- if ( !fp ) return NULL;
-
- kstream_t *ks;
- kstring_t str;
- str.s = 0; str.l = str.m = 0;
- ks = ks_init(fp);
- while (ks_getuntil(ks, KS_SEP_LINE, &str, &dret) >= 0)
- {
- if (str.l == 0) continue;
- n++;
- hts_expand(char*,n,m,s);
- s[n-1] = strdup(str.s);
- }
- ks_destroy(ks);
-#if KS_BGZF
- bgzf_close(fp);
-#else
- gzclose(fp);
-#endif
- free(str.s);
- }
- else
- {
- const char *q = string, *p = string;
- while ( 1 )
- {
- if (*p == ',' || *p == 0)
- {
- n++;
- hts_expand(char*,n,m,s);
- s[n-1] = (char*)calloc(p - q + 1, 1);
- strncpy(s[n-1], q, p - q);
- q = p + 1;
- }
- if ( !*p ) break;
- p++;
- }
- }
- s = (char**)realloc(s, n * sizeof(char*));
- *_n = n;
- return s;
-}
-
-char **hts_readlines(const char *fn, int *_n)
-{
- int m = 0, n = 0, dret;
- char **s = 0;
-#if KS_BGZF
- BGZF *fp = bgzf_open(fn, "r");
-#else
- gzFile fp = gzopen(fn, "r");
-#endif
- if ( fp ) { // read from file
- kstream_t *ks;
- kstring_t str;
- str.s = 0; str.l = str.m = 0;
- ks = ks_init(fp);
- while (ks_getuntil(ks, KS_SEP_LINE, &str, &dret) >= 0) {
- if (str.l == 0) continue;
- if (m == n) {
- m = m? m<<1 : 16;
- s = (char**)realloc(s, m * sizeof(char*));
- }
- s[n++] = strdup(str.s);
- }
- ks_destroy(ks);
- #if KS_BGZF
- bgzf_close(fp);
- #else
- gzclose(fp);
- #endif
- s = (char**)realloc(s, n * sizeof(char*));
- free(str.s);
- } else if (*fn == ':') { // read from string
- const char *q, *p;
- for (q = p = fn + 1;; ++p)
- if (*p == ',' || *p == 0) {
- if (m == n) {
- m = m? m<<1 : 16;
- s = (char**)realloc(s, m * sizeof(char*));
- }
- s[n] = (char*)calloc(p - q + 1, 1);
- strncpy(s[n++], q, p - q);
- q = p + 1;
- if (*p == 0) break;
- }
- } else return 0;
- s = (char**)realloc(s, n * sizeof(char*));
- *_n = n;
- return s;
-}
-
-// DEPRECATED: To be removed in a future HTSlib release
-int hts_file_type(const char *fname)
-{
- int len = strlen(fname);
- if ( !strcasecmp(".vcf.gz",fname+len-7) ) return FT_VCF_GZ;
- if ( !strcasecmp(".vcf",fname+len-4) ) return FT_VCF;
- if ( !strcasecmp(".bcf",fname+len-4) ) return FT_BCF_GZ;
- if ( !strcmp("-",fname) ) return FT_STDIN;
-
- hFILE *f = hopen(fname, "r");
- if (f == NULL) return 0;
-
- htsFormat fmt;
- if (hts_detect_format(f, &fmt) < 0) { hclose_abruptly(f); return 0; }
- if (hclose(f) < 0) return 0;
-
- switch (fmt.format) {
- case vcf: return (fmt.compression == no_compression)? FT_VCF : FT_VCF_GZ;
- case bcf: return (fmt.compression == no_compression)? FT_BCF : FT_BCF_GZ;
- default: return 0;
- }
-}
-
-/****************
- *** Indexing ***
- ****************/
-
-#define HTS_MIN_MARKER_DIST 0x10000
-
-// Finds the special meta bin
-// ((1<<(3 * n_lvls + 3)) - 1) / 7 + 1
-#define META_BIN(idx) ((idx)->n_bins + 1)
-
-#define pair64_lt(a,b) ((a).u < (b).u)
-
-#include "htslib/ksort.h"
-KSORT_INIT(_off, hts_pair64_t, pair64_lt)
-
-typedef struct {
- int32_t m, n;
- uint64_t loff;
- hts_pair64_t *list;
-} bins_t;
-
-#include "htslib/khash.h"
-KHASH_MAP_INIT_INT(bin, bins_t)
-typedef khash_t(bin) bidx_t;
-
-typedef struct {
- int32_t n, m;
- uint64_t *offset;
-} lidx_t;
-
-struct __hts_idx_t {
- int fmt, min_shift, n_lvls, n_bins;
- uint32_t l_meta;
- int32_t n, m;
- uint64_t n_no_coor;
- bidx_t **bidx;
- lidx_t *lidx;
- uint8_t *meta;
- struct {
- uint32_t last_bin, save_bin;
- int last_coor, last_tid, save_tid, finished;
- uint64_t last_off, save_off;
- uint64_t off_beg, off_end;
- uint64_t n_mapped, n_unmapped;
- } z; // keep internal states
-};
-
-static inline void insert_to_b(bidx_t *b, int bin, uint64_t beg, uint64_t end)
-{
- khint_t k;
- bins_t *l;
- int absent;
- k = kh_put(bin, b, bin, &absent);
- l = &kh_value(b, k);
- if (absent) {
- l->m = 1; l->n = 0;
- l->list = (hts_pair64_t*)calloc(l->m, sizeof(hts_pair64_t));
- }
- if (l->n == l->m) {
- l->m <<= 1;
- l->list = (hts_pair64_t*)realloc(l->list, l->m * sizeof(hts_pair64_t));
- }
- l->list[l->n].u = beg;
- l->list[l->n++].v = end;
-}
-
-static inline void insert_to_l(lidx_t *l, int64_t _beg, int64_t _end, uint64_t offset, int min_shift)
-{
- int i, beg, end;
- beg = _beg >> min_shift;
- end = (_end - 1) >> min_shift;
- if (l->m < end + 1) {
- int old_m = l->m;
- l->m = end + 1;
- kroundup32(l->m);
- l->offset = (uint64_t*)realloc(l->offset, l->m * sizeof(uint64_t));
- memset(l->offset + old_m, 0xff, 8 * (l->m - old_m)); // fill l->offset with (uint64_t)-1
- }
- if (beg == end) { // to save a loop in this case
- if (l->offset[beg] == (uint64_t)-1) l->offset[beg] = offset;
- } else {
- for (i = beg; i <= end; ++i)
- if (l->offset[i] == (uint64_t)-1) l->offset[i] = offset;
- }
- if (l->n < end + 1) l->n = end + 1;
-}
-
-hts_idx_t *hts_idx_init(int n, int fmt, uint64_t offset0, int min_shift, int n_lvls)
-{
- hts_idx_t *idx;
- idx = (hts_idx_t*)calloc(1, sizeof(hts_idx_t));
- if (idx == NULL) return NULL;
- idx->fmt = fmt;
- idx->min_shift = min_shift;
- idx->n_lvls = n_lvls;
- idx->n_bins = ((1<<(3 * n_lvls + 3)) - 1) / 7;
- idx->z.save_bin = idx->z.save_tid = idx->z.last_tid = idx->z.last_bin = 0xffffffffu;
- idx->z.save_off = idx->z.last_off = idx->z.off_beg = idx->z.off_end = offset0;
- idx->z.last_coor = 0xffffffffu;
- if (n) {
- idx->n = idx->m = n;
- idx->bidx = (bidx_t**)calloc(n, sizeof(bidx_t*));
- if (idx->bidx == NULL) { free(idx); return NULL; }
- idx->lidx = (lidx_t*) calloc(n, sizeof(lidx_t));
- if (idx->lidx == NULL) { free(idx->bidx); free(idx); return NULL; }
- }
- return idx;
-}
-
-static void update_loff(hts_idx_t *idx, int i, int free_lidx)
-{
- bidx_t *bidx = idx->bidx[i];
- lidx_t *lidx = &idx->lidx[i];
- khint_t k;
- int l;
- uint64_t offset0 = 0;
- if (bidx) {
- k = kh_get(bin, bidx, META_BIN(idx));
- if (k != kh_end(bidx))
- offset0 = kh_val(bidx, k).list[0].u;
- for (l = 0; l < lidx->n && lidx->offset[l] == (uint64_t)-1; ++l)
- lidx->offset[l] = offset0;
- } else l = 1;
- for (; l < lidx->n; ++l) // fill missing values
- if (lidx->offset[l] == (uint64_t)-1)
- lidx->offset[l] = lidx->offset[l-1];
- if (bidx == 0) return;
- for (k = kh_begin(bidx); k != kh_end(bidx); ++k) // set loff
- if (kh_exist(bidx, k))
- {
- if ( kh_key(bidx, k) < idx->n_bins )
- {
- int bot_bin = hts_bin_bot(kh_key(bidx, k), idx->n_lvls);
- // disable linear index if bot_bin out of bounds
- kh_val(bidx, k).loff = bot_bin < lidx->n ? lidx->offset[bot_bin] : 0;
- }
- else
- kh_val(bidx, k).loff = 0;
- }
- if (free_lidx) {
- free(lidx->offset);
- lidx->m = lidx->n = 0;
- lidx->offset = 0;
- }
-}
-
-static void compress_binning(hts_idx_t *idx, int i)
-{
- bidx_t *bidx = idx->bidx[i];
- khint_t k;
- int l, m;
- if (bidx == 0) return;
- // merge a bin to its parent if the bin is too small
- for (l = idx->n_lvls; l > 0; --l) {
- unsigned start = hts_bin_first(l);
- for (k = kh_begin(bidx); k != kh_end(bidx); ++k) {
- bins_t *p, *q;
- if (!kh_exist(bidx, k) || kh_key(bidx, k) >= idx->n_bins || kh_key(bidx, k) < start) continue;
- p = &kh_value(bidx, k);
- if (l < idx->n_lvls && p->n > 1) ks_introsort(_off, p->n, p->list);
- if ((p->list[p->n - 1].v>>16) - (p->list[0].u>>16) < HTS_MIN_MARKER_DIST) {
- khint_t kp;
- kp = kh_get(bin, bidx, hts_bin_parent(kh_key(bidx, k)));
- if (kp == kh_end(bidx)) continue;
- q = &kh_val(bidx, kp);
- if (q->n + p->n > q->m) {
- q->m = q->n + p->n;
- kroundup32(q->m);
- q->list = (hts_pair64_t*)realloc(q->list, q->m * sizeof(hts_pair64_t));
- }
- memcpy(q->list + q->n, p->list, p->n * sizeof(hts_pair64_t));
- q->n += p->n;
- free(p->list);
- kh_del(bin, bidx, k);
- }
- }
- }
- k = kh_get(bin, bidx, 0);
- if (k != kh_end(bidx)) ks_introsort(_off, kh_val(bidx, k).n, kh_val(bidx, k).list);
- // merge adjacent chunks that start from the same BGZF block
- for (k = kh_begin(bidx); k != kh_end(bidx); ++k) {
- bins_t *p;
- if (!kh_exist(bidx, k) || kh_key(bidx, k) >= idx->n_bins) continue;
- p = &kh_value(bidx, k);
- for (l = 1, m = 0; l < p->n; ++l) {
- if (p->list[m].v>>16 >= p->list[l].u>>16) {
- if (p->list[m].v < p->list[l].v) p->list[m].v = p->list[l].v;
- } else p->list[++m] = p->list[l];
- }
- p->n = m + 1;
- }
-}
-
-void hts_idx_finish(hts_idx_t *idx, uint64_t final_offset)
-{
- int i;
- if (idx == NULL || idx->z.finished) return; // do not run this function on an empty index or multiple times
- if (idx->z.save_tid >= 0) {
- insert_to_b(idx->bidx[idx->z.save_tid], idx->z.save_bin, idx->z.save_off, final_offset);
- insert_to_b(idx->bidx[idx->z.save_tid], META_BIN(idx), idx->z.off_beg, final_offset);
- insert_to_b(idx->bidx[idx->z.save_tid], META_BIN(idx), idx->z.n_mapped, idx->z.n_unmapped);
- }
- for (i = 0; i < idx->n; ++i) {
- update_loff(idx, i, (idx->fmt == HTS_FMT_CSI));
- compress_binning(idx, i);
- }
- idx->z.finished = 1;
-}
-
-int hts_idx_push(hts_idx_t *idx, int tid, int beg, int end, uint64_t offset, int is_mapped)
-{
- int bin;
- if (tid<0) beg = -1, end = 0;
- if (tid >= idx->m) { // enlarge the index
- int32_t oldm = idx->m;
- idx->m = idx->m? idx->m<<1 : 2;
- idx->bidx = (bidx_t**)realloc(idx->bidx, idx->m * sizeof(bidx_t*));
- idx->lidx = (lidx_t*) realloc(idx->lidx, idx->m * sizeof(lidx_t));
- memset(&idx->bidx[oldm], 0, (idx->m - oldm) * sizeof(bidx_t*));
- memset(&idx->lidx[oldm], 0, (idx->m - oldm) * sizeof(lidx_t));
- }
- if (idx->n < tid + 1) idx->n = tid + 1;
- if (idx->z.finished) return 0;
- if (idx->z.last_tid != tid || (idx->z.last_tid >= 0 && tid < 0)) { // change of chromosome
- if ( tid>=0 && idx->n_no_coor )
- {
- if (hts_verbose >= 1) fprintf(stderr,"[E::%s] NO_COOR reads not in a single block at the end %d %d\n", __func__, tid,idx->z.last_tid);
- return -1;
- }
- if (tid>=0 && idx->bidx[tid] != 0)
- {
- if (hts_verbose >= 1) fprintf(stderr, "[E::%s] chromosome blocks not continuous\n", __func__);
- return -1;
- }
- idx->z.last_tid = tid;
- idx->z.last_bin = 0xffffffffu;
- } else if (tid >= 0 && idx->z.last_coor > beg) { // test if positions are out of order
- if (hts_verbose >= 1) fprintf(stderr, "[E::%s] unsorted positions\n", __func__);
- return -1;
- }
- if ( tid>=0 )
- {
- if (idx->bidx[tid] == 0) idx->bidx[tid] = kh_init(bin);
- if ( is_mapped)
- insert_to_l(&idx->lidx[tid], beg, end, idx->z.last_off, idx->min_shift); // last_off points to the start of the current record
- }
- else idx->n_no_coor++;
- bin = hts_reg2bin(beg, end, idx->min_shift, idx->n_lvls);
- if ((int)idx->z.last_bin != bin) { // then possibly write the binning index
- if (idx->z.save_bin != 0xffffffffu) // save_bin==0xffffffffu only happens to the first record
- insert_to_b(idx->bidx[idx->z.save_tid], idx->z.save_bin, idx->z.save_off, idx->z.last_off);
- if (idx->z.last_bin == 0xffffffffu && idx->z.save_bin != 0xffffffffu) { // change of chr; keep meta information
- idx->z.off_end = idx->z.last_off;
- insert_to_b(idx->bidx[idx->z.save_tid], META_BIN(idx), idx->z.off_beg, idx->z.off_end);
- insert_to_b(idx->bidx[idx->z.save_tid], META_BIN(idx), idx->z.n_mapped, idx->z.n_unmapped);
- idx->z.n_mapped = idx->z.n_unmapped = 0;
- idx->z.off_beg = idx->z.off_end;
- }
- idx->z.save_off = idx->z.last_off;
- idx->z.save_bin = idx->z.last_bin = bin;
- idx->z.save_tid = tid;
- }
- if (is_mapped) ++idx->z.n_mapped;
- else ++idx->z.n_unmapped;
- idx->z.last_off = offset;
- idx->z.last_coor = beg;
- return 0;
-}
-
-void hts_idx_destroy(hts_idx_t *idx)
-{
- khint_t k;
- int i;
- if (idx == 0) return;
- // For HTS_FMT_CRAI, idx actually points to a different type -- see sam.c
- if (idx->fmt == HTS_FMT_CRAI) { free(idx); return; }
-
- for (i = 0; i < idx->m; ++i) {
- bidx_t *bidx = idx->bidx[i];
- free(idx->lidx[i].offset);
- if (bidx == 0) continue;
- for (k = kh_begin(bidx); k != kh_end(bidx); ++k)
- if (kh_exist(bidx, k))
- free(kh_value(bidx, k).list);
- kh_destroy(bin, bidx);
- }
- free(idx->bidx); free(idx->lidx); free(idx->meta);
- free(idx);
-}
-
-static inline long idx_read(int is_bgzf, void *fp, void *buf, long l)
-{
- if (is_bgzf) return bgzf_read((BGZF*)fp, buf, l);
- else return (long)fread(buf, 1, l, (FILE*)fp);
-}
-
-static inline long idx_write(int is_bgzf, void *fp, const void *buf, long l)
-{
- if (is_bgzf) return bgzf_write((BGZF*)fp, buf, l);
- else return (long)fwrite(buf, 1, l, (FILE*)fp);
-}
-
-static inline void swap_bins(bins_t *p)
-{
- int i;
- for (i = 0; i < p->n; ++i) {
- ed_swap_8p(&p->list[i].u);
- ed_swap_8p(&p->list[i].v);
- }
-}
-
-static void hts_idx_save_core(const hts_idx_t *idx, void *fp, int fmt)
-{
- int32_t i, size, is_be;
- int is_bgzf = (fmt != HTS_FMT_BAI);
- is_be = ed_is_big();
- if (is_be) {
- uint32_t x = idx->n;
- idx_write(is_bgzf, fp, ed_swap_4p(&x), 4);
- } else idx_write(is_bgzf, fp, &idx->n, 4);
- if (fmt == HTS_FMT_TBI && idx->l_meta) idx_write(is_bgzf, fp, idx->meta, idx->l_meta);
- for (i = 0; i < idx->n; ++i) {
- khint_t k;
- bidx_t *bidx = idx->bidx[i];
- lidx_t *lidx = &idx->lidx[i];
- // write binning index
- size = bidx? kh_size(bidx) : 0;
- if (is_be) { // big endian
- uint32_t x = size;
- idx_write(is_bgzf, fp, ed_swap_4p(&x), 4);
- } else idx_write(is_bgzf, fp, &size, 4);
- if (bidx == 0) goto write_lidx;
- for (k = kh_begin(bidx); k != kh_end(bidx); ++k) {
- bins_t *p;
- if (!kh_exist(bidx, k)) continue;
- p = &kh_value(bidx, k);
- if (is_be) { // big endian
- uint32_t x;
- x = kh_key(bidx, k); idx_write(is_bgzf, fp, ed_swap_4p(&x), 4);
- if (fmt == HTS_FMT_CSI) {
- uint64_t y = kh_val(bidx, k).loff;
- idx_write(is_bgzf, fp, ed_swap_4p(&y), 8);
- }
- x = p->n; idx_write(is_bgzf, fp, ed_swap_4p(&x), 4);
- swap_bins(p);
- idx_write(is_bgzf, fp, p->list, 16 * p->n);
- swap_bins(p);
- } else {
- idx_write(is_bgzf, fp, &kh_key(bidx, k), 4);
- if (fmt == HTS_FMT_CSI) idx_write(is_bgzf, fp, &kh_val(bidx, k).loff, 8);
- //int j;for(j=0;j<p->n;++j)fprintf(stderr,"%d,%llx,%d,%llx:%llx\n",kh_key(bidx,k),kh_val(bidx, k).loff,j,p->list[j].u,p->list[j].v);
- idx_write(is_bgzf, fp, &p->n, 4);
- idx_write(is_bgzf, fp, p->list, p->n << 4);
- }
- }
-write_lidx:
- if (fmt != HTS_FMT_CSI) {
- if (is_be) {
- int32_t x = lidx->n;
- idx_write(is_bgzf, fp, ed_swap_4p(&x), 4);
- for (x = 0; x < lidx->n; ++x) ed_swap_8p(&lidx->offset[x]);
- idx_write(is_bgzf, fp, lidx->offset, lidx->n << 3);
- for (x = 0; x < lidx->n; ++x) ed_swap_8p(&lidx->offset[x]);
- } else {
- idx_write(is_bgzf, fp, &lidx->n, 4);
- idx_write(is_bgzf, fp, lidx->offset, lidx->n << 3);
- }
- }
- }
- if (is_be) { // write the number of reads without coordinates
- uint64_t x = idx->n_no_coor;
- idx_write(is_bgzf, fp, &x, 8);
- } else idx_write(is_bgzf, fp, &idx->n_no_coor, 8);
-}
-
-void hts_idx_save(const hts_idx_t *idx, const char *fn, int fmt)
-{
- char *fnidx;
- fnidx = (char*)calloc(1, strlen(fn) + 5);
- strcpy(fnidx, fn);
- if (fmt == HTS_FMT_CSI) {
- BGZF *fp;
- uint32_t x[3];
- int is_be, i;
- is_be = ed_is_big();
- fp = bgzf_open(strcat(fnidx, ".csi"), "w");
- bgzf_write(fp, "CSI\1", 4);
- x[0] = idx->min_shift; x[1] = idx->n_lvls; x[2] = idx->l_meta;
- if (is_be) {
- for (i = 0; i < 3; ++i)
- bgzf_write(fp, ed_swap_4p(&x[i]), 4);
- } else bgzf_write(fp, &x, 12);
- if (idx->l_meta) bgzf_write(fp, idx->meta, idx->l_meta);
- hts_idx_save_core(idx, fp, HTS_FMT_CSI);
- bgzf_close(fp);
- } else if (fmt == HTS_FMT_TBI) {
- BGZF *fp;
- fp = bgzf_open(strcat(fnidx, ".tbi"), "w");
- bgzf_write(fp, "TBI\1", 4);
- hts_idx_save_core(idx, fp, HTS_FMT_TBI);
- bgzf_close(fp);
- } else if (fmt == HTS_FMT_BAI) {
- FILE *fp;
- fp = fopen(strcat(fnidx, ".bai"), "w");
- fwrite("BAI\1", 1, 4, fp);
- hts_idx_save_core(idx, fp, HTS_FMT_BAI);
- fclose(fp);
- } else abort();
- free(fnidx);
-}
-
-static int hts_idx_load_core(hts_idx_t *idx, void *fp, int fmt)
-{
- int32_t i, n, is_be;
- int is_bgzf = (fmt != HTS_FMT_BAI);
- is_be = ed_is_big();
- if (idx == NULL) return -4;
- for (i = 0; i < idx->n; ++i) {
- bidx_t *h;
- lidx_t *l = &idx->lidx[i];
- uint32_t key;
- int j, absent;
- bins_t *p;
- h = idx->bidx[i] = kh_init(bin);
- if (idx_read(is_bgzf, fp, &n, 4) != 4) return -1;
- if (is_be) ed_swap_4p(&n);
- for (j = 0; j < n; ++j) {
- khint_t k;
- if (idx_read(is_bgzf, fp, &key, 4) != 4) return -1;
- if (is_be) ed_swap_4p(&key);
- k = kh_put(bin, h, key, &absent);
- if (absent <= 0) return -3; // Duplicate bin number
- p = &kh_val(h, k);
- if (fmt == HTS_FMT_CSI) {
- if (idx_read(is_bgzf, fp, &p->loff, 8) != 8) return -1;
- if (is_be) ed_swap_8p(&p->loff);
- } else p->loff = 0;
- if (idx_read(is_bgzf, fp, &p->n, 4) != 4) return -1;
- if (is_be) ed_swap_4p(&p->n);
- p->m = p->n;
- p->list = (hts_pair64_t*)malloc(p->m * sizeof(hts_pair64_t));
- if (p->list == NULL) return -2;
- if (idx_read(is_bgzf, fp, p->list, p->n<<4) != p->n<<4) return -1;
- if (is_be) swap_bins(p);
- }
- if (fmt != HTS_FMT_CSI) { // load linear index
- int j;
- if (idx_read(is_bgzf, fp, &l->n, 4) != 4) return -1;
- if (is_be) ed_swap_4p(&l->n);
- l->m = l->n;
- l->offset = (uint64_t*)malloc(l->n * sizeof(uint64_t));
- if (l->offset == NULL) return -2;
- if (idx_read(is_bgzf, fp, l->offset, l->n << 3) != l->n << 3) return -1;
- if (is_be) for (j = 0; j < l->n; ++j) ed_swap_8p(&l->offset[j]);
- for (j = 1; j < l->n; ++j) // fill missing values; may happen given older samtools and tabix
- if (l->offset[j] == 0) l->offset[j] = l->offset[j-1];
- update_loff(idx, i, 1);
- }
- }
- if (idx_read(is_bgzf, fp, &idx->n_no_coor, 8) != 8) idx->n_no_coor = 0;
- if (is_be) ed_swap_8p(&idx->n_no_coor);
- return 0;
-}
-
-hts_idx_t *hts_idx_load_local(const char *fn, int fmt)
-{
- uint8_t magic[4];
- int i, is_be;
- hts_idx_t *idx = NULL;
- is_be = ed_is_big();
- if (fmt == HTS_FMT_CSI) {
- BGZF *fp;
- uint32_t x[3], n;
- uint8_t *meta = 0;
- if ((fp = bgzf_open(fn, "r")) == 0) return NULL;
- if (bgzf_read(fp, magic, 4) != 4) goto csi_fail;
- if (memcmp(magic, "CSI\1", 4) != 0) goto csi_fail;
- if (bgzf_read(fp, x, 12) != 12) goto csi_fail;
- if (is_be) for (i = 0; i < 3; ++i) ed_swap_4p(&x[i]);
- if (x[2]) {
- if ((meta = (uint8_t*)malloc(x[2])) == NULL) goto csi_fail;
- if (bgzf_read(fp, meta, x[2]) != x[2]) goto csi_fail;
- }
- if (bgzf_read(fp, &n, 4) != 4) goto csi_fail;
- if (is_be) ed_swap_4p(&n);
- if ((idx = hts_idx_init(n, fmt, 0, x[0], x[1])) == NULL) goto csi_fail;
- idx->l_meta = x[2];
- idx->meta = meta;
- meta = NULL;
- if (hts_idx_load_core(idx, fp, HTS_FMT_CSI) < 0) goto csi_fail;
- bgzf_close(fp);
- return idx;
-
- csi_fail:
- bgzf_close(fp);
- hts_idx_destroy(idx);
- free(meta);
- return NULL;
-
- } else if (fmt == HTS_FMT_TBI) {
- BGZF *fp;
- uint32_t x[8];
- if ((fp = bgzf_open(fn, "r")) == 0) return NULL;
- if (bgzf_read(fp, magic, 4) != 4) goto tbi_fail;
- if (memcmp(magic, "TBI\1", 4) != 0) goto tbi_fail;
- if (bgzf_read(fp, x, 32) != 32) goto tbi_fail;
- if (is_be) for (i = 0; i < 8; ++i) ed_swap_4p(&x[i]);
- if ((idx = hts_idx_init(x[0], fmt, 0, 14, 5)) == NULL) goto tbi_fail;
- idx->l_meta = 28 + x[7];
- if ((idx->meta = (uint8_t*)malloc(idx->l_meta)) == NULL) goto tbi_fail;
- memcpy(idx->meta, &x[1], 28);
- if (bgzf_read(fp, idx->meta + 28, x[7]) != x[7]) goto tbi_fail;
- if (hts_idx_load_core(idx, fp, HTS_FMT_TBI) < 0) goto tbi_fail;
- bgzf_close(fp);
- return idx;
-
- tbi_fail:
- bgzf_close(fp);
- hts_idx_destroy(idx);
- return NULL;
-
- } else if (fmt == HTS_FMT_BAI) {
- uint32_t n;
- FILE *fp;
- if ((fp = fopen(fn, "rb")) == 0) return NULL;
- if (fread(magic, 1, 4, fp) != 4) goto bai_fail;
- if (memcmp(magic, "BAI\1", 4) != 0) goto bai_fail;
- if (fread(&n, 4, 1, fp) != 1) goto bai_fail;
- if (is_be) ed_swap_4p(&n);
- idx = hts_idx_init(n, fmt, 0, 14, 5);
- if (hts_idx_load_core(idx, fp, HTS_FMT_BAI) < 0) goto bai_fail;
- fclose(fp);
- return idx;
-
- bai_fail:
- fclose(fp);
- hts_idx_destroy(idx);
- return NULL;
-
- } else abort();
-}
-
-void hts_idx_set_meta(hts_idx_t *idx, int l_meta, uint8_t *meta, int is_copy)
-{
- if (idx->meta) free(idx->meta);
- idx->l_meta = l_meta;
- if (is_copy) {
- idx->meta = (uint8_t*)malloc(l_meta);
- memcpy(idx->meta, meta, l_meta);
- } else idx->meta = meta;
-}
-
-uint8_t *hts_idx_get_meta(hts_idx_t *idx, int *l_meta)
-{
- *l_meta = idx->l_meta;
- return idx->meta;
-}
-
-const char **hts_idx_seqnames(const hts_idx_t *idx, int *n, hts_id2name_f getid, void *hdr)
-{
- if ( !idx->n )
- {
- *n = 0;
- return NULL;
- }
-
- int tid = 0, i;
- const char **names = (const char**) calloc(idx->n,sizeof(const char*));
- for (i=0; i<idx->n; i++)
- {
- bidx_t *bidx = idx->bidx[i];
- if ( !bidx ) continue;
- names[tid++] = getid(hdr,i);
- }
- *n = tid;
- return names;
-}
-
-int hts_idx_get_stat(const hts_idx_t* idx, int tid, uint64_t* mapped, uint64_t* unmapped)
-{
- if ( idx->fmt == HTS_FMT_CRAI ) {
- *mapped = 0; *unmapped = 0;
- return -1;
- }
-
- bidx_t *h = idx->bidx[tid];
- khint_t k = kh_get(bin, h, META_BIN(idx));
- if (k != kh_end(h)) {
- *mapped = kh_val(h, k).list[1].u;
- *unmapped = kh_val(h, k).list[1].v;
- return 0;
- } else {
- *mapped = 0; *unmapped = 0;
- return -1;
- }
-}
-
-uint64_t hts_idx_get_n_no_coor(const hts_idx_t* idx)
-{
- return idx->n_no_coor;
-}
-
-/****************
- *** Iterator ***
- ****************/
-
-static inline int reg2bins(int64_t beg, int64_t end, hts_itr_t *itr, int min_shift, int n_lvls)
-{
- int l, t, s = min_shift + (n_lvls<<1) + n_lvls;
- if (beg >= end) return 0;
- if (end >= 1LL<<s) end = 1LL<<s;
- for (--end, l = 0, t = 0; l <= n_lvls; s -= 3, t += 1<<((l<<1)+l), ++l) {
- int b, e, n, i;
- b = t + (beg>>s); e = t + (end>>s); n = e - b + 1;
- if (itr->bins.n + n > itr->bins.m) {
- itr->bins.m = itr->bins.n + n;
- kroundup32(itr->bins.m);
- itr->bins.a = (int*)realloc(itr->bins.a, sizeof(int) * itr->bins.m);
- }
- for (i = b; i <= e; ++i) itr->bins.a[itr->bins.n++] = i;
- }
- return itr->bins.n;
-}
-
-hts_itr_t *hts_itr_query(const hts_idx_t *idx, int tid, int beg, int end, hts_readrec_func *readrec)
-{
- int i, n_off, l, bin;
- hts_pair64_t *off;
- khint_t k;
- bidx_t *bidx;
- uint64_t min_off;
- hts_itr_t *iter = 0;
- if (tid < 0) {
- int finished0 = 0;
- uint64_t off0 = (uint64_t)-1;
- khint_t k;
- switch (tid) {
- case HTS_IDX_START:
- // Find the smallest offset, note that sequence ids may not be ordered sequentially
- for (i=0; i<idx->n; i++)
- {
- bidx = idx->bidx[i];
- k = kh_get(bin, bidx, META_BIN(idx));
- if (k == kh_end(bidx)) continue;
- if ( off0 > kh_val(bidx, k).list[0].u ) off0 = kh_val(bidx, k).list[0].u;
- }
- if ( off0==(uint64_t)-1 && idx->n_no_coor ) off0 = 0; // only no-coor reads in this bam
- break;
-
- case HTS_IDX_NOCOOR:
- if ( idx->n>0 )
- {
- bidx = idx->bidx[idx->n - 1];
- k = kh_get(bin, bidx, META_BIN(idx));
- if (k != kh_end(bidx)) off0 = kh_val(bidx, k).list[0].v;
- }
- if ( off0==(uint64_t)-1 && idx->n_no_coor ) off0 = 0; // only no-coor reads in this bam
- break;
-
- case HTS_IDX_REST:
- off0 = 0;
- break;
-
- case HTS_IDX_NONE:
- finished0 = 1;
- off0 = 0;
- break;
-
- default:
- return 0;
- }
- if (off0 != (uint64_t)-1) {
- iter = (hts_itr_t*)calloc(1, sizeof(hts_itr_t));
- iter->read_rest = 1;
- iter->finished = finished0;
- iter->curr_off = off0;
- iter->readrec = readrec;
- return iter;
- } else return 0;
- }
-
- if (beg < 0) beg = 0;
- if (end < beg) return 0;
- if (tid >= idx->n || (bidx = idx->bidx[tid]) == NULL) return 0;
-
- iter = (hts_itr_t*)calloc(1, sizeof(hts_itr_t));
- iter->tid = tid, iter->beg = beg, iter->end = end; iter->i = -1;
- iter->readrec = readrec;
-
- // compute min_off
- bin = hts_bin_first(idx->n_lvls) + (beg>>idx->min_shift);
- do {
- int first;
- k = kh_get(bin, bidx, bin);
- if (k != kh_end(bidx)) break;
- first = (hts_bin_parent(bin)<<3) + 1;
- if (bin > first) --bin;
- else bin = hts_bin_parent(bin);
- } while (bin);
- if (bin == 0) k = kh_get(bin, bidx, bin);
- min_off = k != kh_end(bidx)? kh_val(bidx, k).loff : 0;
- // retrieve bins
- reg2bins(beg, end, iter, idx->min_shift, idx->n_lvls);
- for (i = n_off = 0; i < iter->bins.n; ++i)
- if ((k = kh_get(bin, bidx, iter->bins.a[i])) != kh_end(bidx))
- n_off += kh_value(bidx, k).n;
- if (n_off == 0) return iter;
- off = (hts_pair64_t*)calloc(n_off, sizeof(hts_pair64_t));
- for (i = n_off = 0; i < iter->bins.n; ++i) {
- if ((k = kh_get(bin, bidx, iter->bins.a[i])) != kh_end(bidx)) {
- int j;
- bins_t *p = &kh_value(bidx, k);
- for (j = 0; j < p->n; ++j)
- if (p->list[j].v > min_off) off[n_off++] = p->list[j];
- }
- }
- if (n_off == 0) {
- free(off); return iter;
- }
- ks_introsort(_off, n_off, off);
- // resolve completely contained adjacent blocks
- for (i = 1, l = 0; i < n_off; ++i)
- if (off[l].v < off[i].v) off[++l] = off[i];
- n_off = l + 1;
- // resolve overlaps between adjacent blocks; this may happen due to the merge in indexing
- for (i = 1; i < n_off; ++i)
- if (off[i-1].v >= off[i].u) off[i-1].v = off[i].u;
- // merge adjacent blocks
- for (i = 1, l = 0; i < n_off; ++i) {
- if (off[l].v>>16 == off[i].u>>16) off[l].v = off[i].v;
- else off[++l] = off[i];
- }
- n_off = l + 1;
- iter->n_off = n_off; iter->off = off;
- return iter;
-}
-
-void hts_itr_destroy(hts_itr_t *iter)
-{
- if (iter) { free(iter->off); free(iter->bins.a); free(iter); }
-}
-
-const char *hts_parse_reg(const char *s, int *beg, int *end)
-{
- int i, k, l, name_end;
- *beg = *end = -1;
- name_end = l = strlen(s);
- // determine the sequence name
- for (i = l - 1; i >= 0; --i) if (s[i] == ':') break; // look for colon from the end
- if (i >= 0) name_end = i;
- if (name_end < l) { // check if this is really the end
- int n_hyphen = 0;
- for (i = name_end + 1; i < l; ++i) {
- if (s[i] == '-') ++n_hyphen;
- else if (!isdigit(s[i]) && s[i] != ',') break;
- }
- if (i < l || n_hyphen > 1) name_end = l; // malformated region string; then take str as the name
- }
- // parse the interval
- if (name_end < l) {
- char *tmp;
- tmp = (char*)alloca(l - name_end + 1);
- for (i = name_end + 1, k = 0; i < l; ++i)
- if (s[i] != ',') tmp[k++] = s[i];
- tmp[k] = 0;
- if ((*beg = strtol(tmp, &tmp, 10) - 1) < 0) *beg = 0;
- *end = *tmp? strtol(tmp + 1, &tmp, 10) : INT_MAX;
- if (*beg > *end) name_end = l;
- }
- if (name_end == l) *beg = 0, *end = INT_MAX;
- return s + name_end;
-}
-
-hts_itr_t *hts_itr_querys(const hts_idx_t *idx, const char *reg, hts_name2id_f getid, void *hdr, hts_itr_query_func *itr_query, hts_readrec_func *readrec)
-{
- int tid, beg, end;
- char *q, *tmp;
- if (strcmp(reg, ".") == 0)
- return itr_query(idx, HTS_IDX_START, 0, 0, readrec);
- else if (strcmp(reg, "*") != 0) {
- q = (char*)hts_parse_reg(reg, &beg, &end);
- tmp = (char*)alloca(q - reg + 1);
- strncpy(tmp, reg, q - reg);
- tmp[q - reg] = 0;
- if ((tid = getid(hdr, tmp)) < 0)
- tid = getid(hdr, reg);
- if (tid < 0) return 0;
- return itr_query(idx, tid, beg, end, readrec);
- } else return itr_query(idx, HTS_IDX_NOCOOR, 0, 0, readrec);
-}
-
-int hts_itr_next(BGZF *fp, hts_itr_t *iter, void *r, void *data)
-{
- int ret, tid, beg, end;
- if (iter == NULL || iter->finished) return -1;
- if (iter->read_rest) {
- if (iter->curr_off) { // seek to the start
- bgzf_seek(fp, iter->curr_off, SEEK_SET);
- iter->curr_off = 0; // only seek once
- }
- ret = iter->readrec(fp, data, r, &tid, &beg, &end);
- if (ret < 0) iter->finished = 1;
- iter->curr_tid = tid;
- iter->curr_beg = beg;
- iter->curr_end = end;
- return ret;
- }
- if (iter->off == 0) return -1;
- for (;;) {
- if (iter->curr_off == 0 || iter->curr_off >= iter->off[iter->i].v) { // then jump to the next chunk
- if (iter->i == iter->n_off - 1) { ret = -1; break; } // no more chunks
- if (iter->i < 0 || iter->off[iter->i].v != iter->off[iter->i+1].u) { // not adjacent chunks; then seek
- bgzf_seek(fp, iter->off[iter->i+1].u, SEEK_SET);
- iter->curr_off = bgzf_tell(fp);
- }
- ++iter->i;
- }
- if ((ret = iter->readrec(fp, data, r, &tid, &beg, &end)) >= 0) {
- iter->curr_off = bgzf_tell(fp);
- if (tid != iter->tid || beg >= iter->end) { // no need to proceed
- ret = -1; break;
- } else if (end > iter->beg && iter->end > beg) {
- iter->curr_tid = tid;
- iter->curr_beg = beg;
- iter->curr_end = end;
- return ret;
- }
- } else break; // end of file or error
- }
- iter->finished = 1;
- return ret;
-}
-
-/**********************
- *** Retrieve index ***
- **********************/
-
-static char *test_and_fetch(const char *fn)
-{
- FILE *fp;
- if (hisremote(fn)) {
- const int buf_size = 1 * 1024 * 1024;
- hFILE *fp_remote;
- uint8_t *buf;
- int l;
- const char *p;
- for (p = fn + strlen(fn) - 1; p >= fn; --p)
- if (*p == '/') break;
- ++p; // p now points to the local file name
- // Attempt to open local file first
- if ((fp = fopen((char*)p, "rb")) != 0)
- {
- fclose(fp);
- return (char*)p;
- }
- // Attempt to open remote file. Stay quiet on failure, it is OK to fail when trying first .csi then .tbi index.
- if ((fp_remote = hopen(fn, "r")) == 0) return 0;
- if ((fp = fopen(p, "w")) == 0) {
- if (hts_verbose >= 1) fprintf(stderr, "[E::%s] fail to create file '%s' in the working directory\n", __func__, p);
- hclose_abruptly(fp_remote);
- return 0;
- }
- if (hts_verbose >= 3) fprintf(stderr, "[M::%s] downloading file '%s' to local directory\n", __func__, fn);
- buf = (uint8_t*)calloc(buf_size, 1);
- while ((l = hread(fp_remote, buf, buf_size)) > 0) fwrite(buf, 1, l, fp);
- free(buf);
- fclose(fp);
- if (hclose(fp_remote) != 0) fprintf(stderr, "[E::%s] fail to close remote file '%s'\n", __func__, fn);
- return (char*)p;
- } else {
- if ((fp = fopen(fn, "rb")) == 0) return 0;
- fclose(fp);
- return (char*)fn;
- }
-}
-
-char *hts_idx_getfn(const char *fn, const char *ext)
-{
- int i, l_fn, l_ext;
- char *fnidx, *ret;
- l_fn = strlen(fn); l_ext = strlen(ext);
- fnidx = (char*)calloc(l_fn + l_ext + 1, 1);
- strcpy(fnidx, fn); strcpy(fnidx + l_fn, ext);
- if ((ret = test_and_fetch(fnidx)) == 0) {
- for (i = l_fn - 1; i > 0; --i)
- if (fnidx[i] == '.') break;
- strcpy(fnidx + i, ext);
- ret = test_and_fetch(fnidx);
- }
- if (ret == 0) {
- free(fnidx);
- return 0;
- }
- l_fn = strlen(ret);
- memmove(fnidx, ret, l_fn + 1);
- return fnidx;
-}
-
-hts_idx_t *hts_idx_load(const char *fn, int fmt)
-{
- char *fnidx;
- hts_idx_t *idx;
- fnidx = hts_idx_getfn(fn, ".csi");
- if (fnidx) fmt = HTS_FMT_CSI;
- else fnidx = hts_idx_getfn(fn, fmt == HTS_FMT_BAI? ".bai" : ".tbi");
- if (fnidx == 0) return 0;
-
- // Check that the index file is up to date, the main file might have changed
- struct stat stat_idx,stat_main;
- if ( !stat(fn, &stat_main) && !stat(fnidx, &stat_idx) )
- {
- if ( stat_idx.st_mtime < stat_main.st_mtime )
- fprintf(stderr, "Warning: The index file is older than the data file: %s\n", fnidx);
- }
- idx = hts_idx_load_local(fnidx, fmt);
- free(fnidx);
- return idx;
-}
diff --git a/htslib/htsfile.1 b/htslib/htsfile.1
deleted file mode 100644
index b55cafa..0000000
--- a/htslib/htsfile.1
+++ /dev/null
@@ -1,71 +0,0 @@
-.TH htsfile 1 "3 February 2015" "htslib-1.2.1" "Bioinformatics tools"
-.SH NAME
-htsfile \- identify high-throughput sequencing data files
-.\"
-.\" Copyright (C) 2015 Genome Research Ltd.
-.\"
-.\" Author: John Marshall <jm18 at sanger.ac.uk>
-.\"
-.\" 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.
-.\"
-.SH SYNOPSIS
-.B htsfile
-.RB [ -chH ]
-.IR FILE ...
-.SH DESCRIPTION
-The \fBhtsfile\fR utility attempts to identify what kind of high-throughput
-sequencing data files the specified files are, and provides minimal viewing
-capabilities for some kinds of data file.
-.P
-It can identify sequencing data files such as SAM, BAM, and CRAM;
-variant calling data files such as VCF and BCF;
-index files used to index these data files;
-and compressed versions of many of them.
-.P
-For each \fIFILE\fR given, \fBhtsfile\fP prints a description of the file
-format determined, using similar keyword conventions to \fBfile\fP(1):
-"text" indicates a textual file that can probably be viewed on a terminal;
-"data" indicates binary data;
-"sequence", "variant calling", and "index" indicate different categories of
-data file.
-When it can be identified, the name of the particular file format (such as
-"BAM" or "VCF") is printed at the start of the description.
-.P
-When used to view file contents as text, \fBhtsfile\fP can optionally show
-only headers or only data records, but has no other filtering capabilities.
-Use \fBsamtools\fR or \fBbcftools\fR if you need more extensive viewing or
-filtering capabilities.
-.P
-The following options are accepted:
-.TP 4n
-.BR -c ", " --view
-Instead of identifying the specified files, display a textual representation
-of their contents on standard output.
-.TP
-.BR -h ", " --header-only
-Display data file headers only.
-Implies \fB--view\fR.
-.TP
-.BR -H ", " --no-header
-When viewing files, display data records only.
-.PP
-.SH SEE ALSO
-.IR bcftools (1),
-.IR file (1),
-.IR samtools (1)
diff --git a/htslib/htsfile.c b/htslib/htsfile.c
deleted file mode 100644
index fac943b..0000000
--- a/htslib/htsfile.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* htsfile.c -- file identifier and minimal viewer.
-
- Copyright (C) 2014-2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <unistd.h>
-
-#include "htslib/hfile.h"
-#include "htslib/hts.h"
-#include "htslib/sam.h"
-#include "htslib/vcf.h"
-
-enum { identify, view_headers, view_all } mode = identify;
-int show_headers = 1;
-
-static htsFile *dup_stdout(const char *mode)
-{
- int fd = dup(STDOUT_FILENO);
- hFILE *hfp = (fd >= 0)? hdopen(fd, mode) : NULL;
- return hfp? hts_hopen(hfp, "-", mode) : NULL;
-}
-
-static int view_sam(hFILE *hfp, const char *filename)
-{
- samFile *in = hts_hopen(hfp, filename, "r");
- if (in == NULL) return 0;
- samFile *out = dup_stdout("w");
- bam_hdr_t *hdr = sam_hdr_read(in);
-
- if (show_headers) sam_hdr_write(out, hdr);
- if (mode == view_all) {
- bam1_t *b = bam_init1();
- while (sam_read1(in, hdr, b) >= 0)
- sam_write1(out, hdr, b);
- bam_destroy1(b);
- }
-
- bam_hdr_destroy(hdr);
- hts_close(out);
- hts_close(in);
- return 1;
-}
-
-static int view_vcf(hFILE *hfp, const char *filename)
-{
- vcfFile *in = hts_hopen(hfp, filename, "r");
- if (in == NULL) return 0;
- vcfFile *out = dup_stdout("w");
- bcf_hdr_t *hdr = bcf_hdr_read(in);
-
- if (show_headers) bcf_hdr_write(out, hdr);
- if (mode == view_all) {
- bcf1_t *rec = bcf_init();
- while (bcf_read(in, hdr, rec) >= 0)
- bcf_write(out, hdr, rec);
- bcf_destroy(rec);
- }
-
- bcf_hdr_destroy(hdr);
- hts_close(out);
- hts_close(in);
- return 1;
-}
-
-static void usage(FILE *fp, int status)
-{
- fprintf(fp,
-"Usage: htsfile [-chH] FILE...\n"
-"Options:\n"
-" -c, --view Write textual form of FILEs to standard output\n"
-" -h, --header-only Display only headers in view mode, not records\n"
-" -H, --no-header Suppress header display in view mode\n");
- exit(status);
-}
-
-int main(int argc, char **argv)
-{
- static const struct option options[] = {
- { "header-only", no_argument, NULL, 'h' },
- { "no-header", no_argument, NULL, 'H' },
- { "view", no_argument, NULL, 'c' },
- { "help", no_argument, NULL, '?' },
- { "version", no_argument, NULL, 1 },
- { NULL, 0, NULL, 0 }
- };
-
- int status = EXIT_SUCCESS;
- int c, i;
- while ((c = getopt_long(argc, argv, "chH?", options, NULL)) >= 0)
- switch (c) {
- case 'c': mode = view_all; break;
- case 'h': mode = view_headers; show_headers = 1; break;
- case 'H': show_headers = 0; break;
- case 1:
- printf(
-"htsfile (htslib) %s\n"
-"Copyright (C) 2015 Genome Research Ltd.\n",
- hts_version());
- exit(EXIT_SUCCESS);
- break;
- case '?': usage(stdout, EXIT_SUCCESS); break;
- default: usage(stderr, EXIT_FAILURE); break;
- }
-
- if (optind == argc) usage(stderr, EXIT_FAILURE);
-
- for (i = optind; i < argc; i++) {
- htsFormat fmt;
- hFILE *fp = hopen(argv[i], "r");
- if (fp == NULL) {
- fprintf(stderr, "htsfile: can't open \"%s\": %s\n", argv[i], strerror(errno));
- status = EXIT_FAILURE;
- continue;
- }
-
- if (hts_detect_format(fp, &fmt) < 0) {
- fprintf(stderr, "htsfile: detecting \"%s\" format failed: %s\n", argv[i], strerror(errno));
- hclose_abruptly(fp);
- status = EXIT_FAILURE;
- continue;
- }
-
- if (mode == identify) {
- char *description = hts_format_description(&fmt);
- printf("%s:\t%s\n", argv[i], description);
- free(description);
- }
- else
- switch (fmt.category) {
- case sequence_data: if (view_sam(fp, argv[i])) fp = NULL; break;
- case variant_data: if (view_vcf(fp, argv[i])) fp = NULL; break;
- default:
- fprintf(stderr, "htsfile: can't view %s: unknown format\n", argv[i]);
- status = EXIT_FAILURE;
- break;
- }
-
- if (fp && hclose(fp) < 0) {
- fprintf(stderr, "htsfile: closing %s failed\n", argv[i]);
- status = EXIT_FAILURE;
- }
- }
-
- return status;
-}
diff --git a/htslib/htslib.mk b/htslib/htslib.mk
deleted file mode 100644
index 14baea2..0000000
--- a/htslib/htslib.mk
+++ /dev/null
@@ -1,150 +0,0 @@
-# Makefile rules useful for third-party code using htslib's public API.
-#
-# Copyright (C) 2013-2015 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-# The makefile fragment included below provides variables that can be used
-# to express dependencies on headers supplied by an in-development htslib.
-# If your source file foo.c #includes <htslib/hts.h> and <htslib/kstring.h>,
-# you can write the correct prerequisites for foo.o as:
-#
-# HTSDIR = <path to htslib top-level directory>
-# include $(HTSDIR)/htslib.mk
-#
-# foo.o: foo.c $(htslib_hts_h) $(HTSDIR)/htslib/kstring.h
-#
-# Variables are not provided for k*.h, as those never include other headers.
-
-HTSPREFIX = $(HTSDIR)/
-include $(HTSDIR)/htslib_vars.mk
-
-# Rules for rebuilding an in-development htslib's static and shared libraries.
-# If your program foo links with libhts, adding the appropriate prerequisite
-# will cause the library to be rebuilt as necessary:
-#
-# foo: foo.o $(HTSDIR)/libhts.a
-#
-# or similarly if your target requires any of the tools supplied:
-#
-# bar.bed.bgz.tbi: bar.bed.bgz $(HTSDIR)/tabix
-# $(HTSDIR)/tabix -p bed bar.bed.bgz
-
-HTSLIB_PUBLIC_HEADERS = \
- $(HTSDIR)/htslib/bgzf.h \
- $(HTSDIR)/htslib/faidx.h \
- $(HTSDIR)/htslib/hfile.h \
- $(HTSDIR)/htslib/hts.h \
- $(HTSDIR)/htslib/hts_defs.h \
- $(HTSDIR)/htslib/khash.h \
- $(HTSDIR)/htslib/klist.h \
- $(HTSDIR)/htslib/knetfile.h \
- $(HTSDIR)/htslib/kseq.h \
- $(HTSDIR)/htslib/ksort.h \
- $(HTSDIR)/htslib/kstring.h \
- $(HTSDIR)/htslib/regidx.h \
- $(HTSDIR)/htslib/sam.h \
- $(HTSDIR)/htslib/synced_bcf_reader.h \
- $(HTSDIR)/htslib/tbx.h \
- $(HTSDIR)/htslib/vcf.h \
- $(HTSDIR)/htslib/vcf_sweep.h \
- $(HTSDIR)/htslib/vcfutils.h
-
-HTSLIB_ALL = \
- $(HTSLIB_PUBLIC_HEADERS) \
- $(HTSDIR)/bgzf.c \
- $(HTSDIR)/faidx.c \
- $(HTSDIR)/hfile_internal.h \
- $(HTSDIR)/hfile.c \
- $(HTSDIR)/hfile_irods.c \
- $(HTSDIR)/hfile_net.c \
- $(HTSDIR)/hts.c \
- $(HTSDIR)/knetfile.c \
- $(HTSDIR)/kstring.c \
- $(HTSDIR)/regidx.c \
- $(HTSDIR)/sam.c \
- $(HTSDIR)/synced_bcf_reader.c \
- $(HTSDIR)/tbx.c \
- $(HTSDIR)/vcf.c \
- $(HTSDIR)/vcf_sweep.c \
- $(HTSDIR)/vcfutils.c \
- $(HTSDIR)/cram/cram.h \
- $(HTSDIR)/cram/cram_codecs.c \
- $(HTSDIR)/cram/cram_codecs.h \
- $(HTSDIR)/cram/cram_decode.c \
- $(HTSDIR)/cram/cram_decode.h \
- $(HTSDIR)/cram/cram_encode.c \
- $(HTSDIR)/cram/cram_encode.h \
- $(HTSDIR)/cram/cram_index.c \
- $(HTSDIR)/cram/cram_index.h \
- $(HTSDIR)/cram/cram_io.c \
- $(HTSDIR)/cram/cram_io.h \
- $(HTSDIR)/cram/cram_samtools.c \
- $(HTSDIR)/cram/cram_samtools.h \
- $(HTSDIR)/cram/cram_stats.c \
- $(HTSDIR)/cram/cram_stats.h \
- $(HTSDIR)/cram/cram_structs.h \
- $(HTSDIR)/cram/files.c \
- $(HTSDIR)/cram/mFILE.c \
- $(HTSDIR)/cram/mFILE.h \
- $(HTSDIR)/cram/md5.c \
- $(HTSDIR)/cram/md5.h \
- $(HTSDIR)/cram/misc.h \
- $(HTSDIR)/cram/open_trace_file.c \
- $(HTSDIR)/cram/open_trace_file.h \
- $(HTSDIR)/cram/os.h \
- $(HTSDIR)/cram/pooled_alloc.c \
- $(HTSDIR)/cram/pooled_alloc.h \
- $(HTSDIR)/cram/sam_header.c \
- $(HTSDIR)/cram/sam_header.h \
- $(HTSDIR)/cram/string_alloc.c \
- $(HTSDIR)/cram/string_alloc.h \
- $(HTSDIR)/cram/thread_pool.c \
- $(HTSDIR)/cram/thread_pool.h \
- $(HTSDIR)/cram/vlen.c \
- $(HTSDIR)/cram/vlen.h \
- $(HTSDIR)/cram/zfio.c \
- $(HTSDIR)/cram/zfio.h
-
-$(HTSDIR)/libhts.a: $(HTSLIB_ALL)
- +cd $(HTSDIR) && $(MAKE) lib-static
-
-$(HTSDIR)/libhts.so $(HTSDIR)/libhts.dylib: $(HTSLIB_ALL)
- +cd $(HTSDIR) && $(MAKE) lib-shared
-
-$(HTSDIR)/bgzip: $(HTSDIR)/bgzip.c $(HTSLIB_PUBLIC_HEADERS)
- +cd $(HTSDIR) && $(MAKE) bgzip
-
-$(HTSDIR)/htsfile: $(HTSDIR)/htsfile.c $(HTSLIB_PUBLIC_HEADERS)
- +cd $(HTSDIR) && $(MAKE) htsfile
-
-$(HTSDIR)/tabix: $(HTSDIR)/tabix.c $(HTSLIB_PUBLIC_HEADERS)
- +cd $(HTSDIR) && $(MAKE) tabix
-
-# Rules for phony targets. You may wish to have your corresponding phony
-# targets invoke these in addition to their own recipes:
-#
-# clean: clean-htslib
-
-clean-htslib install-htslib:
- +cd $(HTSDIR) && $(MAKE) $(@:-htslib=)
-
-.PHONY: clean-htslib install-htslib
diff --git a/htslib/htslib.pc.in b/htslib/htslib.pc.in
deleted file mode 100644
index 465de17..0000000
--- a/htslib/htslib.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-includedir=@includedir@
-libdir=@libdir@
-
-Name: htslib
-Description: C library for high-throughput sequencing data formats
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lhts
-Libs.private: -L${libdir} -lhts -lm -lpthread
-Requires.private: zlib
diff --git a/htslib/htslib/bgzf.h b/htslib/htslib/bgzf.h
deleted file mode 100644
index cb8d4b9..0000000
--- a/htslib/htslib/bgzf.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008 Broad Institute / Massachusetts Institute of Technology
- 2011, 2012 Attractive Chaos <attractor at live.co.uk>
- Copyright (C) 2009, 2013, 2014 Genome Research Ltd
-
- 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.
-*/
-
-/* The BGZF library was originally written by Bob Handsaker from the Broad
- * Institute. It was later improved by the SAMtools developers. */
-
-#ifndef HTSLIB_BGZF_H
-#define HTSLIB_BGZF_H
-
-#include <stdint.h>
-#include <stdio.h>
-#include <zlib.h>
-#include <sys/types.h>
-
-#define BGZF_BLOCK_SIZE 0xff00 // make sure compressBound(BGZF_BLOCK_SIZE) < BGZF_MAX_BLOCK_SIZE
-#define BGZF_MAX_BLOCK_SIZE 0x10000
-
-#define BGZF_ERR_ZLIB 1
-#define BGZF_ERR_HEADER 2
-#define BGZF_ERR_IO 4
-#define BGZF_ERR_MISUSE 8
-
-struct hFILE;
-struct bgzf_mtaux_t;
-typedef struct __bgzidx_t bgzidx_t;
-
-struct BGZF {
- int errcode:16, is_write:2, is_be:2, compress_level:9, is_compressed:2, is_gzip:1;
- int cache_size;
- int block_length, block_offset;
- int64_t block_address, uncompressed_address;
- void *uncompressed_block, *compressed_block;
- void *cache; // a pointer to a hash table
- struct hFILE *fp; // actual file handle
- struct bgzf_mtaux_t *mt; // only used for multi-threading
- bgzidx_t *idx; // BGZF index
- int idx_build_otf; // build index on the fly, set by bgzf_index_build_init()
- z_stream *gz_stream;// for gzip-compressed files
-};
-#ifndef HTS_BGZF_TYPEDEF
-typedef struct BGZF BGZF;
-#define HTS_BGZF_TYPEDEF
-#endif
-
-#ifndef KSTRING_T
-#define KSTRING_T kstring_t
-typedef struct __kstring_t {
- size_t l, m;
- char *s;
-} kstring_t;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /******************
- * Basic routines *
- ******************/
-
- /**
- * Open an existing file descriptor for reading or writing.
- *
- * @param fd file descriptor
- * @param mode mode matching /[rwag][u0-9]+/: 'r' for reading, 'w' for
- * writing, 'a' for appending, 'g' for gzip rather than BGZF
- * compression (with 'w' only), and digit specifies the zlib
- * compression level.
- * Note that there is a distinction between 'u' and '0': the
- * first yields plain uncompressed output whereas the latter
- * outputs uncompressed data wrapped in the zlib format.
- * @return BGZF file handler; 0 on error
- */
- BGZF* bgzf_dopen(int fd, const char *mode);
-
- #define bgzf_fdopen(fd, mode) bgzf_dopen((fd), (mode)) // for backward compatibility
-
- /**
- * Open the specified file for reading or writing.
- */
- BGZF* bgzf_open(const char* path, const char *mode);
-
- /**
- * Open an existing hFILE stream for reading or writing.
- */
- BGZF* bgzf_hopen(struct hFILE *fp, const char *mode);
-
- /**
- * Close the BGZF and free all associated resources.
- *
- * @param fp BGZF file handler
- * @return 0 on success and -1 on error
- */
- int bgzf_close(BGZF *fp);
-
- /**
- * Read up to _length_ bytes from the file storing into _data_.
- *
- * @param fp BGZF file handler
- * @param data data array to read into
- * @param length size of data to read
- * @return number of bytes actually read; 0 on end-of-file and -1 on error
- */
- ssize_t bgzf_read(BGZF *fp, void *data, size_t length);
-
- /**
- * Write _length_ bytes from _data_ to the file. If no I/O errors occur,
- * the complete _length_ bytes will be written (or queued for writing).
- *
- * @param fp BGZF file handler
- * @param data data array to write
- * @param length size of data to write
- * @return number of bytes written (i.e., _length_); negative on error
- */
- ssize_t bgzf_write(BGZF *fp, const void *data, size_t length);
-
- /**
- * Read up to _length_ bytes directly from the underlying stream without
- * decompressing. Bypasses BGZF blocking, so must be used with care in
- * specialised circumstances only.
- *
- * @param fp BGZF file handler
- * @param data data array to read into
- * @param length number of raw bytes to read
- * @return number of bytes actually read; 0 on end-of-file and -1 on error
- */
- ssize_t bgzf_raw_read(BGZF *fp, void *data, size_t length);
-
- /**
- * Write _length_ bytes directly to the underlying stream without
- * compressing. Bypasses BGZF blocking, so must be used with care
- * in specialised circumstances only.
- *
- * @param fp BGZF file handler
- * @param data data array to write
- * @param length number of raw bytes to write
- * @return number of bytes actually written; -1 on error
- */
- ssize_t bgzf_raw_write(BGZF *fp, const void *data, size_t length);
-
- /**
- * Write the data in the buffer to the file.
- */
- int bgzf_flush(BGZF *fp);
-
- /**
- * Return a virtual file pointer to the current location in the file.
- * No interpetation of the value should be made, other than a subsequent
- * call to bgzf_seek can be used to position the file at the same point.
- * Return value is non-negative on success.
- */
- #define bgzf_tell(fp) (((fp)->block_address << 16) | ((fp)->block_offset & 0xFFFF))
-
- /**
- * Set the file to read from the location specified by _pos_.
- *
- * @param fp BGZF file handler
- * @param pos virtual file offset returned by bgzf_tell()
- * @param whence must be SEEK_SET
- * @return 0 on success and -1 on error
- */
- int64_t bgzf_seek(BGZF *fp, int64_t pos, int whence);
-
- /**
- * Check if the BGZF end-of-file (EOF) marker is present
- *
- * @param fp BGZF file handler opened for reading
- * @return 1 if the EOF marker is present and correct;
- * 2 if it can't be checked, e.g., because fp isn't seekable;
- * 0 if the EOF marker is absent;
- * -1 (with errno set) on error
- */
- int bgzf_check_EOF(BGZF *fp);
-
- /**
- * Check if a file is in the BGZF format
- *
- * @param fn file name
- * @return 1 if _fn_ is BGZF; 0 if not or on I/O error
- */
- int bgzf_is_bgzf(const char *fn);
-
- /*********************
- * Advanced routines *
- *********************/
-
- /**
- * Set the cache size. Only effective when compiled with -DBGZF_CACHE.
- *
- * @param fp BGZF file handler
- * @param size size of cache in bytes; 0 to disable caching (default)
- */
- void bgzf_set_cache_size(BGZF *fp, int size);
-
- /**
- * Flush the file if the remaining buffer size is smaller than _size_
- * @return 0 if flushing succeeded or was not needed; negative on error
- */
- int bgzf_flush_try(BGZF *fp, ssize_t size);
-
- /**
- * Read one byte from a BGZF file. It is faster than bgzf_read()
- * @param fp BGZF file handler
- * @return byte read; -1 on end-of-file or error
- */
- int bgzf_getc(BGZF *fp);
-
- /**
- * Read one line from a BGZF file. It is faster than bgzf_getc()
- *
- * @param fp BGZF file handler
- * @param delim delimitor
- * @param str string to write to; must be initialized
- * @return length of the string; 0 on end-of-file; negative on error
- */
- int bgzf_getline(BGZF *fp, int delim, kstring_t *str);
-
- /**
- * Read the next BGZF block.
- */
- int bgzf_read_block(BGZF *fp);
-
- /**
- * Enable multi-threading (only effective on writing and when the
- * library was compiled with -DBGZF_MT)
- *
- * @param fp BGZF file handler; must be opened for writing
- * @param n_threads #threads used for writing
- * @param n_sub_blks #blocks processed by each thread; a value 64-256 is recommended
- */
- int bgzf_mt(BGZF *fp, int n_threads, int n_sub_blks);
-
-
- /*******************
- * bgzidx routines *
- *******************/
-
- /**
- * Position BGZF at the uncompressed offset
- *
- * @param fp BGZF file handler; must be opened for reading
- * @param uoffset file offset in the uncompressed data
- * @param where SEEK_SET supported atm
- *
- * Returns 0 on success and -1 on error.
- */
- int bgzf_useek(BGZF *fp, long uoffset, int where);
-
- /**
- * Position in uncompressed BGZF
- *
- * @param fp BGZF file handler; must be opened for reading
- *
- * Returns the current offset on success and -1 on error.
- */
- long bgzf_utell(BGZF *fp);
-
- /**
- * Tell BGZF to build index while compressing.
- *
- * @param fp BGZF file handler; can be opened for reading or writing.
- *
- * Returns 0 on success and -1 on error.
- */
- int bgzf_index_build_init(BGZF *fp);
-
- /**
- * Load BGZF index
- *
- * @param fp BGZF file handler
- * @param bname base name
- * @param suffix suffix to add to bname (can be NULL)
- *
- * Returns 0 on success and -1 on error.
- */
- int bgzf_index_load(BGZF *fp, const char *bname, const char *suffix);
-
- /**
- * Save BGZF index
- *
- * @param fp BGZF file handler
- * @param bname base name
- * @param suffix suffix to add to bname (can be NULL)
- *
- * Returns 0 on success and -1 on error.
- */
- int bgzf_index_dump(BGZF *fp, const char *bname, const char *suffix);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/faidx.h b/htslib/htslib/faidx.h
deleted file mode 100644
index a32d3a9..0000000
--- a/htslib/htslib/faidx.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* faidx.h -- FASTA random access.
-
- Copyright (C) 2008, 2009, 2013, 2014 Genome Research Ltd.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
- 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.
-*/
-
-#ifndef HTSLIB_FAIDX_H
-#define HTSLIB_FAIDX_H
-
-/*!
- @header
-
- Index FASTA files and extract subsequence.
-
- The fai file index columns are:
- - chromosome name
- - chromosome length: number of bases
- - offset: number of bytes to skip to get to the first base
- from the beginning of the file, including the length
- of the sequence description string (">chr ..\n")
- - line length: number of bases per line (excluding \n)
- - binary line length: number of bytes, including \n
-
- @copyright The Wellcome Trust Sanger Institute.
- */
-
-struct __faidx_t;
-typedef struct __faidx_t faidx_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*!
- @abstract Build index for a FASTA or bgzip-compressed FASTA file.
- @param fn FASTA file name
- @return 0 on success; or -1 on failure
- @discussion File "fn.fai" will be generated.
- */
- int fai_build(const char *fn);
-
- /*!
- @abstract Destroy a faidx_t struct.
- @param fai Pointer to the struct to be destroyed
- */
- void fai_destroy(faidx_t *fai);
-
- /*!
- @abstract Load index from "fn.fai".
- @param fn File name of the FASTA file
- */
- faidx_t *fai_load(const char *fn);
-
- /*!
- @abstract Fetch the sequence in a region.
- @param fai Pointer to the faidx_t struct
- @param reg Region in the format "chr2:20,000-30,000"
- @param len Length of the region; -2 if seq not present, -1 general error
- @return Pointer to the sequence; null on failure
-
- @discussion The returned sequence is allocated by malloc family
- and should be destroyed by end users by calling free() on it.
- */
- char *fai_fetch(const faidx_t *fai, const char *reg, int *len);
-
- /*!
- @abstract Fetch the number of sequences.
- @param fai Pointer to the faidx_t struct
- @return The number of sequences
- */
- int faidx_fetch_nseq(const faidx_t *fai);
-
- /*!
- @abstract Fetch the sequence in a region.
- @param fai Pointer to the faidx_t struct
- @param c_name Region name
- @param p_beg_i Beginning position number (zero-based)
- @param p_end_i End position number (zero-based)
- @param len Length of the region; -2 if c_name not present, -1 general error
- @return Pointer to the sequence; null on failure
-
- @discussion The returned sequence is allocated by malloc family
- and should be destroyed by end users by calling free() on it.
- */
- char *faidx_fetch_seq(const faidx_t *fai, const char *c_name, int p_beg_i, int p_end_i, int *len);
-
- /*!
- @abstract Query if sequence is present
- @param fai Pointer to the faidx_t struct
- @param seq Sequence name
- @return 1 if present or 0 if absent
- */
- int faidx_has_seq(const faidx_t *fai, const char *seq);
-
- /*!
- @abstract Return number of sequences in fai index
- */
- int faidx_nseq(const faidx_t *fai);
-
- /*!
- @abstract Return name of i-th sequence
- */
- const char *faidx_iseq(const faidx_t *fai, int i);
-
- /*!
- @abstract Return sequence length, -1 if not present
- */
- int faidx_seq_len(const faidx_t *fai, const char *seq);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/hfile.h b/htslib/htslib/hfile.h
deleted file mode 100644
index ea49c45..0000000
--- a/htslib/htslib/hfile.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/* hfile.h -- buffered low-level input/output streams.
-
- Copyright (C) 2013-2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_HFILE_H
-#define HTSLIB_HFILE_H
-
-#include <string.h>
-
-#include <sys/types.h>
-
-#include "hts_defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* These fields are declared here solely for the benefit of the inline functions
- below. They may change in future releases. User code should not use them
- directly; you should imagine that hFILE is an opaque incomplete type. */
-struct hFILE_backend;
-typedef struct hFILE {
- char *buffer, *begin, *end, *limit;
- const struct hFILE_backend *backend;
- off_t offset;
- int at_eof:1;
- int has_errno;
-} hFILE;
-
-/*!
- @abstract Open the named file or URL as a stream
- @return An hFILE pointer, or NULL (with errno set) if an error occurred.
-*/
-hFILE *hopen(const char *filename, const char *mode) HTS_RESULT_USED;
-
-/*!
- @abstract Associate a stream with an existing open file descriptor
- @return An hFILE pointer, or NULL (with errno set) if an error occurred.
- @notes For socket descriptors (on Windows), mode should contain 's'.
-*/
-hFILE *hdopen(int fd, const char *mode) HTS_RESULT_USED;
-
-/*!
- @abstract Report whether the file name or URL denotes remote storage
- @return 0 if local, 1 if remote.
- @notes "Remote" means involving e.g. explicit network access, with the
- implication that callers may wish to cache such files' contents locally.
-*/
-int hisremote(const char *filename) HTS_RESULT_USED;
-
-/*!
- @abstract Flush (for output streams) and close the stream
- @return 0 if successful, or EOF (with errno set) if an error occurred.
-*/
-int hclose(hFILE *fp) HTS_RESULT_USED;
-
-/*!
- @abstract Close the stream, without flushing or propagating errors
- @notes For use while cleaning up after an error only. Preserves errno.
-*/
-void hclose_abruptly(hFILE *fp);
-
-/*!
- @abstract Return the stream's error indicator
- @return Non-zero (in fact, an errno value) if an error has occurred.
- @notes This would be called herror() and return true/false to parallel
- ferror(3), but a networking-related herror(3) function already exists. */
-static inline int herrno(hFILE *fp)
-{
- return fp->has_errno;
-}
-
-/*!
- @abstract Clear the stream's error indicator
-*/
-static inline void hclearerr(hFILE *fp)
-{
- fp->has_errno = 0;
-}
-
-/*!
- @abstract Reposition the read/write stream offset
- @return The resulting offset within the stream (as per lseek(2)),
- or negative if an error occurred.
-*/
-off_t hseek(hFILE *fp, off_t offset, int whence) HTS_RESULT_USED;
-
-/*!
- @abstract Report the current stream offset
- @return The offset within the stream, starting from zero.
-*/
-static inline off_t htell(hFILE *fp)
-{
- return fp->offset + (fp->begin - fp->buffer);
-}
-
-/*!
- @abstract Read one character from the stream
- @return The character read, or EOF on end-of-file or error
-*/
-static inline int hgetc(hFILE *fp)
-{
- extern int hgetc2(hFILE *);
- return (fp->end > fp->begin)? (unsigned char) *(fp->begin++) : hgetc2(fp);
-}
-
-/*!
- @abstract Peek at characters to be read without removing them from buffers
- @param fp The file stream
- @param buffer The buffer to which the peeked bytes will be written
- @param nbytes The number of bytes to peek at; limited by the size of the
- internal buffer, which could be as small as 4K.
- @return The number of bytes peeked, which may be less than nbytes if EOF
- is encountered; or negative, if there was an I/O error.
- @notes The characters peeked at remain in the stream's internal buffer,
- and will be returned by later hread() etc calls.
-*/
-ssize_t hpeek(hFILE *fp, void *buffer, size_t nbytes) HTS_RESULT_USED;
-
-/*!
- @abstract Read a block of characters from the file
- @return The number of bytes read, or negative if an error occurred.
- @notes The full nbytes requested will be returned, except as limited
- by EOF or I/O errors.
-*/
-static inline ssize_t HTS_RESULT_USED
-hread(hFILE *fp, void *buffer, size_t nbytes)
-{
- extern ssize_t hread2(hFILE *, void *, size_t, size_t);
-
- size_t n = fp->end - fp->begin;
- if (n > nbytes) n = nbytes;
- memcpy(buffer, fp->begin, n);
- fp->begin += n;
- return (n == nbytes)? (ssize_t) n : hread2(fp, buffer, nbytes, n);
-}
-
-/*!
- @abstract Write a character to the stream
- @return The character written, or EOF if an error occurred.
-*/
-static inline int hputc(int c, hFILE *fp)
-{
- extern int hputc2(int, hFILE *);
- if (fp->begin < fp->limit) *(fp->begin++) = c;
- else c = hputc2(c, fp);
- return c;
-}
-
-/*!
- @abstract Write a string to the stream
- @return 0 if successful, or EOF if an error occurred.
-*/
-static inline int hputs(const char *text, hFILE *fp)
-{
- extern int hputs2(const char *, size_t, size_t, hFILE *);
-
- size_t nbytes = strlen(text), n = fp->limit - fp->begin;
- if (n > nbytes) n = nbytes;
- memcpy(fp->begin, text, n);
- fp->begin += n;
- return (n == nbytes)? 0 : hputs2(text, nbytes, n, fp);
-}
-
-/*!
- @abstract Write a block of characters to the file
- @return Either nbytes, or negative if an error occurred.
- @notes In the absence of I/O errors, the full nbytes will be written.
-*/
-static inline ssize_t HTS_RESULT_USED
-hwrite(hFILE *fp, const void *buffer, size_t nbytes)
-{
- extern ssize_t hwrite2(hFILE *, const void *, size_t, size_t);
-
- size_t n = fp->limit - fp->begin;
- if (n > nbytes) n = nbytes;
- memcpy(fp->begin, buffer, n);
- fp->begin += n;
- return (n==nbytes)? (ssize_t) n : hwrite2(fp, buffer, nbytes, n);
-}
-
-/*!
- @abstract For writing streams, flush buffered output to the underlying stream
- @return 0 if successful, or EOF if an error occurred.
-*/
-int hflush(hFILE *fp) HTS_RESULT_USED;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/hts.h b/htslib/htslib/hts.h
deleted file mode 100644
index 084c162..0000000
--- a/htslib/htslib/hts.h
+++ /dev/null
@@ -1,456 +0,0 @@
-/* hts.h -- format-neutral I/O, indexing, and iterator API functions.
-
- Copyright (C) 2012-2014 Genome Research Ltd.
- Copyright (C) 2012 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_HTS_H
-#define HTSLIB_HTS_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-#ifndef HTS_BGZF_TYPEDEF
-typedef struct BGZF BGZF;
-#define HTS_BGZF_TYPEDEF
-#endif
-struct cram_fd;
-struct hFILE;
-
-#ifndef KSTRING_T
-#define KSTRING_T kstring_t
-typedef struct __kstring_t {
- size_t l, m;
- char *s;
-} kstring_t;
-#endif
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-/**
- * hts_expand() - expands memory block pointed to by $ptr;
- * hts_expand0() the latter sets the newly allocated part to 0.
- *
- * @param n requested number of elements of type type_t
- * @param m size of memory allocated
- */
-#define hts_expand(type_t, n, m, ptr) if ((n) > (m)) { \
- (m) = (n); kroundup32(m); \
- (ptr) = (type_t*)realloc((ptr), (m) * sizeof(type_t)); \
- }
-#define hts_expand0(type_t, n, m, ptr) if ((n) > (m)) { \
- int t = (m); (m) = (n); kroundup32(m); \
- (ptr) = (type_t*)realloc((ptr), (m) * sizeof(type_t)); \
- memset(((type_t*)ptr)+t,0,sizeof(type_t)*((m)-t)); \
- }
-
-/************
- * File I/O *
- ************/
-
-// Add new entries only at the end (but before the *_maximum entry)
-// of these enums, as their numbering is part of the htslib ABI.
-
-enum htsFormatCategory {
- unknown_category,
- sequence_data, // Sequence data -- SAM, BAM, CRAM, etc
- variant_data, // Variant calling data -- VCF, BCF, etc
- index_file, // Index file associated with some data file
- region_list, // Coordinate intervals or regions -- BED, etc
- category_maximum = 32767
-};
-
-enum htsExactFormat {
- unknown_format,
- binary_format, text_format,
- sam, bam, bai, cram, crai, vcf, bcf, csi, gzi, tbi, bed,
- format_maximum = 32767
-};
-
-enum htsCompression {
- no_compression, gzip, bgzf, custom,
- compression_maximum = 32767
-};
-
-typedef struct htsFormat {
- enum htsFormatCategory category;
- enum htsExactFormat format;
- struct { short major, minor; } version;
- enum htsCompression compression;
- short compression_level; // currently unused
- void *specific; // currently unused
-} htsFormat;
-
-// Maintainers note htsFile cannot be an opaque structure because some of its
-// fields are part of libhts.so's ABI (hence these fields must not be moved):
-// - fp is used in the public sam_itr_next()/etc macros
-// - is_bin is used directly in samtools <= 1.1 and bcftools <= 1.1
-// - is_write and is_cram are used directly in samtools <= 1.1
-// - fp is used directly in samtools (up to and including current develop)
-// - line is used directly in bcftools (up to and including current develop)
-typedef struct {
- uint32_t is_bin:1, is_write:1, is_be:1, is_cram:1, dummy:28;
- int64_t lineno;
- kstring_t line;
- char *fn, *fn_aux;
- union {
- BGZF *bgzf;
- struct cram_fd *cram;
- struct hFILE *hfile;
- void *voidp;
- } fp;
- htsFormat format;
-} htsFile;
-
-// REQUIRED_FIELDS
-enum sam_fields {
- SAM_QNAME = 0x00000001,
- SAM_FLAG = 0x00000002,
- SAM_RNAME = 0x00000004,
- SAM_POS = 0x00000008,
- SAM_MAPQ = 0x00000010,
- SAM_CIGAR = 0x00000020,
- SAM_RNEXT = 0x00000040,
- SAM_PNEXT = 0x00000080,
- SAM_TLEN = 0x00000100,
- SAM_SEQ = 0x00000200,
- SAM_QUAL = 0x00000400,
- SAM_AUX = 0x00000800,
- SAM_RGAUX = 0x00001000,
-};
-
-enum cram_option {
- CRAM_OPT_DECODE_MD,
- CRAM_OPT_PREFIX,
- CRAM_OPT_VERBOSITY,
- CRAM_OPT_SEQS_PER_SLICE,
- CRAM_OPT_SLICES_PER_CONTAINER,
- CRAM_OPT_RANGE,
- CRAM_OPT_VERSION,
- CRAM_OPT_EMBED_REF,
- CRAM_OPT_IGNORE_MD5,
- CRAM_OPT_REFERENCE,
- CRAM_OPT_MULTI_SEQ_PER_SLICE,
- CRAM_OPT_NO_REF,
- CRAM_OPT_USE_BZIP2,
- CRAM_OPT_SHARED_REF,
- CRAM_OPT_NTHREADS,
- CRAM_OPT_THREAD_POOL,
- CRAM_OPT_USE_LZMA,
- CRAM_OPT_USE_RANS,
- CRAM_OPT_REQUIRED_FIELDS,
-};
-
-/**********************
- * Exported functions *
- **********************/
-
-extern int hts_verbose;
-
-/*! @abstract Table for converting a nucleotide character to 4-bit encoding.
-The input character may be either an IUPAC ambiguity code, '=' for 0, or
-'0'/'1'/'2'/'3' for a result of 1/2/4/8. The result is encoded as 1/2/4/8
-for A/C/G/T or combinations of these bits for ambiguous bases.
-*/
-extern const unsigned char seq_nt16_table[256];
-
-/*! @abstract Table for converting a 4-bit encoded nucleotide to an IUPAC
-ambiguity code letter (or '=' when given 0).
-*/
-extern const char seq_nt16_str[];
-
-/*! @abstract Table for converting a 4-bit encoded nucleotide to about 2 bits.
-Returns 0/1/2/3 for 1/2/4/8 (i.e., A/C/G/T), or 4 otherwise (0 or ambiguous).
-*/
-extern const int seq_nt16_int[];
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- @abstract Get the htslib version number
- @return For released versions, a string like "N.N[.N]"; or git describe
- output if using a library built within a Git repository.
-*/
-const char *hts_version(void);
-
-/*!
- @abstract Determine format by peeking at the start of a file
- @param fp File opened for reading, positioned at the beginning
- @param fmt Format structure that will be filled out on return
- @return 0 for success, or negative if an error occurred.
-*/
-int hts_detect_format(struct hFILE *fp, htsFormat *fmt);
-
-/*!
- @abstract Get a human-readable description of the file format
- @return Description string, to be freed by the caller after use.
-*/
-char *hts_format_description(const htsFormat *format);
-
-/*!
- @abstract Open a SAM/BAM/CRAM/VCF/BCF/etc file
- @param fn The file name or "-" for stdin/stdout
- @param mode Mode matching /[rwa][bcuz0-9]+/
- @discussion
- With 'r' opens for reading; any further format mode letters are ignored
- as the format is detected by checking the first few bytes or BGZF blocks
- of the file. With 'w' or 'a' opens for writing or appending, with format
- specifier letters:
- b binary format (BAM, BCF, etc) rather than text (SAM, VCF, etc)
- c CRAM format
- g gzip compressed
- u uncompressed
- z bgzf compressed
- [0-9] zlib compression level
- Note that there is a distinction between 'u' and '0': the first yields
- plain uncompressed output whereas the latter outputs uncompressed data
- wrapped in the zlib format.
- @example
- [rw]b .. compressed BCF, BAM, FAI
- [rw]u .. uncompressed BCF
- [rw]z .. compressed VCF
- [rw] .. uncompressed VCF
-*/
-htsFile *hts_open(const char *fn, const char *mode);
-
-/*!
- @abstract Open an existing stream as a SAM/BAM/CRAM/VCF/BCF/etc file
- @param fn The already-open file handle
- @param mode Open mode, as per hts_open()
-*/
-htsFile *hts_hopen(struct hFILE *fp, const char *fn, const char *mode);
-
-/*!
- @abstract Close a file handle, flushing buffered data for output streams
- @param fp The file handle to be closed
- @return 0 for success, or negative if an error occurred.
-*/
-int hts_close(htsFile *fp);
-
-/*!
- @abstract Returns the file's format information
- @param fp The file handle
- @return Read-only pointer to the file's htsFormat.
-*/
-const htsFormat *hts_get_format(htsFile *fp);
-
-/*!
- @abstract Sets a specified CRAM option on the open file handle.
- @param fp The file handle open the open file.
- @param opt The CRAM_OPT_* option.
- @param ... Optional arguments, dependent on the option used.
- @return 0 for success, or negative if an error occurred.
-*/
-int hts_set_opt(htsFile *fp, enum cram_option opt, ...);
-
-int hts_getline(htsFile *fp, int delimiter, kstring_t *str);
-char **hts_readlines(const char *fn, int *_n);
-/*!
- @abstract Parse comma-separated list or read list from a file
- @param list File name or comma-separated list
- @param is_file
- @param _n Size of the output array (number of items read)
- @return NULL on failure or pointer to newly allocated array of
- strings
-*/
-char **hts_readlist(const char *fn, int is_file, int *_n);
-
-/*!
- @abstract Create extra threads to aid compress/decompression for this file
- @param fp The file handle
- @param n The number of worker threads to create
- @return 0 for success, or negative if an error occurred.
- @notes THIS THREADING API IS LIKELY TO CHANGE IN FUTURE.
-*/
-int hts_set_threads(htsFile *fp, int n);
-
-/*!
- @abstract Set .fai filename for a file opened for reading
- @return 0 for success, negative on failure
- @discussion
- Called before *_hdr_read(), this provides the name of a .fai file
- used to provide a reference list if the htsFile contains no @SQ headers.
-*/
-int hts_set_fai_filename(htsFile *fp, const char *fn_aux);
-
-#ifdef __cplusplus
-}
-#endif
-
-/************
- * Indexing *
- ************/
-
-/*!
-These HTS_IDX_* macros are used as special tid values for hts_itr_query()/etc,
-producing iterators operating as follows:
- - HTS_IDX_NOCOOR iterates over unmapped reads sorted at the end of the file
- - HTS_IDX_START iterates over the entire file
- - HTS_IDX_REST iterates from the current position to the end of the file
- - HTS_IDX_NONE always returns "no more alignment records"
-When one of these special tid values is used, beg and end are ignored.
-When REST or NONE is used, idx is also ignored and may be NULL.
-*/
-#define HTS_IDX_NOCOOR (-2)
-#define HTS_IDX_START (-3)
-#define HTS_IDX_REST (-4)
-#define HTS_IDX_NONE (-5)
-
-#define HTS_FMT_CSI 0
-#define HTS_FMT_BAI 1
-#define HTS_FMT_TBI 2
-#define HTS_FMT_CRAI 3
-
-struct __hts_idx_t;
-typedef struct __hts_idx_t hts_idx_t;
-
-typedef struct {
- uint64_t u, v;
-} hts_pair64_t;
-
-typedef int hts_readrec_func(BGZF *fp, void *data, void *r, int *tid, int *beg, int *end);
-
-typedef struct {
- uint32_t read_rest:1, finished:1, dummy:29;
- int tid, beg, end, n_off, i;
- int curr_tid, curr_beg, curr_end;
- uint64_t curr_off;
- hts_pair64_t *off;
- hts_readrec_func *readrec;
- struct {
- int n, m;
- int *a;
- } bins;
-} hts_itr_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- #define hts_bin_first(l) (((1<<(((l)<<1) + (l))) - 1) / 7)
- #define hts_bin_parent(l) (((l) - 1) >> 3)
-
- hts_idx_t *hts_idx_init(int n, int fmt, uint64_t offset0, int min_shift, int n_lvls);
- void hts_idx_destroy(hts_idx_t *idx);
- int hts_idx_push(hts_idx_t *idx, int tid, int beg, int end, uint64_t offset, int is_mapped);
- void hts_idx_finish(hts_idx_t *idx, uint64_t final_offset);
-
- void hts_idx_save(const hts_idx_t *idx, const char *fn, int fmt);
- hts_idx_t *hts_idx_load(const char *fn, int fmt);
-
- uint8_t *hts_idx_get_meta(hts_idx_t *idx, int *l_meta);
- void hts_idx_set_meta(hts_idx_t *idx, int l_meta, uint8_t *meta, int is_copy);
-
- int hts_idx_get_stat(const hts_idx_t* idx, int tid, uint64_t* mapped, uint64_t* unmapped);
- uint64_t hts_idx_get_n_no_coor(const hts_idx_t* idx);
-
- const char *hts_parse_reg(const char *s, int *beg, int *end);
- hts_itr_t *hts_itr_query(const hts_idx_t *idx, int tid, int beg, int end, hts_readrec_func *readrec);
- void hts_itr_destroy(hts_itr_t *iter);
-
- typedef int (*hts_name2id_f)(void*, const char*);
- typedef const char *(*hts_id2name_f)(void*, int);
- typedef hts_itr_t *hts_itr_query_func(const hts_idx_t *idx, int tid, int beg, int end, hts_readrec_func *readrec);
-
- hts_itr_t *hts_itr_querys(const hts_idx_t *idx, const char *reg, hts_name2id_f getid, void *hdr, hts_itr_query_func *itr_query, hts_readrec_func *readrec);
- int hts_itr_next(BGZF *fp, hts_itr_t *iter, void *r, void *data);
- const char **hts_idx_seqnames(const hts_idx_t *idx, int *n, hts_id2name_f getid, void *hdr); // free only the array, not the values
-
- /**
- * hts_file_type() - Convenience function to determine file type
- * DEPRECATED: This function has been replaced by hts_detect_format().
- * It and these FT_* macros will be removed in a future HTSlib release.
- */
- #define FT_UNKN 0
- #define FT_GZ 1
- #define FT_VCF 2
- #define FT_VCF_GZ (FT_GZ|FT_VCF)
- #define FT_BCF (1<<2)
- #define FT_BCF_GZ (FT_GZ|FT_BCF)
- #define FT_STDIN (1<<3)
- int hts_file_type(const char *fname);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-static inline int hts_reg2bin(int64_t beg, int64_t end, int min_shift, int n_lvls)
-{
- int l, s = min_shift, t = ((1<<((n_lvls<<1) + n_lvls)) - 1) / 7;
- for (--end, l = n_lvls; l > 0; --l, s += 3, t -= 1<<((l<<1)+l))
- if (beg>>s == end>>s) return t + (beg>>s);
- return 0;
-}
-
-static inline int hts_bin_bot(int bin, int n_lvls)
-{
- int l, b;
- for (l = 0, b = bin; b; ++l, b = hts_bin_parent(b)); // compute the level of bin
- return (bin - hts_bin_first(l)) << (n_lvls - l) * 3;
-}
-
-/**************
- * Endianness *
- **************/
-
-static inline int ed_is_big(void)
-{
- long one= 1;
- return !(*((char *)(&one)));
-}
-static inline uint16_t ed_swap_2(uint16_t v)
-{
- return (uint16_t)(((v & 0x00FF00FFU) << 8) | ((v & 0xFF00FF00U) >> 8));
-}
-static inline void *ed_swap_2p(void *x)
-{
- *(uint16_t*)x = ed_swap_2(*(uint16_t*)x);
- return x;
-}
-static inline uint32_t ed_swap_4(uint32_t v)
-{
- v = ((v & 0x0000FFFFU) << 16) | (v >> 16);
- return ((v & 0x00FF00FFU) << 8) | ((v & 0xFF00FF00U) >> 8);
-}
-static inline void *ed_swap_4p(void *x)
-{
- *(uint32_t*)x = ed_swap_4(*(uint32_t*)x);
- return x;
-}
-static inline uint64_t ed_swap_8(uint64_t v)
-{
- v = ((v & 0x00000000FFFFFFFFLLU) << 32) | (v >> 32);
- v = ((v & 0x0000FFFF0000FFFFLLU) << 16) | ((v & 0xFFFF0000FFFF0000LLU) >> 16);
- return ((v & 0x00FF00FF00FF00FFLLU) << 8) | ((v & 0xFF00FF00FF00FF00LLU) >> 8);
-}
-static inline void *ed_swap_8p(void *x)
-{
- *(uint64_t*)x = ed_swap_8(*(uint64_t*)x);
- return x;
-}
-
-#endif
diff --git a/htslib/htslib/hts_defs.h b/htslib/htslib/hts_defs.h
deleted file mode 100644
index c9efbb9..0000000
--- a/htslib/htslib/hts_defs.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* hts_defs.h -- Miscellaneous definitions.
-
- Copyright (C) 2013-2014 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_HTS_DEFS_H
-#define HTSLIB_HTS_DEFS_H
-
-#if __clang__major__ >= 2 || __GNUC__ >= 3
-#define HTS_NORETURN __attribute__ ((__noreturn__))
-#else
-#define HTS_NORETURN
-#endif
-
-#if (defined __clang__ && __clang_major__ >= 3) || \
- (defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__==4 && __GNUC_MINOR__ >= 5)))
-#define HTS_RESULT_USED __attribute__ ((__warn_unused_result__))
-#else
-#define HTS_RESULT_USED
-#endif
-
-#if defined __clang__ || defined __GNUC__
-#define HTS_UNUSED __attribute__ ((__unused__))
-#else
-#define HTS_UNUSED
-#endif
-
-#endif
diff --git a/htslib/htslib/kfunc.h b/htslib/htslib/kfunc.h
deleted file mode 100644
index 19e4da6..0000000
--- a/htslib/htslib/kfunc.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* The MIT License
-
- Copyright (C) 2010, 2013 Genome Research Ltd.
- Copyright (C) 2011 Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#ifndef HTSLIB_KFUNC_H
-#define HTSLIB_KFUNC_H
-
-/* Log gamma function
- * \log{\Gamma(z)}
- * AS245, 2nd algorithm, http://lib.stat.cmu.edu/apstat/245
- */
-double kf_lgamma(double z);
-
-/* complementary error function
- * \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2} dt
- * AS66, 2nd algorithm, http://lib.stat.cmu.edu/apstat/66
- */
-double kf_erfc(double x);
-
-/* The following computes regularized incomplete gamma functions.
- * Formulas are taken from Wiki, with additional input from Numerical
- * Recipes in C (for modified Lentz's algorithm) and AS245
- * (http://lib.stat.cmu.edu/apstat/245).
- *
- * A good online calculator is available at:
- *
- * http://www.danielsoper.com/statcalc/calc23.aspx
- *
- * It calculates upper incomplete gamma function, which equals
- * kf_gammaq(s,z)*tgamma(s).
- */
-
-double kf_gammap(double s, double z);
-double kf_gammaq(double s, double z);
-
-/* Regularized incomplete beta function. The method is taken from
- * Numerical Recipe in C, 2nd edition, section 6.4. The following web
- * page calculates the incomplete beta function, which equals
- * kf_betai(a,b,x) * gamma(a) * gamma(b) / gamma(a+b):
- *
- * http://www.danielsoper.com/statcalc/calc36.aspx
- */
-double kf_betai(double a, double b, double x);
-
-/*
- * n11 n12 | n1_
- * n21 n22 | n2_
- * -----------+----
- * n_1 n_2 | n
- */
-double kt_fisher_exact(int n11, int n12, int n21, int n22, double *_left, double *_right, double *two);
-
-#endif
diff --git a/htslib/htslib/khash.h b/htslib/htslib/khash.h
deleted file mode 100644
index 5e55088..0000000
--- a/htslib/htslib/khash.h
+++ /dev/null
@@ -1,619 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008, 2009, 2011 by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-/*
- An example:
-
-#include "khash.h"
-KHASH_MAP_INIT_INT(32, char)
-int main() {
- int ret, is_missing;
- khiter_t k;
- khash_t(32) *h = kh_init(32);
- k = kh_put(32, h, 5, &ret);
- kh_value(h, k) = 10;
- k = kh_get(32, h, 10);
- is_missing = (k == kh_end(h));
- k = kh_get(32, h, 5);
- kh_del(32, h, k);
- for (k = kh_begin(h); k != kh_end(h); ++k)
- if (kh_exist(h, k)) kh_value(h, k) = 1;
- kh_destroy(32, h);
- return 0;
-}
-*/
-
-/*
- 2013-05-02 (0.2.8):
-
- * Use quadratic probing. When the capacity is power of 2, stepping function
- i*(i+1)/2 guarantees to traverse each bucket. It is better than double
- hashing on cache performance and is more robust than linear probing.
-
- In theory, double hashing should be more robust than quadratic probing.
- However, my implementation is probably not for large hash tables, because
- the second hash function is closely tied to the first hash function,
- which reduce the effectiveness of double hashing.
-
- Reference: http://research.cs.vt.edu/AVresearch/hashing/quadratic.php
-
- 2011-12-29 (0.2.7):
-
- * Minor code clean up; no actual effect.
-
- 2011-09-16 (0.2.6):
-
- * The capacity is a power of 2. This seems to dramatically improve the
- speed for simple keys. Thank Zilong Tan for the suggestion. Reference:
-
- - http://code.google.com/p/ulib/
- - http://nothings.org/computer/judy/
-
- * Allow to optionally use linear probing which usually has better
- performance for random input. Double hashing is still the default as it
- is more robust to certain non-random input.
-
- * Added Wang's integer hash function (not used by default). This hash
- function is more robust to certain non-random input.
-
- 2011-02-14 (0.2.5):
-
- * Allow to declare global functions.
-
- 2009-09-26 (0.2.4):
-
- * Improve portability
-
- 2008-09-19 (0.2.3):
-
- * Corrected the example
- * Improved interfaces
-
- 2008-09-11 (0.2.2):
-
- * Improved speed a little in kh_put()
-
- 2008-09-10 (0.2.1):
-
- * Added kh_clear()
- * Fixed a compiling error
-
- 2008-09-02 (0.2.0):
-
- * Changed to token concatenation which increases flexibility.
-
- 2008-08-31 (0.1.2):
-
- * Fixed a bug in kh_get(), which has not been tested previously.
-
- 2008-08-31 (0.1.1):
-
- * Added destructor
-*/
-
-
-#ifndef __AC_KHASH_H
-#define __AC_KHASH_H
-
-/*!
- @header
-
- Generic hash table library.
- */
-
-#define AC_VERSION_KHASH_H "0.2.8"
-
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-/* compiler specific configuration */
-
-#if UINT_MAX == 0xffffffffu
-typedef unsigned int khint32_t;
-#elif ULONG_MAX == 0xffffffffu
-typedef unsigned long khint32_t;
-#endif
-
-#if ULONG_MAX == ULLONG_MAX
-typedef unsigned long khint64_t;
-#else
-typedef unsigned long long khint64_t;
-#endif
-
-#ifndef kh_inline
-#ifdef _MSC_VER
-#define kh_inline __inline
-#else
-#define kh_inline inline
-#endif
-#endif /* kh_inline */
-
-typedef khint32_t khint_t;
-typedef khint_t khiter_t;
-
-#define __ac_isempty(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&2)
-#define __ac_isdel(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&1)
-#define __ac_iseither(flag, i) ((flag[i>>4]>>((i&0xfU)<<1))&3)
-#define __ac_set_isdel_false(flag, i) (flag[i>>4]&=~(1ul<<((i&0xfU)<<1)))
-#define __ac_set_isempty_false(flag, i) (flag[i>>4]&=~(2ul<<((i&0xfU)<<1)))
-#define __ac_set_isboth_false(flag, i) (flag[i>>4]&=~(3ul<<((i&0xfU)<<1)))
-#define __ac_set_isdel_true(flag, i) (flag[i>>4]|=1ul<<((i&0xfU)<<1))
-
-#define __ac_fsize(m) ((m) < 16? 1 : (m)>>4)
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-#ifndef kcalloc
-#define kcalloc(N,Z) calloc(N,Z)
-#endif
-#ifndef kmalloc
-#define kmalloc(Z) malloc(Z)
-#endif
-#ifndef krealloc
-#define krealloc(P,Z) realloc(P,Z)
-#endif
-#ifndef kfree
-#define kfree(P) free(P)
-#endif
-
-static const double __ac_HASH_UPPER = 0.77;
-
-#define __KHASH_TYPE(name, khkey_t, khval_t) \
- typedef struct kh_##name##_s { \
- khint_t n_buckets, size, n_occupied, upper_bound; \
- khint32_t *flags; \
- khkey_t *keys; \
- khval_t *vals; \
- } kh_##name##_t;
-
-#define __KHASH_PROTOTYPES(name, khkey_t, khval_t) \
- extern kh_##name##_t *kh_init_##name(void); \
- extern void kh_destroy_##name(kh_##name##_t *h); \
- extern void kh_clear_##name(kh_##name##_t *h); \
- extern khint_t kh_get_##name(const kh_##name##_t *h, khkey_t key); \
- extern int kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets); \
- extern khint_t kh_put_##name(kh_##name##_t *h, khkey_t key, int *ret); \
- extern void kh_del_##name(kh_##name##_t *h, khint_t x);
-
-#define __KHASH_IMPL(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
- SCOPE kh_##name##_t *kh_init_##name(void) { \
- return (kh_##name##_t*)kcalloc(1, sizeof(kh_##name##_t)); \
- } \
- SCOPE void kh_destroy_##name(kh_##name##_t *h) \
- { \
- if (h) { \
- kfree((void *)h->keys); kfree(h->flags); \
- kfree((void *)h->vals); \
- kfree(h); \
- } \
- } \
- SCOPE void kh_clear_##name(kh_##name##_t *h) \
- { \
- if (h && h->flags) { \
- memset(h->flags, 0xaa, __ac_fsize(h->n_buckets) * sizeof(khint32_t)); \
- h->size = h->n_occupied = 0; \
- } \
- } \
- SCOPE khint_t kh_get_##name(const kh_##name##_t *h, khkey_t key) \
- { \
- if (h->n_buckets) { \
- khint_t k, i, last, mask, step = 0; \
- mask = h->n_buckets - 1; \
- k = __hash_func(key); i = k & mask; \
- last = i; \
- while (!__ac_isempty(h->flags, i) && (__ac_isdel(h->flags, i) || !__hash_equal(h->keys[i], key))) { \
- i = (i + (++step)) & mask; \
- if (i == last) return h->n_buckets; \
- } \
- return __ac_iseither(h->flags, i)? h->n_buckets : i; \
- } else return 0; \
- } \
- SCOPE int kh_resize_##name(kh_##name##_t *h, khint_t new_n_buckets) \
- { /* This function uses 0.25*n_buckets bytes of working space instead of [sizeof(key_t+val_t)+.25]*n_buckets. */ \
- khint32_t *new_flags = 0; \
- khint_t j = 1; \
- { \
- kroundup32(new_n_buckets); \
- if (new_n_buckets < 4) new_n_buckets = 4; \
- if (h->size >= (khint_t)(new_n_buckets * __ac_HASH_UPPER + 0.5)) j = 0; /* requested size is too small */ \
- else { /* hash table size to be changed (shrink or expand); rehash */ \
- new_flags = (khint32_t*)kmalloc(__ac_fsize(new_n_buckets) * sizeof(khint32_t)); \
- if (!new_flags) return -1; \
- memset(new_flags, 0xaa, __ac_fsize(new_n_buckets) * sizeof(khint32_t)); \
- if (h->n_buckets < new_n_buckets) { /* expand */ \
- khkey_t *new_keys = (khkey_t*)krealloc((void *)h->keys, new_n_buckets * sizeof(khkey_t)); \
- if (!new_keys) { kfree(new_flags); return -1; } \
- h->keys = new_keys; \
- if (kh_is_map) { \
- khval_t *new_vals = (khval_t*)krealloc((void *)h->vals, new_n_buckets * sizeof(khval_t)); \
- if (!new_vals) { kfree(new_flags); return -1; } \
- h->vals = new_vals; \
- } \
- } /* otherwise shrink */ \
- } \
- } \
- if (j) { /* rehashing is needed */ \
- for (j = 0; j != h->n_buckets; ++j) { \
- if (__ac_iseither(h->flags, j) == 0) { \
- khkey_t key = h->keys[j]; \
- khval_t val; \
- khint_t new_mask; \
- new_mask = new_n_buckets - 1; \
- if (kh_is_map) val = h->vals[j]; \
- __ac_set_isdel_true(h->flags, j); \
- while (1) { /* kick-out process; sort of like in Cuckoo hashing */ \
- khint_t k, i, step = 0; \
- k = __hash_func(key); \
- i = k & new_mask; \
- while (!__ac_isempty(new_flags, i)) i = (i + (++step)) & new_mask; \
- __ac_set_isempty_false(new_flags, i); \
- if (i < h->n_buckets && __ac_iseither(h->flags, i) == 0) { /* kick out the existing element */ \
- { khkey_t tmp = h->keys[i]; h->keys[i] = key; key = tmp; } \
- if (kh_is_map) { khval_t tmp = h->vals[i]; h->vals[i] = val; val = tmp; } \
- __ac_set_isdel_true(h->flags, i); /* mark it as deleted in the old hash table */ \
- } else { /* write the element and jump out of the loop */ \
- h->keys[i] = key; \
- if (kh_is_map) h->vals[i] = val; \
- break; \
- } \
- } \
- } \
- } \
- if (h->n_buckets > new_n_buckets) { /* shrink the hash table */ \
- h->keys = (khkey_t*)krealloc((void *)h->keys, new_n_buckets * sizeof(khkey_t)); \
- if (kh_is_map) h->vals = (khval_t*)krealloc((void *)h->vals, new_n_buckets * sizeof(khval_t)); \
- } \
- kfree(h->flags); /* free the working space */ \
- h->flags = new_flags; \
- h->n_buckets = new_n_buckets; \
- h->n_occupied = h->size; \
- h->upper_bound = (khint_t)(h->n_buckets * __ac_HASH_UPPER + 0.5); \
- } \
- return 0; \
- } \
- SCOPE khint_t kh_put_##name(kh_##name##_t *h, khkey_t key, int *ret) \
- { \
- khint_t x; \
- if (h->n_occupied >= h->upper_bound) { /* update the hash table */ \
- if (h->n_buckets > (h->size<<1)) { \
- if (kh_resize_##name(h, h->n_buckets - 1) < 0) { /* clear "deleted" elements */ \
- *ret = -1; return h->n_buckets; \
- } \
- } else if (kh_resize_##name(h, h->n_buckets + 1) < 0) { /* expand the hash table */ \
- *ret = -1; return h->n_buckets; \
- } \
- } /* TODO: to implement automatically shrinking; resize() already support shrinking */ \
- { \
- khint_t k, i, site, last, mask = h->n_buckets - 1, step = 0; \
- x = site = h->n_buckets; k = __hash_func(key); i = k & mask; \
- if (__ac_isempty(h->flags, i)) x = i; /* for speed up */ \
- else { \
- last = i; \
- while (!__ac_isempty(h->flags, i) && (__ac_isdel(h->flags, i) || !__hash_equal(h->keys[i], key))) { \
- if (__ac_isdel(h->flags, i)) site = i; \
- i = (i + (++step)) & mask; \
- if (i == last) { x = site; break; } \
- } \
- if (x == h->n_buckets) { \
- if (__ac_isempty(h->flags, i) && site != h->n_buckets) x = site; \
- else x = i; \
- } \
- } \
- } \
- if (__ac_isempty(h->flags, x)) { /* not present at all */ \
- h->keys[x] = key; \
- __ac_set_isboth_false(h->flags, x); \
- ++h->size; ++h->n_occupied; \
- *ret = 1; \
- } else if (__ac_isdel(h->flags, x)) { /* deleted */ \
- h->keys[x] = key; \
- __ac_set_isboth_false(h->flags, x); \
- ++h->size; \
- *ret = 2; \
- } else *ret = 0; /* Don't touch h->keys[x] if present and not deleted */ \
- return x; \
- } \
- SCOPE void kh_del_##name(kh_##name##_t *h, khint_t x) \
- { \
- if (x != h->n_buckets && !__ac_iseither(h->flags, x)) { \
- __ac_set_isdel_true(h->flags, x); \
- --h->size; \
- } \
- }
-
-#define KHASH_DECLARE(name, khkey_t, khval_t) \
- __KHASH_TYPE(name, khkey_t, khval_t) \
- __KHASH_PROTOTYPES(name, khkey_t, khval_t)
-
-#define KHASH_INIT2(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
- __KHASH_TYPE(name, khkey_t, khval_t) \
- __KHASH_IMPL(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
-
-#define KHASH_INIT(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
- KHASH_INIT2(name, static kh_inline, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)
-
-/* --- BEGIN OF HASH FUNCTIONS --- */
-
-/*! @function
- @abstract Integer hash function
- @param key The integer [khint32_t]
- @return The hash value [khint_t]
- */
-#define kh_int_hash_func(key) (khint32_t)(key)
-/*! @function
- @abstract Integer comparison function
- */
-#define kh_int_hash_equal(a, b) ((a) == (b))
-/*! @function
- @abstract 64-bit integer hash function
- @param key The integer [khint64_t]
- @return The hash value [khint_t]
- */
-#define kh_int64_hash_func(key) (khint32_t)((key)>>33^(key)^(key)<<11)
-/*! @function
- @abstract 64-bit integer comparison function
- */
-#define kh_int64_hash_equal(a, b) ((a) == (b))
-/*! @function
- @abstract const char* hash function
- @param s Pointer to a null terminated string
- @return The hash value
- */
-static kh_inline khint_t __ac_X31_hash_string(const char *s)
-{
- khint_t h = (khint_t)*s;
- if (h) for (++s ; *s; ++s) h = (h << 5) - h + (khint_t)*s;
- return h;
-}
-/*! @function
- @abstract Another interface to const char* hash function
- @param key Pointer to a null terminated string [const char*]
- @return The hash value [khint_t]
- */
-#define kh_str_hash_func(key) __ac_X31_hash_string(key)
-/*! @function
- @abstract Const char* comparison function
- */
-#define kh_str_hash_equal(a, b) (strcmp(a, b) == 0)
-
-static kh_inline khint_t __ac_Wang_hash(khint_t key)
-{
- key += ~(key << 15);
- key ^= (key >> 10);
- key += (key << 3);
- key ^= (key >> 6);
- key += ~(key << 11);
- key ^= (key >> 16);
- return key;
-}
-#define kh_int_hash_func2(k) __ac_Wang_hash((khint_t)key)
-
-/* --- END OF HASH FUNCTIONS --- */
-
-/* Other convenient macros... */
-
-/*!
- @abstract Type of the hash table.
- @param name Name of the hash table [symbol]
- */
-#define khash_t(name) kh_##name##_t
-
-/*! @function
- @abstract Initiate a hash table.
- @param name Name of the hash table [symbol]
- @return Pointer to the hash table [khash_t(name)*]
- */
-#define kh_init(name) kh_init_##name()
-
-/*! @function
- @abstract Destroy a hash table.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- */
-#define kh_destroy(name, h) kh_destroy_##name(h)
-
-/*! @function
- @abstract Reset a hash table without deallocating memory.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- */
-#define kh_clear(name, h) kh_clear_##name(h)
-
-/*! @function
- @abstract Resize a hash table.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- @param s New size [khint_t]
- */
-#define kh_resize(name, h, s) kh_resize_##name(h, s)
-
-/*! @function
- @abstract Insert a key to the hash table.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- @param k Key [type of keys]
- @param r Extra return code: -1 if the operation failed;
- 0 if the key is present in the hash table;
- 1 if the bucket is empty (never used); 2 if the element in
- the bucket has been deleted [int*]
- @return Iterator to the inserted element [khint_t]
- */
-#define kh_put(name, h, k, r) kh_put_##name(h, k, r)
-
-/*! @function
- @abstract Retrieve a key from the hash table.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- @param k Key [type of keys]
- @return Iterator to the found element, or kh_end(h) if the element is absent [khint_t]
- */
-#define kh_get(name, h, k) kh_get_##name(h, k)
-
-/*! @function
- @abstract Remove a key from the hash table.
- @param name Name of the hash table [symbol]
- @param h Pointer to the hash table [khash_t(name)*]
- @param k Iterator to the element to be deleted [khint_t]
- */
-#define kh_del(name, h, k) kh_del_##name(h, k)
-
-/*! @function
- @abstract Test whether a bucket contains data.
- @param h Pointer to the hash table [khash_t(name)*]
- @param x Iterator to the bucket [khint_t]
- @return 1 if containing data; 0 otherwise [int]
- */
-#define kh_exist(h, x) (!__ac_iseither((h)->flags, (x)))
-
-/*! @function
- @abstract Get key given an iterator
- @param h Pointer to the hash table [khash_t(name)*]
- @param x Iterator to the bucket [khint_t]
- @return Key [type of keys]
- */
-#define kh_key(h, x) ((h)->keys[x])
-
-/*! @function
- @abstract Get value given an iterator
- @param h Pointer to the hash table [khash_t(name)*]
- @param x Iterator to the bucket [khint_t]
- @return Value [type of values]
- @discussion For hash sets, calling this results in segfault.
- */
-#define kh_val(h, x) ((h)->vals[x])
-
-/*! @function
- @abstract Alias of kh_val()
- */
-#define kh_value(h, x) ((h)->vals[x])
-
-/*! @function
- @abstract Get the start iterator
- @param h Pointer to the hash table [khash_t(name)*]
- @return The start iterator [khint_t]
- */
-#define kh_begin(h) (khint_t)(0)
-
-/*! @function
- @abstract Get the end iterator
- @param h Pointer to the hash table [khash_t(name)*]
- @return The end iterator [khint_t]
- */
-#define kh_end(h) ((h)->n_buckets)
-
-/*! @function
- @abstract Get the number of elements in the hash table
- @param h Pointer to the hash table [khash_t(name)*]
- @return Number of elements in the hash table [khint_t]
- */
-#define kh_size(h) ((h)->size)
-
-/*! @function
- @abstract Get the number of buckets in the hash table
- @param h Pointer to the hash table [khash_t(name)*]
- @return Number of buckets in the hash table [khint_t]
- */
-#define kh_n_buckets(h) ((h)->n_buckets)
-
-/*! @function
- @abstract Iterate over the entries in the hash table
- @param h Pointer to the hash table [khash_t(name)*]
- @param kvar Variable to which key will be assigned
- @param vvar Variable to which value will be assigned
- @param code Block of code to execute
- */
-#define kh_foreach(h, kvar, vvar, code) { khint_t __i; \
- for (__i = kh_begin(h); __i != kh_end(h); ++__i) { \
- if (!kh_exist(h,__i)) continue; \
- (kvar) = kh_key(h,__i); \
- (vvar) = kh_val(h,__i); \
- code; \
- } }
-
-/*! @function
- @abstract Iterate over the values in the hash table
- @param h Pointer to the hash table [khash_t(name)*]
- @param vvar Variable to which value will be assigned
- @param code Block of code to execute
- */
-#define kh_foreach_value(h, vvar, code) { khint_t __i; \
- for (__i = kh_begin(h); __i != kh_end(h); ++__i) { \
- if (!kh_exist(h,__i)) continue; \
- (vvar) = kh_val(h,__i); \
- code; \
- } }
-
-/* More conenient interfaces */
-
-/*! @function
- @abstract Instantiate a hash set containing integer keys
- @param name Name of the hash table [symbol]
- */
-#define KHASH_SET_INIT_INT(name) \
- KHASH_INIT(name, khint32_t, char, 0, kh_int_hash_func, kh_int_hash_equal)
-
-/*! @function
- @abstract Instantiate a hash map containing integer keys
- @param name Name of the hash table [symbol]
- @param khval_t Type of values [type]
- */
-#define KHASH_MAP_INIT_INT(name, khval_t) \
- KHASH_INIT(name, khint32_t, khval_t, 1, kh_int_hash_func, kh_int_hash_equal)
-
-/*! @function
- @abstract Instantiate a hash map containing 64-bit integer keys
- @param name Name of the hash table [symbol]
- */
-#define KHASH_SET_INIT_INT64(name) \
- KHASH_INIT(name, khint64_t, char, 0, kh_int64_hash_func, kh_int64_hash_equal)
-
-/*! @function
- @abstract Instantiate a hash map containing 64-bit integer keys
- @param name Name of the hash table [symbol]
- @param khval_t Type of values [type]
- */
-#define KHASH_MAP_INIT_INT64(name, khval_t) \
- KHASH_INIT(name, khint64_t, khval_t, 1, kh_int64_hash_func, kh_int64_hash_equal)
-
-typedef const char *kh_cstr_t;
-/*! @function
- @abstract Instantiate a hash map containing const char* keys
- @param name Name of the hash table [symbol]
- */
-#define KHASH_SET_INIT_STR(name) \
- KHASH_INIT(name, kh_cstr_t, char, 0, kh_str_hash_func, kh_str_hash_equal)
-
-/*! @function
- @abstract Instantiate a hash map containing const char* keys
- @param name Name of the hash table [symbol]
- @param khval_t Type of values [type]
- */
-#define KHASH_MAP_INIT_STR(name, khval_t) \
- KHASH_INIT(name, kh_cstr_t, khval_t, 1, kh_str_hash_func, kh_str_hash_equal)
-
-#endif /* __AC_KHASH_H */
diff --git a/htslib/htslib/khash_str2int.h b/htslib/htslib/khash_str2int.h
deleted file mode 100644
index 4bbc100..0000000
--- a/htslib/htslib/khash_str2int.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* khash_str2int.h -- C-string to integer hash table.
-
- Copyright (C) 2013 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_KHASH_STR2INT_H
-#define HTSLIB_KHASH_STR2INT_H
-
-#include <htslib/khash.h>
-
-KHASH_MAP_INIT_STR(str2int, int)
-
-/*
- * Wrappers for khash dictionaries used by mpileup.
- */
-
-static inline void *khash_str2int_init(void)
-{
- return kh_init(str2int);
-}
-
-/*
- * Destroy the hash structure, but not the keys
- */
-static inline void khash_str2int_destroy(void *_hash)
-{
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- if (hash) kh_destroy(str2int, hash); // Note that strings are not freed.
-}
-
-/*
- * Destroys both the hash structure and the keys
- */
-static inline void khash_str2int_destroy_free(void *_hash)
-{
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- khint_t k;
- if (hash == 0) return;
- for (k = 0; k < kh_end(hash); ++k)
- if (kh_exist(hash, k)) free((char*)kh_key(hash, k));
- kh_destroy(str2int, hash);
-}
-
-/*
- * Returns 1 if key exists or 0 if not
- */
-static inline int khash_str2int_has_key(void *_hash, const char *str)
-{
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- khint_t k = kh_get(str2int, hash, str);
- if ( k == kh_end(hash) ) return 0;
- return 1;
-}
-
-/*
- * Returns 0 on success and -1 when the key is not present. On success,
- * *value is set, unless NULL is passed.
- */
-static inline int khash_str2int_get(void *_hash, const char *str, int *value)
-{
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- khint_t k;
- if ( !hash ) return -1;
- k = kh_get(str2int, hash, str);
- if ( k == kh_end(hash) ) return -1;
- if ( !value ) return 0;
- *value = kh_val(hash, k);
- return 0;
-}
-
-/*
- * Add a new string to the dictionary, auto-incrementing the value.
- * On success returns the newly inserted integer id, on error -1
- * is returned. Note that the key must continue to exist throughout
- * the whole life of _hash.
- */
-static inline int khash_str2int_inc(void *_hash, const char *str)
-{
- khint_t k;
- int ret;
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- if ( !hash ) return -1;
- k = kh_put(str2int, hash, str, &ret);
- if (ret == 0) return kh_val(hash, k);
- kh_val(hash, k) = kh_size(hash) - 1;
- return kh_val(hash, k);
-}
-
-/*
- * Set a new key,value pair. On success returns the bin index, on
- * error -1 is returned. Note that the key must contnue to exist
- * throughout the whole life of _hash.
- */
-static inline int khash_str2int_set(void *_hash, const char *str, int value)
-{
- khint_t k;
- int ret;
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- if ( !hash ) return -1;
- k = kh_put(str2int, hash, str, &ret);
- kh_val(hash,k) = value;
- return k;
-}
-
-/*
- * Return the number of keys in the hash table.
- */
-static inline int khash_str2int_size(void *_hash)
-{
- khash_t(str2int) *hash = (khash_t(str2int)*)_hash;
- return kh_size(hash);
-}
-
-#endif
diff --git a/htslib/htslib/klist.h b/htslib/htslib/klist.h
deleted file mode 100644
index 8b33f27..0000000
--- a/htslib/htslib/klist.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008-2009, by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#ifndef _AC_KLIST_H
-#define _AC_KLIST_H
-
-#include <stdlib.h>
-
-#define KMEMPOOL_INIT(name, kmptype_t, kmpfree_f) \
- typedef struct { \
- size_t cnt, n, max; \
- kmptype_t **buf; \
- } kmp_##name##_t; \
- static inline kmp_##name##_t *kmp_init_##name(void) { \
- return calloc(1, sizeof(kmp_##name##_t)); \
- } \
- static inline void kmp_destroy_##name(kmp_##name##_t *mp) { \
- size_t k; \
- for (k = 0; k < mp->n; ++k) { \
- kmpfree_f(mp->buf[k]); free(mp->buf[k]); \
- } \
- free(mp->buf); free(mp); \
- } \
- static inline kmptype_t *kmp_alloc_##name(kmp_##name##_t *mp) { \
- ++mp->cnt; \
- if (mp->n == 0) return calloc(1, sizeof(kmptype_t)); \
- return mp->buf[--mp->n]; \
- } \
- static inline void kmp_free_##name(kmp_##name##_t *mp, kmptype_t *p) { \
- --mp->cnt; \
- if (mp->n == mp->max) { \
- mp->max = mp->max? mp->max<<1 : 16; \
- mp->buf = realloc(mp->buf, sizeof(kmptype_t *) * mp->max); \
- } \
- mp->buf[mp->n++] = p; \
- }
-
-#define kmempool_t(name) kmp_##name##_t
-#define kmp_init(name) kmp_init_##name()
-#define kmp_destroy(name, mp) kmp_destroy_##name(mp)
-#define kmp_alloc(name, mp) kmp_alloc_##name(mp)
-#define kmp_free(name, mp, p) kmp_free_##name(mp, p)
-
-#define KLIST_INIT(name, kltype_t, kmpfree_t) \
- struct __kl1_##name { \
- kltype_t data; \
- struct __kl1_##name *next; \
- }; \
- typedef struct __kl1_##name kl1_##name; \
- KMEMPOOL_INIT(name, kl1_##name, kmpfree_t) \
- typedef struct { \
- kl1_##name *head, *tail; \
- kmp_##name##_t *mp; \
- size_t size; \
- } kl_##name##_t; \
- static inline kl_##name##_t *kl_init_##name(void) { \
- kl_##name##_t *kl = calloc(1, sizeof(kl_##name##_t)); \
- kl->mp = kmp_init(name); \
- kl->head = kl->tail = kmp_alloc(name, kl->mp); \
- kl->head->next = 0; \
- return kl; \
- } \
- static inline void kl_destroy_##name(kl_##name##_t *kl) { \
- kl1_##name *p; \
- for (p = kl->head; p != kl->tail; p = p->next) \
- kmp_free(name, kl->mp, p); \
- kmp_free(name, kl->mp, p); \
- kmp_destroy(name, kl->mp); \
- free(kl); \
- } \
- static inline kltype_t *kl_pushp_##name(kl_##name##_t *kl) { \
- kl1_##name *q, *p = kmp_alloc(name, kl->mp); \
- q = kl->tail; p->next = 0; kl->tail->next = p; kl->tail = p; \
- ++kl->size; \
- return &q->data; \
- } \
- static inline int kl_shift_##name(kl_##name##_t *kl, kltype_t *d) { \
- kl1_##name *p; \
- if (kl->head->next == 0) return -1; \
- --kl->size; \
- p = kl->head; kl->head = kl->head->next; \
- if (d) *d = p->data; \
- kmp_free(name, kl->mp, p); \
- return 0; \
- }
-
-#define kliter_t(name) kl1_##name
-#define klist_t(name) kl_##name##_t
-#define kl_val(iter) ((iter)->data)
-#define kl_next(iter) ((iter)->next)
-#define kl_begin(kl) ((kl)->head)
-#define kl_end(kl) ((kl)->tail)
-
-#define kl_init(name) kl_init_##name()
-#define kl_destroy(name, kl) kl_destroy_##name(kl)
-#define kl_pushp(name, kl) kl_pushp_##name(kl)
-#define kl_shift(name, kl, d) kl_shift_##name(kl, d)
-
-#endif
diff --git a/htslib/htslib/knetfile.h b/htslib/htslib/knetfile.h
deleted file mode 100644
index b200a51..0000000
--- a/htslib/htslib/knetfile.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008 by Genome Research Ltd (GRL).
- 2010 by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#ifndef KNETFILE_H
-#define KNETFILE_H
-
-#include <stdint.h>
-#include <fcntl.h>
-
-#ifndef _WIN32
-#define netread(fd, ptr, len) read(fd, ptr, len)
-#define netwrite(fd, ptr, len) write(fd, ptr, len)
-#define netclose(fd) close(fd)
-#else
-#include <winsock2.h>
-#define netread(fd, ptr, len) recv(fd, ptr, len, 0)
-#define netwrite(fd, ptr, len) send(fd, ptr, len, 0)
-#define netclose(fd) closesocket(fd)
-#endif
-
-// FIXME: currently I/O is unbuffered
-
-#define KNF_TYPE_LOCAL 1
-#define KNF_TYPE_FTP 2
-#define KNF_TYPE_HTTP 3
-
-typedef struct knetFile_s {
- int type, fd;
- int64_t offset;
- char *host, *port;
-
- // the following are for FTP only
- int ctrl_fd, pasv_ip[4], pasv_port, max_response, no_reconnect, is_ready;
- char *response, *retr, *size_cmd;
- int64_t seek_offset; // for lazy seek
- int64_t file_size;
-
- // the following are for HTTP only
- char *path, *http_host;
-} knetFile;
-
-#define knet_tell(fp) ((fp)->offset)
-#define knet_fileno(fp) ((fp)->fd)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef _WIN32
- int knet_win32_init();
- void knet_win32_destroy();
-#endif
-
- knetFile *knet_open(const char *fn, const char *mode);
-
- /*
- This only works with local files.
- */
- knetFile *knet_dopen(int fd, const char *mode);
-
- /*
- If ->is_ready==0, this routine updates ->fd; otherwise, it simply
- reads from ->fd.
- */
- ssize_t knet_read(knetFile *fp, void *buf, size_t len);
-
- /*
- This routine only sets ->offset and ->is_ready=0. It does not
- communicate with the FTP server.
- */
- off_t knet_seek(knetFile *fp, off_t off, int whence);
- int knet_close(knetFile *fp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/kseq.h b/htslib/htslib/kseq.h
deleted file mode 100644
index e1a3eaa..0000000
--- a/htslib/htslib/kseq.h
+++ /dev/null
@@ -1,253 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008, 2009, 2011 Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-/* Last Modified: 05MAR2012 */
-
-#ifndef AC_KSEQ_H
-#define AC_KSEQ_H
-
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define KS_SEP_SPACE 0 // isspace(): \t, \n, \v, \f, \r
-#define KS_SEP_TAB 1 // isspace() && !' '
-#define KS_SEP_LINE 2 // line separator: "\n" (Unix) or "\r\n" (Windows)
-#define KS_SEP_MAX 2
-
-#define __KS_TYPE(type_t) \
- typedef struct __kstream_t { \
- int begin, end; \
- int is_eof:2, bufsize:30; \
- uint64_t seek_pos; \
- type_t f; \
- unsigned char *buf; \
- } kstream_t;
-
-#define ks_eof(ks) ((ks)->is_eof && (ks)->begin >= (ks)->end)
-#define ks_rewind(ks) ((ks)->is_eof = (ks)->begin = (ks)->end = 0)
-
-#define __KS_BASIC(SCOPE, type_t, __bufsize) \
- SCOPE kstream_t *ks_init(type_t f) \
- { \
- kstream_t *ks = (kstream_t*)calloc(1, sizeof(kstream_t)); \
- ks->f = f; ks->bufsize = __bufsize; \
- ks->buf = (unsigned char*)malloc(__bufsize); \
- return ks; \
- } \
- SCOPE void ks_destroy(kstream_t *ks) \
- { \
- if (!ks) return; \
- free(ks->buf); \
- free(ks); \
- }
-
-#define __KS_INLINED(__read) \
- static inline int ks_getc(kstream_t *ks) \
- { \
- if (ks->is_eof && ks->begin >= ks->end) return -1; \
- if (ks->begin >= ks->end) { \
- ks->begin = 0; \
- ks->end = __read(ks->f, ks->buf, ks->bufsize); \
- if (ks->end == 0) { ks->is_eof = 1; return -1; } \
- } \
- ks->seek_pos++; \
- return (int)ks->buf[ks->begin++]; \
- } \
- static inline int ks_getuntil(kstream_t *ks, int delimiter, kstring_t *str, int *dret) \
- { return ks_getuntil2(ks, delimiter, str, dret, 0); }
-
-#ifndef KSTRING_T
-#define KSTRING_T kstring_t
-typedef struct __kstring_t {
- size_t l, m;
- char *s;
-} kstring_t;
-#endif
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-#define __KS_GETUNTIL(SCOPE, __read) \
- SCOPE int ks_getuntil2(kstream_t *ks, int delimiter, kstring_t *str, int *dret, int append) \
- { \
- int gotany = 0; \
- if (dret) *dret = 0; \
- str->l = append? str->l : 0; \
- uint64_t seek_pos = str->l; \
- for (;;) { \
- int i; \
- if (ks->begin >= ks->end) { \
- if (!ks->is_eof) { \
- ks->begin = 0; \
- ks->end = __read(ks->f, ks->buf, ks->bufsize); \
- if (ks->end == 0) { ks->is_eof = 1; break; } \
- } else break; \
- } \
- if (delimiter == KS_SEP_LINE) { \
- for (i = ks->begin; i < ks->end; ++i) \
- if (ks->buf[i] == '\n') break; \
- } else if (delimiter > KS_SEP_MAX) { \
- for (i = ks->begin; i < ks->end; ++i) \
- if (ks->buf[i] == delimiter) break; \
- } else if (delimiter == KS_SEP_SPACE) { \
- for (i = ks->begin; i < ks->end; ++i) \
- if (isspace(ks->buf[i])) break; \
- } else if (delimiter == KS_SEP_TAB) { \
- for (i = ks->begin; i < ks->end; ++i) \
- if (isspace(ks->buf[i]) && ks->buf[i] != ' ') break; \
- } else i = 0; /* never come to here! */ \
- if (str->m - str->l < (size_t)(i - ks->begin + 1)) { \
- str->m = str->l + (i - ks->begin) + 1; \
- kroundup32(str->m); \
- str->s = (char*)realloc(str->s, str->m); \
- } \
- seek_pos += i - ks->begin; if ( i < ks->end ) seek_pos++; \
- gotany = 1; \
- memcpy(str->s + str->l, ks->buf + ks->begin, i - ks->begin); \
- str->l = str->l + (i - ks->begin); \
- ks->begin = i + 1; \
- if (i < ks->end) { \
- if (dret) *dret = ks->buf[i]; \
- break; \
- } \
- } \
- if (!gotany && ks_eof(ks)) return -1; \
- ks->seek_pos += seek_pos; \
- if (str->s == 0) { \
- str->m = 1; \
- str->s = (char*)calloc(1, 1); \
- } else if (delimiter == KS_SEP_LINE && str->l > 1 && str->s[str->l-1] == '\r') --str->l; \
- str->s[str->l] = '\0'; \
- return str->l; \
- }
-
-#define KSTREAM_INIT2(SCOPE, type_t, __read, __bufsize) \
- __KS_TYPE(type_t) \
- __KS_BASIC(SCOPE, type_t, __bufsize) \
- __KS_GETUNTIL(SCOPE, __read) \
- __KS_INLINED(__read)
-
-#define KSTREAM_INIT(type_t, __read, __bufsize) KSTREAM_INIT2(static, type_t, __read, __bufsize)
-
-#define KSTREAM_DECLARE(type_t, __read) \
- __KS_TYPE(type_t) \
- extern int ks_getuntil2(kstream_t *ks, int delimiter, kstring_t *str, int *dret, int append); \
- extern kstream_t *ks_init(type_t f); \
- extern void ks_destroy(kstream_t *ks); \
- __KS_INLINED(__read)
-
-/******************
- * FASTA/Q parser *
- ******************/
-
-#define kseq_rewind(ks) ((ks)->last_char = (ks)->f->is_eof = (ks)->f->begin = (ks)->f->end = 0)
-
-#define __KSEQ_BASIC(SCOPE, type_t) \
- SCOPE kseq_t *kseq_init(type_t fd) \
- { \
- kseq_t *s = (kseq_t*)calloc(1, sizeof(kseq_t)); \
- s->f = ks_init(fd); \
- return s; \
- } \
- SCOPE void kseq_destroy(kseq_t *ks) \
- { \
- if (!ks) return; \
- free(ks->name.s); free(ks->comment.s); free(ks->seq.s); free(ks->qual.s); \
- ks_destroy(ks->f); \
- free(ks); \
- }
-
-/* Return value:
- >=0 length of the sequence (normal)
- -1 end-of-file
- -2 truncated quality string
- */
-#define __KSEQ_READ(SCOPE) \
- SCOPE int kseq_read(kseq_t *seq) \
- { \
- int c; \
- kstream_t *ks = seq->f; \
- if (seq->last_char == 0) { /* then jump to the next header line */ \
- while ((c = ks_getc(ks)) != -1 && c != '>' && c != '@'); \
- if (c == -1) return -1; /* end of file */ \
- seq->last_char = c; \
- } /* else: the first header char has been read in the previous call */ \
- seq->comment.l = seq->seq.l = seq->qual.l = 0; /* reset all members */ \
- if (ks_getuntil(ks, 0, &seq->name, &c) < 0) return -1; /* normal exit: EOF */ \
- if (c != '\n') ks_getuntil(ks, KS_SEP_LINE, &seq->comment, 0); /* read FASTA/Q comment */ \
- if (seq->seq.s == 0) { /* we can do this in the loop below, but that is slower */ \
- seq->seq.m = 256; \
- seq->seq.s = (char*)malloc(seq->seq.m); \
- } \
- while ((c = ks_getc(ks)) != -1 && c != '>' && c != '+' && c != '@') { \
- if (c == '\n') continue; /* skip empty lines */ \
- seq->seq.s[seq->seq.l++] = c; /* this is safe: we always have enough space for 1 char */ \
- ks_getuntil2(ks, KS_SEP_LINE, &seq->seq, 0, 1); /* read the rest of the line */ \
- } \
- if (c == '>' || c == '@') seq->last_char = c; /* the first header char has been read */ \
- if (seq->seq.l + 1 >= seq->seq.m) { /* seq->seq.s[seq->seq.l] below may be out of boundary */ \
- seq->seq.m = seq->seq.l + 2; \
- kroundup32(seq->seq.m); /* rounded to the next closest 2^k */ \
- seq->seq.s = (char*)realloc(seq->seq.s, seq->seq.m); \
- } \
- seq->seq.s[seq->seq.l] = 0; /* null terminated string */ \
- if (c != '+') return seq->seq.l; /* FASTA */ \
- if (seq->qual.m < seq->seq.m) { /* allocate memory for qual in case insufficient */ \
- seq->qual.m = seq->seq.m; \
- seq->qual.s = (char*)realloc(seq->qual.s, seq->qual.m); \
- } \
- while ((c = ks_getc(ks)) != -1 && c != '\n'); /* skip the rest of '+' line */ \
- if (c == -1) return -2; /* error: no quality string */ \
- while (ks_getuntil2(ks, KS_SEP_LINE, &seq->qual, 0, 1) >= 0 && seq->qual.l < seq->seq.l); \
- seq->last_char = 0; /* we have not come to the next header line */ \
- if (seq->seq.l != seq->qual.l) return -2; /* error: qual string is of a different length */ \
- return seq->seq.l; \
- }
-
-#define __KSEQ_TYPE(type_t) \
- typedef struct { \
- kstring_t name, comment, seq, qual; \
- int last_char; \
- kstream_t *f; \
- } kseq_t;
-
-#define KSEQ_INIT2(SCOPE, type_t, __read) \
- KSTREAM_INIT(type_t, __read, 16384) \
- __KSEQ_TYPE(type_t) \
- __KSEQ_BASIC(SCOPE, type_t) \
- __KSEQ_READ(SCOPE)
-
-#define KSEQ_INIT(type_t, __read) KSEQ_INIT2(static, type_t, __read)
-
-#define KSEQ_DECLARE(type_t) \
- __KS_TYPE(type_t) \
- __KSEQ_TYPE(type_t) \
- extern kseq_t *kseq_init(type_t fd); \
- void kseq_destroy(kseq_t *ks); \
- int kseq_read(kseq_t *seq);
-
-#endif
diff --git a/htslib/htslib/ksort.h b/htslib/htslib/ksort.h
deleted file mode 100644
index aa0bb93..0000000
--- a/htslib/htslib/ksort.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008 Genome Research Ltd (GRL).
-
- 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.
-*/
-
-/* Contact: Heng Li <lh3 at sanger.ac.uk> */
-
-/*
- 2012-12-11 (0.1.4):
-
- * Defined __ks_insertsort_##name as static to compile with C99.
-
- 2008-11-16 (0.1.4):
-
- * Fixed a bug in introsort() that happens in rare cases.
-
- 2008-11-05 (0.1.3):
-
- * Fixed a bug in introsort() for complex comparisons.
-
- * Fixed a bug in mergesort(). The previous version is not stable.
-
- 2008-09-15 (0.1.2):
-
- * Accelerated introsort. On my Mac (not on another Linux machine),
- my implementation is as fast as std::sort on random input.
-
- * Added combsort and in introsort, switch to combsort if the
- recursion is too deep.
-
- 2008-09-13 (0.1.1):
-
- * Added k-small algorithm
-
- 2008-09-05 (0.1.0):
-
- * Initial version
-
-*/
-
-#ifndef AC_KSORT_H
-#define AC_KSORT_H
-
-#include <stdlib.h>
-#include <string.h>
-
-typedef struct {
- void *left, *right;
- int depth;
-} ks_isort_stack_t;
-
-#define KSORT_SWAP(type_t, a, b) { register type_t t=(a); (a)=(b); (b)=t; }
-
-#define KSORT_INIT(name, type_t, __sort_lt) \
- void ks_mergesort_##name(size_t n, type_t array[], type_t temp[]) \
- { \
- type_t *a2[2], *a, *b; \
- int curr, shift; \
- \
- a2[0] = array; \
- a2[1] = temp? temp : (type_t*)malloc(sizeof(type_t) * n); \
- for (curr = 0, shift = 0; (1ul<<shift) < n; ++shift) { \
- a = a2[curr]; b = a2[1-curr]; \
- if (shift == 0) { \
- type_t *p = b, *i, *eb = a + n; \
- for (i = a; i < eb; i += 2) { \
- if (i == eb - 1) *p++ = *i; \
- else { \
- if (__sort_lt(*(i+1), *i)) { \
- *p++ = *(i+1); *p++ = *i; \
- } else { \
- *p++ = *i; *p++ = *(i+1); \
- } \
- } \
- } \
- } else { \
- size_t i, step = 1ul<<shift; \
- for (i = 0; i < n; i += step<<1) { \
- type_t *p, *j, *k, *ea, *eb; \
- if (n < i + step) { \
- ea = a + n; eb = a; \
- } else { \
- ea = a + i + step; \
- eb = a + (n < i + (step<<1)? n : i + (step<<1)); \
- } \
- j = a + i; k = a + i + step; p = b + i; \
- while (j < ea && k < eb) { \
- if (__sort_lt(*k, *j)) *p++ = *k++; \
- else *p++ = *j++; \
- } \
- while (j < ea) *p++ = *j++; \
- while (k < eb) *p++ = *k++; \
- } \
- } \
- curr = 1 - curr; \
- } \
- if (curr == 1) { \
- type_t *p = a2[0], *i = a2[1], *eb = array + n; \
- for (; p < eb; ++i) *p++ = *i; \
- } \
- if (temp == 0) free(a2[1]); \
- } \
- void ks_heapadjust_##name(size_t i, size_t n, type_t l[]) \
- { \
- size_t k = i; \
- type_t tmp = l[i]; \
- while ((k = (k << 1) + 1) < n) { \
- if (k != n - 1 && __sort_lt(l[k], l[k+1])) ++k; \
- if (__sort_lt(l[k], tmp)) break; \
- l[i] = l[k]; i = k; \
- } \
- l[i] = tmp; \
- } \
- void ks_heapmake_##name(size_t lsize, type_t l[]) \
- { \
- size_t i; \
- for (i = (lsize >> 1) - 1; i != (size_t)(-1); --i) \
- ks_heapadjust_##name(i, lsize, l); \
- } \
- void ks_heapsort_##name(size_t lsize, type_t l[]) \
- { \
- size_t i; \
- for (i = lsize - 1; i > 0; --i) { \
- type_t tmp; \
- tmp = *l; *l = l[i]; l[i] = tmp; ks_heapadjust_##name(0, i, l); \
- } \
- } \
- static inline void __ks_insertsort_##name(type_t *s, type_t *t) \
- { \
- type_t *i, *j, swap_tmp; \
- for (i = s + 1; i < t; ++i) \
- for (j = i; j > s && __sort_lt(*j, *(j-1)); --j) { \
- swap_tmp = *j; *j = *(j-1); *(j-1) = swap_tmp; \
- } \
- } \
- void ks_combsort_##name(size_t n, type_t a[]) \
- { \
- const double shrink_factor = 1.2473309501039786540366528676643; \
- int do_swap; \
- size_t gap = n; \
- type_t tmp, *i, *j; \
- do { \
- if (gap > 2) { \
- gap = (size_t)(gap / shrink_factor); \
- if (gap == 9 || gap == 10) gap = 11; \
- } \
- do_swap = 0; \
- for (i = a; i < a + n - gap; ++i) { \
- j = i + gap; \
- if (__sort_lt(*j, *i)) { \
- tmp = *i; *i = *j; *j = tmp; \
- do_swap = 1; \
- } \
- } \
- } while (do_swap || gap > 2); \
- if (gap != 1) __ks_insertsort_##name(a, a + n); \
- } \
- void ks_introsort_##name(size_t n, type_t a[]) \
- { \
- int d; \
- ks_isort_stack_t *top, *stack; \
- type_t rp, swap_tmp; \
- type_t *s, *t, *i, *j, *k; \
- \
- if (n < 1) return; \
- else if (n == 2) { \
- if (__sort_lt(a[1], a[0])) { swap_tmp = a[0]; a[0] = a[1]; a[1] = swap_tmp; } \
- return; \
- } \
- for (d = 2; 1ul<<d < n; ++d); \
- stack = (ks_isort_stack_t*)malloc(sizeof(ks_isort_stack_t) * ((sizeof(size_t)*d)+2)); \
- top = stack; s = a; t = a + (n-1); d <<= 1; \
- while (1) { \
- if (s < t) { \
- if (--d == 0) { \
- ks_combsort_##name(t - s + 1, s); \
- t = s; \
- continue; \
- } \
- i = s; j = t; k = i + ((j-i)>>1) + 1; \
- if (__sort_lt(*k, *i)) { \
- if (__sort_lt(*k, *j)) k = j; \
- } else k = __sort_lt(*j, *i)? i : j; \
- rp = *k; \
- if (k != t) { swap_tmp = *k; *k = *t; *t = swap_tmp; } \
- for (;;) { \
- do ++i; while (__sort_lt(*i, rp)); \
- do --j; while (i <= j && __sort_lt(rp, *j)); \
- if (j <= i) break; \
- swap_tmp = *i; *i = *j; *j = swap_tmp; \
- } \
- swap_tmp = *i; *i = *t; *t = swap_tmp; \
- if (i-s > t-i) { \
- if (i-s > 16) { top->left = s; top->right = i-1; top->depth = d; ++top; } \
- s = t-i > 16? i+1 : t; \
- } else { \
- if (t-i > 16) { top->left = i+1; top->right = t; top->depth = d; ++top; } \
- t = i-s > 16? i-1 : s; \
- } \
- } else { \
- if (top == stack) { \
- free(stack); \
- __ks_insertsort_##name(a, a+n); \
- return; \
- } else { --top; s = (type_t*)top->left; t = (type_t*)top->right; d = top->depth; } \
- } \
- } \
- } \
- /* This function is adapted from: http://ndevilla.free.fr/median/ */ \
- /* 0 <= kk < n */ \
- type_t ks_ksmall_##name(size_t n, type_t arr[], size_t kk) \
- { \
- type_t *low, *high, *k, *ll, *hh, *mid; \
- low = arr; high = arr + n - 1; k = arr + kk; \
- for (;;) { \
- if (high <= low) return *k; \
- if (high == low + 1) { \
- if (__sort_lt(*high, *low)) KSORT_SWAP(type_t, *low, *high); \
- return *k; \
- } \
- mid = low + (high - low) / 2; \
- if (__sort_lt(*high, *mid)) KSORT_SWAP(type_t, *mid, *high); \
- if (__sort_lt(*high, *low)) KSORT_SWAP(type_t, *low, *high); \
- if (__sort_lt(*low, *mid)) KSORT_SWAP(type_t, *mid, *low); \
- KSORT_SWAP(type_t, *mid, *(low+1)); \
- ll = low + 1; hh = high; \
- for (;;) { \
- do ++ll; while (__sort_lt(*ll, *low)); \
- do --hh; while (__sort_lt(*low, *hh)); \
- if (hh < ll) break; \
- KSORT_SWAP(type_t, *ll, *hh); \
- } \
- KSORT_SWAP(type_t, *low, *hh); \
- if (hh <= k) low = ll; \
- if (hh >= k) high = hh - 1; \
- } \
- } \
- void ks_shuffle_##name(size_t n, type_t a[]) \
- { \
- int i, j; \
- for (i = n; i > 1; --i) { \
- type_t tmp; \
- j = (int)(drand48() * i); \
- tmp = a[j]; a[j] = a[i-1]; a[i-1] = tmp; \
- } \
- }
-
-#define ks_mergesort(name, n, a, t) ks_mergesort_##name(n, a, t)
-#define ks_introsort(name, n, a) ks_introsort_##name(n, a)
-#define ks_combsort(name, n, a) ks_combsort_##name(n, a)
-#define ks_heapsort(name, n, a) ks_heapsort_##name(n, a)
-#define ks_heapmake(name, n, a) ks_heapmake_##name(n, a)
-#define ks_heapadjust(name, i, n, a) ks_heapadjust_##name(i, n, a)
-#define ks_ksmall(name, n, a, k) ks_ksmall_##name(n, a, k)
-#define ks_shuffle(name, n, a) ks_shuffle_##name(n, a)
-
-#define ks_lt_generic(a, b) ((a) < (b))
-#define ks_lt_str(a, b) (strcmp((a), (b)) < 0)
-
-typedef const char *ksstr_t;
-
-#define KSORT_INIT_GENERIC(type_t) KSORT_INIT(type_t, type_t, ks_lt_generic)
-#define KSORT_INIT_STR KSORT_INIT(str, ksstr_t, ks_lt_str)
-
-#endif
diff --git a/htslib/htslib/kstring.h b/htslib/htslib/kstring.h
deleted file mode 100644
index 7e9b98d..0000000
--- a/htslib/htslib/kstring.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/* The MIT License
-
- Copyright (C) 2011 by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#ifndef KSTRING_H
-#define KSTRING_H
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdint.h>
-#include <stdio.h>
-
-#ifndef kroundup32
-#define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x))
-#endif
-
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-#define KS_ATTR_PRINTF(fmt, arg) __attribute__((__format__ (__printf__, fmt, arg)))
-#else
-#define KS_ATTR_PRINTF(fmt, arg)
-#endif
-
-
-/* kstring_t is a simple non-opaque type whose fields are likely to be
- * used directly by user code (but see also ks_str() and ks_len() below).
- * A kstring_t object is initialised by either of
- * kstring_t str = { 0, 0, NULL };
- * kstring_t str; ...; str.l = str.m = 0; str.s = NULL;
- * and either ownership of the underlying buffer should be given away before
- * the object disappears (see ks_release() below) or the kstring_t should be
- * destroyed with free(str.s); */
-#ifndef KSTRING_T
-#define KSTRING_T kstring_t
-typedef struct __kstring_t {
- size_t l, m;
- char *s;
-} kstring_t;
-#endif
-
-typedef struct {
- uint64_t tab[4];
- int sep, finished;
- const char *p; // end of the current token
-} ks_tokaux_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- int kvsprintf(kstring_t *s, const char *fmt, va_list ap) KS_ATTR_PRINTF(2,0);
- int ksprintf(kstring_t *s, const char *fmt, ...) KS_ATTR_PRINTF(2,3);
- int ksplit_core(char *s, int delimiter, int *_max, int **_offsets);
- char *kstrstr(const char *str, const char *pat, int **_prep);
- char *kstrnstr(const char *str, const char *pat, int n, int **_prep);
- void *kmemmem(const void *_str, int n, const void *_pat, int m, int **_prep);
-
- /* kstrtok() is similar to strtok_r() except that str is not
- * modified and both str and sep can be NULL. For efficiency, it is
- * actually recommended to set both to NULL in the subsequent calls
- * if sep is not changed. */
- char *kstrtok(const char *str, const char *sep, ks_tokaux_t *aux);
-
-#ifdef __cplusplus
-}
-#endif
-
-static inline int ks_resize(kstring_t *s, size_t size)
-{
- if (s->m < size) {
- char *tmp;
- s->m = size;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return -1;
- }
- return 0;
-}
-
-static inline char *ks_str(kstring_t *s)
-{
- return s->s;
-}
-
-static inline size_t ks_len(kstring_t *s)
-{
- return s->l;
-}
-
-// Give ownership of the underlying buffer away to something else (making
-// that something else responsible for freeing it), leaving the kstring_t
-// empty and ready to be used again, or ready to go out of scope without
-// needing free(str.s) to prevent a memory leak.
-static inline char *ks_release(kstring_t *s)
-{
- char *ss = s->s;
- s->l = s->m = 0;
- s->s = NULL;
- return ss;
-}
-
-static inline int kputsn(const char *p, int l, kstring_t *s)
-{
- if (s->l + l + 1 >= s->m) {
- char *tmp;
- s->m = s->l + l + 2;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- memcpy(s->s + s->l, p, l);
- s->l += l;
- s->s[s->l] = 0;
- return l;
-}
-
-static inline int kputs(const char *p, kstring_t *s)
-{
- return kputsn(p, strlen(p), s);
-}
-
-static inline int kputc(int c, kstring_t *s)
-{
- if (s->l + 1 >= s->m) {
- char *tmp;
- s->m = s->l + 2;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- s->s[s->l++] = c;
- s->s[s->l] = 0;
- return c;
-}
-
-static inline int kputc_(int c, kstring_t *s)
-{
- if (s->l + 1 > s->m) {
- char *tmp;
- s->m = s->l + 1;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- s->s[s->l++] = c;
- return 1;
-}
-
-static inline int kputsn_(const void *p, int l, kstring_t *s)
-{
- if (s->l + l > s->m) {
- char *tmp;
- s->m = s->l + l;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- memcpy(s->s + s->l, p, l);
- s->l += l;
- return l;
-}
-
-static inline int kputw(int c, kstring_t *s)
-{
- char buf[16];
- int i, l = 0;
- unsigned int x = c;
- if (c < 0) x = -x;
- do { buf[l++] = x%10 + '0'; x /= 10; } while (x > 0);
- if (c < 0) buf[l++] = '-';
- if (s->l + l + 1 >= s->m) {
- char *tmp;
- s->m = s->l + l + 2;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- for (i = l - 1; i >= 0; --i) s->s[s->l++] = buf[i];
- s->s[s->l] = 0;
- return 0;
-}
-
-static inline int kputuw(unsigned c, kstring_t *s)
-{
- char buf[16];
- int l, i;
- unsigned x;
- if (c == 0) return kputc('0', s);
- for (l = 0, x = c; x > 0; x /= 10) buf[l++] = x%10 + '0';
- if (s->l + l + 1 >= s->m) {
- char *tmp;
- s->m = s->l + l + 2;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- for (i = l - 1; i >= 0; --i) s->s[s->l++] = buf[i];
- s->s[s->l] = 0;
- return 0;
-}
-
-static inline int kputl(long c, kstring_t *s)
-{
- char buf[32];
- int i, l = 0;
- unsigned long x = c;
- if (c < 0) x = -x;
- do { buf[l++] = x%10 + '0'; x /= 10; } while (x > 0);
- if (c < 0) buf[l++] = '-';
- if (s->l + l + 1 >= s->m) {
- char *tmp;
- s->m = s->l + l + 2;
- kroundup32(s->m);
- if ((tmp = (char*)realloc(s->s, s->m)))
- s->s = tmp;
- else
- return EOF;
- }
- for (i = l - 1; i >= 0; --i) s->s[s->l++] = buf[i];
- s->s[s->l] = 0;
- return 0;
-}
-
-/*
- * Returns 's' split by delimiter, with *n being the number of components;
- * NULL on failue.
- */
-static inline int *ksplit(kstring_t *s, int delimiter, int *n)
-{
- int max = 0, *offsets = 0;
- *n = ksplit_core(s->s, delimiter, &max, &offsets);
- return offsets;
-}
-
-#endif
diff --git a/htslib/htslib/regidx.h b/htslib/htslib/regidx.h
deleted file mode 100644
index 39a795e..0000000
--- a/htslib/htslib/regidx.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- Copyright (C) 2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
- 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.
-*/
-
-/*
- Regions indexing with an optional payload. Inspired by samtools/bedidx.c.
- This code is intended as future replacement of bcf_sr_regions_t.
-
- Example of usage:
-
- // Init the parser and print regions. In this example the payload is a
- // pointer to a string. For the description of parse_custom and
- // free_custom functions, see regidx_parse_f and regidx_free_f below,
- // and for working example see test/test-regidx.c.
- regidx_t *idx = regidx_init(in_fname,parse_custom,free_custom,sizeof(char*),NULL);
-
- // Query overlap with chr:from-to
- regitr_t itr;
- if ( regidx_overlap(idx, chr,from,to, &itr) ) printf("There is an overlap!\n");
-
- while ( REGITR_OVERLAP(itr,from,to) )
- {
- printf("[%d,%d] overlaps with [%d,%d], payload=%s\n", from,to,
- REGITR_START(itr), REGITR_END(itr), REGITR_PAYLOAD(itr,char*));
- itr.i++;
- }
-
- regidx_destroy(regs);
-*/
-
-#ifndef HTSLIB_REGIDX_H
-#define HTSLIB_REGIDX_H
-
-#include <stdio.h>
-#include <inttypes.h>
-
-typedef struct _regidx_t regidx_t;
-typedef struct
-{
- uint32_t start, end;
-}
-reg_t;
-typedef struct
-{
- int i, n;
- reg_t *reg;
- void *payload;
-}
-regitr_t;
-
-#define REGITR_START(itr) (itr).reg[(itr).i].start
-#define REGITR_END(itr) (itr).reg[(itr).i].end
-#define REGITR_PAYLOAD(itr,type_t) ((type_t*)(itr).payload)[(itr).i]
-#define REGITR_OVERLAP(itr,from,to) (itr.i < itr.n && REGITR_START(itr)<=to && REGITR_END(itr)>=from )
-
-/*
- * regidx_parse_f - Function to parse one input line, such as regidx_parse_bed
- * or regidx_parse_tab below. The function is expected to set `chr_from` and
- * `chr_to` to point to first and last character of chromosome name and set
- * coordinates `reg->start` and `reg->end` (0-based, inclusive). If
- * regidx_init() was called with non-zero payload_size, the `payload` points
- * to a memory location of the payload_size and `usr` is data passed to
- * regidx_init(). Any memory allocated by the function will be freed by
- * regidx_free_f on regidx_destroy().
- *
- * Return value: 0 on success, -1 to skip a record, -2 on fatal error.
- */
-typedef int (*regidx_parse_f)(const char *line, char **chr_beg, char **chr_end, reg_t *reg, void *payload, void *usr);
-typedef void (*regidx_free_f)(void *payload);
-
-int regidx_parse_bed(const char*,char**,char**,reg_t*,void*,void*); // CHROM,FROM,TO (0-based,right-open)
-int regidx_parse_tab(const char*,char**,char**,reg_t*,void*,void*); // CHROM,POS (1-based, inclusive)
-
-/*
- * regidx_init() - creates new index
- * @param fname: input file name or NULL if regions will be added one-by-one via regidx_insert()
- * @param parsef: regidx_parse_bed, regidx_parse_tab or see description of regidx_parse_f. If NULL,
- * the format will be autodected, currently either regidx_parse_tab (the default) or
- * regidx_parse_bed (file must be named 'bed' or 'bed.gz') will be used. Note that
- * the exact autodetection algorithm will change.
- * @param freef: NULL or see description of regidx_parse_f
- * @param payload_size: 0 with regidx_parse_bed, regidx_parse_tab or see regidx_parse_f
- * @param usr: optional user data passed to regidx_parse_f
- *
- * Returns index on success or NULL on error.
- */
-regidx_t *regidx_init(const char *fname, regidx_parse_f parsef, regidx_free_f freef, size_t payload_size, void *usr);
-
-/*
- * regidx_destroy() - free memory allocated by regidx_init
- */
-void regidx_destroy(regidx_t *idx);
-
-/*
- * regidx_overlap() - check overlap of the location chr:from-to with regions
- * @param start,end: 0-based start, end coordinate (inclusive)
- * @param itr: pointer to iterator, can be NULL if not needed
- *
- * Returns 0 if there is no overlap or 1 if overlap is found. The overlapping
- * regions can be iterated as shown in the example above.
- */
-int regidx_overlap(regidx_t *idx, const char *chr, uint32_t start, uint32_t end, regitr_t *itr);
-
-/*
- * regidx_insert() - add a new region.
- *
- * After last region has been added, call regidx_insert(idx,NULL) to
- * build the index.
- *
- * Returns 0 on success or -1 on error.
- */
-int regidx_insert(regidx_t *idx, char *line);
-
-/*
- * regidx_seq_names() - return list of all sequence names
- */
-char **regidx_seq_names(regidx_t *idx, int *n);
-
-/*
- * regidx_seq_nregs() - number of regions
- * regidx_nregs() - total number of regions
- */
-int regidx_seq_nregs(regidx_t *idx, const char *seq);
-int regidx_nregs(regidx_t *idx);
-
-#endif
-
diff --git a/htslib/htslib/sam.h b/htslib/htslib/sam.h
deleted file mode 100644
index 9e6d6a3..0000000
--- a/htslib/htslib/sam.h
+++ /dev/null
@@ -1,426 +0,0 @@
-/* sam.h -- SAM and BAM file I/O and manipulation.
-
- Copyright (C) 2008, 2009, 2013-2014 Genome Research Ltd.
- Copyright (C) 2010, 2012, 2013 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_SAM_H
-#define HTSLIB_SAM_H
-
-#include <stdint.h>
-#include "hts.h"
-
-/**********************
- *** SAM/BAM header ***
- **********************/
-
-/*! @typedef
- @abstract Structure for the alignment header.
- @field n_targets number of reference sequences
- @field l_text length of the plain text in the header
- @field target_len lengths of the reference sequences
- @field target_name names of the reference sequences
- @field text plain text
- @field sdict header dictionary
- */
-
-typedef struct {
- int32_t n_targets, ignore_sam_err;
- uint32_t l_text;
- uint32_t *target_len;
- int8_t *cigar_tab;
- char **target_name;
- char *text;
- void *sdict;
-} bam_hdr_t;
-
-/****************************
- *** CIGAR related macros ***
- ****************************/
-
-#define BAM_CMATCH 0
-#define BAM_CINS 1
-#define BAM_CDEL 2
-#define BAM_CREF_SKIP 3
-#define BAM_CSOFT_CLIP 4
-#define BAM_CHARD_CLIP 5
-#define BAM_CPAD 6
-#define BAM_CEQUAL 7
-#define BAM_CDIFF 8
-#define BAM_CBACK 9
-
-#define BAM_CIGAR_STR "MIDNSHP=XB"
-#define BAM_CIGAR_SHIFT 4
-#define BAM_CIGAR_MASK 0xf
-#define BAM_CIGAR_TYPE 0x3C1A7
-
-#define bam_cigar_op(c) ((c)&BAM_CIGAR_MASK)
-#define bam_cigar_oplen(c) ((c)>>BAM_CIGAR_SHIFT)
-#define bam_cigar_opchr(c) (BAM_CIGAR_STR[bam_cigar_op(c)])
-#define bam_cigar_gen(l, o) ((l)<<BAM_CIGAR_SHIFT|(o))
-
-/* bam_cigar_type returns a bit flag with:
- * bit 1 set if the cigar operation consumes the query
- * bit 2 set if the cigar operation consumes the reference
- *
- * For reference, the unobfuscated truth table for this function is:
- * BAM_CIGAR_TYPE QUERY REFERENCE
- * --------------------------------
- * BAM_CMATCH 1 1
- * BAM_CINS 1 0
- * BAM_CDEL 0 1
- * BAM_CREF_SKIP 0 1
- * BAM_CSOFT_CLIP 1 0
- * BAM_CHARD_CLIP 0 0
- * BAM_CPAD 0 0
- * BAM_CEQUAL 1 1
- * BAM_CDIFF 1 1
- * BAM_CBACK 0 0
- * --------------------------------
- */
-#define bam_cigar_type(o) (BAM_CIGAR_TYPE>>((o)<<1)&3) // bit 1: consume query; bit 2: consume reference
-
-/*! @abstract the read is paired in sequencing, no matter whether it is mapped in a pair */
-#define BAM_FPAIRED 1
-/*! @abstract the read is mapped in a proper pair */
-#define BAM_FPROPER_PAIR 2
-/*! @abstract the read itself is unmapped; conflictive with BAM_FPROPER_PAIR */
-#define BAM_FUNMAP 4
-/*! @abstract the mate is unmapped */
-#define BAM_FMUNMAP 8
-/*! @abstract the read is mapped to the reverse strand */
-#define BAM_FREVERSE 16
-/*! @abstract the mate is mapped to the reverse strand */
-#define BAM_FMREVERSE 32
-/*! @abstract this is read1 */
-#define BAM_FREAD1 64
-/*! @abstract this is read2 */
-#define BAM_FREAD2 128
-/*! @abstract not primary alignment */
-#define BAM_FSECONDARY 256
-/*! @abstract QC failure */
-#define BAM_FQCFAIL 512
-/*! @abstract optical or PCR duplicate */
-#define BAM_FDUP 1024
-/*! @abstract supplementary alignment */
-#define BAM_FSUPPLEMENTARY 2048
-
-/*************************
- *** Alignment records ***
- *************************/
-
-/*! @typedef
- @abstract Structure for core alignment information.
- @field tid chromosome ID, defined by bam_hdr_t
- @field pos 0-based leftmost coordinate
- @field bin bin calculated by bam_reg2bin()
- @field qual mapping quality
- @field l_qname length of the query name
- @field flag bitwise flag
- @field n_cigar number of CIGAR operations
- @field l_qseq length of the query sequence (read)
- @field mtid chromosome ID of next read in template, defined by bam_hdr_t
- @field mpos 0-based leftmost coordinate of next read in template
- */
-typedef struct {
- int32_t tid;
- int32_t pos;
- uint32_t bin:16, qual:8, l_qname:8;
- uint32_t flag:16, n_cigar:16;
- int32_t l_qseq;
- int32_t mtid;
- int32_t mpos;
- int32_t isize;
-} bam1_core_t;
-
-/*! @typedef
- @abstract Structure for one alignment.
- @field core core information about the alignment
- @field l_data current length of bam1_t::data
- @field m_data maximum length of bam1_t::data
- @field data all variable-length data, concatenated; structure: qname-cigar-seq-qual-aux
-
- @discussion Notes:
-
- 1. qname is zero tailing and core.l_qname includes the tailing '\0'.
- 2. l_qseq is calculated from the total length of an alignment block
- on reading or from CIGAR.
- 3. cigar data is encoded 4 bytes per CIGAR operation.
- 4. seq is nybble-encoded according to bam_nt16_table.
- */
-typedef struct {
- bam1_core_t core;
- int l_data, m_data;
- uint8_t *data;
-#ifndef BAM_NO_ID
- uint64_t id;
-#endif
-} bam1_t;
-
-/*! @function
- @abstract Get whether the query is on the reverse strand
- @param b pointer to an alignment
- @return boolean true if query is on the reverse strand
- */
-#define bam_is_rev(b) (((b)->core.flag&BAM_FREVERSE) != 0)
-/*! @function
- @abstract Get whether the query's mate is on the reverse strand
- @param b pointer to an alignment
- @return boolean true if query's mate on the reverse strand
- */
-#define bam_is_mrev(b) (((b)->core.flag&BAM_FMREVERSE) != 0)
-/*! @function
- @abstract Get the name of the query
- @param b pointer to an alignment
- @return pointer to the name string, null terminated
- */
-#define bam_get_qname(b) ((char*)(b)->data)
-/*! @function
- @abstract Get the CIGAR array
- @param b pointer to an alignment
- @return pointer to the CIGAR array
-
- @discussion In the CIGAR array, each element is a 32-bit integer. The
- lower 4 bits gives a CIGAR operation and the higher 28 bits keep the
- length of a CIGAR.
- */
-#define bam_get_cigar(b) ((uint32_t*)((b)->data + (b)->core.l_qname))
-/*! @function
- @abstract Get query sequence
- @param b pointer to an alignment
- @return pointer to sequence
-
- @discussion Each base is encoded in 4 bits: 1 for A, 2 for C, 4 for G,
- 8 for T and 15 for N. Two bases are packed in one byte with the base
- at the higher 4 bits having smaller coordinate on the read. It is
- recommended to use bam_seqi() macro to get the base.
- */
-#define bam_get_seq(b) ((b)->data + ((b)->core.n_cigar<<2) + (b)->core.l_qname)
-/*! @function
- @abstract Get query quality
- @param b pointer to an alignment
- @return pointer to quality string
- */
-#define bam_get_qual(b) ((b)->data + ((b)->core.n_cigar<<2) + (b)->core.l_qname + (((b)->core.l_qseq + 1)>>1))
-/*! @function
- @abstract Get auxiliary data
- @param b pointer to an alignment
- @return pointer to the concatenated auxiliary data
- */
-#define bam_get_aux(b) ((b)->data + ((b)->core.n_cigar<<2) + (b)->core.l_qname + (((b)->core.l_qseq + 1)>>1) + (b)->core.l_qseq)
-/*! @function
- @abstract Get length of auxiliary data
- @param b pointer to an alignment
- @return length of the concatenated auxiliary data
- */
-#define bam_get_l_aux(b) ((b)->l_data - ((b)->core.n_cigar<<2) - (b)->core.l_qname - (b)->core.l_qseq - (((b)->core.l_qseq + 1)>>1))
-/*! @function
- @abstract Get a base on read
- @param s Query sequence returned by bam_get_seq()
- @param i The i-th position, 0-based
- @return 4-bit integer representing the base.
- */
-#define bam_seqi(s, i) ((s)[(i)>>1] >> ((~(i)&1)<<2) & 0xf)
-
-/**************************
- *** Exported functions ***
- **************************/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /***************
- *** BAM I/O ***
- ***************/
-
- bam_hdr_t *bam_hdr_init(void);
- bam_hdr_t *bam_hdr_read(BGZF *fp);
- int bam_hdr_write(BGZF *fp, const bam_hdr_t *h);
- void bam_hdr_destroy(bam_hdr_t *h);
- int bam_name2id(bam_hdr_t *h, const char *ref);
- bam_hdr_t* bam_hdr_dup(const bam_hdr_t *h0);
-
- bam1_t *bam_init1(void);
- void bam_destroy1(bam1_t *b);
- int bam_read1(BGZF *fp, bam1_t *b);
- int bam_write1(BGZF *fp, const bam1_t *b);
- bam1_t *bam_copy1(bam1_t *bdst, const bam1_t *bsrc);
- bam1_t *bam_dup1(const bam1_t *bsrc);
-
- int bam_cigar2qlen(int n_cigar, const uint32_t *cigar);
- int bam_cigar2rlen(int n_cigar, const uint32_t *cigar);
-
- /*!
- @abstract Calculate the rightmost base position of an alignment on the
- reference genome.
-
- @param b pointer to an alignment
- @return the coordinate of the first base after the alignment, 0-based
-
- @discussion For a mapped read, this is just b->core.pos + bam_cigar2rlen.
- For an unmapped read (either according to its flags or if it has no cigar
- string), we return b->core.pos + 1 by convention.
- */
- int32_t bam_endpos(const bam1_t *b);
-
- int bam_str2flag(const char *str); /** returns negative value on error */
- char *bam_flag2str(int flag); /** The string must be freed by the user */
-
- /*************************
- *** BAM/CRAM indexing ***
- *************************/
-
- // These BAM iterator functions work only on BAM files. To work with either
- // BAM or CRAM files use the sam_index_load() & sam_itr_*() functions.
- #define bam_itr_destroy(iter) hts_itr_destroy(iter)
- #define bam_itr_queryi(idx, tid, beg, end) sam_itr_queryi(idx, tid, beg, end)
- #define bam_itr_querys(idx, hdr, region) sam_itr_querys(idx, hdr, region)
- #define bam_itr_next(htsfp, itr, r) hts_itr_next((htsfp)->fp.bgzf, (itr), (r), 0)
-
- // Load .csi or .bai BAM index file.
- #define bam_index_load(fn) hts_idx_load((fn), HTS_FMT_BAI)
-
- int bam_index_build(const char *fn, int min_shift);
-
- // Load BAM (.csi or .bai) or CRAM (.crai) index file.
- hts_idx_t *sam_index_load(htsFile *fp, const char *fn);
-
- #define sam_itr_destroy(iter) hts_itr_destroy(iter)
- hts_itr_t *sam_itr_queryi(const hts_idx_t *idx, int tid, int beg, int end);
- hts_itr_t *sam_itr_querys(const hts_idx_t *idx, bam_hdr_t *hdr, const char *region);
- #define sam_itr_next(htsfp, itr, r) hts_itr_next((htsfp)->fp.bgzf, (itr), (r), (htsfp))
-
- /***************
- *** SAM I/O ***
- ***************/
-
- #define sam_open(fn, mode) (hts_open((fn), (mode)))
- #define sam_close(fp) hts_close(fp)
-
- int sam_open_mode(char *mode, const char *fn, const char *format);
-
- typedef htsFile samFile;
- bam_hdr_t *sam_hdr_parse(int l_text, const char *text);
- bam_hdr_t *sam_hdr_read(samFile *fp);
- int sam_hdr_write(samFile *fp, const bam_hdr_t *h);
-
- int sam_parse1(kstring_t *s, bam_hdr_t *h, bam1_t *b);
- int sam_format1(const bam_hdr_t *h, const bam1_t *b, kstring_t *str);
- int sam_read1(samFile *fp, bam_hdr_t *h, bam1_t *b);
- int sam_write1(samFile *fp, const bam_hdr_t *h, const bam1_t *b);
-
- /*************************************
- *** Manipulating auxiliary fields ***
- *************************************/
-
- uint8_t *bam_aux_get(const bam1_t *b, const char tag[2]);
- int32_t bam_aux2i(const uint8_t *s);
- double bam_aux2f(const uint8_t *s);
- char bam_aux2A(const uint8_t *s);
- char *bam_aux2Z(const uint8_t *s);
-
- void bam_aux_append(bam1_t *b, const char tag[2], char type, int len, uint8_t *data);
- int bam_aux_del(bam1_t *b, uint8_t *s);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**************************
- *** Pileup and Mpileup ***
- **************************/
-
-#if !defined(BAM_NO_PILEUP)
-
-/*! @typedef
- @abstract Structure for one alignment covering the pileup position.
- @field b pointer to the alignment
- @field qpos position of the read base at the pileup site, 0-based
- @field indel indel length; 0 for no indel, positive for ins and negative for del
- @field level the level of the read in the "viewer" mode
- @field is_del 1 iff the base on the padded read is a deletion
- @field is_head ???
- @field is_tail ???
- @field is_refskip ???
- @field aux ???
-
- @discussion See also bam_plbuf_push() and bam_lplbuf_push(). The
- difference between the two functions is that the former does not
- set bam_pileup1_t::level, while the later does. Level helps the
- implementation of alignment viewers, but calculating this has some
- overhead.
- */
-typedef struct {
- bam1_t *b;
- int32_t qpos;
- int indel, level;
- uint32_t is_del:1, is_head:1, is_tail:1, is_refskip:1, aux:28;
-} bam_pileup1_t;
-
-typedef int (*bam_plp_auto_f)(void *data, bam1_t *b);
-
-struct __bam_plp_t;
-typedef struct __bam_plp_t *bam_plp_t;
-
-struct __bam_mplp_t;
-typedef struct __bam_mplp_t *bam_mplp_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /**
- * bam_plp_init() - sets an iterator over multiple
- * @func: see mplp_func in bam_plcmd.c in samtools for an example. Expected return
- * status: 0 on success, -1 on end, < -1 on non-recoverable errors
- * @data: user data to pass to @func
- */
- bam_plp_t bam_plp_init(bam_plp_auto_f func, void *data);
- void bam_plp_destroy(bam_plp_t iter);
- int bam_plp_push(bam_plp_t iter, const bam1_t *b);
- const bam_pileup1_t *bam_plp_next(bam_plp_t iter, int *_tid, int *_pos, int *_n_plp);
- const bam_pileup1_t *bam_plp_auto(bam_plp_t iter, int *_tid, int *_pos, int *_n_plp);
- void bam_plp_set_maxcnt(bam_plp_t iter, int maxcnt);
- void bam_plp_reset(bam_plp_t iter);
-
- bam_mplp_t bam_mplp_init(int n, bam_plp_auto_f func, void **data);
- /**
- * bam_mplp_init_overlaps() - if called, mpileup will detect overlapping
- * read pairs and for each base pair set the base quality of the
- * lower-quality base to zero, thus effectively discarding it from
- * calling. If the two bases are identical, the quality of the other base
- * is increased to the sum of their qualities (capped at 200), otherwise
- * it is multiplied by 0.8.
- */
- void bam_mplp_init_overlaps(bam_mplp_t iter);
- void bam_mplp_destroy(bam_mplp_t iter);
- void bam_mplp_set_maxcnt(bam_mplp_t iter, int maxcnt);
- int bam_mplp_auto(bam_mplp_t iter, int *_tid, int *_pos, int *n_plp, const bam_pileup1_t **plp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // ~!defined(BAM_NO_PILEUP)
-
-#endif
diff --git a/htslib/htslib/synced_bcf_reader.h b/htslib/htslib/synced_bcf_reader.h
deleted file mode 100644
index 888fa1e..0000000
--- a/htslib/htslib/synced_bcf_reader.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/* synced_bcf_reader.h -- stream through multiple VCF files.
-
- Copyright (C) 2012-2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-/*
- The synced_bcf_reader allows to keep multiple VCFs open and stream them
- using the next_line iterator in a seamless matter without worrying about
- chromosomes and synchronizing the sites. This is used by vcfcheck to
- compare multiple VCFs simultaneously and is used also for merging,
- creating intersections, etc.
-
- The synced_bcf_reader also provides API for reading indexed BCF/VCF,
- hiding differences in BCF/VCF opening, indexing and reading.
-
-
- Example of usage:
-
- bcf_srs_t *sr = bcf_sr_init();
- for (i=0; i<nfiles; i++)
- bcf_sr_add_reader(sr,files[i]);
- while ( bcf_sr_next_line(sr) )
- {
- for (i=0; i<nfiles; i++)
- {
- bcf1_t *line = bcf_sr_get_line(sr,i);
- ...
- }
- }
- bcf_sr_destroy(sr);
-*/
-
-#ifndef HTSLIB_SYNCED_BCF_READER_H
-#define HTSLIB_SYNCED_BCF_READER_H
-
-#include "hts.h"
-#include "vcf.h"
-#include "tbx.h"
-
-// How should be treated sites with the same position but different alleles
-#define COLLAPSE_NONE 0 // require the exact same set of alleles in all files
-#define COLLAPSE_SNPS 1 // allow different alleles, as long as they all are SNPs
-#define COLLAPSE_INDELS 2 // the same as above, but with indels
-#define COLLAPSE_ANY 4 // any combination of alleles can be returned by bcf_sr_next_line()
-#define COLLAPSE_SOME 8 // at least some of the ALTs must match
-#define COLLAPSE_BOTH (COLLAPSE_SNPS|COLLAPSE_INDELS)
-
-typedef struct _bcf_sr_regions_t
-{
- // for reading from tabix-indexed file (big data)
- tbx_t *tbx; // tabix index
- hts_itr_t *itr; // tabix iterator
- kstring_t line; // holder of the current line, set only when reading from tabix-indexed files
- htsFile *file;
- char *fname;
- int is_bin; // is open in binary mode (tabix access)
- char **als; // parsed alleles if targets_als set and _regions_match_alleles called
- kstring_t als_str; // block of parsed alleles
- int nals, mals; // number of set alleles and the size of allocated array
- int als_type; // alleles type, currently VCF_SNP or VCF_INDEL
-
- // user handler to deal with skipped regions without a counterpart in VCFs
- void (*missed_reg_handler)(struct _bcf_sr_regions_t *, void *);
- void *missed_reg_data;
-
- // for in-memory regions (small data)
- struct _region_t *regs; // the regions
-
- // shared by both tabix-index and in-memory regions
- void *seq_hash; // keys: sequence names, values: index to seqs
- char **seq_names; // sequence names
- int nseqs; // number of sequences (chromosomes) in the file
- int iseq; // current position: chr name, index to snames
- int start, end; // current position: start, end of the region (0-based)
- int prev_seq, prev_start;
-}
-bcf_sr_regions_t;
-
-typedef struct
-{
- htsFile *file;
- tbx_t *tbx_idx;
- hts_idx_t *bcf_idx;
- bcf_hdr_t *header;
- hts_itr_t *itr;
- const char *fname;
- bcf1_t **buffer; // cached VCF records. First is the current record synced across the reader
- int nbuffer, mbuffer; // number of cached records (including the current record); number of allocated records
- int nfilter_ids, *filter_ids; // -1 for ".", otherwise filter id as returned by bcf_id2int
- int *samples, n_smpl; // list of columns in the order consistent with bcf_srs_t.samples
-}
-bcf_sr_t;
-
-typedef enum
-{
- open_failed, not_bgzf, idx_load_failed, file_type_error, api_usage_error,
- header_error
-}
-bcf_sr_error;
-
-typedef struct
-{
- // Parameters controlling the logic
- int collapse; // How should the duplicate sites be treated. One of the COLLAPSE_* types above.
- char *apply_filters; // If set, sites where none of the FILTER strings is listed
- // will be skipped. Active only at the time of
- // initialization, that is during the add_reader()
- // calls. Therefore, each reader can be initialized with different
- // filters.
- int require_index; // Some tools do not need random access
- int max_unpack; // When reading VCFs and knowing some fields will not be needed, boost performance of vcf_parse1
- int *has_line; // Corresponds to return value of bcf_sr_next_line but is not limited by sizeof(int). Use bcf_sr_has_line macro to query.
- bcf_sr_error errnum;
-
- // Auxiliary data
- bcf_sr_t *readers;
- int nreaders;
- int streaming; // reading mode: index-jumping or streaming
- int explicit_regs; // was the list of regions se by bcf_sr_set_regions or guessed from tabix index?
- char **samples; // List of samples
- bcf_sr_regions_t *regions, *targets; // see bcf_sr_set_[targets|regions] for description
- int targets_als; // subset to targets not only by position but also by alleles?
- int targets_exclude;
- kstring_t tmps;
- int n_smpl;
-}
-bcf_srs_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Init bcf_srs_t struct */
-bcf_srs_t *bcf_sr_init(void);
-
-/** Destroy bcf_srs_t struct */
-void bcf_sr_destroy(bcf_srs_t *readers);
-
-char *bcf_sr_strerror(int errnum);
-
-
-/**
- * bcf_sr_add_reader() - open new reader
- * @readers: holder of the open readers
- * @fname: the VCF file
- *
- * Returns 1 if the call succeeded, or 0 on error.
- *
- * See also the bcf_srs_t data structure for parameters controlling
- * the reader's logic.
- */
-int bcf_sr_add_reader(bcf_srs_t *readers, const char *fname);
-void bcf_sr_remove_reader(bcf_srs_t *files, int i);
-
-/**
- * bcf_sr_next_line() - the iterator
- * @readers: holder of the open readers
- *
- * Returns the number of readers which have the current line
- * (bcf_sr_t.buffer[0]) set at this position. Use the bcf_sr_has_line macro to
- * determine which of the readers are set.
- */
-int bcf_sr_next_line(bcf_srs_t *readers);
-#define bcf_sr_has_line(readers, i) (readers)->has_line[i]
-#define bcf_sr_get_line(_readers, i) ((_readers)->has_line[i] ? ((_readers)->readers[i].buffer[0]) : NULL)
-#define bcf_sr_region_done(_readers,i) (!(_readers)->has_line[i] && !(_readers)->readers[i].nbuffer ? 1 : 0)
-#define bcf_sr_get_header(_readers, i) (_readers)->readers[i].header
-#define bcf_sr_get_reader(_readers, i) &((_readers)->readers[i])
-
-/**
- * bcf_sr_seek() - set all readers to selected position
- * @seq: sequence name; NULL to seek to start
- * @pos: 0-based coordinate
- */
-int bcf_sr_seek(bcf_srs_t *readers, const char *seq, int pos);
-
-/**
- * bcf_sr_set_samples() - sets active samples
- * @readers: holder of the open readers
- * @samples: this can be one of: file name with one sample per line;
- * or column-separated list of samples; or '-' for a list of
- * samples shared by all files. If first character is the
- * exclamation mark, all but the listed samples are included.
- * @is_file: 0: list of samples; 1: file with sample names
- *
- * Returns 1 if the call succeeded, or 0 on error.
- */
-int bcf_sr_set_samples(bcf_srs_t *readers, const char *samples, int is_file);
-
-/**
- * bcf_sr_set_targets(), bcf_sr_set_regions() - init targets/regions
- * @readers: holder of the open readers
- * @targets: list of regions, one-based and inclusive.
- * @is_fname: 0: targets is a comma-separated list of regions (chr,chr:from-to)
- * 1: targets is a tabix indexed file with a list of regions
- * (<chr,pos> or <chr,from,to>)
- *
- * Returns 0 if the call succeeded, or -1 on error.
- *
- * Both functions behave the same way, unlisted positions will be skipped by
- * bcf_sr_next_line(). However, there is an important difference: regions use
- * index to jump to desired positions while targets streams the whole files
- * and merely skip unlisted positions.
- *
- * Moreover, bcf_sr_set_targets() accepts an optional parameter $alleles which
- * is intepreted as a 1-based column index in the tab-delimited file where
- * alleles are listed. This in principle enables to perform the COLLAPSE_*
- * logic also with tab-delimited files. However, the current implementation
- * considers the alleles merely as a suggestion for prioritizing one of possibly
- * duplicate VCF lines. It is up to the caller to examine targets->als if
- * perfect match is sought after. Note that the duplicate positions in targets
- * file are currently not supported.
- * Targets (but not regions) can be prefixed with "^" to request logical complement,
- * for example "^X,Y,MT" indicates that sequences X, Y and MT should be skipped.
- */
-int bcf_sr_set_targets(bcf_srs_t *readers, const char *targets, int is_file, int alleles);
-int bcf_sr_set_regions(bcf_srs_t *readers, const char *regions, int is_file);
-
-
-
-/*
- * bcf_sr_regions_init()
- * @regions: regions can be either a comma-separated list of regions
- * (chr|chr:pos|chr:from-to|chr:from-) or VCF, BED, or
- * tab-delimited file (the default). Uncompressed files
- * are stored in memory while bgzip-compressed and tabix-indexed
- * region files are streamed.
- * @is_file: 0: regions is a comma-separated list of regions
- * (chr|chr:pos|chr:from-to|chr:from-)
- * 1: VCF, BED or tab-delimited file
- * @chr, from, to:
- * Column indexes of chromosome, start position and end position
- * in the tab-delimited file. The positions are 1-based and
- * inclusive.
- * These parameters are ignored when reading from VCF, BED or
- * tabix-indexed files. When end position column is not present,
- * supply 'from' in place of 'to'. When 'to' is negative, first
- * abs(to) will be attempted and if that fails, 'from' will be used
- * instead.
- */
-bcf_sr_regions_t *bcf_sr_regions_init(const char *regions, int is_file, int chr, int from, int to);
-void bcf_sr_regions_destroy(bcf_sr_regions_t *regions);
-
-/*
- * bcf_sr_regions_seek() - seek to the chromosome block
- *
- * Returns 0 on success or -1 on failure. Sets reg->seq appropriately and
- * reg->start,reg->end to -1.
- */
-int bcf_sr_regions_seek(bcf_sr_regions_t *regions, const char *chr);
-
-/*
- * bcf_sr_regions_next() - retrieves next region. Returns 0 on success and -1
- * when all regions have been read. The fields reg->seq, reg->start and
- * reg->end are filled with the genomic coordinates on succes or with
- * NULL,-1,-1 when no region is available. The coordinates are 0-based,
- * inclusive.
- */
-int bcf_sr_regions_next(bcf_sr_regions_t *reg);
-
-/*
- * bcf_sr_regions_overlap() - checks if the interval <start,end> overlaps any of
- * the regions, the coordinates are 0-based, inclusive. The coordinate queries
- * must come in ascending order.
- *
- * Returns 0 if the position is in regions; -1 if the position is not in the
- * regions and more regions exist; -2 if not in the regions and there are no more
- * regions left.
- */
-int bcf_sr_regions_overlap(bcf_sr_regions_t *reg, const char *seq, int start, int end);
-
-/*
- * bcf_sr_regions_flush() - calls repeatedly regs->missed_reg_handler() until
- * all remaining records are processed.
- */
-void bcf_sr_regions_flush(bcf_sr_regions_t *regs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/tbx.h b/htslib/htslib/tbx.h
deleted file mode 100644
index 3d84a86..0000000
--- a/htslib/htslib/tbx.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* tbx.h -- tabix API functions.
-
- Copyright (C) 2009, 2012-2014 Genome Research Ltd.
- Copyright (C) 2010, 2012 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_TBX_H
-#define HTSLIB_TBX_H
-
-#include "hts.h"
-
-#define TBX_MAX_SHIFT 31
-
-#define TBX_GENERIC 0
-#define TBX_SAM 1
-#define TBX_VCF 2
-#define TBX_UCSC 0x10000
-
-typedef struct {
- int32_t preset;
- int32_t sc, bc, ec; // seq col., beg col. and end col.
- int32_t meta_char, line_skip;
-} tbx_conf_t;
-
-typedef struct {
- tbx_conf_t conf;
- hts_idx_t *idx;
- void *dict;
-} tbx_t;
-
-extern tbx_conf_t tbx_conf_gff, tbx_conf_bed, tbx_conf_psltbl, tbx_conf_sam, tbx_conf_vcf;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- #define tbx_itr_destroy(iter) hts_itr_destroy(iter)
- #define tbx_itr_queryi(tbx, tid, beg, end) hts_itr_query((tbx)->idx, (tid), (beg), (end), tbx_readrec)
- #define tbx_itr_querys(tbx, s) hts_itr_querys((tbx)->idx, (s), (hts_name2id_f)(tbx_name2id), (tbx), hts_itr_query, tbx_readrec)
- #define tbx_itr_next(htsfp, tbx, itr, r) hts_itr_next(hts_get_bgzfp(htsfp), (itr), (r), (tbx))
- #define tbx_bgzf_itr_next(bgzfp, tbx, itr, r) hts_itr_next((bgzfp), (itr), (r), (tbx))
-
- int tbx_name2id(tbx_t *tbx, const char *ss);
-
- /* Internal helper function used by tbx_itr_next() */
- BGZF *hts_get_bgzfp(htsFile *fp);
- int tbx_readrec(BGZF *fp, void *tbxv, void *sv, int *tid, int *beg, int *end);
-
- int tbx_index_build(const char *fn, int min_shift, const tbx_conf_t *conf);
- tbx_t *tbx_index_load(const char *fn);
- const char **tbx_seqnames(tbx_t *tbx, int *n); // free the array but not the values
- void tbx_destroy(tbx_t *tbx);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/htslib/htslib/vcf.h b/htslib/htslib/vcf.h
deleted file mode 100644
index fde9394..0000000
--- a/htslib/htslib/vcf.h
+++ /dev/null
@@ -1,883 +0,0 @@
-/* vcf.h -- VCF/BCF API functions.
-
- Copyright (C) 2012, 2013 Broad Institute.
- Copyright (C) 2012-2014 Genome Research Ltd.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-/*
- todo:
- - make the function names consistent
- - provide calls to abstract away structs as much as possible
- */
-
-#ifndef HTSLIB_VCF_H
-#define HTSLIB_VCF_H
-
-#include <stdint.h>
-#include <limits.h>
-#include <assert.h>
-#include "hts.h"
-#include "kstring.h"
-
-
-/*****************
- * Header struct *
- *****************/
-
-#define BCF_HL_FLT 0 // header line
-#define BCF_HL_INFO 1
-#define BCF_HL_FMT 2
-#define BCF_HL_CTG 3
-#define BCF_HL_STR 4 // structured header line TAG=<A=..,B=..>
-#define BCF_HL_GEN 5 // generic header line
-
-#define BCF_HT_FLAG 0 // header type
-#define BCF_HT_INT 1
-#define BCF_HT_REAL 2
-#define BCF_HT_STR 3
-
-#define BCF_VL_FIXED 0 // variable length
-#define BCF_VL_VAR 1
-#define BCF_VL_A 2
-#define BCF_VL_G 3
-#define BCF_VL_R 4
-
-/* === Dictionary ===
-
- The header keeps three dictonaries. The first keeps IDs in the
- "FILTER/INFO/FORMAT" lines, the second keeps the sequence names and lengths
- in the "contig" lines and the last keeps the sample names. bcf_hdr_t::dict[]
- is the actual hash table, which is opaque to the end users. In the hash
- table, the key is the ID or sample name as a C string and the value is a
- bcf_idinfo_t struct. bcf_hdr_t::id[] points to key-value pairs in the hash
- table in the order that they appear in the VCF header. bcf_hdr_t::n[] is the
- size of the hash table or, equivalently, the length of the id[] arrays.
-*/
-
-#define BCF_DT_ID 0 // dictionary type
-#define BCF_DT_CTG 1
-#define BCF_DT_SAMPLE 2
-
-// Complete textual representation of a header line
-typedef struct {
- int type; // One of the BCF_HL_* type
- char *key; // The part before '=', i.e. FILTER/INFO/FORMAT/contig/fileformat etc.
- char *value; // Set only for generic lines, NULL for FILTER/INFO, etc.
- int nkeys; // Number of structured fields
- char **keys, **vals; // The key=value pairs
-} bcf_hrec_t;
-
-typedef struct {
- uint32_t info[3]; // stores Number:20, var:4, Type:4, ColType:4 in info[0..2]
- // for BCF_HL_FLT,INFO,FMT and contig length in info[0] for BCF_HL_CTG
- bcf_hrec_t *hrec[3];
- int id;
-} bcf_idinfo_t;
-
-typedef struct {
- const char *key;
- const bcf_idinfo_t *val;
-} bcf_idpair_t;
-
-typedef struct {
- int32_t n[3];
- bcf_idpair_t *id[3];
- void *dict[3]; // ID dictionary, contig dict and sample dict
- char **samples;
- bcf_hrec_t **hrec;
- int nhrec, dirty;
- int ntransl, *transl[2]; // for bcf_translate()
- int nsamples_ori; // for bcf_hdr_set_samples()
- uint8_t *keep_samples;
- kstring_t mem;
-} bcf_hdr_t;
-
-extern uint8_t bcf_type_shift[];
-
-/**************
- * VCF record *
- **************/
-
-#define BCF_BT_NULL 0
-#define BCF_BT_INT8 1
-#define BCF_BT_INT16 2
-#define BCF_BT_INT32 3
-#define BCF_BT_FLOAT 5
-#define BCF_BT_CHAR 7
-
-#define VCF_REF 0
-#define VCF_SNP 1
-#define VCF_MNP 2
-#define VCF_INDEL 4
-#define VCF_OTHER 8
-
-typedef struct {
- int type, n; // variant type and the number of bases affected, negative for deletions
-} variant_t;
-
-typedef struct {
- int id; // id: numeric tag id, the corresponding string is bcf_hdr_t::id[BCF_DT_ID][$id].key
- int n, size, type; // n: number of values per-sample; size: number of bytes per-sample; type: one of BCF_BT_* types
- uint8_t *p; // same as vptr and vptr_* in bcf_info_t below
- uint32_t p_len;
- uint32_t p_off:31, p_free:1;
-} bcf_fmt_t;
-
-typedef struct {
- int key; // key: numeric tag id, the corresponding string is bcf_hdr_t::id[BCF_DT_ID][$key].key
- int type, len; // type: one of BCF_BT_* types; len: vector length, 1 for scalars
- union {
- int32_t i; // integer value
- float f; // float value
- } v1; // only set if $len==1; for easier access
- uint8_t *vptr; // pointer to data array in bcf1_t->shared.s, excluding the size+type and tag id bytes
- uint32_t vptr_len; // length of the vptr block or, when set, of the vptr_mod block, excluding offset
- uint32_t vptr_off:31, // vptr offset, i.e., the size of the INFO key plus size+type bytes
- vptr_free:1; // indicates that vptr-vptr_off must be freed; set only when modified and the new
- // data block is bigger than the original
-} bcf_info_t;
-
-
-#define BCF1_DIRTY_ID 1
-#define BCF1_DIRTY_ALS 2
-#define BCF1_DIRTY_FLT 4
-#define BCF1_DIRTY_INF 8
-
-typedef struct {
- int m_fmt, m_info, m_id, m_als, m_allele, m_flt; // allocated size (high-water mark); do not change
- int n_flt; // Number of FILTER fields
- int *flt; // FILTER keys in the dictionary
- char *id, *als; // ID and REF+ALT block (\0-seperated)
- char **allele; // allele[0] is the REF (allele[] pointers to the als block); all null terminated
- bcf_info_t *info; // INFO
- bcf_fmt_t *fmt; // FORMAT and individual sample
- variant_t *var; // $var and $var_type set only when set_variant_types called
- int n_var, var_type;
- int shared_dirty; // if set, shared.s must be recreated on BCF output
- int indiv_dirty; // if set, indiv.s must be recreated on BCF output
-} bcf_dec_t;
-
-
-#define BCF_ERR_CTG_UNDEF 1
-#define BCF_ERR_TAG_UNDEF 2
-#define BCF_ERR_NCOLS 4
-
-/*
- The bcf1_t structure corresponds to one VCF/BCF line. Reading from VCF file
- is slower because the string is first to be parsed, packed into BCF line
- (done in vcf_parse), then unpacked into internal bcf1_t structure. If it
- is known in advance that some of the fields will not be required (notably
- the sample columns), parsing of these can be skipped by setting max_unpack
- appropriately.
- Similarly, it is fast to output a BCF line because the columns (kept in
- shared.s, indiv.s, etc.) are written directly by bcf_write, whereas a VCF
- line must be formatted in vcf_format.
- */
-typedef struct {
- int32_t rid; // CHROM
- int32_t pos; // POS
- int32_t rlen; // length of REF
- float qual; // QUAL
- uint32_t n_info:16, n_allele:16;
- uint32_t n_fmt:8, n_sample:24;
- kstring_t shared, indiv;
- bcf_dec_t d; // lazy evaluation: $d is not generated by bcf_read(), but by explicitly calling bcf_unpack()
- int max_unpack; // Set to BCF_UN_STR, BCF_UN_FLT, or BCF_UN_INFO to boost performance of vcf_parse when some of the fields won't be needed
- int unpacked; // remember what has been unpacked to allow calling bcf_unpack() repeatedly without redoing the work
- int unpack_size[3]; // the original block size of ID, REF+ALT and FILTER
- int errcode; // one of BCF_ERR_* codes
-} bcf1_t;
-
-/*******
- * API *
- *******/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /***********************************************************************
- * BCF and VCF I/O
- *
- * A note about naming conventions: htslib internally represents VCF
- * records as bcf1_t data structures, therefore most functions are
- * prefixed with bcf_. There are a few exceptions where the functions must
- * be aware of both BCF and VCF worlds, such as bcf_parse vs vcf_parse. In
- * these cases, functions prefixed with bcf_ are more general and work
- * with both BCF and VCF.
- *
- ***********************************************************************/
-
- /** These macros are defined only for consistency with other parts of htslib */
- #define bcf_init1() bcf_init()
- #define bcf_read1(fp,h,v) bcf_read((fp),(h),(v))
- #define vcf_read1(fp,h,v) vcf_read((fp),(h),(v))
- #define bcf_write1(fp,h,v) bcf_write((fp),(h),(v))
- #define vcf_write1(fp,h,v) vcf_write((fp),(h),(v))
- #define bcf_destroy1(v) bcf_destroy(v)
- #define vcf_parse1(s,h,v) vcf_parse((s),(h),(v))
- #define bcf_clear1(v) bcf_clear(v)
- #define vcf_format1(h,v,s) vcf_format((h),(v),(s))
-
- /**
- * bcf_hdr_init() - create an empty BCF header.
- * @param mode "r" or "w"
- *
- * When opened for writing, the mandatory fileFormat and
- * FILTER=PASS lines are added automatically.
- */
- bcf_hdr_t *bcf_hdr_init(const char *mode);
-
- /** Destroy a BCF header struct */
- void bcf_hdr_destroy(bcf_hdr_t *h);
-
- /** Initialize a bcf1_t object; equivalent to calloc(1, sizeof(bcf1_t)) */
- bcf1_t *bcf_init(void);
-
- /** Deallocate a bcf1_t object */
- void bcf_destroy(bcf1_t *v);
-
- /**
- * Same as bcf_destroy() but frees only the memory allocated by bcf1_t,
- * not the bcf1_t object itself.
- */
- void bcf_empty(bcf1_t *v);
-
- /**
- * Make the bcf1_t object ready for next read. Intended mostly for
- * internal use, the user should rarely need to call this function
- * directly.
- */
- void bcf_clear(bcf1_t *v);
-
-
- /** bcf_open and vcf_open mode: please see hts_open() in hts.h */
- typedef htsFile vcfFile;
- #define bcf_open(fn, mode) hts_open((fn), (mode))
- #define vcf_open(fn, mode) hts_open((fn), (mode))
- #define bcf_close(fp) hts_close(fp)
- #define vcf_close(fp) hts_close(fp)
-
- /** Reads VCF or BCF header */
- bcf_hdr_t *bcf_hdr_read(htsFile *fp);
-
- /**
- * bcf_hdr_set_samples() - for more efficient VCF parsing when only one/few samples are needed
- * @samples: samples to include or exclude from file or as a comma-separated string.
- * LIST|FILE .. select samples in list/file
- * ^LIST|FILE .. exclude samples from list/file
- * - .. include all samples
- * NULL .. exclude all samples
- * @is_file: @samples is a file (1) or a comma-separated list (1)
- *
- * The bottleneck of VCF reading is parsing of genotype fields. If the
- * reader knows in advance that only subset of samples is needed (possibly
- * no samples at all), the performance of bcf_read() can be significantly
- * improved by calling bcf_hdr_set_samples after bcf_hdr_read().
- * The function bcf_read() will subset the VCF/BCF records automatically
- * with the notable exception when reading records via bcf_itr_next().
- * In this case, bcf_subset_format() must be called explicitly, because
- * bcf_readrec() does not see the header.
- *
- * Returns 0 on success, -1 on error or a positive integer if the list
- * contains samples not present in the VCF header. In such a case, the
- * return value is the index of the offending sample.
- */
- int bcf_hdr_set_samples(bcf_hdr_t *hdr, const char *samples, int is_file);
- int bcf_subset_format(const bcf_hdr_t *hdr, bcf1_t *rec);
-
-
- /** Writes VCF or BCF header */
- int bcf_hdr_write(htsFile *fp, bcf_hdr_t *h);
-
- /** Parse VCF line contained in kstring and populate the bcf1_t struct */
- int vcf_parse(kstring_t *s, const bcf_hdr_t *h, bcf1_t *v);
-
- /** The opposite of vcf_parse. It should rarely be called directly, see vcf_write */
- int vcf_format(const bcf_hdr_t *h, const bcf1_t *v, kstring_t *s);
-
- /**
- * bcf_read() - read next VCF or BCF record
- *
- * Returns -1 on critical errors, 0 otherwise. On errors which are not
- * critical for reading, such as missing header definitions, v->errcode is
- * set to one of BCF_ERR* code and must be checked before calling
- * vcf_write().
- */
- int bcf_read(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v);
-
- /**
- * bcf_unpack() - unpack/decode a BCF record (fills the bcf1_t::d field)
- *
- * Note that bcf_unpack() must be called even when reading VCF. It is safe
- * to call the function repeatedly, it will not unpack the same field
- * twice.
- */
- #define BCF_UN_STR 1 // up to ALT inclusive
- #define BCF_UN_FLT 2 // up to FILTER
- #define BCF_UN_INFO 4 // up to INFO
- #define BCF_UN_SHR (BCF_UN_STR|BCF_UN_FLT|BCF_UN_INFO) // all shared information
- #define BCF_UN_FMT 8 // unpack format and each sample
- #define BCF_UN_IND BCF_UN_FMT // a synonymo of BCF_UN_FMT
- #define BCF_UN_ALL (BCF_UN_SHR|BCF_UN_FMT) // everything
- int bcf_unpack(bcf1_t *b, int which);
-
- /*
- * bcf_dup() - create a copy of BCF record.
- *
- * Note that bcf_unpack() must be called on the returned copy as if it was
- * obtained from bcf_read(). Also note that bcf_dup() calls bcf_sync1(src)
- * internally to reflect any changes made by bcf_update_* functions.
- */
- bcf1_t *bcf_dup(bcf1_t *src);
- bcf1_t *bcf_copy(bcf1_t *dst, bcf1_t *src);
-
- /**
- * bcf_write() - write one VCF or BCF record. The type is determined at the open() call.
- */
- int bcf_write(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v);
-
- /**
- * The following functions work only with VCFs and should rarely be called
- * directly. Usually one wants to use their bcf_* alternatives, which work
- * transparently with both VCFs and BCFs.
- */
- bcf_hdr_t *vcf_hdr_read(htsFile *fp);
- int vcf_hdr_write(htsFile *fp, const bcf_hdr_t *h);
- int vcf_read(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v);
- int vcf_write(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v);
-
- /** Helper function for the bcf_itr_next() macro; internal use, ignore it */
- int bcf_readrec(BGZF *fp, void *null, void *v, int *tid, int *beg, int *end);
-
-
-
- /**************************************************************************
- * Header querying and manipulation routines
- **************************************************************************/
-
- /** Create a new header using the supplied template */
- bcf_hdr_t *bcf_hdr_dup(const bcf_hdr_t *hdr);
- /**
- * Copy header lines from src to dst if not already present in dst. See also bcf_translate().
- * Returns 0 on success or sets a bit on error:
- * 1 .. conflicting definitions of tag length
- * // todo
- */
- int bcf_hdr_combine(bcf_hdr_t *dst, const bcf_hdr_t *src);
-
- /**
- * bcf_hdr_add_sample() - add a new sample.
- * @param sample: sample name to be added
- */
- int bcf_hdr_add_sample(bcf_hdr_t *hdr, const char *sample);
-
- /** Read VCF header from a file and update the header */
- int bcf_hdr_set(bcf_hdr_t *hdr, const char *fname);
-
- /** Returns formatted header (newly allocated string) and its length,
- * excluding the terminating \0. If is_bcf parameter is unset, IDX
- * fields are discarded.
- */
- char *bcf_hdr_fmt_text(const bcf_hdr_t *hdr, int is_bcf, int *len);
-
- /** Append new VCF header line, returns 0 on success */
- int bcf_hdr_append(bcf_hdr_t *h, const char *line);
- int bcf_hdr_printf(bcf_hdr_t *h, const char *format, ...);
-
- /** VCF version, e.g. VCFv4.2 */
- const char *bcf_hdr_get_version(const bcf_hdr_t *hdr);
- void bcf_hdr_set_version(bcf_hdr_t *hdr, const char *version);
-
- /**
- * bcf_hdr_remove() - remove VCF header tag
- * @param type: one of BCF_HL_*
- * @param key: tag name
- */
- void bcf_hdr_remove(bcf_hdr_t *h, int type, const char *key);
-
- /**
- * bcf_hdr_subset() - creates a new copy of the header removing unwanted samples
- * @param n: number of samples to keep
- * @param samples: names of the samples to keep
- * @param imap: mapping from index in @samples to the sample index in the original file
- *
- * Sample names not present in h0 are ignored. The number of unmatched samples can be checked
- * by comparing n and bcf_hdr_nsamples(out_hdr).
- * This function can be used to reorder samples.
- * See also bcf_subset() which subsets individual records.
- */
- bcf_hdr_t *bcf_hdr_subset(const bcf_hdr_t *h0, int n, char *const* samples, int *imap);
-
- /** Creates a list of sequence names. It is up to the caller to free the list (but not the sequence names) */
- const char **bcf_hdr_seqnames(const bcf_hdr_t *h, int *nseqs);
-
- /** Get number of samples */
- #define bcf_hdr_nsamples(hdr) (hdr)->n[BCF_DT_SAMPLE]
-
-
- /** The following functions are for internal use and should rarely be called directly */
- int bcf_hdr_parse(bcf_hdr_t *hdr, char *htxt);
- int bcf_hdr_sync(bcf_hdr_t *h);
- bcf_hrec_t *bcf_hdr_parse_line(const bcf_hdr_t *h, const char *line, int *len);
- void bcf_hrec_format(const bcf_hrec_t *hrec, kstring_t *str);
- int bcf_hdr_add_hrec(bcf_hdr_t *hdr, bcf_hrec_t *hrec);
- /**
- * bcf_hdr_get_hrec() - get header line info
- * @param type: one of the BCF_HL_* types: FLT,INFO,FMT,CTG,STR,GEN
- * @param key: the header key for generic lines (e.g. "fileformat"), any field
- * for structured lines, typically "ID".
- * @param value: the value which pairs with key. Can be be NULL for BCF_HL_GEN
- * @param str_class: the class of BCF_HL_STR line (e.g. "ALT" or "SAMPLE"), otherwise NULL
- */
- bcf_hrec_t *bcf_hdr_get_hrec(const bcf_hdr_t *hdr, int type, const char *key, const char *value, const char *str_class);
- bcf_hrec_t *bcf_hrec_dup(bcf_hrec_t *hrec);
- void bcf_hrec_add_key(bcf_hrec_t *hrec, const char *str, int len);
- void bcf_hrec_set_val(bcf_hrec_t *hrec, int i, const char *str, int len, int is_quoted);
- int bcf_hrec_find_key(bcf_hrec_t *hrec, const char *key);
- void hrec_add_idx(bcf_hrec_t *hrec, int idx);
- void bcf_hrec_destroy(bcf_hrec_t *hrec);
-
-
-
- /**************************************************************************
- * Individual record querying and manipulation routines
- **************************************************************************/
-
- /** See the description of bcf_hdr_subset() */
- int bcf_subset(const bcf_hdr_t *h, bcf1_t *v, int n, int *imap);
-
- /**
- * bcf_translate() - translate tags ids to be consistent with different header. This function
- * is useful when lines from multiple VCF need to be combined.
- * @dst_hdr: the destination header, to be used in bcf_write(), see also bcf_hdr_combine()
- * @src_hdr: the source header, used in bcf_read()
- * @src_line: line obtained by bcf_read()
- */
- int bcf_translate(const bcf_hdr_t *dst_hdr, bcf_hdr_t *src_hdr, bcf1_t *src_line);
-
- /**
- * bcf_get_variant_type[s]() - returns one of VCF_REF, VCF_SNP, etc
- */
- int bcf_get_variant_types(bcf1_t *rec);
- int bcf_get_variant_type(bcf1_t *rec, int ith_allele);
- int bcf_is_snp(bcf1_t *v);
-
- /**
- * bcf_update_filter() - sets the FILTER column
- * @flt_ids: The filter IDs to set, numeric IDs returned by bcf_id2int(hdr, BCF_DT_ID, "PASS")
- * @n: Number of filters. If n==0, all filters are removed
- */
- int bcf_update_filter(const bcf_hdr_t *hdr, bcf1_t *line, int *flt_ids, int n);
- /**
- * bcf_add_filter() - adds to the FILTER column
- * @flt_id: filter ID to add, numeric ID returned by bcf_id2int(hdr, BCF_DT_ID, "PASS")
- *
- * If flt_id is PASS, all existing filters are removed first. If other than PASS, existing PASS is removed.
- */
- int bcf_add_filter(const bcf_hdr_t *hdr, bcf1_t *line, int flt_id);
- /**
- * bcf_remove_filter() - removes from the FILTER column
- * @flt_id: filter ID to remove, numeric ID returned by bcf_id2int(hdr, BCF_DT_ID, "PASS")
- * @pass: when set to 1 and no filters are present, set to PASS
- */
- int bcf_remove_filter(const bcf_hdr_t *hdr, bcf1_t *line, int flt_id, int pass);
- /**
- * Returns 1 if present, 0 if absent, or -1 if filter does not exist. "PASS" and "." can be used interchangeably.
- */
- int bcf_has_filter(const bcf_hdr_t *hdr, bcf1_t *line, char *filter);
- /**
- * bcf_update_alleles() and bcf_update_alleles_str() - update REF and ALLT column
- * @alleles: Array of alleles
- * @nals: Number of alleles
- * @alleles_string: Comma-separated alleles, starting with the REF allele
- *
- * Not that in order for indexing to work correctly in presence of INFO/END tag,
- * the length of reference allele (line->rlen) must be set explicitly by the caller,
- * or otherwise, if rlen is zero, strlen(line->d.allele[0]) is used to set the length
- * on bcf_write().
- */
- int bcf_update_alleles(const bcf_hdr_t *hdr, bcf1_t *line, const char **alleles, int nals);
- int bcf_update_alleles_str(const bcf_hdr_t *hdr, bcf1_t *line, const char *alleles_string);
- int bcf_update_id(const bcf_hdr_t *hdr, bcf1_t *line, const char *id);
-
- /*
- * bcf_update_info_*() - functions for updating INFO fields
- * @hdr: the BCF header
- * @line: VCF line to be edited
- * @key: the INFO tag to be updated
- * @values: pointer to the array of values. Pass NULL to remove the tag.
- * @n: number of values in the array. When set to 0, the INFO tag is removed
- *
- * The @string in bcf_update_info_flag() is optional, @n indicates whether
- * the flag is set or removed.
- *
- * Returns 0 on success or negative value on error.
- */
- #define bcf_update_info_int32(hdr,line,key,values,n) bcf_update_info((hdr),(line),(key),(values),(n),BCF_HT_INT)
- #define bcf_update_info_float(hdr,line,key,values,n) bcf_update_info((hdr),(line),(key),(values),(n),BCF_HT_REAL)
- #define bcf_update_info_flag(hdr,line,key,string,n) bcf_update_info((hdr),(line),(key),(string),(n),BCF_HT_FLAG)
- #define bcf_update_info_string(hdr,line,key,string) bcf_update_info((hdr),(line),(key),(string),1,BCF_HT_STR)
- int bcf_update_info(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const void *values, int n, int type);
-
- /*
- * bcf_update_format_*() - functions for updating FORMAT fields
- * @values: pointer to the array of values, the same number of elements
- * is expected for each sample. Missing values must be padded
- * with bcf_*_missing or bcf_*_vector_end values.
- * @n: number of values in the array. If n==0, existing tag is removed.
- *
- * The function bcf_update_format_string() is a higher-level (slower) variant of
- * bcf_update_format_char(). The former accepts array of \0-terminated strings
- * whereas the latter requires that the strings are collapsed into a single array
- * of fixed-length strings. In case of strings with variable length, shorter strings
- * can be \0-padded. Note that the collapsed strings passed to bcf_update_format_char()
- * are not \0-terminated.
- *
- * Returns 0 on success or negative value on error.
- */
- #define bcf_update_format_int32(hdr,line,key,values,n) bcf_update_format((hdr),(line),(key),(values),(n),BCF_HT_INT)
- #define bcf_update_format_float(hdr,line,key,values,n) bcf_update_format((hdr),(line),(key),(values),(n),BCF_HT_REAL)
- #define bcf_update_format_char(hdr,line,key,values,n) bcf_update_format((hdr),(line),(key),(values),(n),BCF_HT_STR)
- #define bcf_update_genotypes(hdr,line,gts,n) bcf_update_format((hdr),(line),"GT",(gts),(n),BCF_HT_INT) // See bcf_gt_ macros below
- int bcf_update_format_string(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const char **values, int n);
- int bcf_update_format(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const void *values, int n, int type);
-
- // Macros for setting genotypes correctly, for use with bcf_update_genotypes only; idx corresponds
- // to VCF's GT (1-based index to ALT or 0 for the reference allele) and val is the opposite, obtained
- // from bcf_get_genotypes() below.
- #define bcf_gt_phased(idx) ((idx+1)<<1|1)
- #define bcf_gt_unphased(idx) ((idx+1)<<1)
- #define bcf_gt_missing 0
- #define bcf_gt_is_missing(val) ((val)>>1 ? 0 : 1)
- #define bcf_gt_is_phased(idx) ((idx)&1)
- #define bcf_gt_allele(val) (((val)>>1)-1)
-
- /** Conversion between alleles indexes to Number=G genotype index (assuming diploid, all 0-based) */
- #define bcf_alleles2gt(a,b) ((a)>(b)?((a)*((a)+1)/2+(b)):((b)*((b)+1)/2+(a)))
- static inline void bcf_gt2alleles(int igt, int *a, int *b)
- {
- int k = 0, dk = 1;
- while ( k<igt ) { dk++; k += dk; }
- *b = dk - 1; *a = igt - k + *b;
- }
-
- /**
- * bcf_get_fmt() - returns pointer to FORMAT's field data
- * @header: for access to BCF_DT_ID dictionary
- * @line: VCF line obtained from vcf_parse1
- * @fmt: one of GT,PL,...
- *
- * Returns bcf_fmt_t* if the call succeeded, or returns NULL when the field
- * is not available.
- */
- bcf_fmt_t *bcf_get_fmt(const bcf_hdr_t *hdr, bcf1_t *line, const char *key);
- bcf_info_t *bcf_get_info(const bcf_hdr_t *hdr, bcf1_t *line, const char *key);
-
- /**
- * bcf_get_*_id() - returns pointer to FORMAT/INFO field data given the header index instead of the string ID
- * @line: VCF line obtained from vcf_parse1
- * @id: The header index for the tag, obtained from bcf_hdr_id2int()
- *
- * Returns bcf_fmt_t* / bcf_info_t*. These functions do not check if the index is valid
- * as their goal is to avoid the header lookup.
- */
- bcf_fmt_t *bcf_get_fmt_id(bcf1_t *line, const int id);
- bcf_info_t *bcf_get_info_id(bcf1_t *line, const int id);
-
- /**
- * bcf_get_info_*() - get INFO values, integers or floats
- * @hdr: BCF header
- * @line: BCF record
- * @tag: INFO tag to retrieve
- * @dst: *dst is pointer to a memory location, can point to NULL
- * @ndst: pointer to the size of allocated memory
- *
- * Returns negative value on error or the number of written values on
- * success. bcf_get_info_string() returns on success the number of
- * characters written excluding the null-terminating byte. bcf_get_info_flag()
- * returns 1 when flag is set or 0 if not.
- *
- * List of return codes:
- * -1 .. no such INFO tag defined in the header
- * -2 .. clash between types defined in the header and encountered in the VCF record
- * -3 .. tag is not present in the VCF record
- */
- #define bcf_get_info_int32(hdr,line,tag,dst,ndst) bcf_get_info_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_INT)
- #define bcf_get_info_float(hdr,line,tag,dst,ndst) bcf_get_info_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_REAL)
- #define bcf_get_info_string(hdr,line,tag,dst,ndst) bcf_get_info_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_STR)
- #define bcf_get_info_flag(hdr,line,tag,dst,ndst) bcf_get_info_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_FLAG)
- int bcf_get_info_values(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, void **dst, int *ndst, int type);
-
- /**
- * bcf_get_format_*() - same as bcf_get_info*() above
- *
- * The function bcf_get_format_string() is a higher-level (slower) variant of bcf_get_format_char().
- * see the description of bcf_update_format_string() and bcf_update_format_char() above.
- * Unlike other bcf_get_format__*() functions, bcf_get_format_string() allocates two arrays:
- * a single block of \0-terminated strings collapsed into a single array and an array of pointers
- * to these strings. Both arrays must be cleaned by the user.
- *
- * Returns negative value on error or the number of written values on success.
- *
- * Example:
- * int ndst = 0; char **dst = NULL;
- * if ( bcf_get_format_string(hdr, line, "XX", &dst, &ndst) > 0 )
- * for (i=0; i<bcf_hdr_nsamples(hdr); i++) printf("%s\n", dst[i]);
- * free(dst[0]); free(dst);
- *
- * Example:
- * int ngt, *gt_arr = NULL, ngt_arr = 0;
- * ngt = bcf_get_genotypes(hdr, line, >_arr, &ngt_arr);
- */
- #define bcf_get_format_int32(hdr,line,tag,dst,ndst) bcf_get_format_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_INT)
- #define bcf_get_format_float(hdr,line,tag,dst,ndst) bcf_get_format_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_REAL)
- #define bcf_get_format_char(hdr,line,tag,dst,ndst) bcf_get_format_values(hdr,line,tag,(void**)(dst),ndst,BCF_HT_STR)
- #define bcf_get_genotypes(hdr,line,dst,ndst) bcf_get_format_values(hdr,line,"GT",(void**)(dst),ndst,BCF_HT_INT)
- int bcf_get_format_string(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, char ***dst, int *ndst);
- int bcf_get_format_values(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, void **dst, int *ndst, int type);
-
-
-
- /**************************************************************************
- * Helper functions
- **************************************************************************/
-
- /**
- * bcf_hdr_id2int() - Translates string into numeric ID
- * bcf_hdr_int2id() - Translates numeric ID into string
- * @type: one of BCF_DT_ID, BCF_DT_CTG, BCF_DT_SAMPLE
- * @id: tag name, such as: PL, DP, GT, etc.
- *
- * Returns -1 if string is not in dictionary, otherwise numeric ID which identifies
- * fields in BCF records.
- */
- int bcf_hdr_id2int(const bcf_hdr_t *hdr, int type, const char *id);
- #define bcf_hdr_int2id(hdr,type,int_id) ((hdr)->id[type][int_id].key)
-
- /**
- * bcf_hdr_name2id() - Translates sequence names (chromosomes) into numeric ID
- * bcf_hdr_id2name() - Translates numeric ID to sequence name
- */
- static inline int bcf_hdr_name2id(const bcf_hdr_t *hdr, const char *id) { return bcf_hdr_id2int(hdr, BCF_DT_CTG, id); }
- static inline const char *bcf_hdr_id2name(const bcf_hdr_t *hdr, int rid) { return hdr->id[BCF_DT_CTG][rid].key; }
- static inline const char *bcf_seqname(const bcf_hdr_t *hdr, bcf1_t *rec) { return hdr->id[BCF_DT_CTG][rec->rid].key; }
-
- /**
- * bcf_hdr_id2*() - Macros for accessing bcf_idinfo_t
- * @type: one of BCF_HL_FLT, BCF_HL_INFO, BCF_HL_FMT
- * @int_id: return value of bcf_id2int, must be >=0
- *
- * The returned values are:
- * bcf_hdr_id2length .. whether the number of values is fixed or variable, one of BCF_VL_*
- * bcf_hdr_id2number .. the number of values, 0xfffff for variable length fields
- * bcf_hdr_id2type .. the field type, one of BCF_HT_*
- * bcf_hdr_id2coltype .. the column type, one of BCF_HL_*
- *
- * Notes: Prior to using the macros, the presence of the info should be
- * tested with bcf_hdr_idinfo_exists().
- */
- #define bcf_hdr_id2length(hdr,type,int_id) ((hdr)->id[BCF_DT_ID][int_id].val->info[type]>>8 & 0xf)
- #define bcf_hdr_id2number(hdr,type,int_id) ((hdr)->id[BCF_DT_ID][int_id].val->info[type]>>12)
- #define bcf_hdr_id2type(hdr,type,int_id) ((hdr)->id[BCF_DT_ID][int_id].val->info[type]>>4 & 0xf)
- #define bcf_hdr_id2coltype(hdr,type,int_id) ((hdr)->id[BCF_DT_ID][int_id].val->info[type] & 0xf)
- #define bcf_hdr_idinfo_exists(hdr,type,int_id) ((int_id<0 || bcf_hdr_id2coltype(hdr,type,int_id)==0xf) ? 0 : 1)
- #define bcf_hdr_id2hrec(hdr,dict_type,col_type,int_id) ((hdr)->id[(dict_type)==BCF_DT_CTG?BCF_DT_CTG:BCF_DT_ID][int_id].val->hrec[(dict_type)==BCF_DT_CTG?0:(col_type)])
-
- void bcf_fmt_array(kstring_t *s, int n, int type, void *data);
- uint8_t *bcf_fmt_sized_array(kstring_t *s, uint8_t *ptr);
-
- void bcf_enc_vchar(kstring_t *s, int l, const char *a);
- void bcf_enc_vint(kstring_t *s, int n, int32_t *a, int wsize);
- void bcf_enc_vfloat(kstring_t *s, int n, float *a);
-
-
- /**************************************************************************
- * BCF index
- *
- * Note that these functions work with BCFs only. See synced_bcf_reader.h
- * which provides (amongst other things) an API to work transparently with
- * both indexed BCFs and VCFs.
- **************************************************************************/
-
- #define bcf_itr_destroy(iter) hts_itr_destroy(iter)
- #define bcf_itr_queryi(idx, tid, beg, end) hts_itr_query((idx), (tid), (beg), (end), bcf_readrec)
- #define bcf_itr_querys(idx, hdr, s) hts_itr_querys((idx), (s), (hts_name2id_f)(bcf_hdr_name2id), (hdr), hts_itr_query, bcf_readrec)
- #define bcf_itr_next(htsfp, itr, r) hts_itr_next((htsfp)->fp.bgzf, (itr), (r), 0)
- #define bcf_index_load(fn) hts_idx_load(fn, HTS_FMT_CSI)
- #define bcf_index_seqnames(idx, hdr, nptr) hts_idx_seqnames((idx),(nptr),(hts_id2name_f)(bcf_hdr_id2name),(hdr))
-
- int bcf_index_build(const char *fn, int min_shift);
-
-#ifdef __cplusplus
-}
-#endif
-
-/*******************
- * Typed value I/O *
- *******************/
-
-/*
- Note that in contrast with BCFv2.1 specification, HTSlib implementation
- allows missing values in vectors. For integer types, the values 0x80,
- 0x8000, 0x80000000 are interpreted as missing values and 0x81, 0x8001,
- 0x80000001 as end-of-vector indicators. Similarly for floats, the value of
- 0x7F800001 is interpreted as a missing value and 0x7F800002 as an
- end-of-vector indicator.
- Note that the end-of-vector byte is not part of the vector.
-
- This trial BCF version (v2.2) is compatible with the VCF specification and
- enables to handle correctly vectors with different ploidy in presence of
- missing values.
- */
-#define bcf_int8_vector_end (INT8_MIN+1)
-#define bcf_int16_vector_end (INT16_MIN+1)
-#define bcf_int32_vector_end (INT32_MIN+1)
-#define bcf_str_vector_end 0
-#define bcf_int8_missing INT8_MIN
-#define bcf_int16_missing INT16_MIN
-#define bcf_int32_missing INT32_MIN
-#define bcf_str_missing 0x07
-extern uint32_t bcf_float_vector_end;
-extern uint32_t bcf_float_missing;
-static inline void bcf_float_set(float *ptr, uint32_t value)
-{
- union { uint32_t i; float f; } u;
- u.i = value;
- *ptr = u.f;
-}
-#define bcf_float_set_vector_end(x) bcf_float_set(&(x),bcf_float_vector_end)
-#define bcf_float_set_missing(x) bcf_float_set(&(x),bcf_float_missing)
-static inline int bcf_float_is_missing(float f)
-{
- union { uint32_t i; float f; } u;
- u.f = f;
- return u.i==bcf_float_missing ? 1 : 0;
-}
-static inline int bcf_float_is_vector_end(float f)
-{
- union { uint32_t i; float f; } u;
- u.f = f;
- return u.i==bcf_float_vector_end ? 1 : 0;
-}
-
-static inline void bcf_format_gt(bcf_fmt_t *fmt, int isample, kstring_t *str)
-{
- #define BRANCH(type_t, missing, vector_end) { \
- type_t *ptr = (type_t*) (fmt->p + isample*fmt->size); \
- int i; \
- for (i=0; i<fmt->n && ptr[i]!=vector_end; i++) \
- { \
- if ( i ) kputc("/|"[ptr[i]&1], str); \
- if ( !(ptr[i]>>1) ) kputc('.', str); \
- else kputw((ptr[i]>>1) - 1, str); \
- } \
- if (i == 0) kputc('.', str); \
- }
- switch (fmt->type) {
- case BCF_BT_INT8: BRANCH(int8_t, bcf_int8_missing, bcf_int8_vector_end); break;
- case BCF_BT_INT16: BRANCH(int16_t, bcf_int16_missing, bcf_int16_vector_end); break;
- case BCF_BT_INT32: BRANCH(int32_t, bcf_int32_missing, bcf_int32_vector_end); break;
- default: fprintf(stderr,"FIXME: type %d in bcf_format_gt?\n", fmt->type); abort(); break;
- }
- #undef BRANCH
-}
-
-static inline void bcf_enc_size(kstring_t *s, int size, int type)
-{
- if (size >= 15) {
- kputc(15<<4|type, s);
- if (size >= 128) {
- if (size >= 32768) {
- int32_t x = size;
- kputc(1<<4|BCF_BT_INT32, s);
- kputsn((char*)&x, 4, s);
- } else {
- int16_t x = size;
- kputc(1<<4|BCF_BT_INT16, s);
- kputsn((char*)&x, 2, s);
- }
- } else {
- kputc(1<<4|BCF_BT_INT8, s);
- kputc(size, s);
- }
- } else kputc(size<<4|type, s);
-}
-
-static inline int bcf_enc_inttype(long x)
-{
- if (x <= INT8_MAX && x > bcf_int8_missing) return BCF_BT_INT8;
- if (x <= INT16_MAX && x > bcf_int16_missing) return BCF_BT_INT16;
- return BCF_BT_INT32;
-}
-
-static inline void bcf_enc_int1(kstring_t *s, int32_t x)
-{
- if (x == bcf_int32_vector_end) {
- bcf_enc_size(s, 1, BCF_BT_INT8);
- kputc(bcf_int8_vector_end, s);
- } else if (x == bcf_int32_missing) {
- bcf_enc_size(s, 1, BCF_BT_INT8);
- kputc(bcf_int8_missing, s);
- } else if (x <= INT8_MAX && x > bcf_int8_missing) {
- bcf_enc_size(s, 1, BCF_BT_INT8);
- kputc(x, s);
- } else if (x <= INT16_MAX && x > bcf_int16_missing) {
- int16_t z = x;
- bcf_enc_size(s, 1, BCF_BT_INT16);
- kputsn((char*)&z, 2, s);
- } else {
- int32_t z = x;
- bcf_enc_size(s, 1, BCF_BT_INT32);
- kputsn((char*)&z, 4, s);
- }
-}
-
-static inline int32_t bcf_dec_int1(const uint8_t *p, int type, uint8_t **q)
-{
- if (type == BCF_BT_INT8) {
- *q = (uint8_t*)p + 1;
- return *(int8_t*)p;
- } else if (type == BCF_BT_INT16) {
- *q = (uint8_t*)p + 2;
- return *(int16_t*)p;
- } else {
- *q = (uint8_t*)p + 4;
- return *(int32_t*)p;
- }
-}
-
-static inline int32_t bcf_dec_typed_int1(const uint8_t *p, uint8_t **q)
-{
- return bcf_dec_int1(p + 1, *p&0xf, q);
-}
-
-static inline int32_t bcf_dec_size(const uint8_t *p, uint8_t **q, int *type)
-{
- *type = *p & 0xf;
- if (*p>>4 != 15) {
- *q = (uint8_t*)p + 1;
- return *p>>4;
- } else return bcf_dec_typed_int1(p + 1, q);
-}
-
-#endif
diff --git a/htslib/htslib/vcf_sweep.h b/htslib/htslib/vcf_sweep.h
deleted file mode 100644
index 9f295ee..0000000
--- a/htslib/htslib/vcf_sweep.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* vcf_sweep.h -- forward/reverse sweep API.
-
- Copyright (C) 2013 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_VCF_SWEEP_H
-#define HTSLIB_VCF_SWEEP_H
-
-#include "hts.h"
-#include "vcf.h"
-
-typedef struct _bcf_sweep_t bcf_sweep_t;
-
-bcf_sweep_t *bcf_sweep_init(const char *fname);
-void bcf_sweep_destroy(bcf_sweep_t *sw);
-bcf_hdr_t *bcf_sweep_hdr(bcf_sweep_t *sw);
-bcf1_t *bcf_sweep_fwd(bcf_sweep_t *sw);
-bcf1_t *bcf_sweep_bwd(bcf_sweep_t *sw);
-
-#endif
diff --git a/htslib/htslib/vcfutils.h b/htslib/htslib/vcfutils.h
deleted file mode 100644
index dc10395..0000000
--- a/htslib/htslib/vcfutils.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* vcfutils.h -- allele-related utility functions.
-
- Copyright (C) 2012, 2013 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#ifndef HTSLIB_VCFUTILS_H
-#define HTSLIB_VCFUTILS_H
-
-#include "vcf.h"
-
-
-/**
- * bcf_trim_alleles() - remove ALT alleles unused in genotype fields
- * @header: for access to BCF_DT_ID dictionary
- * @line: VCF line obtain from vcf_parse1
- *
- * Returns the number of removed alleles on success or negative
- * on error:
- * -1 .. some allele index is out of bounds
- */
-int bcf_trim_alleles(const bcf_hdr_t *header, bcf1_t *line);
-
-
-/**
- * bcf_remove_alleles() - remove ALT alleles according to bitmask @mask
- * @header: for access to BCF_DT_ID dictionary
- * @line: VCF line obtained from vcf_parse1
- * @mask: alleles to remove
- */
-void bcf_remove_alleles(const bcf_hdr_t *header, bcf1_t *line, int mask);
-
-
-/**
- * bcf_calc_ac() - calculate the number of REF and ALT alleles
- * @header: for access to BCF_DT_ID dictionary
- * @line: VCF line obtained from vcf_parse1
- * @ac: array of length line->n_allele
- * @which: determine if INFO/AN,AC and indv fields be used
- *
- * Returns 1 if the call succeeded, or 0 if the value could not
- * be determined.
- *
- * The value of @which determines if existing INFO/AC,AN can be
- * used (BCF_UN_INFO) and and if indv fields can be splitted
- * (BCF_UN_FMT).
- */
-int bcf_calc_ac(const bcf_hdr_t *header, bcf1_t *line, int *ac, int which);
-
-
-/**
- * bcf_gt_type() - determines type of the genotype
- * @fmt_ptr: the GT format field as set for example by set_fmt_ptr
- * @isample: sample index (starting from 0)
- * @ial: index of the 1st non-reference allele (starting from 1)
- * @jal: index of the 2nd non-reference allele (starting from 1)
- *
- * Returns the type of the genotype (one of GT_HOM_RR, GT_HET_RA,
- * GT_HOM_AA, GT_HET_AA, GT_HAPL_R, GT_HAPL_A or GT_UNKN). If $ial
- * is not NULL and the genotype has one or more non-reference
- * alleles, $ial will be set. In case of GT_HET_AA, $ial is the
- * position of the allele which appeared first in ALT. If $jal is
- * not null and the genotype is GT_HET_AA, $jal will be set and is
- * the position of the second allele in ALT.
- */
-#define GT_HOM_RR 0 // note: the actual value of GT_* matters, used in dosage r2 calculation
-#define GT_HOM_AA 1
-#define GT_HET_RA 2
-#define GT_HET_AA 3
-#define GT_HAPL_R 4
-#define GT_HAPL_A 5
-#define GT_UNKN 6
-int bcf_gt_type(bcf_fmt_t *fmt_ptr, int isample, int *ial, int *jal);
-
-static inline int bcf_acgt2int(char c)
-{
- if ( (int)c>96 ) c -= 32;
- if ( c=='A' ) return 0;
- if ( c=='C' ) return 1;
- if ( c=='G' ) return 2;
- if ( c=='T' ) return 3;
- return -1;
-}
-#define bcf_int2acgt(i) "ACGT"[i]
-
-/**
- * bcf_ij2G() - common task: allele indexes to Number=G index (diploid)
- * @i,j: allele indexes, 0-based, i<=j
- *
- * Returns index to the Number=G diploid array
- */
-#define bcf_ij2G(i, j) ((j)*((j)+1)/2+(i))
-
-#endif
diff --git a/htslib/htslib_vars.mk b/htslib/htslib_vars.mk
deleted file mode 100644
index 08f9a57..0000000
--- a/htslib/htslib_vars.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Makefile variables useful for third-party code using htslib's public API.
-#
-# Copyright (C) 2013-2014 Genome Research Ltd.
-#
-# Author: John Marshall <jm18 at sanger.ac.uk>
-#
-# 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.
-
-# These variables can be used to express dependencies on htslib headers.
-# See htslib.mk for details.
-
-htslib_bgzf_h = $(HTSPREFIX)htslib/bgzf.h
-htslib_faidx_h = $(HTSPREFIX)htslib/faidx.h
-htslib_hfile_h = $(HTSPREFIX)htslib/hfile.h $(htslib_hts_defs_h)
-htslib_hts_h = $(HTSPREFIX)htslib/hts.h
-htslib_hts_defs_h = $(HTSPREFIX)htslib/hts_defs.h
-htslib_regidx_h = $(HTSPREFIX)htslib/regidx.h
-htslib_sam_h = $(HTSPREFIX)htslib/sam.h $(htslib_hts_h)
-htslib_synced_bcf_reader_h = $(HTSPREFIX)htslib/synced_bcf_reader.h $(htslib_hts_h) $(htslib_vcf_h) $(htslib_tbx_h)
-htslib_tbx_h = $(HTSPREFIX)htslib/tbx.h $(htslib_hts_h)
-htslib_vcf_h = $(HTSPREFIX)htslib/vcf.h $(htslib_hts_h) $(HTSPREFIX)htslib/kstring.h
-htslib_vcf_sweep_h = $(HTSPREFIX)htslib/vcf_sweep.h $(htslib_hts_h) $(htslib_vcf_h)
-htslib_vcfutils_h = $(HTSPREFIX)htslib/vcfutils.h $(htslib_vcf_h)
diff --git a/htslib/kfunc.c b/htslib/kfunc.c
deleted file mode 100644
index faa2ac5..0000000
--- a/htslib/kfunc.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/* The MIT License
-
- Copyright (C) 2010, 2013 Genome Research Ltd.
- Copyright (C) 2011 Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#include <math.h>
-#include <stdlib.h>
-#include "htslib/kfunc.h"
-
-/* Log gamma function
- * \log{\Gamma(z)}
- * AS245, 2nd algorithm, http://lib.stat.cmu.edu/apstat/245
- */
-double kf_lgamma(double z)
-{
- double x = 0;
- x += 0.1659470187408462e-06 / (z+7);
- x += 0.9934937113930748e-05 / (z+6);
- x -= 0.1385710331296526 / (z+5);
- x += 12.50734324009056 / (z+4);
- x -= 176.6150291498386 / (z+3);
- x += 771.3234287757674 / (z+2);
- x -= 1259.139216722289 / (z+1);
- x += 676.5203681218835 / z;
- x += 0.9999999999995183;
- return log(x) - 5.58106146679532777 - z + (z-0.5) * log(z+6.5);
-}
-
-/* complementary error function
- * \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2} dt
- * AS66, 2nd algorithm, http://lib.stat.cmu.edu/apstat/66
- */
-double kf_erfc(double x)
-{
- const double p0 = 220.2068679123761;
- const double p1 = 221.2135961699311;
- const double p2 = 112.0792914978709;
- const double p3 = 33.912866078383;
- const double p4 = 6.37396220353165;
- const double p5 = .7003830644436881;
- const double p6 = .03526249659989109;
- const double q0 = 440.4137358247522;
- const double q1 = 793.8265125199484;
- const double q2 = 637.3336333788311;
- const double q3 = 296.5642487796737;
- const double q4 = 86.78073220294608;
- const double q5 = 16.06417757920695;
- const double q6 = 1.755667163182642;
- const double q7 = .08838834764831844;
- double expntl, z, p;
- z = fabs(x) * M_SQRT2;
- if (z > 37.) return x > 0.? 0. : 2.;
- expntl = exp(z * z * - .5);
- if (z < 10. / M_SQRT2) // for small z
- p = expntl * ((((((p6 * z + p5) * z + p4) * z + p3) * z + p2) * z + p1) * z + p0)
- / (((((((q7 * z + q6) * z + q5) * z + q4) * z + q3) * z + q2) * z + q1) * z + q0);
- else p = expntl / 2.506628274631001 / (z + 1. / (z + 2. / (z + 3. / (z + 4. / (z + .65)))));
- return x > 0.? 2. * p : 2. * (1. - p);
-}
-
-/* The following computes regularized incomplete gamma functions.
- * Formulas are taken from Wiki, with additional input from Numerical
- * Recipes in C (for modified Lentz's algorithm) and AS245
- * (http://lib.stat.cmu.edu/apstat/245).
- *
- * A good online calculator is available at:
- *
- * http://www.danielsoper.com/statcalc/calc23.aspx
- *
- * It calculates upper incomplete gamma function, which equals
- * kf_gammaq(s,z)*tgamma(s).
- */
-
-#define KF_GAMMA_EPS 1e-14
-#define KF_TINY 1e-290
-
-// regularized lower incomplete gamma function, by series expansion
-static double _kf_gammap(double s, double z)
-{
- double sum, x;
- int k;
- for (k = 1, sum = x = 1.; k < 100; ++k) {
- sum += (x *= z / (s + k));
- if (x / sum < KF_GAMMA_EPS) break;
- }
- return exp(s * log(z) - z - kf_lgamma(s + 1.) + log(sum));
-}
-// regularized upper incomplete gamma function, by continued fraction
-static double _kf_gammaq(double s, double z)
-{
- int j;
- double C, D, f;
- f = 1. + z - s; C = f; D = 0.;
- // Modified Lentz's algorithm for computing continued fraction
- // See Numerical Recipes in C, 2nd edition, section 5.2
- for (j = 1; j < 100; ++j) {
- double a = j * (s - j), b = (j<<1) + 1 + z - s, d;
- D = b + a * D;
- if (D < KF_TINY) D = KF_TINY;
- C = b + a / C;
- if (C < KF_TINY) C = KF_TINY;
- D = 1. / D;
- d = C * D;
- f *= d;
- if (fabs(d - 1.) < KF_GAMMA_EPS) break;
- }
- return exp(s * log(z) - z - kf_lgamma(s) - log(f));
-}
-
-double kf_gammap(double s, double z)
-{
- return z <= 1. || z < s? _kf_gammap(s, z) : 1. - _kf_gammaq(s, z);
-}
-
-double kf_gammaq(double s, double z)
-{
- return z <= 1. || z < s? 1. - _kf_gammap(s, z) : _kf_gammaq(s, z);
-}
-
-/* Regularized incomplete beta function. The method is taken from
- * Numerical Recipe in C, 2nd edition, section 6.4. The following web
- * page calculates the incomplete beta function, which equals
- * kf_betai(a,b,x) * gamma(a) * gamma(b) / gamma(a+b):
- *
- * http://www.danielsoper.com/statcalc/calc36.aspx
- */
-static double kf_betai_aux(double a, double b, double x)
-{
- double C, D, f;
- int j;
- if (x == 0.) return 0.;
- if (x == 1.) return 1.;
- f = 1.; C = f; D = 0.;
- // Modified Lentz's algorithm for computing continued fraction
- for (j = 1; j < 200; ++j) {
- double aa, d;
- int m = j>>1;
- aa = (j&1)? -(a + m) * (a + b + m) * x / ((a + 2*m) * (a + 2*m + 1))
- : m * (b - m) * x / ((a + 2*m - 1) * (a + 2*m));
- D = 1. + aa * D;
- if (D < KF_TINY) D = KF_TINY;
- C = 1. + aa / C;
- if (C < KF_TINY) C = KF_TINY;
- D = 1. / D;
- d = C * D;
- f *= d;
- if (fabs(d - 1.) < KF_GAMMA_EPS) break;
- }
- return exp(kf_lgamma(a+b) - kf_lgamma(a) - kf_lgamma(b) + a * log(x) + b * log(1.-x)) / a / f;
-}
-double kf_betai(double a, double b, double x)
-{
- return x < (a + 1.) / (a + b + 2.)? kf_betai_aux(a, b, x) : 1. - kf_betai_aux(b, a, 1. - x);
-}
-
-#ifdef KF_MAIN
-#include <stdio.h>
-int main(int argc, char *argv[])
-{
- double x = 5.5, y = 3;
- double a, b;
- printf("erfc(%lg): %lg, %lg\n", x, erfc(x), kf_erfc(x));
- printf("upper-gamma(%lg,%lg): %lg\n", x, y, kf_gammaq(y, x)*tgamma(y));
- a = 2; b = 2; x = 0.5;
- printf("incomplete-beta(%lg,%lg,%lg): %lg\n", a, b, x, kf_betai(a, b, x) / exp(kf_lgamma(a+b) - kf_lgamma(a) - kf_lgamma(b)));
- return 0;
-}
-#endif
-
-
-// log\binom{n}{k}
-static double lbinom(int n, int k)
-{
- if (k == 0 || n == k) return 0;
- return lgamma(n+1) - lgamma(k+1) - lgamma(n-k+1);
-}
-
-// n11 n12 | n1_
-// n21 n22 | n2_
-//-----------+----
-// n_1 n_2 | n
-
-// hypergeometric distribution
-static double hypergeo(int n11, int n1_, int n_1, int n)
-{
- return exp(lbinom(n1_, n11) + lbinom(n-n1_, n_1-n11) - lbinom(n, n_1));
-}
-
-typedef struct {
- int n11, n1_, n_1, n;
- double p;
-} hgacc_t;
-
-// incremental version of hypergenometric distribution
-static double hypergeo_acc(int n11, int n1_, int n_1, int n, hgacc_t *aux)
-{
- if (n1_ || n_1 || n) {
- aux->n11 = n11; aux->n1_ = n1_; aux->n_1 = n_1; aux->n = n;
- } else { // then only n11 changed; the rest fixed
- if (n11%11 && n11 + aux->n - aux->n1_ - aux->n_1) {
- if (n11 == aux->n11 + 1) { // incremental
- aux->p *= (double)(aux->n1_ - aux->n11) / n11
- * (aux->n_1 - aux->n11) / (n11 + aux->n - aux->n1_ - aux->n_1);
- aux->n11 = n11;
- return aux->p;
- }
- if (n11 == aux->n11 - 1) { // incremental
- aux->p *= (double)aux->n11 / (aux->n1_ - n11)
- * (aux->n11 + aux->n - aux->n1_ - aux->n_1) / (aux->n_1 - n11);
- aux->n11 = n11;
- return aux->p;
- }
- }
- aux->n11 = n11;
- }
- aux->p = hypergeo(aux->n11, aux->n1_, aux->n_1, aux->n);
- return aux->p;
-}
-
-double kt_fisher_exact(int n11, int n12, int n21, int n22, double *_left, double *_right, double *two)
-{
- int i, j, max, min;
- double p, q, left, right;
- hgacc_t aux;
- int n1_, n_1, n;
-
- n1_ = n11 + n12; n_1 = n11 + n21; n = n11 + n12 + n21 + n22; // calculate n1_, n_1 and n
- max = (n_1 < n1_) ? n_1 : n1_; // max n11, for right tail
- min = n1_ + n_1 - n; // not sure why n11-n22 is used instead of min(n_1,n1_)
- if (min < 0) min = 0; // min n11, for left tail
- *two = *_left = *_right = 1.;
- if (min == max) return 1.; // no need to do test
- q = hypergeo_acc(n11, n1_, n_1, n, &aux); // the probability of the current table
- // left tail
- p = hypergeo_acc(min, 0, 0, 0, &aux);
- for (left = 0., i = min + 1; p < 0.99999999 * q && i<=max; ++i) // loop until underflow
- left += p, p = hypergeo_acc(i, 0, 0, 0, &aux);
- --i;
- if (p < 1.00000001 * q) left += p;
- else --i;
- // right tail
- p = hypergeo_acc(max, 0, 0, 0, &aux);
- for (right = 0., j = max - 1; p < 0.99999999 * q && j>=0; --j) // loop until underflow
- right += p, p = hypergeo_acc(j, 0, 0, 0, &aux);
- ++j;
- if (p < 1.00000001 * q) right += p;
- else ++j;
- // two-tail
- *two = left + right;
- if (*two > 1.) *two = 1.;
- // adjust left and right
- if (abs(i - n11) < abs(j - n11)) right = 1. - left + q;
- else left = 1.0 - right + q;
- *_left = left; *_right = right;
- return q;
-}
-
-
-
diff --git a/htslib/knetfile.c b/htslib/knetfile.c
deleted file mode 100644
index 28fe629..0000000
--- a/htslib/knetfile.c
+++ /dev/null
@@ -1,632 +0,0 @@
-/* The MIT License
-
- Copyright (c) 2008 by Genome Research Ltd (GRL).
- 2010 by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-/* Probably I will not do socket programming in the next few years and
- therefore I decide to heavily annotate this file, for Linux and
- Windows as well. -ac */
-
-#include <time.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#ifndef _WIN32
-#include <netdb.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#endif
-
-#include "htslib/knetfile.h"
-
-/* In winsock.h, the type of a socket is SOCKET, which is: "typedef
- * u_int SOCKET". An invalid SOCKET is: "(SOCKET)(~0)", or signed
- * integer -1. In knetfile.c, I use "int" for socket type
- * throughout. This should be improved to avoid confusion.
- *
- * In Linux/Mac, recv() and read() do almost the same thing. You can see
- * in the header file that netread() is simply an alias of read(). In
- * Windows, however, they are different and using recv() is mandatory.
- */
-
-/* This function tests if the file handler is ready for reading (or
- * writing if is_read==0). */
-static int socket_wait(int fd, int is_read)
-{
- fd_set fds, *fdr = 0, *fdw = 0;
- struct timeval tv;
- int ret;
- tv.tv_sec = 5; tv.tv_usec = 0; // 5 seconds time out
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- if (is_read) fdr = &fds;
- else fdw = &fds;
- ret = select(fd+1, fdr, fdw, 0, &tv);
-#ifndef _WIN32
- if (ret == -1) perror("select");
-#else
- if (ret == 0)
- fprintf(stderr, "select time-out\n");
- else if (ret == SOCKET_ERROR)
- fprintf(stderr, "select: %d\n", WSAGetLastError());
-#endif
- return ret;
-}
-
-#ifndef _WIN32
-/* This function does not work with Windows due to the lack of
- * getaddrinfo() in winsock. It is addapted from an example in "Beej's
- * Guide to Network Programming" (http://beej.us/guide/bgnet/). */
-static int socket_connect(const char *host, const char *port)
-{
-#define __err_connect(func) do { perror(func); freeaddrinfo(res); return -1; } while (0)
-
- int ai_err, on = 1, fd;
- struct linger lng = { 0, 0 };
- struct addrinfo hints, *res = 0;
- memset(&hints, 0, sizeof(struct addrinfo));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- /* In Unix/Mac, getaddrinfo() is the most convenient way to get
- * server information. */
- if ((ai_err = getaddrinfo(host, port, &hints, &res)) != 0) { fprintf(stderr, "can't resolve %s:%s: %s\n", host, port, gai_strerror(ai_err)); return -1; }
- if ((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) __err_connect("socket");
- /* The following two setsockopt() are used by ftplib
- * (http://nbpfaus.net/~pfau/ftplib/). I am not sure if they
- * necessary. */
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) __err_connect("setsockopt");
- if (setsockopt(fd, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)) == -1) __err_connect("setsockopt");
- if (connect(fd, res->ai_addr, res->ai_addrlen) != 0) __err_connect("connect");
- freeaddrinfo(res);
- return fd;
-}
-#else
-/* MinGW's printf has problem with "%lld" */
-char *int64tostr(char *buf, int64_t x)
-{
- int cnt;
- int i = 0;
- do {
- buf[i++] = '0' + x % 10;
- x /= 10;
- } while (x);
- buf[i] = 0;
- for (cnt = i, i = 0; i < cnt/2; ++i) {
- int c = buf[i]; buf[i] = buf[cnt-i-1]; buf[cnt-i-1] = c;
- }
- return buf;
-}
-
-int64_t strtoint64(const char *buf)
-{
- int64_t x;
- for (x = 0; *buf != '\0'; ++buf)
- x = x * 10 + ((int64_t) *buf - 48);
- return x;
-}
-/* In windows, the first thing is to establish the TCP connection. */
-int knet_win32_init()
-{
- WSADATA wsaData;
- return WSAStartup(MAKEWORD(2, 2), &wsaData);
-}
-void knet_win32_destroy()
-{
- WSACleanup();
-}
-/* A slightly modfied version of the following function also works on
- * Mac (and presummably Linux). However, this function is not stable on
- * my Mac. It sometimes works fine but sometimes does not. Therefore for
- * non-Windows OS, I do not use this one. */
-static SOCKET socket_connect(const char *host, const char *port)
-{
-#define __err_connect(func) \
- do { \
- fprintf(stderr, "%s: %d\n", func, WSAGetLastError()); \
- return -1; \
- } while (0)
-
- int on = 1;
- SOCKET fd;
- struct linger lng = { 0, 0 };
- struct sockaddr_in server;
- struct hostent *hp = 0;
- // open socket
- if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) __err_connect("socket");
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof(on)) == -1) __err_connect("setsockopt");
- if (setsockopt(fd, SOL_SOCKET, SO_LINGER, (char*)&lng, sizeof(lng)) == -1) __err_connect("setsockopt");
- // get host info
- if (isalpha(host[0])) hp = gethostbyname(host);
- else {
- struct in_addr addr;
- addr.s_addr = inet_addr(host);
- hp = gethostbyaddr((char*)&addr, 4, AF_INET);
- }
- if (hp == 0) __err_connect("gethost");
- // connect
- server.sin_addr.s_addr = *((unsigned long*)hp->h_addr);
- server.sin_family= AF_INET;
- server.sin_port = htons(atoi(port));
- if (connect(fd, (struct sockaddr*)&server, sizeof(server)) != 0) __err_connect("connect");
- // freehostent(hp); // strangely in MSDN, hp is NOT freed (memory leak?!)
- return fd;
-}
-#endif
-
-static off_t my_netread(int fd, void *buf, off_t len)
-{
- off_t rest = len, curr, l = 0;
- /* recv() and read() may not read the required length of data with
- * one call. They have to be called repeatedly. */
- while (rest) {
- if (socket_wait(fd, 1) <= 0) break; // socket is not ready for reading
- curr = netread(fd, (void*)((char*)buf + l), rest);
- /* According to the glibc manual, section 13.2, a zero returned
- * value indicates end-of-file (EOF), which should mean that
- * read() will not return zero if EOF has not been met but data
- * are not immediately available. */
- if (curr == 0) break;
- l += curr; rest -= curr;
- }
- return l;
-}
-
-/*************************
- * FTP specific routines *
- *************************/
-
-static int kftp_get_response(knetFile *ftp)
-{
-#ifndef _WIN32
- unsigned char c;
-#else
- char c;
-#endif
- int n = 0;
- char *p;
- if (socket_wait(ftp->ctrl_fd, 1) <= 0) return 0;
- while (netread(ftp->ctrl_fd, &c, 1)) { // FIXME: this is *VERY BAD* for unbuffered I/O
- //fputc(c, stderr);
- if (n >= ftp->max_response) {
- ftp->max_response = ftp->max_response? ftp->max_response<<1 : 256;
- ftp->response = (char*)realloc(ftp->response, ftp->max_response);
- }
- ftp->response[n++] = c;
- if (c == '\n') {
- if (n >= 4 && isdigit(ftp->response[0]) && isdigit(ftp->response[1]) && isdigit(ftp->response[2])
- && ftp->response[3] != '-') break;
- n = 0;
- continue;
- }
- }
- if (n < 2) return -1;
- ftp->response[n-2] = 0;
- return strtol(ftp->response, &p, 0);
-}
-
-static int kftp_send_cmd(knetFile *ftp, const char *cmd, int is_get)
-{
- if (socket_wait(ftp->ctrl_fd, 0) <= 0) return -1; // socket is not ready for writing
- int len = strlen(cmd);
- if ( netwrite(ftp->ctrl_fd, cmd, len) != len ) return -1;
- return is_get? kftp_get_response(ftp) : 0;
-}
-
-static int kftp_pasv_prep(knetFile *ftp)
-{
- char *p;
- int v[6];
- kftp_send_cmd(ftp, "PASV\r\n", 1);
- for (p = ftp->response; *p && *p != '('; ++p);
- if (*p != '(') return -1;
- ++p;
- sscanf(p, "%d,%d,%d,%d,%d,%d", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5]);
- memcpy(ftp->pasv_ip, v, 4 * sizeof(int));
- ftp->pasv_port = (v[4]<<8&0xff00) + v[5];
- return 0;
-}
-
-
-static int kftp_pasv_connect(knetFile *ftp)
-{
- char host[80], port[10];
- if (ftp->pasv_port == 0) {
- fprintf(stderr, "[kftp_pasv_connect] kftp_pasv_prep() is not called before hand.\n");
- return -1;
- }
- sprintf(host, "%d.%d.%d.%d", ftp->pasv_ip[0], ftp->pasv_ip[1], ftp->pasv_ip[2], ftp->pasv_ip[3]);
- sprintf(port, "%d", ftp->pasv_port);
- ftp->fd = socket_connect(host, port);
- if (ftp->fd == -1) return -1;
- return 0;
-}
-
-int kftp_connect(knetFile *ftp)
-{
- ftp->ctrl_fd = socket_connect(ftp->host, ftp->port);
- if (ftp->ctrl_fd == -1) return -1;
- kftp_get_response(ftp);
- kftp_send_cmd(ftp, "USER anonymous\r\n", 1);
- kftp_send_cmd(ftp, "PASS kftp@\r\n", 1);
- kftp_send_cmd(ftp, "TYPE I\r\n", 1);
- return 0;
-}
-
-int kftp_reconnect(knetFile *ftp)
-{
- if (ftp->ctrl_fd != -1) {
- netclose(ftp->ctrl_fd);
- ftp->ctrl_fd = -1;
- }
- netclose(ftp->fd);
- ftp->fd = -1;
- return kftp_connect(ftp);
-}
-
-// initialize ->type, ->host, ->retr and ->size
-knetFile *kftp_parse_url(const char *fn, const char *mode)
-{
- knetFile *fp;
- char *p;
- int l;
- if (strstr(fn, "ftp://") != fn) return 0;
- for (p = (char*)fn + 6; *p && *p != '/'; ++p);
- if (*p != '/') return 0;
- l = p - fn - 6;
- fp = (knetFile*)calloc(1, sizeof(knetFile));
- fp->type = KNF_TYPE_FTP;
- fp->fd = -1;
- /* the Linux/Mac version of socket_connect() also recognizes a port
- * like "ftp", but the Windows version does not. */
- fp->port = strdup("21");
- fp->host = (char*)calloc(l + 1, 1);
- if (strchr(mode, 'c')) fp->no_reconnect = 1;
- strncpy(fp->host, fn + 6, l);
- fp->retr = (char*)calloc(strlen(p) + 8, 1);
- sprintf(fp->retr, "RETR %s\r\n", p);
- fp->size_cmd = (char*)calloc(strlen(p) + 8, 1);
- sprintf(fp->size_cmd, "SIZE %s\r\n", p);
- fp->seek_offset = 0;
- return fp;
-}
-// place ->fd at offset off
-int kftp_connect_file(knetFile *fp)
-{
- int ret;
- long long file_size;
- if (fp->fd != -1) {
- netclose(fp->fd);
- if (fp->no_reconnect) kftp_get_response(fp);
- }
- kftp_pasv_prep(fp);
- kftp_send_cmd(fp, fp->size_cmd, 1);
-#ifndef _WIN32
- // If the file does not exist, the response will be "550 Could not get file
- // size". Be silent on failure, hts_idx_load can be trying the existence of .csi or .tbi.
- if ( sscanf(fp->response,"%*d %lld", &file_size) != 1 ) return -1;
-#else
- const char *p = fp->response;
- while (*p != ' ') ++p;
- while (*p < '0' || *p > '9') ++p;
- file_size = strtoint64(p);
-#endif
- fp->file_size = file_size;
- if (fp->offset>=0) {
- char tmp[32];
-#ifndef _WIN32
- sprintf(tmp, "REST %lld\r\n", (long long)fp->offset);
-#else
- strcpy(tmp, "REST ");
- int64tostr(tmp + 5, fp->offset);
- strcat(tmp, "\r\n");
-#endif
- kftp_send_cmd(fp, tmp, 1);
- }
- kftp_send_cmd(fp, fp->retr, 0);
- kftp_pasv_connect(fp);
- ret = kftp_get_response(fp);
- if (ret != 150) {
- fprintf(stderr, "[kftp_connect_file] %s\n", fp->response);
- netclose(fp->fd);
- fp->fd = -1;
- return -1;
- }
- fp->is_ready = 1;
- return 0;
-}
-
-
-/**************************
- * HTTP specific routines *
- **************************/
-
-knetFile *khttp_parse_url(const char *fn, const char *mode)
-{
- knetFile *fp;
- char *p, *proxy, *q;
- int l;
- if (strstr(fn, "http://") != fn) return 0;
- // set ->http_host
- for (p = (char*)fn + 7; *p && *p != '/'; ++p);
- l = p - fn - 7;
- fp = (knetFile*)calloc(1, sizeof(knetFile));
- fp->http_host = (char*)calloc(l + 1, 1);
- strncpy(fp->http_host, fn + 7, l);
- fp->http_host[l] = 0;
- for (q = fp->http_host; *q && *q != ':'; ++q);
- if (*q == ':') *q++ = 0;
- // get http_proxy
- proxy = getenv("http_proxy");
- // set ->host, ->port and ->path
- if (proxy == 0) {
- fp->host = strdup(fp->http_host); // when there is no proxy, server name is identical to http_host name.
- fp->port = strdup(*q? q : "80");
- fp->path = strdup(*p? p : "/");
- } else {
- fp->host = (strstr(proxy, "http://") == proxy)? strdup(proxy + 7) : strdup(proxy);
- for (q = fp->host; *q && *q != ':'; ++q);
- if (*q == ':') *q++ = 0;
- fp->port = strdup(*q? q : "80");
- fp->path = strdup(fn);
- }
- fp->type = KNF_TYPE_HTTP;
- fp->ctrl_fd = fp->fd = -1;
- fp->seek_offset = 0;
- return fp;
-}
-
-int khttp_connect_file(knetFile *fp)
-{
- int ret, l = 0;
- char *buf, *p;
- if (fp->fd != -1) netclose(fp->fd);
- fp->fd = socket_connect(fp->host, fp->port);
- buf = (char*)calloc(0x10000, 1); // FIXME: I am lazy... But in principle, 64KB should be large enough.
- l += sprintf(buf + l, "GET %s HTTP/1.0\r\nHost: %s\r\n", fp->path, fp->http_host);
- l += sprintf(buf + l, "Range: bytes=%lld-\r\n", (long long)fp->offset);
- l += sprintf(buf + l, "\r\n");
- if ( netwrite(fp->fd, buf, l) != l ) { free(buf); return -1; }
- l = 0;
- while (netread(fp->fd, buf + l, 1)) { // read HTTP header; FIXME: bad efficiency
- if (buf[l] == '\n' && l >= 3)
- if (strncmp(buf + l - 3, "\r\n\r\n", 4) == 0) break;
- ++l;
- }
- buf[l] = 0;
- if (l < 14) { // prematured header
- free(buf);
- netclose(fp->fd);
- fp->fd = -1;
- return -1;
- }
- ret = strtol(buf + 8, &p, 0); // HTTP return code
- if (ret == 200 && fp->offset>0) { // 200 (complete result); then skip beginning of the file
- off_t rest = fp->offset;
- while (rest) {
- off_t l = rest < 0x10000? rest : 0x10000;
- rest -= my_netread(fp->fd, buf, l);
- }
- } else if (ret != 206 && ret != 200) {
- // failed to open file
- free(buf);
- netclose(fp->fd);
- switch (ret) {
- case 401: errno = EPERM; break;
- case 403: errno = EACCES; break;
- case 404: errno = ENOENT; break;
- case 407: errno = EPERM; break;
- case 408: errno = ETIMEDOUT; break;
- case 410: errno = ENOENT; break;
- case 503: errno = EAGAIN; break;
- case 504: errno = ETIMEDOUT; break;
- default: errno = (ret >= 400 && ret < 500)? EINVAL : EIO; break;
- }
- fp->fd = -1;
- return -1;
- }
- free(buf);
- fp->is_ready = 1;
- return 0;
-}
-
-/********************
- * Generic routines *
- ********************/
-
-knetFile *knet_open(const char *fn, const char *mode)
-{
- knetFile *fp = 0;
- if (mode[0] != 'r') {
- fprintf(stderr, "[kftp_open] only mode \"r\" is supported.\n");
- return 0;
- }
- if (strstr(fn, "ftp://") == fn) {
- fp = kftp_parse_url(fn, mode);
- if (fp == 0) return 0;
- if (kftp_connect(fp) == -1) {
- knet_close(fp);
- return 0;
- }
- kftp_connect_file(fp);
- } else if (strstr(fn, "http://") == fn) {
- fp = khttp_parse_url(fn, mode);
- if (fp == 0) return 0;
- khttp_connect_file(fp);
- } else { // local file
-#ifdef _WIN32
- /* In windows, O_BINARY is necessary. In Linux/Mac, O_BINARY may
- * be undefined on some systems, although it is defined on my
- * Mac and the Linux I have tested on. */
- int fd = open(fn, O_RDONLY | O_BINARY);
-#else
- int fd = open(fn, O_RDONLY);
-#endif
- if (fd == -1) {
- perror("open");
- return 0;
- }
- fp = (knetFile*)calloc(1, sizeof(knetFile));
- fp->type = KNF_TYPE_LOCAL;
- fp->fd = fd;
- fp->ctrl_fd = -1;
- }
- if (fp && fp->fd == -1) {
- knet_close(fp);
- return 0;
- }
- return fp;
-}
-
-knetFile *knet_dopen(int fd, const char *mode)
-{
- knetFile *fp = (knetFile*)calloc(1, sizeof(knetFile));
- fp->type = KNF_TYPE_LOCAL;
- fp->fd = fd;
- return fp;
-}
-
-ssize_t knet_read(knetFile *fp, void *buf, size_t len)
-{
- off_t l = 0;
- if (fp->fd == -1) return 0;
- if (fp->type == KNF_TYPE_FTP) {
- if (fp->is_ready == 0) {
- if (!fp->no_reconnect) kftp_reconnect(fp);
- kftp_connect_file(fp);
- }
- } else if (fp->type == KNF_TYPE_HTTP) {
- if (fp->is_ready == 0)
- khttp_connect_file(fp);
- }
- if (fp->type == KNF_TYPE_LOCAL) { // on Windows, the following block is necessary; not on UNIX
- size_t rest = len;
- ssize_t curr;
- while (rest) {
- do {
- curr = read(fp->fd, (void*)((char*)buf + l), rest);
- } while (curr < 0 && EINTR == errno);
- if (curr < 0) return -1;
- if (curr == 0) break;
- l += curr; rest -= curr;
- }
- } else l = my_netread(fp->fd, buf, len);
- fp->offset += l;
- return l;
-}
-
-off_t knet_seek(knetFile *fp, off_t off, int whence)
-{
- if (whence == SEEK_SET && off == fp->offset) return 0;
- if (fp->type == KNF_TYPE_LOCAL) {
- /* Be aware that lseek() returns the offset after seeking, while fseek() returns zero on success. */
- off_t offset = lseek(fp->fd, off, whence);
- if (offset == -1) return -1;
- fp->offset = offset;
- return fp->offset;
- } else if (fp->type == KNF_TYPE_FTP) {
- if (whence == SEEK_CUR) fp->offset += off;
- else if (whence == SEEK_SET) fp->offset = off;
- else if (whence == SEEK_END) fp->offset = fp->file_size + off;
- else return -1;
- fp->is_ready = 0;
- return fp->offset;
- } else if (fp->type == KNF_TYPE_HTTP) {
- if (whence == SEEK_END) { // FIXME: can we allow SEEK_END in future?
- fprintf(stderr, "[knet_seek] SEEK_END is not supported for HTTP. Offset is unchanged.\n");
- errno = ESPIPE;
- return -1;
- }
- if (whence == SEEK_CUR) fp->offset += off;
- else if (whence == SEEK_SET) fp->offset = off;
- else return -1;
- fp->is_ready = 0;
- return fp->offset;
- }
- errno = EINVAL;
- fprintf(stderr,"[knet_seek] %s\n", strerror(errno));
- return -1;
-}
-
-int knet_close(knetFile *fp)
-{
- if (fp == 0) return 0;
- if (fp->ctrl_fd != -1) netclose(fp->ctrl_fd); // FTP specific
- if (fp->fd != -1) {
- /* On Linux/Mac, netclose() is an alias of close(), but on
- * Windows, it is an alias of closesocket(). */
- if (fp->type == KNF_TYPE_LOCAL) close(fp->fd);
- else netclose(fp->fd);
- }
- free(fp->host); free(fp->port);
- free(fp->response); free(fp->retr); // FTP specific
- free(fp->path); free(fp->http_host); // HTTP specific
- free(fp);
- return 0;
-}
-
-#ifdef KNETFILE_MAIN
-int main(void)
-{
- char *buf;
- knetFile *fp;
- int type = 4, l;
-#ifdef _WIN32
- knet_win32_init();
-#endif
- buf = calloc(0x100000, 1);
- if (type == 0) {
- fp = knet_open("knetfile.c", "r");
- knet_seek(fp, 1000, SEEK_SET);
- } else if (type == 1) { // NCBI FTP, large file
- fp = knet_open("ftp://ftp.ncbi.nih.gov/1000genomes/ftp/data/NA12878/alignment/NA12878.chrom6.SLX.SRP000032.2009_06.bam", "r");
- knet_seek(fp, 2500000000ll, SEEK_SET);
- l = knet_read(fp, buf, 255);
- } else if (type == 2) {
- fp = knet_open("ftp://ftp.sanger.ac.uk/pub4/treefam/tmp/index.shtml", "r");
- knet_seek(fp, 1000, SEEK_SET);
- } else if (type == 3) {
- fp = knet_open("http://www.sanger.ac.uk/Users/lh3/index.shtml", "r");
- knet_seek(fp, 1000, SEEK_SET);
- } else if (type == 4) {
- fp = knet_open("http://www.sanger.ac.uk/Users/lh3/ex1.bam", "r");
- knet_read(fp, buf, 10000);
- knet_seek(fp, 20000, SEEK_SET);
- knet_seek(fp, 10000, SEEK_SET);
- l = knet_read(fp, buf+10000, 10000000) + 10000;
- }
- if (type != 4 && type != 1) {
- knet_read(fp, buf, 255);
- buf[255] = 0;
- printf("%s\n", buf);
- } else write(fileno(stdout), buf, l);
- knet_close(fp);
- free(buf);
- return 0;
-}
-#endif
diff --git a/htslib/kstring.c b/htslib/kstring.c
deleted file mode 100644
index 0128266..0000000
--- a/htslib/kstring.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* The MIT License
-
- Copyright (C) 2011 by Attractive Chaos <attractor at live.co.uk>
-
- 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.
-*/
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdint.h>
-#include "htslib/kstring.h"
-
-int kvsprintf(kstring_t *s, const char *fmt, va_list ap)
-{
- va_list args;
- int l;
- va_copy(args, ap);
- l = vsnprintf(s->s + s->l, s->m - s->l, fmt, args); // This line does not work with glibc 2.0. See `man snprintf'.
- va_end(args);
- if (l + 1 > s->m - s->l) {
- s->m = s->l + l + 2;
- kroundup32(s->m);
- s->s = (char*)realloc(s->s, s->m);
- va_copy(args, ap);
- l = vsnprintf(s->s + s->l, s->m - s->l, fmt, args);
- va_end(args);
- }
- s->l += l;
- return l;
-}
-
-int ksprintf(kstring_t *s, const char *fmt, ...)
-{
- va_list ap;
- int l;
- va_start(ap, fmt);
- l = kvsprintf(s, fmt, ap);
- va_end(ap);
- return l;
-}
-
-char *kstrtok(const char *str, const char *sep, ks_tokaux_t *aux)
-{
- const char *p, *start;
- if (sep) { // set up the table
- if (str == 0 && (aux->tab[0]&1)) return 0; // no need to set up if we have finished
- aux->finished = 0;
- if (sep[1]) {
- aux->sep = -1;
- aux->tab[0] = aux->tab[1] = aux->tab[2] = aux->tab[3] = 0;
- for (p = sep; *p; ++p) aux->tab[*p>>6] |= 1ull<<(*p&0x3f);
- } else aux->sep = sep[0];
- }
- if (aux->finished) return 0;
- else if (str) aux->p = str - 1, aux->finished = 0;
- if (aux->sep < 0) {
- for (p = start = aux->p + 1; *p; ++p)
- if (aux->tab[*p>>6]>>(*p&0x3f)&1) break;
- } else {
- for (p = start = aux->p + 1; *p; ++p)
- if (*p == aux->sep) break;
- }
- aux->p = p; // end of token
- if (*p == 0) aux->finished = 1; // no more tokens
- return (char*)start;
-}
-
-// s MUST BE a null terminated string; l = strlen(s)
-int ksplit_core(char *s, int delimiter, int *_max, int **_offsets)
-{
- int i, n, max, last_char, last_start, *offsets, l;
- n = 0; max = *_max; offsets = *_offsets;
- l = strlen(s);
-
-#define __ksplit_aux do { \
- if (_offsets) { \
- s[i] = 0; \
- if (n == max) { \
- int *tmp; \
- max = max? max<<1 : 2; \
- if ((tmp = (int*)realloc(offsets, sizeof(int) * max))) { \
- offsets = tmp; \
- } else { \
- free(offsets); \
- *_offsets = NULL; \
- return 0; \
- } \
- } \
- offsets[n++] = last_start; \
- } else ++n; \
- } while (0)
-
- for (i = 0, last_char = last_start = 0; i <= l; ++i) {
- if (delimiter == 0) {
- if (isspace(s[i]) || s[i] == 0) {
- if (isgraph(last_char)) __ksplit_aux; // the end of a field
- } else {
- if (isspace(last_char) || last_char == 0) last_start = i;
- }
- } else {
- if (s[i] == delimiter || s[i] == 0) {
- if (last_char != 0 && last_char != delimiter) __ksplit_aux; // the end of a field
- } else {
- if (last_char == delimiter || last_char == 0) last_start = i;
- }
- }
- last_char = s[i];
- }
- *_max = max; *_offsets = offsets;
- return n;
-}
-
-/**********************
- * Boyer-Moore search *
- **********************/
-
-typedef unsigned char ubyte_t;
-
-// reference: http://www-igm.univ-mlv.fr/~lecroq/string/node14.html
-static int *ksBM_prep(const ubyte_t *pat, int m)
-{
- int i, *suff, *prep, *bmGs, *bmBc;
- prep = (int*)calloc(m + 256, sizeof(int));
- bmGs = prep; bmBc = prep + m;
- { // preBmBc()
- for (i = 0; i < 256; ++i) bmBc[i] = m;
- for (i = 0; i < m - 1; ++i) bmBc[pat[i]] = m - i - 1;
- }
- suff = (int*)calloc(m, sizeof(int));
- { // suffixes()
- int f = 0, g;
- suff[m - 1] = m;
- g = m - 1;
- for (i = m - 2; i >= 0; --i) {
- if (i > g && suff[i + m - 1 - f] < i - g)
- suff[i] = suff[i + m - 1 - f];
- else {
- if (i < g) g = i;
- f = i;
- while (g >= 0 && pat[g] == pat[g + m - 1 - f]) --g;
- suff[i] = f - g;
- }
- }
- }
- { // preBmGs()
- int j = 0;
- for (i = 0; i < m; ++i) bmGs[i] = m;
- for (i = m - 1; i >= 0; --i)
- if (suff[i] == i + 1)
- for (; j < m - 1 - i; ++j)
- if (bmGs[j] == m)
- bmGs[j] = m - 1 - i;
- for (i = 0; i <= m - 2; ++i)
- bmGs[m - 1 - suff[i]] = m - 1 - i;
- }
- free(suff);
- return prep;
-}
-
-void *kmemmem(const void *_str, int n, const void *_pat, int m, int **_prep)
-{
- int i, j, *prep = 0, *bmGs, *bmBc;
- const ubyte_t *str, *pat;
- str = (const ubyte_t*)_str; pat = (const ubyte_t*)_pat;
- prep = (_prep == 0 || *_prep == 0)? ksBM_prep(pat, m) : *_prep;
- if (_prep && *_prep == 0) *_prep = prep;
- bmGs = prep; bmBc = prep + m;
- j = 0;
- while (j <= n - m) {
- for (i = m - 1; i >= 0 && pat[i] == str[i+j]; --i);
- if (i >= 0) {
- int max = bmBc[str[i+j]] - m + 1 + i;
- if (max < bmGs[i]) max = bmGs[i];
- j += max;
- } else return (void*)(str + j);
- }
- if (_prep == 0) free(prep);
- return 0;
-}
-
-char *kstrstr(const char *str, const char *pat, int **_prep)
-{
- return (char*)kmemmem(str, strlen(str), pat, strlen(pat), _prep);
-}
-
-char *kstrnstr(const char *str, const char *pat, int n, int **_prep)
-{
- return (char*)kmemmem(str, n, pat, strlen(pat), _prep);
-}
-
-/***********************
- * The main() function *
- ***********************/
-
-#ifdef KSTRING_MAIN
-#include <stdio.h>
-int main()
-{
- kstring_t *s;
- int *fields, n, i;
- ks_tokaux_t aux;
- char *p;
- s = (kstring_t*)calloc(1, sizeof(kstring_t));
- // test ksprintf()
- ksprintf(s, " abcdefg: %d ", 100);
- printf("'%s'\n", s->s);
- // test ksplit()
- fields = ksplit(s, 0, &n);
- for (i = 0; i < n; ++i)
- printf("field[%d] = '%s'\n", i, s->s + fields[i]);
- // test kstrtok()
- s->l = 0;
- for (p = kstrtok("ab:cde:fg/hij::k", ":/", &aux); p; p = kstrtok(0, 0, &aux)) {
- kputsn(p, aux.p - p, s);
- kputc('\n', s);
- }
- printf("%s", s->s);
- // free
- free(s->s); free(s); free(fields);
-
- {
- static char *str = "abcdefgcdgcagtcakcdcd";
- static char *pat = "cd";
- char *ret, *s = str;
- int *prep = 0;
- while ((ret = kstrstr(s, pat, &prep)) != 0) {
- printf("match: %s\n", ret);
- s = ret + prep[0];
- }
- free(prep);
- }
- return 0;
-}
-#endif
diff --git a/htslib/regidx.c b/htslib/regidx.c
deleted file mode 100644
index 291ba79..0000000
--- a/htslib/regidx.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- Copyright (C) 2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
- 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.
-*/
-
-#include "htslib/hts.h"
-#include "htslib/kstring.h"
-#include "htslib/kseq.h"
-#include "htslib/khash_str2int.h"
-#include "htslib/regidx.h"
-
-#define LIDX_SHIFT 13 // number of insignificant index bits
-
-// List of regions for one chromosome
-typedef struct
-{
- int *idx, nidx;
- int nregs, mregs; // n:used, m:alloced
- reg_t *regs;
- void *payload;
-}
-reglist_t;
-
-// Container of all sequences
-struct _regidx_t
-{
- int nseq, mseq; // n:used, m:alloced
- reglist_t *seq; // regions for each sequence
- void *seq2regs; // hash for fast lookup from chr name to regions
- char **seq_names;
- regidx_free_f free; // function to free any data allocated by regidx_parse_f
- regidx_parse_f parse; // parse one input line
- void *usr; // user data to pass to regidx_parse_f
-
- // temporary data for index initialization
- kstring_t str;
- int rid_prev, start_prev, end_prev;
- int payload_size;
- void *payload;
-};
-
-int regidx_seq_nregs(regidx_t *idx, const char *seq)
-{
- int iseq;
- if ( khash_str2int_get(idx->seq2regs, seq, &iseq)!=0 ) return 0; // no such sequence
- return idx->seq[iseq].nregs;
-}
-
-int regidx_nregs(regidx_t *idx)
-{
- int i, nregs = 0;
- for (i=0; i<idx->nseq; i++) nregs += idx->seq[i].nregs;
- return nregs;
-}
-
-char **regidx_seq_names(regidx_t *idx, int *n)
-{
- *n = idx->nseq;
- return idx->seq_names;
-}
-
-int _regidx_build_index(regidx_t *idx)
-{
- int iseq;
- for (iseq=0; iseq<idx->nseq; iseq++)
- {
- reglist_t *list = &idx->seq[iseq];
- int j,k, imax = 0; // max index bin
- for (j=0; j<list->nregs; j++)
- {
- int ibeg = list->regs[j].start >> LIDX_SHIFT;
- int iend = list->regs[j].end >> LIDX_SHIFT;
- if ( imax < iend + 1 )
- {
- int old_imax = imax;
- imax = iend + 1;
- kroundup32(imax);
- list->idx = (int*) realloc(list->idx, imax*sizeof(int));
- for (k=old_imax; k<imax; k++) list->idx[k] = -1;
- }
- if ( ibeg==iend )
- {
- if ( list->idx[ibeg]<0 ) list->idx[ibeg] = j;
- }
- else
- {
- for (k=ibeg; k<=iend; k++)
- if ( list->idx[k]<0 ) list->idx[k] = j;
- }
- list->nidx = iend + 1;
- }
- }
- return 0;
-}
-
-int regidx_insert(regidx_t *idx, char *line)
-{
- if ( !line )
- return _regidx_build_index(idx);
-
- char *chr_from, *chr_to;
- reg_t reg;
- int ret = idx->parse(line,&chr_from,&chr_to,®,idx->payload,idx->usr);
- if ( ret==-2 ) return -1; // error
- if ( ret==-1 ) return 0; // skip the line
-
- int rid;
- idx->str.l = 0;
- kputsn(chr_from, chr_to-chr_from+1, &idx->str);
- if ( khash_str2int_get(idx->seq2regs, idx->str.s, &rid)!=0 )
- {
- idx->nseq++;
- int m_prev = idx->mseq;
- hts_expand0(reglist_t,idx->nseq,idx->mseq,idx->seq);
- hts_expand0(char*,idx->nseq,m_prev,idx->seq_names);
- idx->seq_names[idx->nseq-1] = strdup(idx->str.s);
- rid = khash_str2int_inc(idx->seq2regs, idx->seq_names[idx->nseq-1]);
- }
-
- reglist_t *list = &idx->seq[rid];
- list->nregs++;
- int m_prev = list->mregs;
- hts_expand(reg_t,list->nregs,list->mregs,list->regs);
- list->regs[list->nregs-1] = reg;
- if ( idx->payload_size )
- {
- if ( m_prev < list->mregs ) list->payload = realloc(list->payload,idx->payload_size*list->mregs);
- memcpy(list->payload + idx->payload_size*(list->nregs-1), idx->payload, idx->payload_size);
- }
-
- if ( idx->rid_prev==rid )
- {
- if ( idx->start_prev > reg.start || (idx->start_prev==reg.start && idx->end_prev>reg.end) )
- {
- fprintf(stderr,"The regions are not sorted: %s:%d-%d is before %s:%d-%d\n",
- idx->str.s,idx->start_prev+1,idx->end_prev+1,idx->str.s,reg.start+1,reg.end+1);
- return -1;
- }
- }
- idx->rid_prev = rid;
- idx->start_prev = reg.start;
- idx->end_prev = reg.end;
- return 0;
-}
-
-regidx_t *regidx_init(const char *fname, regidx_parse_f parser, regidx_free_f free_f, size_t payload_size, void *usr_dat)
-{
- if ( !parser )
- {
- if ( !fname ) parser = regidx_parse_tab;
- else
- {
- int len = strlen(fname);
- if ( len>=7 && !strcasecmp(".bed.gz",fname+len-7) )
- parser = regidx_parse_bed;
- else if ( len>=8 && !strcasecmp(".bed.bgz",fname+len-8) )
- parser = regidx_parse_bed;
- else if ( len>=4 && !strcasecmp(".bed",fname+len-4) )
- parser = regidx_parse_bed;
- else
- parser = regidx_parse_tab;
- }
- }
-
- regidx_t *idx = (regidx_t*) calloc(1,sizeof(regidx_t));
- idx->free = free_f;
- idx->parse = parser;
- idx->usr = usr_dat;
- idx->seq2regs = khash_str2int_init();
- idx->rid_prev = -1;
- idx->start_prev = -1;
- idx->end_prev = -1;
- idx->payload_size = payload_size;
- if ( payload_size ) idx->payload = malloc(payload_size);
-
- if ( !fname ) return idx;
-
- kstring_t str = {0,0,0};
-
- htsFile *fp = hts_open(fname,"r");
- if ( !fp ) goto error;
-
- while ( hts_getline(fp, KS_SEP_LINE, &str) > 0 )
- {
- if ( regidx_insert(idx, str.s) ) goto error;
- }
- regidx_insert(idx, NULL);
-
- free(str.s);
- hts_close(fp);
- return idx;
-
-error:
- free(str.s);
- if ( fp ) hts_close(fp);
- regidx_destroy(idx);
- return NULL;
-}
-
-void regidx_destroy(regidx_t *idx)
-{
- int i, j;
- for (i=0; i<idx->nseq; i++)
- {
- reglist_t *list = &idx->seq[i];
- if ( idx->free )
- {
- for (j=0; j<list->nregs; j++)
- idx->free(list->payload + idx->payload_size*j);
- }
- free(list->payload);
- free(list->regs);
- free(list->idx);
- }
- free(idx->seq_names);
- free(idx->seq);
- free(idx->str.s);
- free(idx->payload);
- khash_str2int_destroy_free(idx->seq2regs);
- free(idx);
-}
-
-int regidx_overlap(regidx_t *idx, const char *chr, uint32_t from, uint32_t to, regitr_t *itr)
-{
- if ( itr ) itr->i = itr->n = 0;
-
- int iseq;
- if ( khash_str2int_get(idx->seq2regs, chr, &iseq)!=0 ) return 0; // no such sequence
-
- reglist_t *list = &idx->seq[iseq];
- if ( !list->nregs ) return 0;
-
- int i, ibeg = from>>LIDX_SHIFT;
- int ireg = ibeg < list->nidx ? list->idx[ibeg] : list->idx[ list->nidx - 1 ];
- if ( ireg < 0 )
- {
- // linear search; if slow, replace with binary search
- if ( ibeg > list->nidx ) ibeg = list->nidx;
- for (i=ibeg - 1; i>=0; i--)
- if ( list->idx[i] >=0 ) break;
- ireg = i>=0 ? list->idx[i] : 0;
- }
- for (i=ireg; i<list->nregs; i++)
- {
- if ( list->regs[i].start > to ) return 0; // no match
- if ( list->regs[i].end >= from && list->regs[i].start <= to ) break; // found
- }
-
- if ( i>=list->nregs ) return 0; // no match
-
- if ( !itr ) return 1;
-
- itr->i = 0;
- itr->n = list->nregs - i;
- itr->reg = &idx->seq[iseq].regs[i];
- if ( idx->payload_size )
- itr->payload = idx->seq[iseq].payload + i*idx->payload_size;
- else
- itr->payload = NULL;
-
- return 1;
-}
-
-int regidx_parse_bed(const char *line, char **chr_beg, char **chr_end, reg_t *reg, void *payload, void *usr)
-{
- char *ss = (char*) line;
- while ( *ss && isspace(*ss) ) ss++;
- if ( !*ss ) return -1; // skip blank lines
- if ( *ss=='#' ) return -1; // skip comments
-
- char *se = ss;
- while ( *se && !isspace(*se) ) se++;
- if ( !*se ) { fprintf(stderr,"Could not parse bed line: %s\n", line); return -2; }
-
- *chr_beg = ss;
- *chr_end = se-1;
-
- ss = se+1;
- reg->start = strtol(ss, &se, 10);
- if ( ss==se ) { fprintf(stderr,"Could not parse bed line: %s\n", line); return -2; }
-
- ss = se+1;
- reg->end = strtol(ss, &se, 10) - 1;
- if ( ss==se ) { fprintf(stderr,"Could not parse bed line: %s\n", line); return -2; }
-
- return 0;
-}
-
-int regidx_parse_tab(const char *line, char **chr_beg, char **chr_end, reg_t *reg, void *payload, void *usr)
-{
- char *ss = (char*) line;
- while ( *ss && isspace(*ss) ) ss++;
- if ( !*ss ) return -1; // skip blank lines
- if ( *ss=='#' ) return -1; // skip comments
-
- char *se = ss;
- while ( *se && !isspace(*se) ) se++;
- if ( !*se ) { fprintf(stderr,"Could not parse bed line: %s\n", line); return -2; }
-
- *chr_beg = ss;
- *chr_end = se-1;
-
- ss = se+1;
- reg->start = strtol(ss, &se, 10) - 1;
- if ( ss==se ) { fprintf(stderr,"Could not parse bed line: %s\n", line); return -2; }
-
- if ( !se[0] || !se[1] )
- reg->end = reg->start;
- else
- {
- ss = se+1;
- reg->end = strtol(ss, &se, 10);
- if ( ss==se ) reg->end = reg->start;
- else reg->end--;
- }
-
- return 0;
-}
-
diff --git a/htslib/sam.5 b/htslib/sam.5
deleted file mode 100644
index 66542bb..0000000
--- a/htslib/sam.5
+++ /dev/null
@@ -1,68 +0,0 @@
-'\" t
-.TH sam 5 "August 2013" "htslib" "Bioinformatics formats"
-.SH NAME
-sam \- Sequence Alignment/Map file format
-.\"
-.\" Copyright (C) 2009, 2013 Genome Research Ltd.
-.\"
-.\" Author: Heng Li <lh3 at sanger.ac.uk>
-.\"
-.\" 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.
-.\"
-.SH DESCRIPTION
-Sequence Alignment/Map (SAM) format is TAB-delimited. Apart from the header lines, which are started
-with the `@' symbol, each alignment line consists of:
-.TS
-nlbl.
-1 QNAME Query template/pair NAME
-2 FLAG bitwise FLAG
-3 RNAME Reference sequence NAME
-4 POS 1-based leftmost POSition/coordinate of clipped sequence
-5 MAPQ MAPping Quality (Phred-scaled)
-6 CIGAR extended CIGAR string
-7 MRNM Mate Reference sequence NaMe (`=' if same as RNAME)
-8 MPOS 1-based Mate POSistion
-9 TLEN inferred Template LENgth (insert size)
-10 SEQ query SEQuence on the same strand as the reference
-11 QUAL query QUALity (ASCII-33 gives the Phred base quality)
-12+ OPT variable OPTional fields in the format TAG:VTYPE:VALUE
-.TE
-.PP
-Each bit in the FLAG field is defined as:
-.TS
-lcbl.
-0x0001 p the read is paired in sequencing
-0x0002 P the read is mapped in a proper pair
-0x0004 u the query sequence itself is unmapped
-0x0008 U the mate is unmapped
-0x0010 r strand of the query (1 for reverse)
-0x0020 R strand of the mate
-0x0040 1 the read is the first read in a pair
-0x0080 2 the read is the second read in a pair
-0x0100 s the alignment is not primary
-0x0200 f the read fails platform/vendor quality checks
-0x0400 d the read is either a PCR or an optical duplicate
-0x0800 S the alignment is supplementary
-.TE
-.P
-where the second column gives the string representation of the FLAG field.
-.SH SEE ALSO
-.TP
-https://github.com/samtools/hts-specs
-The full SAM/BAM file format specification
diff --git a/htslib/sam.c b/htslib/sam.c
deleted file mode 100644
index 460cf33..0000000
--- a/htslib/sam.c
+++ /dev/null
@@ -1,1882 +0,0 @@
-/* sam.c -- SAM and BAM file I/O and manipulation.
-
- Copyright (C) 2008-2010, 2012-2014 Genome Research Ltd.
- Copyright (C) 2010, 2012, 2013 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-#include <zlib.h>
-#include "htslib/sam.h"
-#include "htslib/bgzf.h"
-#include "cram/cram.h"
-#include "htslib/hfile.h"
-
-#include "htslib/khash.h"
-KHASH_DECLARE(s2i, kh_cstr_t, int64_t)
-
-typedef khash_t(s2i) sdict_t;
-
-/**********************
- *** BAM header I/O ***
- **********************/
-
-bam_hdr_t *bam_hdr_init()
-{
- return (bam_hdr_t*)calloc(1, sizeof(bam_hdr_t));
-}
-
-void bam_hdr_destroy(bam_hdr_t *h)
-{
- int32_t i;
- if (h == NULL) return;
- if (h->target_name) {
- for (i = 0; i < h->n_targets; ++i)
- free(h->target_name[i]);
- free(h->target_name);
- free(h->target_len);
- }
- free(h->text); free(h->cigar_tab);
- if (h->sdict) kh_destroy(s2i, (sdict_t*)h->sdict);
- free(h);
-}
-
-bam_hdr_t *bam_hdr_dup(const bam_hdr_t *h0)
-{
- if (h0 == NULL) return NULL;
- bam_hdr_t *h;
- if ((h = bam_hdr_init()) == NULL) return NULL;
- // copy the simple data
- h->n_targets = h0->n_targets;
- h->ignore_sam_err = h0->ignore_sam_err;
- h->l_text = h0->l_text;
- // Then the pointery stuff
- h->cigar_tab = NULL;
- h->sdict = NULL;
- h->text = (char*)calloc(h->l_text + 1, 1);
- memcpy(h->text, h0->text, h->l_text);
- h->target_len = (uint32_t*)calloc(h->n_targets, sizeof(uint32_t));
- h->target_name = (char**)calloc(h->n_targets, sizeof(char*));
- int i;
- for (i = 0; i < h->n_targets; ++i) {
- h->target_len[i] = h0->target_len[i];
- h->target_name[i] = strdup(h0->target_name[i]);
- }
- return h;
-}
-
-
-static bam_hdr_t *hdr_from_dict(sdict_t *d)
-{
- bam_hdr_t *h;
- khint_t k;
- h = bam_hdr_init();
- h->sdict = d;
- h->n_targets = kh_size(d);
- h->target_len = (uint32_t*)malloc(sizeof(uint32_t) * h->n_targets);
- h->target_name = (char**)malloc(sizeof(char*) * h->n_targets);
- for (k = kh_begin(d); k != kh_end(d); ++k) {
- if (!kh_exist(d, k)) continue;
- h->target_name[kh_val(d, k)>>32] = (char*)kh_key(d, k);
- h->target_len[kh_val(d, k)>>32] = kh_val(d, k)<<32>>32;
- kh_val(d, k) >>= 32;
- }
- return h;
-}
-
-bam_hdr_t *bam_hdr_read(BGZF *fp)
-{
- bam_hdr_t *h;
- char buf[4];
- int magic_len, has_EOF;
- int32_t i = 1, name_len;
- // check EOF
- has_EOF = bgzf_check_EOF(fp);
- if (has_EOF < 0) {
- perror("[W::sam_hdr_read] bgzf_check_EOF");
- } else if (has_EOF == 0 && hts_verbose >= 2)
- fprintf(stderr, "[W::%s] EOF marker is absent. The input is probably truncated.\n", __func__);
- // read "BAM1"
- magic_len = bgzf_read(fp, buf, 4);
- if (magic_len != 4 || strncmp(buf, "BAM\1", 4)) {
- if (hts_verbose >= 1) fprintf(stderr, "[E::%s] invalid BAM binary header\n", __func__);
- return 0;
- }
- h = bam_hdr_init();
- // read plain text and the number of reference sequences
- bgzf_read(fp, &h->l_text, 4);
- if (fp->is_be) ed_swap_4p(&h->l_text);
- h->text = (char*)malloc(h->l_text + 1);
- h->text[h->l_text] = 0; // make sure it is NULL terminated
- bgzf_read(fp, h->text, h->l_text);
- bgzf_read(fp, &h->n_targets, 4);
- if (fp->is_be) ed_swap_4p(&h->n_targets);
- // read reference sequence names and lengths
- h->target_name = (char**)calloc(h->n_targets, sizeof(char*));
- h->target_len = (uint32_t*)calloc(h->n_targets, sizeof(uint32_t));
- for (i = 0; i != h->n_targets; ++i) {
- bgzf_read(fp, &name_len, 4);
- if (fp->is_be) ed_swap_4p(&name_len);
- h->target_name[i] = (char*)calloc(name_len, 1);
- bgzf_read(fp, h->target_name[i], name_len);
- bgzf_read(fp, &h->target_len[i], 4);
- if (fp->is_be) ed_swap_4p(&h->target_len[i]);
- }
- return h;
-}
-
-int bam_hdr_write(BGZF *fp, const bam_hdr_t *h)
-{
- char buf[4];
- int32_t i, name_len, x;
- // write "BAM1"
- strncpy(buf, "BAM\1", 4);
- bgzf_write(fp, buf, 4);
- // write plain text and the number of reference sequences
- if (fp->is_be) {
- x = ed_swap_4(h->l_text);
- bgzf_write(fp, &x, 4);
- if (h->l_text) bgzf_write(fp, h->text, h->l_text);
- x = ed_swap_4(h->n_targets);
- bgzf_write(fp, &x, 4);
- } else {
- bgzf_write(fp, &h->l_text, 4);
- if (h->l_text) bgzf_write(fp, h->text, h->l_text);
- bgzf_write(fp, &h->n_targets, 4);
- }
- // write sequence names and lengths
- for (i = 0; i != h->n_targets; ++i) {
- char *p = h->target_name[i];
- name_len = strlen(p) + 1;
- if (fp->is_be) {
- x = ed_swap_4(name_len);
- bgzf_write(fp, &x, 4);
- } else bgzf_write(fp, &name_len, 4);
- bgzf_write(fp, p, name_len);
- if (fp->is_be) {
- x = ed_swap_4(h->target_len[i]);
- bgzf_write(fp, &x, 4);
- } else bgzf_write(fp, &h->target_len[i], 4);
- }
- bgzf_flush(fp);
- return 0;
-}
-
-int bam_name2id(bam_hdr_t *h, const char *ref)
-{
- sdict_t *d = (sdict_t*)h->sdict;
- khint_t k;
- if (h->sdict == 0) {
- int i, absent;
- d = kh_init(s2i);
- for (i = 0; i < h->n_targets; ++i) {
- k = kh_put(s2i, d, h->target_name[i], &absent);
- kh_val(d, k) = i;
- }
- h->sdict = d;
- }
- k = kh_get(s2i, d, ref);
- return k == kh_end(d)? -1 : kh_val(d, k);
-}
-
-/*************************
- *** BAM alignment I/O ***
- *************************/
-
-bam1_t *bam_init1()
-{
- return (bam1_t*)calloc(1, sizeof(bam1_t));
-}
-
-void bam_destroy1(bam1_t *b)
-{
- if (b == 0) return;
- free(b->data); free(b);
-}
-
-bam1_t *bam_copy1(bam1_t *bdst, const bam1_t *bsrc)
-{
- uint8_t *data = bdst->data;
- int m_data = bdst->m_data; // backup data and m_data
- if (m_data < bsrc->l_data) { // double the capacity
- m_data = bsrc->l_data; kroundup32(m_data);
- data = (uint8_t*)realloc(data, m_data);
- }
- memcpy(data, bsrc->data, bsrc->l_data); // copy var-len data
- *bdst = *bsrc; // copy the rest
- // restore the backup
- bdst->m_data = m_data;
- bdst->data = data;
- return bdst;
-}
-
-bam1_t *bam_dup1(const bam1_t *bsrc)
-{
- if (bsrc == NULL) return NULL;
- bam1_t *bdst = bam_init1();
- if (bdst == NULL) return NULL;
- return bam_copy1(bdst, bsrc);
-}
-
-int bam_cigar2qlen(int n_cigar, const uint32_t *cigar)
-{
- int k, l;
- for (k = l = 0; k < n_cigar; ++k)
- if (bam_cigar_type(bam_cigar_op(cigar[k]))&1)
- l += bam_cigar_oplen(cigar[k]);
- return l;
-}
-
-int bam_cigar2rlen(int n_cigar, const uint32_t *cigar)
-{
- int k, l;
- for (k = l = 0; k < n_cigar; ++k)
- if (bam_cigar_type(bam_cigar_op(cigar[k]))&2)
- l += bam_cigar_oplen(cigar[k]);
- return l;
-}
-
-int32_t bam_endpos(const bam1_t *b)
-{
- if (!(b->core.flag & BAM_FUNMAP) && b->core.n_cigar > 0)
- return b->core.pos + bam_cigar2rlen(b->core.n_cigar, bam_get_cigar(b));
- else
- return b->core.pos + 1;
-}
-
-static inline int aux_type2size(uint8_t type)
-{
- switch (type) {
- case 'A': case 'c': case 'C':
- return 1;
- case 's': case 'S':
- return 2;
- case 'i': case 'I': case 'f':
- return 4;
- case 'd':
- return 8;
- case 'Z': case 'H': case 'B':
- return type;
- default:
- return 0;
- }
-}
-
-static void swap_data(const bam1_core_t *c, int l_data, uint8_t *data, int is_host)
-{
- uint8_t *s;
- uint32_t *cigar = (uint32_t*)(data + c->l_qname);
- uint32_t i, n;
- s = data + c->n_cigar*4 + c->l_qname + c->l_qseq + (c->l_qseq + 1)/2;
- for (i = 0; i < c->n_cigar; ++i) ed_swap_4p(&cigar[i]);
- while (s < data + l_data) {
- int size;
- s += 2; // skip key
- size = aux_type2size(*s); ++s; // skip type
- switch (size) {
- case 1: ++s; break;
- case 2: ed_swap_2p(s); s += 2; break;
- case 4: ed_swap_4p(s); s += 4; break;
- case 8: ed_swap_8p(s); s += 8; break;
- case 'Z':
- case 'H':
- while (*s) ++s;
- ++s;
- break;
- case 'B':
- size = aux_type2size(*s); ++s;
- if (is_host) memcpy(&n, s, 4), ed_swap_4p(s);
- else ed_swap_4p(s), memcpy(&n, s, 4);
- s += 4;
- switch (size) {
- case 1: s += n; break;
- case 2: for (i = 0; i < n; ++i, s += 2) ed_swap_2p(s); break;
- case 4: for (i = 0; i < n; ++i, s += 4) ed_swap_4p(s); break;
- case 8: for (i = 0; i < n; ++i, s += 8) ed_swap_8p(s); break;
- }
- break;
- }
- }
-}
-
-int bam_read1(BGZF *fp, bam1_t *b)
-{
- bam1_core_t *c = &b->core;
- int32_t block_len, ret, i;
- uint32_t x[8];
- if ((ret = bgzf_read(fp, &block_len, 4)) != 4) {
- if (ret == 0) return -1; // normal end-of-file
- else return -2; // truncated
- }
- if (bgzf_read(fp, x, 32) != 32) return -3;
- if (fp->is_be) {
- ed_swap_4p(&block_len);
- for (i = 0; i < 8; ++i) ed_swap_4p(x + i);
- }
- c->tid = x[0]; c->pos = x[1];
- c->bin = x[2]>>16; c->qual = x[2]>>8&0xff; c->l_qname = x[2]&0xff;
- c->flag = x[3]>>16; c->n_cigar = x[3]&0xffff;
- c->l_qseq = x[4];
- c->mtid = x[5]; c->mpos = x[6]; c->isize = x[7];
- b->l_data = block_len - 32;
- if (b->l_data < 0 || c->l_qseq < 0) return -4;
- if ((char *)bam_get_aux(b) - (char *)b->data > b->l_data)
- return -4;
- if (b->m_data < b->l_data) {
- b->m_data = b->l_data;
- kroundup32(b->m_data);
- b->data = (uint8_t*)realloc(b->data, b->m_data);
- if (!b->data)
- return -4;
- }
- if (bgzf_read(fp, b->data, b->l_data) != b->l_data) return -4;
- //b->l_aux = b->l_data - c->n_cigar * 4 - c->l_qname - c->l_qseq - (c->l_qseq+1)/2;
- if (fp->is_be) swap_data(c, b->l_data, b->data, 0);
- return 4 + block_len;
-}
-
-int bam_write1(BGZF *fp, const bam1_t *b)
-{
- const bam1_core_t *c = &b->core;
- uint32_t x[8], block_len = b->l_data + 32, y;
- int i, ok;
- x[0] = c->tid;
- x[1] = c->pos;
- x[2] = (uint32_t)c->bin<<16 | c->qual<<8 | c->l_qname;
- x[3] = (uint32_t)c->flag<<16 | c->n_cigar;
- x[4] = c->l_qseq;
- x[5] = c->mtid;
- x[6] = c->mpos;
- x[7] = c->isize;
- ok = (bgzf_flush_try(fp, 4 + block_len) >= 0);
- if (fp->is_be) {
- for (i = 0; i < 8; ++i) ed_swap_4p(x + i);
- y = block_len;
- if (ok) ok = (bgzf_write(fp, ed_swap_4p(&y), 4) >= 0);
- swap_data(c, b->l_data, b->data, 1);
- } else {
- if (ok) ok = (bgzf_write(fp, &block_len, 4) >= 0);
- }
- if (ok) ok = (bgzf_write(fp, x, 32) >= 0);
- if (ok) ok = (bgzf_write(fp, b->data, b->l_data) >= 0);
- if (fp->is_be) swap_data(c, b->l_data, b->data, 0);
- return ok? 4 + block_len : -1;
-}
-
-/********************
- *** BAM indexing ***
- ********************/
-
-static hts_idx_t *bam_index(BGZF *fp, int min_shift)
-{
- int n_lvls, i, fmt;
- bam1_t *b;
- hts_idx_t *idx;
- bam_hdr_t *h;
- h = bam_hdr_read(fp);
- if (min_shift > 0) {
- int64_t max_len = 0, s;
- for (i = 0; i < h->n_targets; ++i)
- if (max_len < h->target_len[i]) max_len = h->target_len[i];
- max_len += 256;
- for (n_lvls = 0, s = 1<<min_shift; max_len > s; ++n_lvls, s <<= 3);
- fmt = HTS_FMT_CSI;
- } else min_shift = 14, n_lvls = 5, fmt = HTS_FMT_BAI;
- idx = hts_idx_init(h->n_targets, fmt, bgzf_tell(fp), min_shift, n_lvls);
- bam_hdr_destroy(h);
- b = bam_init1();
- while (bam_read1(fp, b) >= 0) {
- int l, ret;
- l = bam_cigar2rlen(b->core.n_cigar, bam_get_cigar(b));
- if (l == 0) l = 1; // no zero-length records
- ret = hts_idx_push(idx, b->core.tid, b->core.pos, b->core.pos + l, bgzf_tell(fp), !(b->core.flag&BAM_FUNMAP));
- if (ret < 0)
- {
- // unsorted
- bam_destroy1(b);
- hts_idx_destroy(idx);
- return NULL;
- }
- }
- hts_idx_finish(idx, bgzf_tell(fp));
- bam_destroy1(b);
- return idx;
-}
-
-int bam_index_build(const char *fn, int min_shift)
-{
- hts_idx_t *idx;
- htsFile *fp;
- int ret = 0;
-
- if ((fp = hts_open(fn, "r")) == 0) return -1;
- switch (fp->format.format) {
- case cram:
- ret = cram_index_build(fp->fp.cram, fn);
- break;
-
- case bam:
- idx = bam_index(fp->fp.bgzf, min_shift);
- if (idx) {
- hts_idx_save(idx, fn, (min_shift > 0)? HTS_FMT_CSI : HTS_FMT_BAI);
- hts_idx_destroy(idx);
- }
- else ret = -1;
- break;
-
- default:
- ret = -1;
- break;
- }
- hts_close(fp);
-
- return ret;
-}
-
-static int bam_readrec(BGZF *fp, void *ignored, void *bv, int *tid, int *beg, int *end)
-{
- bam1_t *b = bv;
- int ret;
- if ((ret = bam_read1(fp, b)) >= 0) {
- *tid = b->core.tid; *beg = b->core.pos;
- *end = b->core.pos + (b->core.n_cigar? bam_cigar2rlen(b->core.n_cigar, bam_get_cigar(b)) : 1);
- }
- return ret;
-}
-
-// This is used only with read_rest=1 iterators, so need not set tid/beg/end.
-static int cram_readrec(BGZF *ignored, void *fpv, void *bv, int *tid, int *beg, int *end)
-{
- htsFile *fp = fpv;
- bam1_t *b = bv;
- return cram_get_bam_seq(fp->fp.cram, &b);
-}
-
-// This is used only with read_rest=1 iterators, so need not set tid/beg/end.
-static int sam_bam_cram_readrec(BGZF *bgzfp, void *fpv, void *bv, int *tid, int *beg, int *end)
-{
- htsFile *fp = fpv;
- bam1_t *b = bv;
- switch (fp->format.format) {
- case bam: return bam_read1(bgzfp, b);
- case cram: return cram_get_bam_seq(fp->fp.cram, &b);
- default:
- // TODO Need headers available to implement this for SAM files
- fprintf(stderr, "[sam_bam_cram_readrec] Not implemented for SAM files -- Exiting\n");
- abort();
- }
-}
-
-// The CRAM implementation stores the loaded index within the cram_fd rather
-// than separately as is done elsewhere in htslib. So if p is a pointer to
-// an hts_idx_t with p->fmt == HTS_FMT_CRAI, then it actually points to an
-// hts_cram_idx_t and should be cast accordingly.
-typedef struct hts_cram_idx_t {
- int fmt;
- cram_fd *cram;
-} hts_cram_idx_t;
-
-hts_idx_t *sam_index_load(samFile *fp, const char *fn)
-{
- switch (fp->format.format) {
- case bam:
- return bam_index_load(fn);
-
- case cram: {
- if (cram_index_load(fp->fp.cram, fn) < 0) return NULL;
- // Cons up a fake "index" just pointing at the associated cram_fd:
- hts_cram_idx_t *idx = malloc(sizeof (hts_cram_idx_t));
- if (idx == NULL) return NULL;
- idx->fmt = HTS_FMT_CRAI;
- idx->cram = fp->fp.cram;
- return (hts_idx_t *) idx;
- }
-
- default:
- return NULL; // TODO Would use tbx_index_load if it returned hts_idx_t
- }
-}
-
-static hts_itr_t *cram_itr_query(const hts_idx_t *idx, int tid, int beg, int end, hts_readrec_func *readrec)
-{
- const hts_cram_idx_t *cidx = (const hts_cram_idx_t *) idx;
- hts_itr_t *iter = (hts_itr_t *) calloc(1, sizeof(hts_itr_t));
- if (iter == NULL) return NULL;
-
- // Cons up a dummy iterator for which hts_itr_next() will simply invoke
- // the readrec function:
- iter->read_rest = 1;
- iter->off = NULL;
- iter->bins.a = NULL;
- iter->readrec = readrec;
-
- if (tid >= 0) {
- cram_range r = { tid, beg+1, end };
- if (cram_set_option(cidx->cram, CRAM_OPT_RANGE, &r) != 0) { free(iter); return NULL; }
- iter->curr_off = 0;
- // The following fields are not required by hts_itr_next(), but are
- // filled in in case user code wants to look at them.
- iter->tid = tid;
- iter->beg = beg;
- iter->end = end;
- }
- else switch (tid) {
- case HTS_IDX_REST:
- iter->curr_off = 0;
- break;
- case HTS_IDX_NONE:
- iter->curr_off = 0;
- iter->finished = 1;
- break;
- default:
- fprintf(stderr, "[cram_itr_query] tid=%d not implemented for CRAM files -- Exiting\n", tid);
- abort();
- break;
- }
-
- return iter;
-}
-
-hts_itr_t *sam_itr_queryi(const hts_idx_t *idx, int tid, int beg, int end)
-{
- const hts_cram_idx_t *cidx = (const hts_cram_idx_t *) idx;
- if (idx == NULL)
- return hts_itr_query(NULL, tid, beg, end, sam_bam_cram_readrec);
- else if (cidx->fmt == HTS_FMT_CRAI)
- return cram_itr_query(idx, tid, beg, end, cram_readrec);
- else
- return hts_itr_query(idx, tid, beg, end, bam_readrec);
-}
-
-static int cram_name2id(void *fdv, const char *ref)
-{
- cram_fd *fd = (cram_fd *) fdv;
- return sam_hdr_name2ref(fd->header, ref);
-}
-
-hts_itr_t *sam_itr_querys(const hts_idx_t *idx, bam_hdr_t *hdr, const char *region)
-{
- const hts_cram_idx_t *cidx = (const hts_cram_idx_t *) idx;
- if (cidx->fmt == HTS_FMT_CRAI)
- return hts_itr_querys(idx, region, cram_name2id, cidx->cram, cram_itr_query, cram_readrec);
- else
- return hts_itr_querys(idx, region, (hts_name2id_f)(bam_name2id), hdr, hts_itr_query, bam_readrec);
-}
-
-/**********************
- *** SAM header I/O ***
- **********************/
-
-#include "htslib/kseq.h"
-#include "htslib/kstring.h"
-
-bam_hdr_t *sam_hdr_parse(int l_text, const char *text)
-{
- const char *q, *r, *p;
- khash_t(s2i) *d;
- d = kh_init(s2i);
- for (p = text; *p; ++p) {
- if (strncmp(p, "@SQ", 3) == 0) {
- char *sn = 0;
- int ln = -1;
- for (q = p + 4;; ++q) {
- if (strncmp(q, "SN:", 3) == 0) {
- q += 3;
- for (r = q; *r != '\t' && *r != '\n'; ++r);
- sn = (char*)calloc(r - q + 1, 1);
- strncpy(sn, q, r - q);
- q = r;
- } else if (strncmp(q, "LN:", 3) == 0)
- ln = strtol(q + 3, (char**)&q, 10);
- while (*q != '\t' && *q != '\n') ++q;
- if (*q == '\n') break;
- }
- p = q;
- if (sn && ln >= 0) {
- khint_t k;
- int absent;
- k = kh_put(s2i, d, sn, &absent);
- if (!absent) {
- if (hts_verbose >= 2)
- fprintf(stderr, "[W::%s] duplicated sequence '%s'\n", __func__, sn);
- free(sn);
- } else kh_val(d, k) = (int64_t)(kh_size(d) - 1)<<32 | ln;
- }
- }
- while (*p != '\n') ++p;
- }
- return hdr_from_dict(d);
-}
-
-bam_hdr_t *sam_hdr_read(htsFile *fp)
-{
- switch (fp->format.format) {
- case bam:
- return bam_hdr_read(fp->fp.bgzf);
-
- case cram:
- return cram_header_to_bam(fp->fp.cram->header);
-
- case sam: {
- kstring_t str;
- bam_hdr_t *h;
- int has_SQ = 0;
- str.l = str.m = 0; str.s = 0;
- while (hts_getline(fp, KS_SEP_LINE, &fp->line) >= 0) {
- if (fp->line.s[0] != '@') break;
- if (fp->line.l > 3 && strncmp(fp->line.s,"@SQ",3) == 0) has_SQ = 1;
- kputsn(fp->line.s, fp->line.l, &str);
- kputc('\n', &str);
- }
- if (! has_SQ && fp->fn_aux) {
- char line[2048];
- FILE *f = fopen(fp->fn_aux, "r");
- if (f == NULL) return NULL;
- while (fgets(line, sizeof line, f)) {
- const char *name = strtok(line, "\t");
- const char *length = strtok(NULL, "\t");
- ksprintf(&str, "@SQ\tSN:%s\tLN:%s\n", name, length);
- }
- fclose(f);
- }
- if (str.l == 0) kputsn("", 0, &str);
- h = sam_hdr_parse(str.l, str.s);
- h->l_text = str.l; h->text = str.s;
- return h;
- }
-
- default:
- abort();
- }
-}
-
-int sam_hdr_write(htsFile *fp, const bam_hdr_t *h)
-{
- switch (fp->format.format) {
- case binary_format:
- fp->format.category = sequence_data;
- fp->format.format = bam;
- /* fall-through */
- case bam:
- bam_hdr_write(fp->fp.bgzf, h);
- break;
-
- case cram: {
- cram_fd *fd = fp->fp.cram;
- if (cram_set_header(fd, bam_header_to_cram((bam_hdr_t *)h)) < 0) return -1;
- if (fp->fn_aux)
- cram_load_reference(fd, fp->fn_aux);
- if (cram_write_SAM_hdr(fd, fd->header) < 0) return -1;
- }
- break;
-
- case text_format:
- fp->format.category = sequence_data;
- fp->format.format = sam;
- /* fall-through */
- case sam: {
- char *p;
- hputs(h->text, fp->fp.hfile);
- p = strstr(h->text, "@SQ\t"); // FIXME: we need a loop to make sure "@SQ\t" does not match something unwanted!!!
- if (p == 0) {
- int i;
- for (i = 0; i < h->n_targets; ++i) {
- fp->line.l = 0;
- kputsn("@SQ\tSN:", 7, &fp->line); kputs(h->target_name[i], &fp->line);
- kputsn("\tLN:", 4, &fp->line); kputw(h->target_len[i], &fp->line); kputc('\n', &fp->line);
- if ( hwrite(fp->fp.hfile, fp->line.s, fp->line.l) != fp->line.l ) return -1;
- }
- }
- if ( hflush(fp->fp.hfile) != 0 ) return -1;
- }
- break;
-
- default:
- abort();
- }
- return 0;
-}
-
-/**********************
- *** SAM record I/O ***
- **********************/
-
-int sam_parse1(kstring_t *s, bam_hdr_t *h, bam1_t *b)
-{
-#define _read_token(_p) (_p); for (; *(_p) && *(_p) != '\t'; ++(_p)); if (*(_p) != '\t') goto err_ret; *(_p)++ = 0
-#define _read_token_aux(_p) (_p); for (; *(_p) && *(_p) != '\t'; ++(_p)); *(_p)++ = 0 // this is different in that it does not test *(_p)=='\t'
-#define _get_mem(type_t, _x, _s, _l) ks_resize((_s), (_s)->l + (_l)); *(_x) = (type_t*)((_s)->s + (_s)->l); (_s)->l += (_l)
-#define _parse_err(cond, msg) do { if ((cond) && hts_verbose >= 1) { fprintf(stderr, "[E::%s] " msg "\n", __func__); goto err_ret; } } while (0)
-#define _parse_warn(cond, msg) if ((cond) && hts_verbose >= 2) fprintf(stderr, "[W::%s] " msg "\n", __func__)
-
- uint8_t *t;
- char *p = s->s, *q;
- int i;
- kstring_t str;
- bam1_core_t *c = &b->core;
-
- str.l = b->l_data = 0;
- str.s = (char*)b->data; str.m = b->m_data;
- memset(c, 0, 32);
- if (h->cigar_tab == 0) {
- h->cigar_tab = (int8_t*) malloc(128);
- for (i = 0; i < 128; ++i)
- h->cigar_tab[i] = -1;
- for (i = 0; BAM_CIGAR_STR[i]; ++i)
- h->cigar_tab[(int)BAM_CIGAR_STR[i]] = i;
- }
- // qname
- q = _read_token(p);
- kputsn_(q, p - q, &str);
- c->l_qname = p - q;
- // flag
- c->flag = strtol(p, &p, 0);
- if (*p++ != '\t') goto err_ret; // malformated flag
- // chr
- q = _read_token(p);
- if (strcmp(q, "*")) {
- _parse_err(h->n_targets == 0, "missing SAM header");
- c->tid = bam_name2id(h, q);
- _parse_warn(c->tid < 0, "urecognized reference name; treated as unmapped");
- } else c->tid = -1;
- // pos
- c->pos = strtol(p, &p, 10) - 1;
- if (*p++ != '\t') goto err_ret;
- if (c->pos < 0 && c->tid >= 0) {
- _parse_warn(1, "mapped query cannot have zero coordinate; treated as unmapped");
- c->tid = -1;
- }
- if (c->tid < 0) c->flag |= BAM_FUNMAP;
- // mapq
- c->qual = strtol(p, &p, 10);
- if (*p++ != '\t') goto err_ret;
- // cigar
- if (*p != '*') {
- uint32_t *cigar;
- size_t n_cigar = 0;
- for (q = p; *p && *p != '\t'; ++p)
- if (!isdigit(*p)) ++n_cigar;
- if (*p++ != '\t') goto err_ret;
- _parse_err(n_cigar >= 65536, "too many CIGAR operations");
- c->n_cigar = n_cigar;
- _get_mem(uint32_t, &cigar, &str, c->n_cigar<<2);
- for (i = 0; i < c->n_cigar; ++i, ++q) {
- int op;
- cigar[i] = strtol(q, &q, 10)<<BAM_CIGAR_SHIFT;
- op = (uint8_t)*q >= 128? -1 : h->cigar_tab[(int)*q];
- _parse_err(op < 0, "unrecognized CIGAR operator");
- cigar[i] |= op;
- }
- i = bam_cigar2rlen(c->n_cigar, cigar);
- } else {
- _parse_warn(!(c->flag&BAM_FUNMAP), "mapped query must have a CIGAR; treated as unmapped");
- c->flag |= BAM_FUNMAP;
- q = _read_token(p);
- i = 1;
- }
- c->bin = hts_reg2bin(c->pos, c->pos + i, 14, 5);
- // mate chr
- q = _read_token(p);
- if (strcmp(q, "=") == 0) c->mtid = c->tid;
- else if (strcmp(q, "*") == 0) c->mtid = -1;
- else c->mtid = bam_name2id(h, q);
- // mpos
- c->mpos = strtol(p, &p, 10) - 1;
- if (*p++ != '\t') goto err_ret;
- if (c->mpos < 0 && c->mtid >= 0) {
- _parse_warn(1, "mapped mate cannot have zero coordinate; treated as unmapped");
- c->mtid = -1;
- }
- // tlen
- c->isize = strtol(p, &p, 10);
- if (*p++ != '\t') goto err_ret;
- // seq
- q = _read_token(p);
- if (strcmp(q, "*")) {
- c->l_qseq = p - q - 1;
- i = bam_cigar2qlen(c->n_cigar, (uint32_t*)(str.s + c->l_qname));
- _parse_err(c->n_cigar && i != c->l_qseq, "CIGAR and query sequence are of different length");
- i = (c->l_qseq + 1) >> 1;
- _get_mem(uint8_t, &t, &str, i);
- memset(t, 0, i);
- for (i = 0; i < c->l_qseq; ++i)
- t[i>>1] |= seq_nt16_table[(int)q[i]] << ((~i&1)<<2);
- } else c->l_qseq = 0;
- // qual
- q = _read_token_aux(p);
- _get_mem(uint8_t, &t, &str, c->l_qseq);
- if (strcmp(q, "*")) {
- _parse_err(p - q - 1 != c->l_qseq, "SEQ and QUAL are of different length");
- for (i = 0; i < c->l_qseq; ++i) t[i] = q[i] - 33;
- } else memset(t, 0xff, c->l_qseq);
- // aux
- // Note that (like the bam1_core_t fields) this aux data in b->data is
- // stored in host endianness; so there is no byte swapping needed here.
- while (p < s->s + s->l) {
- uint8_t type;
- q = _read_token_aux(p); // FIXME: can be accelerated for long 'B' arrays
- _parse_err(p - q - 1 < 6, "incomplete aux field");
- kputsn_(q, 2, &str);
- q += 3; type = *q++; ++q; // q points to value
- if (type == 'A' || type == 'a' || type == 'c' || type == 'C') {
- kputc_('A', &str);
- kputc_(*q, &str);
- } else if (type == 'i' || type == 'I') {
- if (*q == '-') {
- long x = strtol(q, &q, 10);
- if (x >= INT8_MIN) {
- kputc_('c', &str); kputc_(x, &str);
- } else if (x >= INT16_MIN) {
- int16_t y = x;
- kputc_('s', &str); kputsn_((char*)&y, 2, &str);
- } else {
- int32_t y = x;
- kputc_('i', &str); kputsn_(&y, 4, &str);
- }
- } else {
- unsigned long x = strtoul(q, &q, 10);
- if (x <= UINT8_MAX) {
- kputc_('C', &str); kputc_(x, &str);
- } else if (x <= UINT16_MAX) {
- uint16_t y = x;
- kputc_('S', &str); kputsn_(&y, 2, &str);
- } else {
- uint32_t y = x;
- kputc_('I', &str); kputsn_(&y, 4, &str);
- }
- }
- } else if (type == 'f') {
- float x;
- x = strtod(q, &q);
- kputc_('f', &str); kputsn_(&x, 4, &str);
- } else if (type == 'd') {
- double x;
- x = strtod(q, &q);
- kputc_('d', &str); kputsn_(&x, 8, &str);
- } else if (type == 'Z' || type == 'H') {
- kputc_(type, &str);kputsn_(q, p - q, &str); // note that this include the trailing NULL
- } else if (type == 'B') {
- int32_t n;
- char *r;
- _parse_err(p - q - 1 < 3, "incomplete B-typed aux field");
- type = *q++; // q points to the first ',' following the typing byte
- for (r = q, n = 0; *r; ++r)
- if (*r == ',') ++n;
- kputc_('B', &str); kputc_(type, &str); kputsn_(&n, 4, &str);
- // FIXME: to evaluate which is faster: a) aligned array and then memmove(); b) unaligned array; c) kputsn_()
- if (type == 'c') while (q + 1 < p) { int8_t x = strtol(q + 1, &q, 0); kputc_(x, &str); }
- else if (type == 'C') while (q + 1 < p) { uint8_t x = strtoul(q + 1, &q, 0); kputc_(x, &str); }
- else if (type == 's') while (q + 1 < p) { int16_t x = strtol(q + 1, &q, 0); kputsn_(&x, 2, &str); }
- else if (type == 'S') while (q + 1 < p) { uint16_t x = strtoul(q + 1, &q, 0); kputsn_(&x, 2, &str); }
- else if (type == 'i') while (q + 1 < p) { int32_t x = strtol(q + 1, &q, 0); kputsn_(&x, 4, &str); }
- else if (type == 'I') while (q + 1 < p) { uint32_t x = strtoul(q + 1, &q, 0); kputsn_(&x, 4, &str); }
- else if (type == 'f') while (q + 1 < p) { float x = strtod(q + 1, &q); kputsn_(&x, 4, &str); }
- else _parse_err(1, "unrecognized type");
- } else _parse_err(1, "unrecognized type");
- }
- b->data = (uint8_t*)str.s; b->l_data = str.l; b->m_data = str.m;
- return 0;
-
-#undef _parse_warn
-#undef _parse_err
-#undef _get_mem
-#undef _read_token_aux
-#undef _read_token
-err_ret:
- b->data = (uint8_t*)str.s; b->l_data = str.l; b->m_data = str.m;
- return -2;
-}
-
-int sam_read1(htsFile *fp, bam_hdr_t *h, bam1_t *b)
-{
- switch (fp->format.format) {
- case bam: {
- int r = bam_read1(fp->fp.bgzf, b);
- if (r >= 0) {
- if (b->core.tid >= h->n_targets || b->core.tid < -1 ||
- b->core.mtid >= h->n_targets || b->core.mtid < -1)
- return -3;
- }
- return r;
- }
-
- case cram:
- return cram_get_bam_seq(fp->fp.cram, &b);
-
- case sam: {
- int ret;
-err_recover:
- if (fp->line.l == 0) {
- ret = hts_getline(fp, KS_SEP_LINE, &fp->line);
- if (ret < 0) return -1;
- }
- ret = sam_parse1(&fp->line, h, b);
- fp->line.l = 0;
- if (ret < 0) {
- if (hts_verbose >= 1)
- fprintf(stderr, "[W::%s] parse error at line %lld\n", __func__, (long long)fp->lineno);
- if (h->ignore_sam_err) goto err_recover;
- }
- return ret;
- }
-
- default:
- abort();
- }
-}
-
-int sam_format1(const bam_hdr_t *h, const bam1_t *b, kstring_t *str)
-{
- int i;
- uint8_t *s;
- const bam1_core_t *c = &b->core;
-
- str->l = 0;
- kputsn(bam_get_qname(b), c->l_qname-1, str); kputc('\t', str); // query name
- kputw(c->flag, str); kputc('\t', str); // flag
- if (c->tid >= 0) { // chr
- kputs(h->target_name[c->tid] , str);
- kputc('\t', str);
- } else kputsn("*\t", 2, str);
- kputw(c->pos + 1, str); kputc('\t', str); // pos
- kputw(c->qual, str); kputc('\t', str); // qual
- if (c->n_cigar) { // cigar
- uint32_t *cigar = bam_get_cigar(b);
- for (i = 0; i < c->n_cigar; ++i) {
- kputw(bam_cigar_oplen(cigar[i]), str);
- kputc(bam_cigar_opchr(cigar[i]), str);
- }
- } else kputc('*', str);
- kputc('\t', str);
- if (c->mtid < 0) kputsn("*\t", 2, str); // mate chr
- else if (c->mtid == c->tid) kputsn("=\t", 2, str);
- else {
- kputs(h->target_name[c->mtid], str);
- kputc('\t', str);
- }
- kputw(c->mpos + 1, str); kputc('\t', str); // mate pos
- kputw(c->isize, str); kputc('\t', str); // template len
- if (c->l_qseq) { // seq and qual
- uint8_t *s = bam_get_seq(b);
- for (i = 0; i < c->l_qseq; ++i) kputc("=ACMGRSVTWYHKDBN"[bam_seqi(s, i)], str);
- kputc('\t', str);
- s = bam_get_qual(b);
- if (s[0] == 0xff) kputc('*', str);
- else for (i = 0; i < c->l_qseq; ++i) kputc(s[i] + 33, str);
- } else kputsn("*\t*", 3, str);
- s = bam_get_aux(b); // aux
- while (s+4 <= b->data + b->l_data) {
- uint8_t type, key[2];
- key[0] = s[0]; key[1] = s[1];
- s += 2; type = *s++;
- kputc('\t', str); kputsn((char*)key, 2, str); kputc(':', str);
- if (type == 'A') {
- kputsn("A:", 2, str);
- kputc(*s, str);
- ++s;
- } else if (type == 'C') {
- kputsn("i:", 2, str);
- kputw(*s, str);
- ++s;
- } else if (type == 'c') {
- kputsn("i:", 2, str);
- kputw(*(int8_t*)s, str);
- ++s;
- } else if (type == 'S') {
- if (s+2 <= b->data + b->l_data) {
- kputsn("i:", 2, str);
- kputw(*(uint16_t*)s, str);
- s += 2;
- } else return -1;
- } else if (type == 's') {
- if (s+2 <= b->data + b->l_data) {
- kputsn("i:", 2, str);
- kputw(*(int16_t*)s, str);
- s += 2;
- } else return -1;
- } else if (type == 'I') {
- if (s+4 <= b->data + b->l_data) {
- kputsn("i:", 2, str);
- kputuw(*(uint32_t*)s, str);
- s += 4;
- } else return -1;
- } else if (type == 'i') {
- if (s+4 <= b->data + b->l_data) {
- kputsn("i:", 2, str);
- kputw(*(int32_t*)s, str);
- s += 4;
- } else return -1;
- } else if (type == 'f') {
- if (s+4 <= b->data + b->l_data) {
- ksprintf(str, "f:%g", *(float*)s);
- s += 4;
- } else return -1;
-
- } else if (type == 'd') {
- if (s+8 <= b->data + b->l_data) {
- ksprintf(str, "d:%g", *(double*)s);
- s += 8;
- } else return -1;
- } else if (type == 'Z' || type == 'H') {
- kputc(type, str); kputc(':', str);
- while (s < b->data + b->l_data && *s) kputc(*s++, str);
- if (s >= b->data + b->l_data)
- return -1;
- ++s;
- } else if (type == 'B') {
- uint8_t sub_type = *(s++);
- int32_t n;
- memcpy(&n, s, 4);
- s += 4; // no point to the start of the array
- if (s + n >= b->data + b->l_data)
- return -1;
- kputsn("B:", 2, str); kputc(sub_type, str); // write the typing
- for (i = 0; i < n; ++i) { // FIXME: for better performance, put the loop after "if"
- kputc(',', str);
- if ('c' == sub_type) { kputw(*(int8_t*)s, str); ++s; }
- else if ('C' == sub_type) { kputw(*(uint8_t*)s, str); ++s; }
- else if ('s' == sub_type) { kputw(*(int16_t*)s, str); s += 2; }
- else if ('S' == sub_type) { kputw(*(uint16_t*)s, str); s += 2; }
- else if ('i' == sub_type) { kputw(*(int32_t*)s, str); s += 4; }
- else if ('I' == sub_type) { kputuw(*(uint32_t*)s, str); s += 4; }
- else if ('f' == sub_type) { ksprintf(str, "%g", *(float*)s); s += 4; }
- }
- }
- }
- return str->l;
-}
-
-int sam_write1(htsFile *fp, const bam_hdr_t *h, const bam1_t *b)
-{
- switch (fp->format.format) {
- case binary_format:
- fp->format.category = sequence_data;
- fp->format.format = bam;
- /* fall-through */
- case bam:
- return bam_write1(fp->fp.bgzf, b);
-
- case cram:
- return cram_put_bam_seq(fp->fp.cram, (bam1_t *)b);
-
- case text_format:
- fp->format.category = sequence_data;
- fp->format.format = sam;
- /* fall-through */
- case sam:
- if (sam_format1(h, b, &fp->line) < 0) return -1;
- kputc('\n', &fp->line);
- if ( hwrite(fp->fp.hfile, fp->line.s, fp->line.l) != fp->line.l ) return -1;
- return fp->line.l;
-
- default:
- abort();
- }
-}
-
-/************************
- *** Auxiliary fields ***
- ************************/
-
-void bam_aux_append(bam1_t *b, const char tag[2], char type, int len, uint8_t *data)
-{
- int ori_len = b->l_data;
- b->l_data += 3 + len;
- if (b->m_data < b->l_data) {
- b->m_data = b->l_data;
- kroundup32(b->m_data);
- b->data = (uint8_t*)realloc(b->data, b->m_data);
- }
- b->data[ori_len] = tag[0]; b->data[ori_len + 1] = tag[1];
- b->data[ori_len + 2] = type;
- memcpy(b->data + ori_len + 3, data, len);
-}
-
-static inline uint8_t *skip_aux(uint8_t *s)
-{
- int size = aux_type2size(*s); ++s; // skip type
- uint32_t n;
- switch (size) {
- case 'Z':
- case 'H':
- while (*s) ++s;
- return s + 1;
- case 'B':
- size = aux_type2size(*s); ++s;
- memcpy(&n, s, 4); s += 4;
- return s + size * n;
- case 0:
- abort();
- break;
- default:
- return s + size;
- }
-}
-
-uint8_t *bam_aux_get(const bam1_t *b, const char tag[2])
-{
- uint8_t *s;
- int y = tag[0]<<8 | tag[1];
- s = bam_get_aux(b);
- while (s < b->data + b->l_data) {
- int x = (int)s[0]<<8 | s[1];
- s += 2;
- if (x == y) return s;
- s = skip_aux(s);
- }
- return 0;
-}
-// s MUST BE returned by bam_aux_get()
-int bam_aux_del(bam1_t *b, uint8_t *s)
-{
- uint8_t *p, *aux;
- int l_aux = bam_get_l_aux(b);
- aux = bam_get_aux(b);
- p = s - 2;
- s = skip_aux(s);
- memmove(p, s, l_aux - (s - aux));
- b->l_data -= s - p;
- return 0;
-}
-
-int32_t bam_aux2i(const uint8_t *s)
-{
- int type;
- type = *s++;
- if (type == 'c') return (int32_t)*(int8_t*)s;
- else if (type == 'C') return (int32_t)*(uint8_t*)s;
- else if (type == 's') return (int32_t)*(int16_t*)s;
- else if (type == 'S') return (int32_t)*(uint16_t*)s;
- else if (type == 'i' || type == 'I') return *(int32_t*)s;
- else return 0;
-}
-
-double bam_aux2f(const uint8_t *s)
-{
- int type;
- type = *s++;
- if (type == 'd') return *(double*)s;
- else if (type == 'f') return *(float*)s;
- else return 0.0;
-}
-
-char bam_aux2A(const uint8_t *s)
-{
- int type;
- type = *s++;
- if (type == 'A') return *(char*)s;
- else return 0;
-}
-
-char *bam_aux2Z(const uint8_t *s)
-{
- int type;
- type = *s++;
- if (type == 'Z' || type == 'H') return (char*)s;
- else return 0;
-}
-
-int sam_open_mode(char *mode, const char *fn, const char *format)
-{
- // TODO Parse "bam5" etc for compression level
- if (format == NULL) {
- // Try to pick a format based on the filename extension
- const char *ext = fn? strrchr(fn, '.') : NULL;
- if (ext == NULL || strchr(ext, '/')) return -1;
- return sam_open_mode(mode, fn, ext+1);
- }
- else if (strcmp(format, "bam") == 0) strcpy(mode, "b");
- else if (strcmp(format, "cram") == 0) strcpy(mode, "c");
- else if (strcmp(format, "sam") == 0) strcpy(mode, "");
- else return -1;
-
- return 0;
-}
-
-#define STRNCMP(a,b,n) (strncasecmp((a),(b),(n)) || strlen(a)!=(n))
-int bam_str2flag(const char *str)
-{
- char *end, *beg = (char*) str;
- long int flag = strtol(str, &end, 0);
- if ( end!=str ) return flag; // the conversion was successful
- flag = 0;
- while ( *str )
- {
- end = beg;
- while ( *end && *end!=',' ) end++;
- if ( !STRNCMP("PAIRED",beg,end-beg) ) flag |= BAM_FPAIRED;
- else if ( !STRNCMP("PROPER_PAIR",beg,end-beg) ) flag |= BAM_FPROPER_PAIR;
- else if ( !STRNCMP("UNMAP",beg,end-beg) ) flag |= BAM_FUNMAP;
- else if ( !STRNCMP("MUNMAP",beg,end-beg) ) flag |= BAM_FMUNMAP;
- else if ( !STRNCMP("REVERSE",beg,end-beg) ) flag |= BAM_FREVERSE;
- else if ( !STRNCMP("MREVERSE",beg,end-beg) ) flag |= BAM_FMREVERSE;
- else if ( !STRNCMP("READ1",beg,end-beg) ) flag |= BAM_FREAD1;
- else if ( !STRNCMP("READ2",beg,end-beg) ) flag |= BAM_FREAD2;
- else if ( !STRNCMP("SECONDARY",beg,end-beg) ) flag |= BAM_FSECONDARY;
- else if ( !STRNCMP("QCFAIL",beg,end-beg) ) flag |= BAM_FQCFAIL;
- else if ( !STRNCMP("DUP",beg,end-beg) ) flag |= BAM_FDUP;
- else if ( !STRNCMP("SUPPLEMENTARY",beg,end-beg) ) flag |= BAM_FSUPPLEMENTARY;
- else return -1;
- if ( !*end ) break;
- beg = end + 1;
- }
- return flag;
-}
-
-char *bam_flag2str(int flag)
-{
- kstring_t str = {0,0,0};
- if ( flag&BAM_FPAIRED ) ksprintf(&str,"%s%s", str.l?",":"","PAIRED");
- if ( flag&BAM_FPROPER_PAIR ) ksprintf(&str,"%s%s", str.l?",":"","PROPER_PAIR");
- if ( flag&BAM_FUNMAP ) ksprintf(&str,"%s%s", str.l?",":"","UNMAP");
- if ( flag&BAM_FMUNMAP ) ksprintf(&str,"%s%s", str.l?",":"","MUNMAP");
- if ( flag&BAM_FREVERSE ) ksprintf(&str,"%s%s", str.l?",":"","REVERSE");
- if ( flag&BAM_FMREVERSE ) ksprintf(&str,"%s%s", str.l?",":"","MREVERSE");
- if ( flag&BAM_FREAD1 ) ksprintf(&str,"%s%s", str.l?",":"","READ1");
- if ( flag&BAM_FREAD2 ) ksprintf(&str,"%s%s", str.l?",":"","READ2");
- if ( flag&BAM_FSECONDARY ) ksprintf(&str,"%s%s", str.l?",":"","SECONDARY");
- if ( flag&BAM_FQCFAIL ) ksprintf(&str,"%s%s", str.l?",":"","QCFAIL");
- if ( flag&BAM_FDUP ) ksprintf(&str,"%s%s", str.l?",":"","DUP");
- if ( flag&BAM_FSUPPLEMENTARY ) ksprintf(&str,"%s%s", str.l?",":"","SUPPLEMENTARY");
- if ( str.l == 0 ) kputsn("", 0, &str);
- return str.s;
-}
-
-
-/**************************
- *** Pileup and Mpileup ***
- **************************/
-
-#if !defined(BAM_NO_PILEUP)
-
-#include <assert.h>
-
-/*******************
- *** Memory pool ***
- *******************/
-
-typedef struct {
- int k, x, y, end;
-} cstate_t;
-
-static cstate_t g_cstate_null = { -1, 0, 0, 0 };
-
-typedef struct __linkbuf_t {
- bam1_t b;
- int32_t beg, end;
- cstate_t s;
- struct __linkbuf_t *next;
-} lbnode_t;
-
-typedef struct {
- int cnt, n, max;
- lbnode_t **buf;
-} mempool_t;
-
-static mempool_t *mp_init(void)
-{
- mempool_t *mp;
- mp = (mempool_t*)calloc(1, sizeof(mempool_t));
- return mp;
-}
-static void mp_destroy(mempool_t *mp)
-{
- int k;
- for (k = 0; k < mp->n; ++k) {
- free(mp->buf[k]->b.data);
- free(mp->buf[k]);
- }
- free(mp->buf);
- free(mp);
-}
-static inline lbnode_t *mp_alloc(mempool_t *mp)
-{
- ++mp->cnt;
- if (mp->n == 0) return (lbnode_t*)calloc(1, sizeof(lbnode_t));
- else return mp->buf[--mp->n];
-}
-static inline void mp_free(mempool_t *mp, lbnode_t *p)
-{
- --mp->cnt; p->next = 0; // clear lbnode_t::next here
- if (mp->n == mp->max) {
- mp->max = mp->max? mp->max<<1 : 256;
- mp->buf = (lbnode_t**)realloc(mp->buf, sizeof(lbnode_t*) * mp->max);
- }
- mp->buf[mp->n++] = p;
-}
-
-/**********************
- *** CIGAR resolver ***
- **********************/
-
-/* s->k: the index of the CIGAR operator that has just been processed.
- s->x: the reference coordinate of the start of s->k
- s->y: the query coordiante of the start of s->k
- */
-static inline int resolve_cigar2(bam_pileup1_t *p, int32_t pos, cstate_t *s)
-{
-#define _cop(c) ((c)&BAM_CIGAR_MASK)
-#define _cln(c) ((c)>>BAM_CIGAR_SHIFT)
-
- bam1_t *b = p->b;
- bam1_core_t *c = &b->core;
- uint32_t *cigar = bam_get_cigar(b);
- int k;
- // determine the current CIGAR operation
-// fprintf(stderr, "%s\tpos=%d\tend=%d\t(%d,%d,%d)\n", bam_get_qname(b), pos, s->end, s->k, s->x, s->y);
- if (s->k == -1) { // never processed
- if (c->n_cigar == 1) { // just one operation, save a loop
- if (_cop(cigar[0]) == BAM_CMATCH || _cop(cigar[0]) == BAM_CEQUAL || _cop(cigar[0]) == BAM_CDIFF) s->k = 0, s->x = c->pos, s->y = 0;
- } else { // find the first match or deletion
- for (k = 0, s->x = c->pos, s->y = 0; k < c->n_cigar; ++k) {
- int op = _cop(cigar[k]);
- int l = _cln(cigar[k]);
- if (op == BAM_CMATCH || op == BAM_CDEL || op == BAM_CEQUAL || op == BAM_CDIFF) break;
- else if (op == BAM_CREF_SKIP) s->x += l;
- else if (op == BAM_CINS || op == BAM_CSOFT_CLIP) s->y += l;
- }
- assert(k < c->n_cigar);
- s->k = k;
- }
- } else { // the read has been processed before
- int op, l = _cln(cigar[s->k]);
- if (pos - s->x >= l) { // jump to the next operation
- assert(s->k < c->n_cigar); // otherwise a bug: this function should not be called in this case
- op = _cop(cigar[s->k+1]);
- if (op == BAM_CMATCH || op == BAM_CDEL || op == BAM_CREF_SKIP || op == BAM_CEQUAL || op == BAM_CDIFF) { // jump to the next without a loop
- if (_cop(cigar[s->k]) == BAM_CMATCH|| _cop(cigar[s->k]) == BAM_CEQUAL || _cop(cigar[s->k]) == BAM_CDIFF) s->y += l;
- s->x += l;
- ++s->k;
- } else { // find the next M/D/N/=/X
- if (_cop(cigar[s->k]) == BAM_CMATCH|| _cop(cigar[s->k]) == BAM_CEQUAL || _cop(cigar[s->k]) == BAM_CDIFF) s->y += l;
- s->x += l;
- for (k = s->k + 1; k < c->n_cigar; ++k) {
- op = _cop(cigar[k]), l = _cln(cigar[k]);
- if (op == BAM_CMATCH || op == BAM_CDEL || op == BAM_CREF_SKIP || op == BAM_CEQUAL || op == BAM_CDIFF) break;
- else if (op == BAM_CINS || op == BAM_CSOFT_CLIP) s->y += l;
- }
- s->k = k;
- }
- assert(s->k < c->n_cigar); // otherwise a bug
- } // else, do nothing
- }
- { // collect pileup information
- int op, l;
- op = _cop(cigar[s->k]); l = _cln(cigar[s->k]);
- p->is_del = p->indel = p->is_refskip = 0;
- if (s->x + l - 1 == pos && s->k + 1 < c->n_cigar) { // peek the next operation
- int op2 = _cop(cigar[s->k+1]);
- int l2 = _cln(cigar[s->k+1]);
- if (op2 == BAM_CDEL) p->indel = -(int)l2;
- else if (op2 == BAM_CINS) p->indel = l2;
- else if (op2 == BAM_CPAD && s->k + 2 < c->n_cigar) { // no working for adjacent padding
- int l3 = 0;
- for (k = s->k + 2; k < c->n_cigar; ++k) {
- op2 = _cop(cigar[k]); l2 = _cln(cigar[k]);
- if (op2 == BAM_CINS) l3 += l2;
- else if (op2 == BAM_CDEL || op2 == BAM_CMATCH || op2 == BAM_CREF_SKIP || op2 == BAM_CEQUAL || op2 == BAM_CDIFF) break;
- }
- if (l3 > 0) p->indel = l3;
- }
- }
- if (op == BAM_CMATCH || op == BAM_CEQUAL || op == BAM_CDIFF) {
- p->qpos = s->y + (pos - s->x);
- } else if (op == BAM_CDEL || op == BAM_CREF_SKIP) {
- p->is_del = 1; p->qpos = s->y; // FIXME: distinguish D and N!!!!!
- p->is_refskip = (op == BAM_CREF_SKIP);
- } // cannot be other operations; otherwise a bug
- p->is_head = (pos == c->pos); p->is_tail = (pos == s->end);
- }
- return 1;
-}
-
-/***********************
- *** Pileup iterator ***
- ***********************/
-
-// Dictionary of overlapping reads
-KHASH_MAP_INIT_STR(olap_hash, lbnode_t *)
-typedef khash_t(olap_hash) olap_hash_t;
-
-struct __bam_plp_t {
- mempool_t *mp;
- lbnode_t *head, *tail, *dummy;
- int32_t tid, pos, max_tid, max_pos;
- int is_eof, max_plp, error, maxcnt;
- uint64_t id;
- bam_pileup1_t *plp;
- // for the "auto" interface only
- bam1_t *b;
- bam_plp_auto_f func;
- void *data;
- olap_hash_t *overlaps;
-};
-
-bam_plp_t bam_plp_init(bam_plp_auto_f func, void *data)
-{
- bam_plp_t iter;
- iter = (bam_plp_t)calloc(1, sizeof(struct __bam_plp_t));
- iter->mp = mp_init();
- iter->head = iter->tail = mp_alloc(iter->mp);
- iter->dummy = mp_alloc(iter->mp);
- iter->max_tid = iter->max_pos = -1;
- iter->maxcnt = 8000;
- if (func) {
- iter->func = func;
- iter->data = data;
- iter->b = bam_init1();
- }
- return iter;
-}
-
-void bam_plp_init_overlaps(bam_plp_t iter)
-{
- iter->overlaps = kh_init(olap_hash); // hash for tweaking quality of bases in overlapping reads
-}
-
-void bam_plp_destroy(bam_plp_t iter)
-{
- if ( iter->overlaps ) kh_destroy(olap_hash, iter->overlaps);
- mp_free(iter->mp, iter->dummy);
- mp_free(iter->mp, iter->head);
- if (iter->mp->cnt != 0)
- fprintf(stderr, "[bam_plp_destroy] memory leak: %d. Continue anyway.\n", iter->mp->cnt);
- mp_destroy(iter->mp);
- if (iter->b) bam_destroy1(iter->b);
- free(iter->plp);
- free(iter);
-}
-
-
-//---------------------------------
-//--- Tweak overlapping reads
-//---------------------------------
-
-/**
- * cigar_iref2iseq_set() - find the first CMATCH setting the ref and the read index
- * cigar_iref2iseq_next() - get the next CMATCH base
- * @cigar: pointer to current cigar block (rw)
- * @cigar_max: pointer just beyond the last cigar block
- * @icig: position within the current cigar block (rw)
- * @iseq: position in the sequence (rw)
- * @iref: position with respect to the beginning of the read (iref_pos - b->core.pos) (rw)
- *
- * Returns BAM_CMATCH or -1 when there is no more cigar to process or the requested position is not covered.
- */
-static inline int cigar_iref2iseq_set(uint32_t **cigar, uint32_t *cigar_max, int *icig, int *iseq, int *iref)
-{
- int pos = *iref;
- if ( pos < 0 ) return -1;
- *icig = 0;
- *iseq = 0;
- *iref = 0;
- while ( *cigar<cigar_max )
- {
- int cig = (**cigar) & BAM_CIGAR_MASK;
- int ncig = (**cigar) >> BAM_CIGAR_SHIFT;
-
- if ( cig==BAM_CSOFT_CLIP ) { (*cigar)++; *iseq += ncig; *icig = 0; continue; }
- if ( cig==BAM_CHARD_CLIP || cig==BAM_CPAD ) { (*cigar)++; *icig = 0; continue; }
- if ( cig==BAM_CMATCH || cig==BAM_CEQUAL || cig==BAM_CDIFF )
- {
- pos -= ncig;
- if ( pos < 0 ) { *icig = ncig + pos; *iseq += *icig; *iref += *icig; return BAM_CMATCH; }
- (*cigar)++; *iseq += ncig; *icig = 0; *iref += ncig;
- continue;
- }
- if ( cig==BAM_CINS ) { (*cigar)++; *iseq += ncig; *icig = 0; continue; }
- if ( cig==BAM_CDEL || cig==BAM_CREF_SKIP )
- {
- pos -= ncig;
- if ( pos<0 ) pos = 0;
- (*cigar)++; *icig = 0; *iref += ncig;
- continue;
- }
- fprintf(stderr,"todo: cigar %d\n", cig);
- assert(0);
- }
- *iseq = -1;
- return -1;
-}
-static inline int cigar_iref2iseq_next(uint32_t **cigar, uint32_t *cigar_max, int *icig, int *iseq, int *iref)
-{
- while ( *cigar < cigar_max )
- {
- int cig = (**cigar) & BAM_CIGAR_MASK;
- int ncig = (**cigar) >> BAM_CIGAR_SHIFT;
-
- if ( cig==BAM_CMATCH || cig==BAM_CEQUAL || cig==BAM_CDIFF )
- {
- if ( *icig >= ncig - 1 ) { *icig = 0; (*cigar)++; continue; }
- (*iseq)++; (*icig)++; (*iref)++;
- return BAM_CMATCH;
- }
- if ( cig==BAM_CDEL || cig==BAM_CREF_SKIP ) { (*cigar)++; (*iref) += ncig; *icig = 0; continue; }
- if ( cig==BAM_CINS ) { (*cigar)++; *iseq += ncig; *icig = 0; continue; }
- if ( cig==BAM_CSOFT_CLIP ) { (*cigar)++; *iseq += ncig; *icig = 0; continue; }
- if ( cig==BAM_CHARD_CLIP || cig==BAM_CPAD ) { (*cigar)++; *icig = 0; continue; }
- fprintf(stderr,"todo: cigar %d\n", cig);
- assert(0);
- }
- *iseq = -1;
- *iref = -1;
- return -1;
-}
-
-static void tweak_overlap_quality(bam1_t *a, bam1_t *b)
-{
- uint32_t *a_cigar = bam_get_cigar(a), *a_cigar_max = a_cigar + a->core.n_cigar;
- uint32_t *b_cigar = bam_get_cigar(b), *b_cigar_max = b_cigar + b->core.n_cigar;
- int a_icig = 0, a_iseq = 0;
- int b_icig = 0, b_iseq = 0;
- uint8_t *a_qual = bam_get_qual(a), *b_qual = bam_get_qual(b);
- uint8_t *a_seq = bam_get_seq(a), *b_seq = bam_get_seq(b);
-
- int iref = b->core.pos;
- int a_iref = iref - a->core.pos;
- int b_iref = iref - b->core.pos;
- int a_ret = cigar_iref2iseq_set(&a_cigar, a_cigar_max, &a_icig, &a_iseq, &a_iref);
- if ( a_ret<0 ) return; // no overlap
- int b_ret = cigar_iref2iseq_set(&b_cigar, b_cigar_max, &b_icig, &b_iseq, &b_iref);
- if ( b_ret<0 ) return; // no overlap
-
- #if DBG
- fprintf(stderr,"tweak %s n_cigar=%d %d .. %d-%d vs %d-%d\n", bam_get_qname(a), a->core.n_cigar, b->core.n_cigar,
- a->core.pos+1,a->core.pos+bam_cigar2rlen(a->core.n_cigar,bam_get_cigar(a)), b->core.pos+1, b->core.pos+bam_cigar2rlen(b->core.n_cigar,bam_get_cigar(b)));
- #endif
-
- while ( 1 )
- {
- // Increment reference position
- while ( a_iref>=0 && a_iref < iref - a->core.pos )
- a_ret = cigar_iref2iseq_next(&a_cigar, a_cigar_max, &a_icig, &a_iseq, &a_iref);
- if ( a_ret<0 ) break; // done
- if ( iref < a_iref + a->core.pos ) iref = a_iref + a->core.pos;
-
- while ( b_iref>=0 && b_iref < iref - b->core.pos )
- b_ret = cigar_iref2iseq_next(&b_cigar, b_cigar_max, &b_icig, &b_iseq, &b_iref);
- if ( b_ret<0 ) break; // done
- if ( iref < b_iref + b->core.pos ) iref = b_iref + b->core.pos;
-
- iref++;
- if ( a_iref+a->core.pos != b_iref+b->core.pos ) continue; // only CMATCH positions, don't know what to do with indels
-
- if ( bam_seqi(a_seq,a_iseq) == bam_seqi(b_seq,b_iseq) )
- {
- #if DBG
- fprintf(stderr,"%c",seq_nt16_str[bam_seqi(a_seq,a_iseq)]);
- #endif
- // we are very confident about this base
- int qual = a_qual[a_iseq] + b_qual[b_iseq];
- a_qual[a_iseq] = qual>200 ? 200 : qual;
- b_qual[b_iseq] = 0;
- }
- else
- {
- if ( a_qual[a_iseq] >= b_qual[b_iseq] )
- {
- #if DBG
- fprintf(stderr,"[%c/%c]",seq_nt16_str[bam_seqi(a_seq,a_iseq)],tolower(seq_nt16_str[bam_seqi(b_seq,b_iseq)]));
- #endif
- a_qual[a_iseq] = 0.8 * a_qual[a_iseq]; // not so confident about a_qual anymore given the mismatch
- b_qual[b_iseq] = 0;
- }
- else
- {
- #if DBG
- fprintf(stderr,"[%c/%c]",tolower(seq_nt16_str[bam_seqi(a_seq,a_iseq)]),seq_nt16_str[bam_seqi(b_seq,b_iseq)]);
- #endif
- b_qual[b_iseq] = 0.8 * b_qual[b_iseq];
- a_qual[a_iseq] = 0;
- }
- }
- }
- #if DBG
- fprintf(stderr,"\n");
- #endif
-}
-
-// Fix overlapping reads. Simple soft-clipping did not give good results.
-// Lowering qualities of unwanted bases is more selective and works better.
-//
-static void overlap_push(bam_plp_t iter, lbnode_t *node)
-{
- if ( !iter->overlaps ) return;
-
- // mapped mates and paired reads only
- if ( node->b.core.flag&BAM_FMUNMAP || !(node->b.core.flag&BAM_FPROPER_PAIR) ) return;
-
- // no overlap possible, unless some wild cigar
- if ( abs(node->b.core.isize) >= 2*node->b.core.l_qseq ) return;
-
- khiter_t kitr = kh_get(olap_hash, iter->overlaps, bam_get_qname(&node->b));
- if ( kitr==kh_end(iter->overlaps) )
- {
- int ret;
- kitr = kh_put(olap_hash, iter->overlaps, bam_get_qname(&node->b), &ret);
- kh_value(iter->overlaps, kitr) = node;
- }
- else
- {
- lbnode_t *a = kh_value(iter->overlaps, kitr);
- tweak_overlap_quality(&a->b, &node->b);
- kh_del(olap_hash, iter->overlaps, kitr);
- assert(a->end-1 == a->s.end);
- a->end = a->b.core.pos + bam_cigar2rlen(a->b.core.n_cigar, bam_get_cigar(&a->b));
- a->s.end = a->end - 1;
- }
-}
-
-static void overlap_remove(bam_plp_t iter, const bam1_t *b)
-{
- if ( !iter->overlaps ) return;
-
- khiter_t kitr;
- if ( b )
- {
- kitr = kh_get(olap_hash, iter->overlaps, bam_get_qname(b));
- if ( kitr!=kh_end(iter->overlaps) )
- kh_del(olap_hash, iter->overlaps, kitr);
- }
- else
- {
- // remove all
- for (kitr = kh_begin(iter->overlaps); kitr<kh_end(iter->overlaps); kitr++)
- if ( kh_exist(iter->overlaps, kitr) ) kh_del(olap_hash, iter->overlaps, kitr);
- }
-}
-
-
-
-// Prepares next pileup position in bam records collected by bam_plp_auto -> user func -> bam_plp_push. Returns
-// pointer to the piled records if next position is ready or NULL if there is not enough records in the
-// buffer yet (the current position is still the maximum position across all buffered reads).
-const bam_pileup1_t *bam_plp_next(bam_plp_t iter, int *_tid, int *_pos, int *_n_plp)
-{
- if (iter->error) { *_n_plp = -1; return 0; }
- *_n_plp = 0;
- if (iter->is_eof && iter->head->next == 0) return 0;
- while (iter->is_eof || iter->max_tid > iter->tid || (iter->max_tid == iter->tid && iter->max_pos > iter->pos)) {
- int n_plp = 0;
- lbnode_t *p, *q;
- // write iter->plp at iter->pos
- iter->dummy->next = iter->head;
- for (p = iter->head, q = iter->dummy; p->next; q = p, p = p->next) {
- if (p->b.core.tid < iter->tid || (p->b.core.tid == iter->tid && p->end <= iter->pos)) { // then remove
- overlap_remove(iter, &p->b);
- q->next = p->next; mp_free(iter->mp, p); p = q;
- } else if (p->b.core.tid == iter->tid && p->beg <= iter->pos) { // here: p->end > pos; then add to pileup
- if (n_plp == iter->max_plp) { // then double the capacity
- iter->max_plp = iter->max_plp? iter->max_plp<<1 : 256;
- iter->plp = (bam_pileup1_t*)realloc(iter->plp, sizeof(bam_pileup1_t) * iter->max_plp);
- }
- iter->plp[n_plp].b = &p->b;
- if (resolve_cigar2(iter->plp + n_plp, iter->pos, &p->s)) ++n_plp; // actually always true...
- }
- }
- iter->head = iter->dummy->next; // dummy->next may be changed
- *_n_plp = n_plp; *_tid = iter->tid; *_pos = iter->pos;
- // update iter->tid and iter->pos
- if (iter->head->next) {
- if (iter->tid > iter->head->b.core.tid) {
- fprintf(stderr, "[%s] unsorted input. Pileup aborts.\n", __func__);
- iter->error = 1;
- *_n_plp = -1;
- return 0;
- }
- }
- if (iter->tid < iter->head->b.core.tid) { // come to a new reference sequence
- iter->tid = iter->head->b.core.tid; iter->pos = iter->head->beg; // jump to the next reference
- } else if (iter->pos < iter->head->beg) { // here: tid == head->b.core.tid
- iter->pos = iter->head->beg; // jump to the next position
- } else ++iter->pos; // scan contiguously
- // return
- if (n_plp) return iter->plp;
- if (iter->is_eof && iter->head->next == 0) break;
- }
- return 0;
-}
-
-int bam_plp_push(bam_plp_t iter, const bam1_t *b)
-{
- if (iter->error) return -1;
- if (b) {
- if (b->core.tid < 0) { overlap_remove(iter, b); return 0; }
- // Skip only unmapped reads here, any additional filtering must be done in iter->func
- if (b->core.flag & BAM_FUNMAP) { overlap_remove(iter, b); return 0; }
- if (iter->tid == b->core.tid && iter->pos == b->core.pos && iter->mp->cnt > iter->maxcnt)
- {
- overlap_remove(iter, b);
- return 0;
- }
- bam_copy1(&iter->tail->b, b);
- overlap_push(iter, iter->tail);
-#ifndef BAM_NO_ID
- iter->tail->b.id = iter->id++;
-#endif
- iter->tail->beg = b->core.pos;
- iter->tail->end = b->core.pos + bam_cigar2rlen(b->core.n_cigar, bam_get_cigar(b));
- iter->tail->s = g_cstate_null; iter->tail->s.end = iter->tail->end - 1; // initialize cstate_t
- if (b->core.tid < iter->max_tid) {
- fprintf(stderr, "[bam_pileup_core] the input is not sorted (chromosomes out of order)\n");
- iter->error = 1;
- return -1;
- }
- if ((b->core.tid == iter->max_tid) && (iter->tail->beg < iter->max_pos)) {
- fprintf(stderr, "[bam_pileup_core] the input is not sorted (reads out of order)\n");
- iter->error = 1;
- return -1;
- }
- iter->max_tid = b->core.tid; iter->max_pos = iter->tail->beg;
- if (iter->tail->end > iter->pos || iter->tail->b.core.tid > iter->tid) {
- iter->tail->next = mp_alloc(iter->mp);
- iter->tail = iter->tail->next;
- }
- } else iter->is_eof = 1;
- return 0;
-}
-
-const bam_pileup1_t *bam_plp_auto(bam_plp_t iter, int *_tid, int *_pos, int *_n_plp)
-{
- const bam_pileup1_t *plp;
- if (iter->func == 0 || iter->error) { *_n_plp = -1; return 0; }
- if ((plp = bam_plp_next(iter, _tid, _pos, _n_plp)) != 0) return plp;
- else { // no pileup line can be obtained; read alignments
- *_n_plp = 0;
- if (iter->is_eof) return 0;
- int ret;
- while ( (ret=iter->func(iter->data, iter->b)) >= 0) {
- if (bam_plp_push(iter, iter->b) < 0) {
- *_n_plp = -1;
- return 0;
- }
- if ((plp = bam_plp_next(iter, _tid, _pos, _n_plp)) != 0) return plp;
- // otherwise no pileup line can be returned; read the next alignment.
- }
- if ( ret < -1 ) { iter->error = ret; *_n_plp = -1; return 0; }
- bam_plp_push(iter, 0);
- if ((plp = bam_plp_next(iter, _tid, _pos, _n_plp)) != 0) return plp;
- return 0;
- }
-}
-
-void bam_plp_reset(bam_plp_t iter)
-{
- lbnode_t *p, *q;
- iter->max_tid = iter->max_pos = -1;
- iter->tid = iter->pos = 0;
- iter->is_eof = 0;
- for (p = iter->head; p->next;) {
- overlap_remove(iter, NULL);
- q = p->next;
- mp_free(iter->mp, p);
- p = q;
- }
- iter->head = iter->tail;
-}
-
-void bam_plp_set_maxcnt(bam_plp_t iter, int maxcnt)
-{
- iter->maxcnt = maxcnt;
-}
-
-/************************
- *** Mpileup iterator ***
- ************************/
-
-struct __bam_mplp_t {
- int n;
- uint64_t min, *pos;
- bam_plp_t *iter;
- int *n_plp;
- const bam_pileup1_t **plp;
-};
-
-bam_mplp_t bam_mplp_init(int n, bam_plp_auto_f func, void **data)
-{
- int i;
- bam_mplp_t iter;
- iter = (bam_mplp_t)calloc(1, sizeof(struct __bam_mplp_t));
- iter->pos = (uint64_t*)calloc(n, sizeof(uint64_t));
- iter->n_plp = (int*)calloc(n, sizeof(int));
- iter->plp = (const bam_pileup1_t**)calloc(n, sizeof(bam_pileup1_t*));
- iter->iter = (bam_plp_t*)calloc(n, sizeof(bam_plp_t));
- iter->n = n;
- iter->min = (uint64_t)-1;
- for (i = 0; i < n; ++i) {
- iter->iter[i] = bam_plp_init(func, data[i]);
- iter->pos[i] = iter->min;
- }
- return iter;
-}
-
-void bam_mplp_init_overlaps(bam_mplp_t iter)
-{
- int i;
- for (i = 0; i < iter->n; ++i)
- bam_plp_init_overlaps(iter->iter[i]);
-}
-
-void bam_mplp_set_maxcnt(bam_mplp_t iter, int maxcnt)
-{
- int i;
- for (i = 0; i < iter->n; ++i)
- iter->iter[i]->maxcnt = maxcnt;
-}
-
-void bam_mplp_destroy(bam_mplp_t iter)
-{
- int i;
- for (i = 0; i < iter->n; ++i) bam_plp_destroy(iter->iter[i]);
- free(iter->iter); free(iter->pos); free(iter->n_plp); free(iter->plp);
- free(iter);
-}
-
-int bam_mplp_auto(bam_mplp_t iter, int *_tid, int *_pos, int *n_plp, const bam_pileup1_t **plp)
-{
- int i, ret = 0;
- uint64_t new_min = (uint64_t)-1;
- for (i = 0; i < iter->n; ++i) {
- if (iter->pos[i] == iter->min) {
- int tid, pos;
- iter->plp[i] = bam_plp_auto(iter->iter[i], &tid, &pos, &iter->n_plp[i]);
- if ( iter->iter[i]->error ) return -1;
- iter->pos[i] = iter->plp[i] ? (uint64_t)tid<<32 | pos : 0;
- }
- if (iter->plp[i] && iter->pos[i] < new_min) new_min = iter->pos[i];
- }
- iter->min = new_min;
- if (new_min == (uint64_t)-1) return 0;
- *_tid = new_min>>32; *_pos = (uint32_t)new_min;
- for (i = 0; i < iter->n; ++i) {
- if (iter->pos[i] == iter->min) { // FIXME: valgrind reports "uninitialised value(s) at this line"
- n_plp[i] = iter->n_plp[i], plp[i] = iter->plp[i];
- ++ret;
- } else n_plp[i] = 0, plp[i] = 0;
- }
- return ret;
-}
-
-#endif // ~!defined(BAM_NO_PILEUP)
diff --git a/htslib/synced_bcf_reader.c b/htslib/synced_bcf_reader.c
deleted file mode 100644
index 3747c0e..0000000
--- a/htslib/synced_bcf_reader.c
+++ /dev/null
@@ -1,1257 +0,0 @@
-/* synced_bcf_reader.c -- stream through multiple VCF files.
-
- Copyright (C) 2012-2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <limits.h>
-#include <errno.h>
-#include <ctype.h>
-#include <sys/stat.h>
-#include "htslib/synced_bcf_reader.h"
-#include "htslib/kseq.h"
-#include "htslib/khash_str2int.h"
-
-#define MAX_CSI_COOR 0x7fffffff // maximum indexable coordinate of .csi
-
-typedef struct
-{
- uint32_t start, end;
-}
-region1_t;
-
-typedef struct _region_t
-{
- region1_t *regs;
- int nregs, mregs, creg;
-}
-region_t;
-
-static void _regions_add(bcf_sr_regions_t *reg, const char *chr, int start, int end);
-static bcf_sr_regions_t *_regions_init_string(const char *str);
-static int _regions_match_alleles(bcf_sr_regions_t *reg, int als_idx, bcf1_t *rec);
-
-char *bcf_sr_strerror(int errnum)
-{
- switch (errnum)
- {
- case open_failed:
- return strerror(errno); break;
- case not_bgzf:
- return "not compressed with bgzip"; break;
- case idx_load_failed:
- return "could not load index"; break;
- case file_type_error:
- return "unknown file type"; break;
- case api_usage_error:
- return "API usage error"; break;
- case header_error:
- return "could not parse header"; break;
- default: return "";
- }
-}
-
-static int *init_filters(bcf_hdr_t *hdr, const char *filters, int *nfilters)
-{
- kstring_t str = {0,0,0};
- const char *tmp = filters, *prev = filters;
- int nout = 0, *out = NULL;
- while ( 1 )
- {
- if ( *tmp==',' || !*tmp )
- {
- out = (int*) realloc(out, (nout+1)*sizeof(int));
- if ( tmp-prev==1 && *prev=='.' )
- out[nout] = -1;
- else
- {
- str.l = 0;
- kputsn(prev, tmp-prev, &str);
- out[nout] = bcf_hdr_id2int(hdr, BCF_DT_ID, str.s);
- }
- nout++;
- if ( !*tmp ) break;
- prev = tmp+1;
- }
- tmp++;
- }
- if ( str.m ) free(str.s);
- *nfilters = nout;
- return out;
-}
-
-int bcf_sr_set_regions(bcf_srs_t *readers, const char *regions, int is_file)
-{
- assert( !readers->regions );
- if ( readers->nreaders )
- {
- fprintf(stderr,"[%s:%d %s] Error: bcf_sr_set_regions() must be called before bcf_sr_add_reader()\n", __FILE__,__LINE__,__FUNCTION__);
- return -1;
- }
- readers->regions = bcf_sr_regions_init(regions,is_file,0,1,-2);
- if ( !readers->regions ) return -1;
- readers->explicit_regs = 1;
- readers->require_index = 1;
- return 0;
-}
-int bcf_sr_set_targets(bcf_srs_t *readers, const char *targets, int is_file, int alleles)
-{
- assert( !readers->targets );
- if ( targets[0]=='^' )
- {
- readers->targets_exclude = 1;
- targets++;
- }
- readers->targets = bcf_sr_regions_init(targets,is_file,0,1,-2);
- if ( !readers->targets ) return -1;
- readers->targets_als = alleles;
- return 0;
-}
-
-int bcf_sr_add_reader(bcf_srs_t *files, const char *fname)
-{
- htsFile* file_ptr = hts_open(fname, "r");
- if ( ! file_ptr ) {
- files->errnum = open_failed;
- return 0;
- }
-
- files->has_line = (int*) realloc(files->has_line, sizeof(int)*(files->nreaders+1));
- files->has_line[files->nreaders] = 0;
- files->readers = (bcf_sr_t*) realloc(files->readers, sizeof(bcf_sr_t)*(files->nreaders+1));
- bcf_sr_t *reader = &files->readers[files->nreaders++];
- memset(reader,0,sizeof(bcf_sr_t));
-
- reader->file = file_ptr;
-
- files->errnum = 0;
-
- if ( files->require_index )
- {
- if ( reader->file->format.format==vcf )
- {
- if ( reader->file->format.compression!=bgzf )
- {
- files->errnum = not_bgzf;
- return 0;
- }
-
- reader->tbx_idx = tbx_index_load(fname);
- if ( !reader->tbx_idx )
- {
- files->errnum = idx_load_failed;
- return 0;
- }
-
- reader->header = bcf_hdr_read(reader->file);
- }
- else if ( reader->file->format.format==bcf )
- {
- if ( reader->file->format.compression!=bgzf )
- {
- files->errnum = not_bgzf;
- return 0;
- }
-
- reader->header = bcf_hdr_read(reader->file);
-
- reader->bcf_idx = bcf_index_load(fname);
- if ( !reader->bcf_idx )
- {
- files->errnum = idx_load_failed;
- return 0;
- }
- }
- else
- {
- files->errnum = file_type_error;
- return 0;
- }
- }
- else
- {
- if ( reader->file->format.format==bcf || reader->file->format.format==vcf )
- {
- reader->header = bcf_hdr_read(reader->file);
- }
- else
- {
- files->errnum = file_type_error;
- return 0;
- }
- files->streaming = 1;
- }
- if ( files->streaming && files->nreaders>1 )
- {
- files->errnum = api_usage_error;
- fprintf(stderr,"[%s:%d %s] Error: %d readers, yet require_index not set\n", __FILE__,__LINE__,__FUNCTION__,files->nreaders);
- return 0;
- }
- if ( files->streaming && files->regions )
- {
- files->errnum = api_usage_error;
- fprintf(stderr,"[%s:%d %s] Error: cannot tabix-jump in streaming mode\n", __FILE__,__LINE__,__FUNCTION__);
- return 0;
- }
- if ( !reader->header )
- {
- files->errnum = header_error;
- return 0;
- }
-
- reader->fname = fname;
- if ( files->apply_filters )
- reader->filter_ids = init_filters(reader->header, files->apply_filters, &reader->nfilter_ids);
-
- // Update list of chromosomes
- if ( !files->explicit_regs && !files->streaming )
- {
- int n,i;
- const char **names = reader->tbx_idx ? tbx_seqnames(reader->tbx_idx, &n) : bcf_hdr_seqnames(reader->header, &n);
- for (i=0; i<n; i++)
- {
- if ( !files->regions )
- files->regions = _regions_init_string(names[i]);
- else
- _regions_add(files->regions, names[i], -1, -1);
- }
- free(names);
- }
-
- return 1;
-}
-
-bcf_srs_t *bcf_sr_init(void)
-{
- bcf_srs_t *files = (bcf_srs_t*) calloc(1,sizeof(bcf_srs_t));
- return files;
-}
-
-static void bcf_sr_destroy1(bcf_sr_t *reader)
-{
- if ( reader->tbx_idx ) tbx_destroy(reader->tbx_idx);
- if ( reader->bcf_idx ) hts_idx_destroy(reader->bcf_idx);
- bcf_hdr_destroy(reader->header);
- hts_close(reader->file);
- if ( reader->itr ) tbx_itr_destroy(reader->itr);
- int j;
- for (j=0; j<reader->mbuffer; j++)
- bcf_destroy1(reader->buffer[j]);
- free(reader->buffer);
- free(reader->samples);
- free(reader->filter_ids);
-}
-void bcf_sr_destroy(bcf_srs_t *files)
-{
- int i;
- for (i=0; i<files->nreaders; i++)
- bcf_sr_destroy1(&files->readers[i]);
- free(files->has_line);
- free(files->readers);
- for (i=0; i<files->n_smpl; i++) free(files->samples[i]);
- free(files->samples);
- if (files->targets) bcf_sr_regions_destroy(files->targets);
- if (files->regions) bcf_sr_regions_destroy(files->regions);
- if ( files->tmps.m ) free(files->tmps.s);
- free(files);
-}
-
-void bcf_sr_remove_reader(bcf_srs_t *files, int i)
-{
- assert( !files->samples ); // not ready for this yet
- bcf_sr_destroy1(&files->readers[i]);
- if ( i+1 < files->nreaders )
- {
- memmove(&files->readers[i], &files->readers[i+1], (files->nreaders-i-1)*sizeof(bcf_sr_t));
- memmove(&files->has_line[i], &files->has_line[i+1], (files->nreaders-i-1)*sizeof(int));
- }
- files->nreaders--;
-}
-
-
-/*
- Removes duplicate records from the buffer. The meaning of "duplicate" is
- controlled by the $collapse variable, which can cause that from multiple
- <indel|snp|any> lines only the first is considered and the rest is ignored.
- The removal is done by setting the redundant lines' positions to -1 and
- moving these lines at the end of the buffer.
- */
-static void collapse_buffer(bcf_srs_t *files, bcf_sr_t *reader)
-{
- int irec,jrec, has_snp=0, has_indel=0, has_any=0;
- for (irec=1; irec<=reader->nbuffer; irec++)
- {
- bcf1_t *line = reader->buffer[irec];
- if ( line->pos != reader->buffer[1]->pos ) break;
- if ( files->collapse&COLLAPSE_ANY )
- {
- if ( !has_any ) has_any = 1;
- else line->pos = -1;
- }
- int line_type = bcf_get_variant_types(line);
- if ( files->collapse&COLLAPSE_SNPS && line_type&(VCF_SNP|VCF_MNP) )
- {
- if ( !has_snp ) has_snp = 1;
- else line->pos = -1;
- }
- if ( files->collapse&COLLAPSE_INDELS && line_type&VCF_INDEL )
- {
- if ( !has_indel ) has_indel = 1;
- else line->pos = -1;
- }
- }
- bcf1_t *tmp;
- irec = jrec = 1;
- while ( irec<=reader->nbuffer && jrec<=reader->nbuffer )
- {
- if ( reader->buffer[irec]->pos != -1 ) { irec++; continue; }
- if ( jrec<=irec ) jrec = irec+1;
- while ( jrec<=reader->nbuffer && reader->buffer[jrec]->pos==-1 ) jrec++;
- if ( jrec<=reader->nbuffer )
- {
- tmp = reader->buffer[irec]; reader->buffer[irec] = reader->buffer[jrec]; reader->buffer[jrec] = tmp;
- }
- }
- reader->nbuffer = irec - 1;
-}
-
-void debug_buffer(FILE *fp, bcf_sr_t *reader)
-{
- int j;
- for (j=0; j<=reader->nbuffer; j++)
- {
- bcf1_t *line = reader->buffer[j];
- fprintf(fp,"%s%s\t%s:%d\t%s ", reader->fname,j==0?"*":"",reader->header->id[BCF_DT_CTG][line->rid].key,line->pos+1,line->n_allele?line->d.allele[0]:"");
- int k;
- for (k=1; k<line->n_allele; k++) fprintf(fp," %s", line->d.allele[k]);
- fprintf(fp,"\n");
- }
-}
-
-void debug_buffers(FILE *fp, bcf_srs_t *files)
-{
- int i;
- for (i=0; i<files->nreaders; i++)
- {
- fprintf(fp, "has_line: %d\t%s\n", bcf_sr_has_line(files,i),files->readers[i].fname);
- debug_buffer(fp, &files->readers[i]);
- }
- fprintf(fp,"\n");
-}
-
-static inline int has_filter(bcf_sr_t *reader, bcf1_t *line)
-{
- int i, j;
- if ( !line->d.n_flt )
- {
- for (j=0; j<reader->nfilter_ids; j++)
- if ( reader->filter_ids[j]<0 ) return 1;
- return 0;
- }
- for (i=0; i<line->d.n_flt; i++)
- {
- for (j=0; j<reader->nfilter_ids; j++)
- if ( line->d.flt[i]==reader->filter_ids[j] ) return 1;
- }
- return 0;
-}
-
-static int _reader_seek(bcf_sr_t *reader, const char *seq, int start, int end)
-{
- if ( end>=MAX_CSI_COOR )
- {
- fprintf(stderr,"The coordinate is out of csi index limit: %d\n", end+1);
- exit(1);
- }
- if ( reader->itr )
- {
- hts_itr_destroy(reader->itr);
- reader->itr = NULL;
- }
- reader->nbuffer = 0;
- if ( reader->tbx_idx )
- {
- int tid = tbx_name2id(reader->tbx_idx, seq);
- if ( tid==-1 ) return -1; // the sequence not present in this file
- reader->itr = tbx_itr_queryi(reader->tbx_idx,tid,start,end+1);
- }
- else
- {
- int tid = bcf_hdr_name2id(reader->header, seq);
- if ( tid==-1 ) return -1; // the sequence not present in this file
- reader->itr = bcf_itr_queryi(reader->bcf_idx,tid,start,end+1);
- }
- assert(reader->itr);
- return 0;
-}
-
-/*
- * _readers_next_region() - jumps to next region if necessary
- * Returns 0 on success or -1 when there are no more regions left
- */
-static int _readers_next_region(bcf_srs_t *files)
-{
- // Need to open new chromosome? Check number of lines in all readers' buffers
- int i, eos = 0;
- for (i=0; i<files->nreaders; i++)
- if ( !files->readers[i].itr && !files->readers[i].nbuffer ) eos++;
-
- if ( eos!=files->nreaders )
- {
- // Some of the readers still has buffered lines
- return 0;
- }
-
- // No lines in the buffer, need to open new region or quit
- if ( bcf_sr_regions_next(files->regions)<0 ) return -1;
-
- for (i=0; i<files->nreaders; i++)
- _reader_seek(&files->readers[i],files->regions->seq_names[files->regions->iseq],files->regions->start,files->regions->end);
-
- return 0;
-}
-
-/*
- * _reader_fill_buffer() - buffers all records with the same coordinate
- */
-static void _reader_fill_buffer(bcf_srs_t *files, bcf_sr_t *reader)
-{
- // Return if the buffer is full: the coordinate of the last buffered record differs
- if ( reader->nbuffer && reader->buffer[reader->nbuffer]->pos != reader->buffer[1]->pos ) return;
-
- // No iterator (sequence not present in this file) and not streaming
- if ( !reader->itr && !files->streaming ) return;
-
- // Fill the buffer with records starting at the same position
- int i, ret = 0;
- while (1)
- {
- if ( reader->nbuffer+1 >= reader->mbuffer )
- {
- // Increase buffer size
- reader->mbuffer += 8;
- reader->buffer = (bcf1_t**) realloc(reader->buffer, sizeof(bcf1_t*)*reader->mbuffer);
- for (i=8; i>0; i--) // initialize
- {
- reader->buffer[reader->mbuffer-i] = bcf_init1();
- reader->buffer[reader->mbuffer-i]->max_unpack = files->max_unpack;
- reader->buffer[reader->mbuffer-i]->pos = -1; // for rare cases when VCF starts from 1
- }
- }
- if ( files->streaming )
- {
- if ( reader->file->format.format==vcf )
- {
- if ( (ret=hts_getline(reader->file, KS_SEP_LINE, &files->tmps)) < 0 ) break; // no more lines
- int ret = vcf_parse1(&files->tmps, reader->header, reader->buffer[reader->nbuffer+1]);
- if ( ret<0 ) break;
- }
- else if ( reader->file->format.format==bcf )
- {
- if ( (ret=bcf_read1(reader->file, reader->header, reader->buffer[reader->nbuffer+1])) < 0 ) break; // no more lines
- }
- else
- {
- fprintf(stderr,"[%s:%d %s] fixme: not ready for this\n", __FILE__,__LINE__,__FUNCTION__);
- exit(1);
- }
- }
- else if ( reader->tbx_idx )
- {
- if ( (ret=tbx_itr_next(reader->file, reader->tbx_idx, reader->itr, &files->tmps)) < 0 ) break; // no more lines
- vcf_parse1(&files->tmps, reader->header, reader->buffer[reader->nbuffer+1]);
- }
- else
- {
- if ( (ret=bcf_itr_next(reader->file, reader->itr, reader->buffer[reader->nbuffer+1])) < 0 ) break; // no more lines
- bcf_subset_format(reader->header,reader->buffer[reader->nbuffer+1]);
- }
-
- // apply filter
- if ( !reader->nfilter_ids )
- bcf_unpack(reader->buffer[reader->nbuffer+1], BCF_UN_STR);
- else
- {
- bcf_unpack(reader->buffer[reader->nbuffer+1], BCF_UN_STR|BCF_UN_FLT);
- if ( !has_filter(reader, reader->buffer[reader->nbuffer+1]) ) continue;
- }
- reader->nbuffer++;
-
- if ( reader->buffer[reader->nbuffer]->pos != reader->buffer[1]->pos ) break; // the buffer is full
- }
- if ( ret<0 )
- {
- // done for this region
- tbx_itr_destroy(reader->itr);
- reader->itr = NULL;
- }
- if ( files->collapse && reader->nbuffer>=2 && reader->buffer[1]->pos==reader->buffer[2]->pos )
- collapse_buffer(files, reader);
-}
-
-/*
- * _readers_shift_buffer() - removes the first line and all subsequent lines with the same position
- */
-static void _reader_shift_buffer(bcf_sr_t *reader)
-{
- int i;
- for (i=2; i<=reader->nbuffer; i++)
- if ( reader->buffer[i]->pos!=reader->buffer[1]->pos ) break;
- if ( i<=reader->nbuffer )
- {
- // A record with a different position follows, swap it. Because of the reader's logic,
- // only one such line can be present.
- bcf1_t *tmp = reader->buffer[1]; reader->buffer[1] = reader->buffer[i]; reader->buffer[i] = tmp;
- reader->nbuffer = 1;
- }
- else
- reader->nbuffer = 0; // no other line
-}
-
-/*
- * _reader_match_alleles() - from multiple buffered lines selects the one which
- * corresponds best to the template line. The logic is controlled by COLLAPSE_*
- * Returns 0 on success or -1 when no good matching line is found.
- */
-static int _reader_match_alleles(bcf_srs_t *files, bcf_sr_t *reader, bcf1_t *tmpl)
-{
- int i, irec = -1;
-
- // if no template given, use the first available record
- if ( !tmpl )
- irec = 1;
- else
- {
- int tmpl_type = bcf_get_variant_types(tmpl);
- for (i=1; i<=reader->nbuffer; i++)
- {
- bcf1_t *line = reader->buffer[i];
- if ( line->pos != reader->buffer[1]->pos ) break; // done with this reader
-
- // Easiest case: matching by position only
- if ( files->collapse&COLLAPSE_ANY ) { irec=i; break; }
-
- int line_type = bcf_get_variant_types(line);
-
- // No matter what the alleles are, as long as they are both SNPs
- if ( files->collapse&COLLAPSE_SNPS && tmpl_type&VCF_SNP && line_type&VCF_SNP ) { irec=i; break; }
- // ... or indels
- if ( files->collapse&COLLAPSE_INDELS && tmpl_type&VCF_INDEL && line_type&VCF_INDEL ) { irec=i; break; }
-
- // More thorough checking: REFs must match
- if ( tmpl->rlen != line->rlen ) continue; // different length
- if ( strcmp(tmpl->d.allele[0], line->d.allele[0]) ) continue; // the strings do not match
-
- int ial,jal;
- if ( files->collapse==COLLAPSE_NONE )
- {
- // Exact match, all alleles must be identical
- if ( tmpl->n_allele!=line->n_allele ) continue; // different number of alleles, skip
-
- int nmatch = 1; // REF has been already checked
- for (ial=1; ial<tmpl->n_allele; ial++)
- {
- for (jal=1; jal<line->n_allele; jal++)
- if ( !strcmp(tmpl->d.allele[ial], line->d.allele[jal]) ) { nmatch++; break; }
- }
- if ( nmatch==tmpl->n_allele ) { irec=i; break; } // found: exact match
- continue;
- }
-
- if ( line->n_allele==1 && tmpl->n_allele==1 ) { irec=i; break; } // both sites are non-variant
-
- // COLLAPSE_SOME: at least some ALTs must match
- for (ial=1; ial<tmpl->n_allele; ial++)
- {
- for (jal=1; jal<line->n_allele; jal++)
- if ( !strcmp(tmpl->d.allele[ial], line->d.allele[jal]) ) { irec=i; break; }
- if ( irec>=1 ) break;
- }
- if ( irec>=1 ) break;
- }
- if ( irec==-1 ) return -1; // no matching line was found
- }
-
- // Set the selected line (irec) as active: set it to buffer[0], move the remaining lines forward
- // and put the old bcf1_t record at the end.
- bcf1_t *tmp = reader->buffer[0];
- reader->buffer[0] = reader->buffer[irec];
- for (i=irec+1; i<=reader->nbuffer; i++) reader->buffer[i-1] = reader->buffer[i];
- reader->buffer[ reader->nbuffer ] = tmp;
- reader->nbuffer--;
-
- return 0;
-}
-
-int _reader_next_line(bcf_srs_t *files)
-{
- int i, min_pos = INT_MAX;
-
- // Loop until next suitable line is found or all readers have finished
- while ( 1 )
- {
- // Get all readers ready for the next region.
- if ( files->regions && _readers_next_region(files)<0 ) break;
-
- // Fill buffers
- const char *chr = NULL;
- for (i=0; i<files->nreaders; i++)
- {
- _reader_fill_buffer(files, &files->readers[i]);
-
- // Update the minimum coordinate
- if ( !files->readers[i].nbuffer ) continue;
- if ( min_pos > files->readers[i].buffer[1]->pos )
- {
- min_pos = files->readers[i].buffer[1]->pos;
- chr = bcf_seqname(files->readers[i].header, files->readers[i].buffer[1]);
- }
- }
- if ( min_pos==INT_MAX )
- {
- if ( !files->regions ) break;
- continue;
- }
-
- // Skip this position if not present in targets
- if ( files->targets )
- {
- int ret = bcf_sr_regions_overlap(files->targets, chr, min_pos, min_pos);
- if ( (!files->targets_exclude && ret<0) || (files->targets_exclude && !ret) )
- {
- // Remove all lines with this position from the buffer
- for (i=0; i<files->nreaders; i++)
- if ( files->readers[i].nbuffer && files->readers[i].buffer[1]->pos==min_pos )
- _reader_shift_buffer(&files->readers[i]);
- min_pos = INT_MAX;
- continue;
- }
- }
-
- break; // done: min_pos is set
- }
-
- // There can be records with duplicate positions. Set the active line intelligently so that
- // the alleles match.
- int nret = 0; // number of readers sharing the position
- bcf1_t *first = NULL; // record which will be used for allele matching
- for (i=0; i<files->nreaders; i++)
- {
- files->has_line[i] = 0;
-
- // Skip readers with no records at this position
- if ( !files->readers[i].nbuffer || files->readers[i].buffer[1]->pos!=min_pos ) continue;
-
- // Until now buffer[0] of all reader was empty and the lines started at buffer[1].
- // Now lines which are ready to be output will be moved to buffer[0].
- if ( _reader_match_alleles(files, &files->readers[i], first) < 0 ) continue;
- if ( !first ) first = files->readers[i].buffer[0];
-
- nret++;
- files->has_line[i] = 1;
- }
- return nret;
-}
-
-int bcf_sr_next_line(bcf_srs_t *files)
-{
- if ( !files->targets_als )
- return _reader_next_line(files);
-
- while (1)
- {
- int i, ret = _reader_next_line(files);
- if ( !ret ) return ret;
-
- for (i=0; i<files->nreaders; i++)
- if ( files->has_line[i] ) break;
-
- if ( _regions_match_alleles(files->targets, files->targets_als-1, files->readers[i].buffer[0]) ) return ret;
-
- // Check if there are more duplicate lines in the buffers. If not, return this line as if it
- // matched the targets, even if there is a type mismatch
- for (i=0; i<files->nreaders; i++)
- {
- if ( !files->has_line[i] ) continue;
- if ( files->readers[i].nbuffer==0 || files->readers[i].buffer[1]->pos!=files->readers[i].buffer[0]->pos ) continue;
- break;
- }
- if ( i==files->nreaders ) return ret; // no more lines left, output even if target alleles are not of the same type
- }
-}
-
-static void bcf_sr_seek_start(bcf_srs_t *readers)
-{
- bcf_sr_regions_t *reg = readers->regions;
- int i;
- for (i=0; i<reg->nseqs; i++)
- reg->regs[i].creg = -1;
- reg->iseq = 0;
-}
-
-
-int bcf_sr_seek(bcf_srs_t *readers, const char *seq, int pos)
-{
- if ( !seq && !pos )
- {
- // seek to start
- bcf_sr_seek_start(readers);
- return 0;
- }
-
- bcf_sr_regions_overlap(readers->regions, seq, pos, pos);
- int i, nret = 0;
- for (i=0; i<readers->nreaders; i++)
- {
- nret += _reader_seek(&readers->readers[i],seq,pos,MAX_CSI_COOR-1);
- }
- return nret;
-}
-
-int bcf_sr_set_samples(bcf_srs_t *files, const char *fname, int is_file)
-{
- int i, j, nsmpl, free_smpl = 0;
- char **smpl = NULL;
-
- void *exclude = (fname[0]=='^') ? khash_str2int_init() : NULL;
- if ( exclude || strcmp("-",fname) ) // "-" stands for all samples
- {
- smpl = hts_readlist(fname, is_file, &nsmpl);
- if ( !smpl )
- {
- fprintf(stderr,"Could not read the file: \"%s\"\n", fname);
- return 0;
- }
- if ( exclude )
- {
- for (i=0; i<nsmpl; i++)
- khash_str2int_inc(exclude, smpl[i]);
- }
- free_smpl = 1;
- }
- if ( !smpl )
- {
- smpl = files->readers[0].header->samples; // intersection of all samples
- nsmpl = bcf_hdr_nsamples(files->readers[0].header);
- }
-
- files->samples = NULL;
- files->n_smpl = 0;
- for (i=0; i<nsmpl; i++)
- {
- if ( exclude && khash_str2int_has_key(exclude,smpl[i]) ) continue;
-
- int n_isec = 0;
- for (j=0; j<files->nreaders; j++)
- {
- if ( bcf_hdr_id2int(files->readers[j].header, BCF_DT_SAMPLE, smpl[i])<0 ) break;
- n_isec++;
- }
- if ( n_isec!=files->nreaders )
- {
- fprintf(stderr,"Warning: The sample \"%s\" was not found in %s, skipping\n", smpl[i], files->readers[n_isec].fname);
- continue;
- }
-
- files->samples = (char**) realloc(files->samples, (files->n_smpl+1)*sizeof(const char*));
- files->samples[files->n_smpl++] = strdup(smpl[i]);
- }
-
- if ( exclude ) khash_str2int_destroy(exclude);
- if ( free_smpl )
- {
- for (i=0; i<nsmpl; i++) free(smpl[i]);
- free(smpl);
- }
-
- if ( !files->n_smpl )
- {
- if ( files->nreaders>1 )
- fprintf(stderr,"No samples in common.\n");
- return 0;
- }
- for (i=0; i<files->nreaders; i++)
- {
- bcf_sr_t *reader = &files->readers[i];
- reader->samples = (int*) malloc(sizeof(int)*files->n_smpl);
- reader->n_smpl = files->n_smpl;
- for (j=0; j<files->n_smpl; j++)
- reader->samples[j] = bcf_hdr_id2int(reader->header, BCF_DT_SAMPLE, files->samples[j]);
- }
- return 1;
-}
-
-// Add a new region into a list sorted by start,end. On input the coordinates
-// are 1-based, stored 0-based, inclusive.
-static void _regions_add(bcf_sr_regions_t *reg, const char *chr, int start, int end)
-{
- if ( start==-1 && end==-1 )
- {
- start = 0; end = MAX_CSI_COOR-1;
- }
- else
- {
- start--; end--; // store 0-based coordinates
- }
-
- if ( !reg->seq_hash )
- reg->seq_hash = khash_str2int_init();
-
- int iseq;
- if ( khash_str2int_get(reg->seq_hash, chr, &iseq)<0 )
- {
- // the chromosome block does not exist
- iseq = reg->nseqs++;
- reg->seq_names = (char**) realloc(reg->seq_names,sizeof(char*)*reg->nseqs);
- reg->regs = (region_t*) realloc(reg->regs,sizeof(region_t)*reg->nseqs);
- memset(®->regs[reg->nseqs-1],0,sizeof(region_t));
- reg->seq_names[iseq] = strdup(chr);
- reg->regs[iseq].creg = -1;
- khash_str2int_set(reg->seq_hash,reg->seq_names[iseq],iseq);
- }
-
- region_t *creg = ®->regs[iseq];
-
- // the regions may not be sorted on input: binary search
- int i, min = 0, max = creg->nregs - 1;
- while ( min<=max )
- {
- i = (max+min)/2;
- if ( start < creg->regs[i].start ) max = i - 1;
- else if ( start > creg->regs[i].start ) min = i + 1;
- else break;
- }
- if ( min>max || creg->regs[i].start!=start || creg->regs[i].end!=end )
- {
- // no such region, insert a new one just after max
- hts_expand(region1_t,creg->nregs+1,creg->mregs,creg->regs);
- if ( ++max < creg->nregs )
- memmove(&creg->regs[max+1],&creg->regs[max],(creg->nregs - max)*sizeof(region1_t));
- creg->regs[max].start = start;
- creg->regs[max].end = end;
- creg->nregs++;
- }
-}
-
-// File name or a list of genomic locations. If file name, NULL is returned.
-static bcf_sr_regions_t *_regions_init_string(const char *str)
-{
- bcf_sr_regions_t *reg = (bcf_sr_regions_t *) calloc(1, sizeof(bcf_sr_regions_t));
- reg->start = reg->end = -1;
- reg->prev_start = reg->prev_seq = -1;
-
- kstring_t tmp = {0,0,0};
- const char *sp = str, *ep = str;
- int from, to;
- while ( 1 )
- {
- while ( *ep && *ep!=',' && *ep!=':' ) ep++;
- tmp.l = 0;
- kputsn(sp,ep-sp,&tmp);
- if ( *ep==':' )
- {
- sp = ep+1;
- from = strtol(sp,(char**)&ep,10);
- if ( sp==ep )
- {
- fprintf(stderr,"[%s:%d %s] Could not parse the region(s): %s\n", __FILE__,__LINE__,__FUNCTION__,str);
- free(reg); free(tmp.s); return NULL;
- }
- if ( !*ep || *ep==',' )
- {
- _regions_add(reg, tmp.s, from, from);
- sp = ep;
- continue;
- }
- if ( *ep!='-' )
- {
- fprintf(stderr,"[%s:%d %s] Could not parse the region(s): %s\n", __FILE__,__LINE__,__FUNCTION__,str);
- free(reg); free(tmp.s); return NULL;
- }
- ep++;
- sp = ep;
- to = strtol(sp,(char**)&ep,10);
- if ( *ep && *ep!=',' )
- {
- fprintf(stderr,"[%s:%d %s] Could not parse the region(s): %s\n", __FILE__,__LINE__,__FUNCTION__,str);
- free(reg); free(tmp.s); return NULL;
- }
- if ( sp==ep ) to = MAX_CSI_COOR-1;
- _regions_add(reg, tmp.s, from, to);
- if ( !*ep ) break;
- sp = ep;
- }
- else
- {
- if ( tmp.l ) _regions_add(reg, tmp.s, -1, -1);
- if ( !*ep ) break;
- sp = ++ep;
- }
- }
- free(tmp.s);
- return reg;
-}
-
-// ichr,ifrom,ito are 0-based;
-// returns -1 on error, 0 if the line is a comment line, 1 on success
-static int _regions_parse_line(char *line, int ichr,int ifrom,int ito, char **chr,char **chr_end,int *from,int *to)
-{
- *chr_end = NULL;
-
- if ( line[0]=='#' ) return 0;
-
- int k,l; // index of the start and end column of the tab-delimited file
- if ( ifrom <= ito )
- k = ifrom, l = ito;
- else
- l = ifrom, k = ito;
-
- int i;
- char *se = line, *ss = NULL; // start and end
- char *tmp;
- for (i=0; i<=k && *se; i++)
- {
- ss = i==0 ? se++ : ++se;
- while (*se && *se!='\t') se++;
- }
- if ( i<=k ) return -1;
- if ( k==l )
- {
- *from = *to = strtol(ss, &tmp, 10);
- if ( tmp==ss ) return -1;
- }
- else
- {
- if ( k==ifrom )
- *from = strtol(ss, &tmp, 10);
- else
- *to = strtol(ss, &tmp, 10);
- if ( ss==tmp ) return -1;
-
- for (i=k; i<l && *se; i++)
- {
- ss = ++se;
- while (*se && *se!='\t') se++;
- }
- if ( i<l ) return -1;
- if ( k==ifrom )
- *to = strtol(ss, &tmp, 10);
- else
- *from = strtol(ss, &tmp, 10);
- if ( ss==tmp ) return -1;
- }
-
- ss = se = line;
- for (i=0; i<=ichr && *se; i++)
- {
- if ( i>0 ) ss = ++se;
- while (*se && *se!='\t') se++;
- }
- if ( i<=ichr ) return -1;
- *chr_end = se;
- *chr = ss;
- return 1;
-}
-
-bcf_sr_regions_t *bcf_sr_regions_init(const char *regions, int is_file, int ichr, int ifrom, int ito)
-{
- bcf_sr_regions_t *reg;
- if ( !is_file ) return _regions_init_string(regions);
-
- reg = (bcf_sr_regions_t *) calloc(1, sizeof(bcf_sr_regions_t));
- reg->start = reg->end = -1;
- reg->prev_start = reg->prev_seq = -1;
-
- reg->file = hts_open(regions, "rb");
- if ( !reg->file )
- {
- fprintf(stderr,"[%s:%d %s] Could not open file: %s\n", __FILE__,__LINE__,__FUNCTION__,regions);
- free(reg);
- return NULL;
- }
-
- reg->tbx = tbx_index_load(regions);
- if ( !reg->tbx )
- {
- int len = strlen(regions);
- int is_bed = strcasecmp(".bed",regions+len-4) ? 0 : 1;
- if ( !is_bed && !strcasecmp(".bed.gz",regions+len-7) ) is_bed = 1;
-
- if ( reg->file->format.format==vcf ) ito = 1;
-
- // read the whole file, tabix index is not present
- while ( hts_getline(reg->file, KS_SEP_LINE, ®->line) > 0 )
- {
- char *chr, *chr_end;
- int from, to, ret;
- ret = _regions_parse_line(reg->line.s, ichr,ifrom,abs(ito), &chr,&chr_end,&from,&to);
- if ( ret < 0 )
- {
- if ( ito<0 )
- ret = _regions_parse_line(reg->line.s, ichr,ifrom,ifrom, &chr,&chr_end,&from,&to);
- if ( ret<0 )
- {
- fprintf(stderr,"[%s:%d] Could not parse the file %s, using the columns %d,%d[,%d]\n", __FILE__,__LINE__,regions,ichr+1,ifrom+1,ito+1);
- hts_close(reg->file); reg->file = NULL; free(reg);
- return NULL;
- }
- }
- if ( !ret ) continue;
- if ( is_bed ) from++;
- *chr_end = 0;
- _regions_add(reg, chr, from, to);
- *chr_end = '\t';
- }
- hts_close(reg->file); reg->file = NULL;
- if ( !reg->nseqs ) { free(reg); return NULL; }
- return reg;
- }
-
- reg->seq_names = (char**) tbx_seqnames(reg->tbx, ®->nseqs);
- if ( !reg->seq_hash )
- reg->seq_hash = khash_str2int_init();
- int i;
- for (i=0; i<reg->nseqs; i++)
- {
- khash_str2int_set(reg->seq_hash,reg->seq_names[i],i);
- }
- reg->fname = strdup(regions);
- reg->is_bin = 1;
- return reg;
-}
-
-void bcf_sr_regions_destroy(bcf_sr_regions_t *reg)
-{
- int i;
- free(reg->fname);
- if ( reg->itr ) tbx_itr_destroy(reg->itr);
- if ( reg->tbx ) tbx_destroy(reg->tbx);
- if ( reg->file ) hts_close(reg->file);
- if ( reg->als ) free(reg->als);
- if ( reg->als_str.s ) free(reg->als_str.s);
- free(reg->line.s);
- if ( reg->regs )
- {
- // free only in-memory names, tbx names are const
- for (i=0; i<reg->nseqs; i++)
- {
- free(reg->seq_names[i]);
- free(reg->regs[i].regs);
- }
- }
- free(reg->regs);
- free(reg->seq_names);
- khash_str2int_destroy(reg->seq_hash);
- free(reg);
-}
-
-int bcf_sr_regions_seek(bcf_sr_regions_t *reg, const char *seq)
-{
- reg->iseq = reg->start = reg->end = -1;
- if ( khash_str2int_get(reg->seq_hash, seq, ®->iseq) < 0 ) return -1; // sequence seq not in regions
-
- // using in-memory regions
- if ( reg->regs )
- {
- reg->regs[reg->iseq].creg = -1;
- return 0;
- }
-
- // reading regions from tabix
- if ( reg->itr ) tbx_itr_destroy(reg->itr);
- reg->itr = tbx_itr_querys(reg->tbx, seq);
- if ( reg->itr ) return 0;
-
- return -1;
-}
-
-int bcf_sr_regions_next(bcf_sr_regions_t *reg)
-{
- if ( reg->iseq<0 ) return -1;
- reg->start = reg->end = -1;
- reg->nals = 0;
-
- // using in-memory regions
- if ( reg->regs )
- {
- while ( reg->iseq < reg->nseqs )
- {
- reg->regs[reg->iseq].creg++;
- if ( reg->regs[reg->iseq].creg < reg->regs[reg->iseq].nregs ) break;
- reg->iseq++;
- }
- if ( reg->iseq >= reg->nseqs ) { reg->iseq = -1; return -1; } // no more regions left
- region1_t *creg = ®->regs[reg->iseq].regs[reg->regs[reg->iseq].creg];
- reg->start = creg->start;
- reg->end = creg->end;
- return 0;
- }
-
- // reading from tabix
- char *chr, *chr_end;
- int ichr = 0, ifrom = 1, ito = 2, is_bed = 0, from, to;
- if ( reg->tbx )
- {
- ichr = reg->tbx->conf.sc-1;
- ifrom = reg->tbx->conf.bc-1;
- ito = reg->tbx->conf.ec-1;
- if ( ito<0 ) ito = ifrom;
- is_bed = reg->tbx->conf.preset==TBX_UCSC ? 1 : 0;
- }
-
- int ret = 0;
- while ( !ret )
- {
- if ( reg->itr )
- {
- // tabix index present, reading a chromosome block
- ret = tbx_itr_next(reg->file, reg->tbx, reg->itr, ®->line);
- if ( ret<0 ) { reg->iseq = -1; return -1; }
- }
- else
- {
- if ( reg->is_bin )
- {
- // Waited for seek which never came. Reopen in text mode and stream
- // through the regions, otherwise hts_getline would fail
- hts_close(reg->file);
- reg->file = hts_open(reg->fname, "r");
- if ( !reg->file )
- {
- fprintf(stderr,"[%s:%d %s] Could not open file: %s\n", __FILE__,__LINE__,__FUNCTION__,reg->fname);
- reg->file = NULL;
- bcf_sr_regions_destroy(reg);
- return -1;
- }
- reg->is_bin = 0;
- }
-
- // tabix index absent, reading the whole file
- ret = hts_getline(reg->file, KS_SEP_LINE, ®->line);
- if ( ret<0 ) { reg->iseq = -1; return -1; }
- }
- ret = _regions_parse_line(reg->line.s, ichr,ifrom,ito, &chr,&chr_end,&from,&to);
- if ( ret<0 )
- {
- fprintf(stderr,"[%s:%d] Could not parse the file %s, using the columns %d,%d,%d\n", __FILE__,__LINE__,reg->fname,ichr+1,ifrom+1,ito+1);
- return -1;
- }
- }
- if ( is_bed ) from++;
-
- *chr_end = 0;
- if ( khash_str2int_get(reg->seq_hash, chr, ®->iseq)<0 )
- {
- fprintf(stderr,"Broken tabix index? The sequence \"%s\" not in dictionary [%s]\n", chr,reg->line.s);
- exit(1);
- }
- *chr_end = '\t';
-
- reg->start = from - 1;
- reg->end = to - 1;
- return 0;
-}
-
-static int _regions_match_alleles(bcf_sr_regions_t *reg, int als_idx, bcf1_t *rec)
-{
- int i = 0, max_len = 0;
- if ( !reg->nals )
- {
- char *ss = reg->line.s;
- while ( i<als_idx && *ss )
- {
- if ( *ss=='\t' ) i++;
- ss++;
- }
- char *se = ss;
- reg->nals = 1;
- while ( *se && *se!='\t' )
- {
- if ( *se==',' ) reg->nals++;
- se++;
- }
- ks_resize(®->als_str, se-ss+1+reg->nals);
- reg->als_str.l = 0;
- hts_expand(char*,reg->nals,reg->mals,reg->als);
- reg->nals = 0;
-
- se = ss;
- while ( *(++se) )
- {
- if ( *se=='\t' ) break;
- if ( *se!=',' ) continue;
- reg->als[reg->nals] = ®->als_str.s[reg->als_str.l];
- kputsn(ss,se-ss,®->als_str);
- if ( ®->als_str.s[reg->als_str.l] - reg->als[reg->nals] > max_len ) max_len = ®->als_str.s[reg->als_str.l] - reg->als[reg->nals];
- reg->als_str.l++;
- reg->nals++;
- ss = ++se;
- }
- reg->als[reg->nals] = ®->als_str.s[reg->als_str.l];
- kputsn(ss,se-ss,®->als_str);
- if ( ®->als_str.s[reg->als_str.l] - reg->als[reg->nals] > max_len ) max_len = ®->als_str.s[reg->als_str.l] - reg->als[reg->nals];
- reg->nals++;
- reg->als_type = max_len > 1 ? VCF_INDEL : VCF_SNP; // this is a simplified check, see vcf.c:bcf_set_variant_types
- }
- int type = bcf_get_variant_types(rec);
- if ( reg->als_type & VCF_INDEL )
- return type & VCF_INDEL ? 1 : 0;
- return !(type & VCF_INDEL) ? 1 : 0;
-}
-
-int bcf_sr_regions_overlap(bcf_sr_regions_t *reg, const char *seq, int start, int end)
-{
- int iseq;
- if ( khash_str2int_get(reg->seq_hash, seq, &iseq)<0 ) return -1; // no such sequence
-
- if ( reg->prev_seq==-1 || iseq!=reg->prev_seq || reg->prev_start > start ) // new chromosome or after a seek
- {
- // flush regions left on previous chromosome
- if ( reg->missed_reg_handler && reg->prev_seq!=-1 && reg->iseq!=-1 )
- bcf_sr_regions_flush(reg);
-
- bcf_sr_regions_seek(reg, seq);
- reg->start = reg->end = -1;
- }
- if ( reg->prev_seq==iseq && reg->iseq!=iseq ) return -2; // no more regions on this chromosome
- reg->prev_seq = reg->iseq;
- reg->prev_start = start;
-
- while ( iseq==reg->iseq && reg->end < start )
- {
- if ( bcf_sr_regions_next(reg) < 0 ) return -2; // no more regions left
- if ( reg->iseq != iseq ) return -1; // does not overlap any regions
- if ( reg->missed_reg_handler && reg->end < start ) reg->missed_reg_handler(reg, reg->missed_reg_data);
- }
- if ( reg->start <= end ) return 0; // region overlap
- return -1; // no overlap
-}
-
-void bcf_sr_regions_flush(bcf_sr_regions_t *reg)
-{
- if ( !reg->missed_reg_handler || reg->prev_seq==-1 ) return;
- while ( !bcf_sr_regions_next(reg) ) reg->missed_reg_handler(reg, reg->missed_reg_data);
- return;
-}
-
diff --git a/htslib/tabix.1 b/htslib/tabix.1
deleted file mode 100644
index 55c0ebb..0000000
--- a/htslib/tabix.1
+++ /dev/null
@@ -1,180 +0,0 @@
-.TH tabix 1 "3 February 2015" "htslib-1.2.1" "Bioinformatics tools"
-.SH NAME
-.PP
-bgzip \- Block compression/decompression utility
-.PP
-tabix \- Generic indexer for TAB-delimited genome position files
-.\"
-.\" Copyright (C) 2009-2011 Broad Institute.
-.\"
-.\" Author: Heng Li <lh3 at sanger.ac.uk>
-.\"
-.\" 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.
-.\"
-.SH SYNOPSIS
-.PP
-.B bgzip
-.RB [ -cdhB ]
-.RB [ -b
-.IR virtualOffset ]
-.RB [ -s
-.IR size ]
-.RI [ file ]
-.PP
-.B tabix
-.RB [ -0lf ]
-.RB [ -p
-gff|bed|sam|vcf]
-.RB [ -s
-.IR seqCol ]
-.RB [ -b
-.IR begCol ]
-.RB [ -e
-.IR endCol ]
-.RB [ -S
-.IR lineSkip ]
-.RB [ -c
-.IR metaChar ]
-.I in.tab.bgz
-.RI [ "region1 " [ "region2 " [ ... "]]]"
-
-.SH DESCRIPTION
-.PP
-Tabix indexes a TAB-delimited genome position file
-.I in.tab.bgz
-and creates an index file (
-.I in.tab.bgz.tbi
-or
-.I in.tab.bgz.csi
-) when
-.I region
-is absent from the command-line. The input data file must be position
-sorted and compressed by
-.B bgzip
-which has a
-.BR gzip (1)
-like interface. After indexing, tabix is able to quickly retrieve data
-lines overlapping
-.I regions
-specified in the format "chr:beginPos-endPos". Fast data retrieval also
-works over network if URI is given as a file name and in this case the
-index file will be downloaded if it is not present locally.
-
-.SH INDEXING OPTIONS
-.TP 10
-.B -0, --zero-based
-Specify that the position in the data file is 0-based (e.g. UCSC files)
-rather than 1-based.
-.TP
-.BI "-b, --begin " INT
-Column of start chromosomal position. [4]
-.TP
-.BI "-c, --comment " CHAR
-Skip lines started with character CHAR. [#]
-.TP
-.BI "-C, --csi"
-Skip lines started with character CHAR. [#]
-.TP
-.BI "-e, --end " INT
-Column of end chromosomal position. The end column can be the same as the
-start column. [5]
-.TP
-.B "-f, --force "
-Force to overwrite the index file if it is present.
-.TP
-.BI "-m, --min-shift" INT
-set minimal interval size for CSI indices to 2^INT [14]
-.TP
-.BI "-p, --preset " STR
-Input format for indexing. Valid values are: gff, bed, sam, vcf.
-This option should not be applied together with any of
-.BR -s ", " -b ", " -e ", " -c " and " -0 ;
-it is not used for data retrieval because this setting is stored in
-the index file. [gff]
-.TP
-.BI "-s, --sequence " INT
-Column of sequence name. Option
-.BR -s ", " -b ", " -e ", " -S ", " -c " and " -0
-are all stored in the index file and thus not used in data retrieval. [1]
-.TP
-.BI "-S, --skip-lines " INT
-Skip first INT lines in the data file. [0]
-
-.SH QUERYING AND OTHER OPTIONS
-.TP
-.B "-h, --print-header "
-Print also the header/meta lines.
-.TP
-.B "-H, --only-header "
-Print only the header/meta lines.
-.TP
-.B "-i, --file-info "
-Print file format info.
-.TP
-.B "-l, --list-chroms "
-List the sequence names stored in the index file.
-.TP
-.B "-r, --reheader " FILE
-Replace the header with the content of FILE
-.TP
-.B "-R, --regions " FILE
-Restrict to regions listed in the FILE. The FILE can be BED file (requires .bed, .bed.gz, .bed.bgz
-file name extension) or a TAB-delimited file with CHROM, POS, and, optionally,
-POS_TO columns, where positions are 1-based and inclusive. When this option is in use, the input
-file may not be sorted.
-regions.
-.TP
-.B "-T, --targets" FILE
-Similar to
-.B -R
-but the entire input will be read sequentially and regions not listed in FILE will be skipped.
-.PP
-.SH EXAMPLE
-(grep ^"#" in.gff; grep -v ^"#" in.gff | sort -k1,1 -k4,4n) | bgzip > sorted.gff.gz;
-
-tabix -p gff sorted.gff.gz;
-
-tabix sorted.gff.gz chr1:10,000,000-20,000,000;
-
-.SH NOTES
-It is straightforward to achieve overlap queries using the standard
-B-tree index (with or without binning) implemented in all SQL databases,
-or the R-tree index in PostgreSQL and Oracle. But there are still many
-reasons to use tabix. Firstly, tabix directly works with a lot of widely
-used TAB-delimited formats such as GFF/GTF and BED. We do not need to
-design database schema or specialized binary formats. Data do not need
-to be duplicated in different formats, either. Secondly, tabix works on
-compressed data files while most SQL databases do not. The GenCode
-annotation GTF can be compressed down to 4%. Thirdly, tabix is
-fast. The same indexing algorithm is known to work efficiently for an
-alignment with a few billion short reads. SQL databases probably cannot
-easily handle data at this scale. Last but not the least, tabix supports
-remote data retrieval. One can put the data file and the index at an FTP
-or HTTP server, and other users or even web services will be able to get
-a slice without downloading the entire file.
-
-.SH AUTHOR
-.PP
-Tabix was written by Heng Li. The BGZF library was originally
-implemented by Bob Handsaker and modified by Heng Li for remote file
-access and in-memory caching.
-
-.SH SEE ALSO
-.PP
-.BR samtools (1)
diff --git a/htslib/tabix.c b/htslib/tabix.c
deleted file mode 100644
index 2f6cfea..0000000
--- a/htslib/tabix.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/* tabix.c -- Generic indexer for TAB-delimited genome position files.
-
- Copyright (C) 2009-2011 Broad Institute.
- Copyright (C) 2010-2012, 2014 Genome Research Ltd.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <getopt.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include "htslib/tbx.h"
-#include "htslib/sam.h"
-#include "htslib/vcf.h"
-#include "htslib/kseq.h"
-#include "htslib/bgzf.h"
-#include "htslib/hts.h"
-#include "htslib/regidx.h"
-
-typedef struct
-{
- char *regions_fname, *targets_fname;
- int print_header, header_only;
-}
-args_t;
-
-static void error(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- vfprintf(stderr, format, ap);
- va_end(ap);
- exit(EXIT_FAILURE);
-}
-
-#define IS_GFF (1<<0)
-#define IS_BED (1<<1)
-#define IS_SAM (1<<2)
-#define IS_VCF (1<<3)
-#define IS_BCF (1<<4)
-#define IS_BAM (1<<5)
-#define IS_CRAM (1<<6)
-#define IS_TXT (IS_GFF|IS_BED|IS_SAM|IS_VCF)
-
-int file_type(const char *fname)
-{
- int l = strlen(fname);
- int strcasecmp(const char *s1, const char *s2);
- if (l>=7 && strcasecmp(fname+l-7, ".gff.gz") == 0) return IS_GFF;
- else if (l>=7 && strcasecmp(fname+l-7, ".bed.gz") == 0) return IS_BED;
- else if (l>=7 && strcasecmp(fname+l-7, ".sam.gz") == 0) return IS_SAM;
- else if (l>=7 && strcasecmp(fname+l-7, ".vcf.gz") == 0) return IS_VCF;
- else if (l>=4 && strcasecmp(fname+l-4, ".bcf") == 0) return IS_BCF;
- else if (l>=4 && strcasecmp(fname+l-4, ".bam") == 0) return IS_BAM;
- else if (l>=4 && strcasecmp(fname+l-5, ".cram") == 0) return IS_CRAM;
-
- htsFile *fp = hts_open(fname,"r");
- enum htsExactFormat format = fp->format.format;
- hts_close(fp);
- if ( format == bcf ) return IS_BCF;
- if ( format == bam ) return IS_BAM;
- if ( format == cram ) return IS_CRAM;
- if ( format == vcf ) return IS_VCF;
-
- return 0;
-}
-
-static char **parse_regions(char *regions_fname, char **argv, int argc, int *nregs)
-{
- kstring_t str = {0,0,0};
- int iseq = 0, ireg = 0;
- char **regs = NULL;
- *nregs = argc;
-
- if ( regions_fname )
- {
- // improve me: this is a too heavy machinery for parsing regions...
-
- regidx_t *idx = regidx_init(regions_fname, NULL, NULL, 0, NULL);
- if ( !idx ) error("Could not read %s\n", regions_fname);
-
- (*nregs) += regidx_nregs(idx);
- regs = (char**) malloc(sizeof(char*)*(*nregs));
-
- int nseq;
- char **seqs = regidx_seq_names(idx, &nseq);
- for (iseq=0; iseq<nseq; iseq++)
- {
- regitr_t itr;
- regidx_overlap(idx, seqs[iseq], 0, UINT32_MAX, &itr);
- while ( itr.i < itr.n )
- {
- str.l = 0;
- ksprintf(&str, "%s:%d-%d", seqs[iseq], REGITR_START(itr)+1, REGITR_END(itr)+1);
- regs[ireg++] = strdup(str.s);
- itr.i++;
- }
- }
- regidx_destroy(idx);
- }
- free(str.s);
-
- if ( !ireg )
- {
- if ( argc )
- regs = (char**) malloc(sizeof(char*)*argc);
- else
- {
- regs = (char**) malloc(sizeof(char*));
- regs[0] = strdup(".");
- *nregs = 1;
- }
- }
-
- for (iseq=0; iseq<argc; iseq++) regs[ireg++] = strdup(argv[iseq]);
- return regs;
-}
-static int query_regions(args_t *args, char *fname, char **regs, int nregs)
-{
- int i;
- htsFile *fp = hts_open(fname,"r");
- if ( !fp ) error("Could not read %s\n", fname);
- enum htsExactFormat format = hts_get_format(fp)->format;
-
- regidx_t *reg_idx = NULL;
- if ( args->targets_fname )
- {
- reg_idx = regidx_init(args->targets_fname, NULL, NULL, 0, NULL);
- if ( !reg_idx ) error("Could not read %s\n", args->targets_fname);
- }
-
- if ( format == bcf )
- {
- htsFile *out = hts_open("-","w");
- if ( !out ) error("Could not open stdout\n", fname);
- hts_idx_t *idx = bcf_index_load(fname);
- if ( !idx ) error("Could not load .csi index of %s\n", fname);
- bcf_hdr_t *hdr = bcf_hdr_read(fp);
- if ( !hdr ) error("Could not read the header: %s\n", fname);
- if ( args->print_header )
- bcf_hdr_write(out,hdr);
- if ( !args->header_only )
- {
- bcf1_t *rec = bcf_init();
- for (i=0; i<nregs; i++)
- {
- hts_itr_t *itr = bcf_itr_querys(idx,hdr,regs[i]);
- while ( bcf_itr_next(fp, itr, rec) >=0 )
- {
- if ( reg_idx && !regidx_overlap(reg_idx, bcf_seqname(hdr,rec),rec->pos,rec->pos+rec->rlen-1, NULL) ) continue;
- bcf_write(out,hdr,rec);
- }
- tbx_itr_destroy(itr);
- }
- bcf_destroy(rec);
- }
- if ( hts_close(out) ) error("hts_close returned non-zero status for stdout\n");
- bcf_hdr_destroy(hdr);
- hts_idx_destroy(idx);
- }
- else if ( format==vcf || format==sam || format==unknown_format )
- {
- tbx_t *tbx = tbx_index_load(fname);
- if ( !tbx ) error("Could not load .tbi/.csi index of %s\n", fname);
- kstring_t str = {0,0,0};
- if ( args->print_header )
- {
- while ( hts_getline(fp, KS_SEP_LINE, &str) >= 0 )
- {
- if ( !str.l || str.s[0]!=tbx->conf.meta_char ) break;
- puts(str.s);
- }
- }
- if ( !args->header_only )
- {
- int nseq;
- const char **seq = NULL;
- if ( reg_idx ) seq = tbx_seqnames(tbx, &nseq);
- for (i=0; i<nregs; i++)
- {
- hts_itr_t *itr = tbx_itr_querys(tbx, regs[i]);
- if ( !itr ) continue;
- while (tbx_itr_next(fp, tbx, itr, &str) >= 0)
- {
- if ( reg_idx && !regidx_overlap(reg_idx,seq[itr->curr_tid],itr->curr_beg,itr->curr_end, NULL) ) continue;
- puts(str.s);
- }
- tbx_itr_destroy(itr);
- }
- free(seq);
- }
- free(str.s);
- tbx_destroy(tbx);
- }
- else if ( format==bam )
- error("Please use \"samtools view\" for querying BAM files.\n");
-
- if ( reg_idx ) regidx_destroy(reg_idx);
- if ( hts_close(fp) ) error("hts_close returned non-zero status: %s\n", fname);
-
- for (i=0; i<nregs; i++) free(regs[i]);
- free(regs);
- return 0;
-}
-static int query_chroms(char *fname)
-{
- const char **seq;
- int i, nseq, ftype = file_type(fname);
- if ( ftype & IS_TXT || !ftype )
- {
- tbx_t *tbx = tbx_index_load(fname);
- if ( !tbx ) error("Could not load .tbi index of %s\n", fname);
- seq = tbx_seqnames(tbx, &nseq);
- for (i=0; i<nseq; i++)
- printf("%s\n", seq[i]);
- free(seq);
- tbx_destroy(tbx);
- }
- else if ( ftype==IS_BCF )
- {
- htsFile *fp = hts_open(fname,"r");
- if ( !fp ) error("Could not read %s\n", fname);
- bcf_hdr_t *hdr = bcf_hdr_read(fp);
- if ( !hdr ) error("Could not read the header: %s\n", fname);
- hts_close(fp);
- hts_idx_t *idx = bcf_index_load(fname);
- if ( !idx ) error("Could not load .csi index of %s\n", fname);
- seq = bcf_index_seqnames(idx, hdr, &nseq);
- for (i=0; i<nseq; i++)
- printf("%s\n", seq[i]);
- free(seq);
- bcf_hdr_destroy(hdr);
- hts_idx_destroy(idx);
- }
- else if ( ftype==IS_BAM ) // todo: BAM
- error("BAM: todo\n");
- return 0;
-}
-
-int reheader_file(const char *fname, const char *header, int ftype, tbx_conf_t *conf)
-{
- if ( ftype & IS_TXT || !ftype )
- {
- BGZF *fp = bgzf_open(fname,"r");
- if ( !fp || bgzf_read_block(fp) != 0 || !fp->block_length ) return -1;
-
- char *buffer = fp->uncompressed_block;
- int skip_until = 0;
-
- // Skip the header: find out the position of the data block
- if ( buffer[0]==conf->meta_char )
- {
- skip_until = 1;
- while (1)
- {
- if ( buffer[skip_until]=='\n' )
- {
- skip_until++;
- if ( skip_until>=fp->block_length )
- {
- if ( bgzf_read_block(fp) != 0 || !fp->block_length ) error("FIXME: No body in the file: %s\n", fname);
- skip_until = 0;
- }
- // The header has finished
- if ( buffer[skip_until]!=conf->meta_char ) break;
- }
- skip_until++;
- if ( skip_until>=fp->block_length )
- {
- if (bgzf_read_block(fp) != 0 || !fp->block_length) error("FIXME: No body in the file: %s\n", fname);
- skip_until = 0;
- }
- }
- }
-
- // Output the new header
- FILE *hdr = fopen(header,"r");
- if ( !hdr ) error("%s: %s", header,strerror(errno));
- int page_size = getpagesize();
- char *buf = valloc(page_size);
- BGZF *bgzf_out = bgzf_dopen(fileno(stdout), "w");
- ssize_t nread;
- while ( (nread=fread(buf,1,page_size-1,hdr))>0 )
- {
- if ( nread<page_size-1 && buf[nread-1]!='\n' ) buf[nread++] = '\n';
- if (bgzf_write(bgzf_out, buf, nread) < 0) error("Error: %d\n",bgzf_out->errcode);
- }
- if ( fclose(hdr) ) error("close failed: %s\n", header);
-
- // Output all remainig data read with the header block
- if ( fp->block_length - skip_until > 0 )
- {
- if (bgzf_write(bgzf_out, buffer+skip_until, fp->block_length-skip_until) < 0) error("Error: %d\n",fp->errcode);
- }
- if (bgzf_flush(bgzf_out) < 0) error("Error: %d\n",bgzf_out->errcode);
-
- while (1)
- {
- nread = bgzf_raw_read(fp, buf, page_size);
- if ( nread<=0 ) break;
-
- int count = bgzf_raw_write(bgzf_out, buf, nread);
- if (count != nread) error("Write failed, wrote %d instead of %d bytes.\n", count,(int)nread);
- }
- if (bgzf_close(bgzf_out) < 0) error("Error: %d\n",bgzf_out->errcode);
- if (bgzf_close(fp) < 0) error("Error: %d\n",fp->errcode);
- }
- else
- error("todo: reheader BCF, BAM\n"); // BCF is difficult, records contain pointers to the header.
- return 0;
-}
-
-static int usage(void)
-{
- fprintf(stderr, "\n");
- fprintf(stderr, "Version: %s\n", hts_version());
- fprintf(stderr, "Usage: tabix [OPTIONS] [FILE] [REGION [...]]\n");
- fprintf(stderr, "\n");
- fprintf(stderr, "Indexing Options:\n");
- fprintf(stderr, " -0, --zero-based coordinates are zero-based\n");
- fprintf(stderr, " -b, --begin INT column number for region start [4]\n");
- fprintf(stderr, " -c, --comment CHAR skip comment lines starting with CHAR [null]\n");
- fprintf(stderr, " -C, --csi generate CSI index for VCF (default is TBI)\n");
- fprintf(stderr, " -e, --end INT column number for region end (if no end, set INT to -b) [5]\n");
- fprintf(stderr, " -f, --force overwrite existing index without asking\n");
- fprintf(stderr, " -m, --min-shift INT set minimal interval size for CSI indices to 2^INT [14]\n");
- fprintf(stderr, " -p, --preset STR gff, bed, sam, vcf\n");
- fprintf(stderr, " -s, --sequence INT column number for sequence names (suppressed by -p) [1]\n");
- fprintf(stderr, " -S, --skip-lines INT skip first INT lines [0]\n");
- fprintf(stderr, "\n");
- fprintf(stderr, "Querying and other options:\n");
- fprintf(stderr, " -h, --print-header print also the header lines\n");
- fprintf(stderr, " -H, --only-header print only the header lines\n");
- fprintf(stderr, " -l, --list-chroms list chromosome names\n");
- fprintf(stderr, " -r, --reheader FILE replace the header with the content of FILE\n");
- fprintf(stderr, " -R, --regions FILE restrict to regions listed in the file\n");
- fprintf(stderr, " -T, --targets FILE similar to -R but streams rather than index-jumps\n");
- fprintf(stderr, "\n");
- return 1;
-}
-
-int main(int argc, char *argv[])
-{
- int c, min_shift = 0, is_force = 0, list_chroms = 0, do_csi = 0;
- tbx_conf_t conf = tbx_conf_gff, *conf_ptr = NULL;
- char *reheader = NULL;
- args_t args;
- memset(&args,0,sizeof(args_t));
-
- static struct option loptions[] =
- {
- {"help",0,0,'h'},
- {"regions",1,0,'R'},
- {"targets",1,0,'T'},
- {"csi",0,0,'C'},
- {"zero-based",0,0,'0'},
- {"print-header",0,0,'h'},
- {"only-header",0,0,'H'},
- {"begin",1,0,'b'},
- {"comment",1,0,'c'},
- {"end",1,0,'e'},
- {"force",0,0,'f'},
- {"preset",1,0,'p'},
- {"sequence",1,0,'s'},
- {"skip-lines",1,0,'S'},
- {"list-chroms",0,0,'l'},
- {"reheader",1,0,'r'},
- {0,0,0,0}
- };
-
- while ((c = getopt_long(argc, argv, "hH?0b:c:e:fm:p:s:S:lr:CR:T:", loptions,NULL)) >= 0)
- {
- switch (c)
- {
- case 'R': args.regions_fname = optarg; break;
- case 'T': args.targets_fname = optarg; break;
- case 'C': do_csi = 1; break;
- case 'r': reheader = optarg; break;
- case 'h': args.print_header = 1; break;
- case 'H': args.header_only = 1; break;
- case 'l': list_chroms = 1; break;
- case '0': conf.preset |= TBX_UCSC; break;
- case 'b': conf.bc = atoi(optarg); break;
- case 'e': conf.ec = atoi(optarg); break;
- case 'c': conf.meta_char = *optarg; break;
- case 'f': is_force = 1; break;
- case 'm': min_shift = atoi(optarg); break;
- case 'p':
- if (strcmp(optarg, "gff") == 0) conf_ptr = &tbx_conf_gff;
- else if (strcmp(optarg, "bed") == 0) conf_ptr = &tbx_conf_bed;
- else if (strcmp(optarg, "sam") == 0) conf_ptr = &tbx_conf_sam;
- else if (strcmp(optarg, "vcf") == 0) conf_ptr = &tbx_conf_vcf;
- else if (strcmp(optarg, "bcf") == 0) ; // bcf is autodetected, preset is not needed
- else if (strcmp(optarg, "bam") == 0) ; // same as bcf
- else error("The preset string not recognised: '%s'\n", optarg);
- break;
- case 's': conf.sc = atoi(optarg); break;
- case 'S': conf.line_skip = atoi(optarg); break;
- default: return usage();
- }
- }
-
- if ( optind==argc ) return usage();
-
- if ( list_chroms )
- return query_chroms(argv[optind]);
-
- if ( argc > optind+1 || args.header_only || args.regions_fname || args.targets_fname )
- {
- int nregs = 0;
- char **regs = NULL;
- if ( !args.header_only )
- regs = parse_regions(args.regions_fname, argv+optind+1, argc-optind-1, &nregs);
- return query_regions(&args, argv[optind], regs, nregs);
- }
-
- char *fname = argv[optind];
- int ftype = file_type(fname);
- if ( !conf_ptr ) // no preset given
- {
- if ( ftype==IS_GFF ) conf_ptr = &tbx_conf_gff;
- else if ( ftype==IS_BED ) conf_ptr = &tbx_conf_bed;
- else if ( ftype==IS_SAM ) conf_ptr = &tbx_conf_sam;
- else if ( ftype==IS_VCF )
- {
- conf_ptr = &tbx_conf_vcf;
- if ( !min_shift && do_csi ) min_shift = 14;
- }
- else if ( ftype==IS_BCF )
- {
- if ( !min_shift ) min_shift = 14;
- }
- else if ( ftype==IS_BAM )
- {
- if ( !min_shift ) min_shift = 14;
- }
- }
- if ( do_csi )
- {
- if ( !min_shift ) min_shift = 14;
- min_shift *= do_csi; // positive for CSIv2, negative for CSIv1
- }
- if ( min_shift!=0 && !do_csi ) do_csi = 1;
-
- if ( reheader )
- return reheader_file(fname, reheader, ftype, conf_ptr);
-
- if ( conf_ptr )
- conf = *conf_ptr;
-
- char *suffix = ".tbi";
- if ( do_csi ) suffix = ".csi";
- else if ( ftype==IS_BAM ) suffix = ".bai";
- else if ( ftype==IS_CRAM ) suffix = ".crai";
-
- char *idx_fname = calloc(strlen(fname) + 5, 1);
- strcat(strcpy(idx_fname, fname), suffix);
-
- struct stat stat_tbi, stat_file;
- if ( !is_force && stat(idx_fname, &stat_tbi)==0 )
- {
- // Before complaining about existing index, check if the VCF file isn't
- // newer. This is a common source of errors, people tend not to notice
- // that tabix failed
- stat(fname, &stat_file);
- if ( stat_file.st_mtime <= stat_tbi.st_mtime )
- error("[tabix] the index file exists. Please use '-f' to overwrite.\n");
- }
- free(idx_fname);
-
- if ( ftype==IS_CRAM )
- {
- if ( bam_index_build(fname, min_shift)!=0 ) error("bam_index_build failed: %s\n", fname);
- return 0;
- }
- else if ( do_csi )
- {
- if ( ftype==IS_BCF )
- {
- if ( bcf_index_build(fname, min_shift)!=0 ) error("bcf_index_build failed: %s\n", fname);
- return 0;
- }
- if ( ftype==IS_BAM )
- {
- if ( bam_index_build(fname, min_shift)!=0 ) error("bam_index_build failed: %s\n", fname);
- return 0;
- }
- if ( tbx_index_build(fname, min_shift, &conf)!=0 ) error("tbx_index_build failed: %s\n", fname);
- return 0;
- }
- else // TBI index
- {
- if ( tbx_index_build(fname, min_shift, &conf) ) error("tbx_index_build failed: %s\n", fname);
- return 0;
- }
- return 0;
-}
diff --git a/htslib/tbx.c b/htslib/tbx.c
deleted file mode 100644
index a82f195..0000000
--- a/htslib/tbx.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/* tbx.c -- tabix API functions.
-
- Copyright (C) 2009, 2010, 2012-2014 Genome Research Ltd.
- Copyright (C) 2010-2012 Broad Institute.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <assert.h>
-#include "htslib/tbx.h"
-#include "htslib/bgzf.h"
-
-#include "htslib/khash.h"
-KHASH_DECLARE(s2i, kh_cstr_t, int64_t)
-
-tbx_conf_t tbx_conf_gff = { 0, 1, 4, 5, '#', 0 };
-tbx_conf_t tbx_conf_bed = { TBX_UCSC, 1, 2, 3, '#', 0 };
-tbx_conf_t tbx_conf_psltbl = { TBX_UCSC, 15, 17, 18, '#', 0 };
-tbx_conf_t tbx_conf_sam = { TBX_SAM, 3, 4, 0, '@', 0 };
-tbx_conf_t tbx_conf_vcf = { TBX_VCF, 1, 2, 0, '#', 0 };
-
-typedef struct {
- int64_t beg, end;
- char *ss, *se;
- int tid;
-} tbx_intv_t;
-
-static inline int get_tid(tbx_t *tbx, const char *ss, int is_add)
-{
- khint_t k;
- khash_t(s2i) *d;
- if (tbx->dict == 0) tbx->dict = kh_init(s2i);
- d = (khash_t(s2i)*)tbx->dict;
- if (is_add) {
- int absent;
- k = kh_put(s2i, d, ss, &absent);
- if (absent) {
- kh_key(d, k) = strdup(ss);
- kh_val(d, k) = kh_size(d) - 1;
- }
- } else k = kh_get(s2i, d, ss);
- return k == kh_end(d)? -1 : kh_val(d, k);
-}
-
-int tbx_name2id(tbx_t *tbx, const char *ss)
-{
- return get_tid(tbx, ss, 0);
-}
-
-int tbx_parse1(const tbx_conf_t *conf, int len, char *line, tbx_intv_t *intv)
-{
- int i, b = 0, id = 1, ncols = 0;
- char *s;
- intv->ss = intv->se = 0; intv->beg = intv->end = -1;
- for (i = 0; i <= len; ++i) {
- if (line[i] == '\t' || line[i] == 0) {
- ++ncols;
- if (id == conf->sc) {
- intv->ss = line + b; intv->se = line + i;
- } else if (id == conf->bc) {
- // here ->beg is 0-based.
- intv->beg = intv->end = strtol(line + b, &s, 0);
- if ( s==line+b ) return -1; // expected int
- if (!(conf->preset&TBX_UCSC)) --intv->beg;
- else ++intv->end;
- if (intv->beg < 0) intv->beg = 0;
- if (intv->end < 1) intv->end = 1;
- } else {
- if ((conf->preset&0xffff) == TBX_GENERIC) {
- if (id == conf->ec)
- {
- intv->end = strtol(line + b, &s, 0);
- if ( s==line+b ) return -1; // expected int
- }
- } else if ((conf->preset&0xffff) == TBX_SAM) {
- if (id == 6) { // CIGAR
- int l = 0, op;
- char *t;
- for (s = line + b; s < line + i;) {
- long x = strtol(s, &t, 10);
- op = toupper(*t);
- if (op == 'M' || op == 'D' || op == 'N') l += x;
- s = t + 1;
- }
- if (l == 0) l = 1;
- intv->end = intv->beg + l;
- }
- } else if ((conf->preset&0xffff) == TBX_VCF) {
- if (id == 4) {
- if (b < i) intv->end = intv->beg + (i - b);
- } else if (id == 8) { // look for "END="
- int c = line[i];
- line[i] = 0;
- s = strstr(line + b, "END=");
- if (s == line + b) s += 4;
- else if (s) {
- s = strstr(line + b, ";END=");
- if (s) s += 5;
- }
- if (s) intv->end = strtol(s, &s, 0);
- line[i] = c;
- }
- }
- }
- b = i + 1;
- ++id;
- }
- }
- if (intv->ss == 0 || intv->se == 0 || intv->beg < 0 || intv->end < 0) return -1;
- return 0;
-}
-
-static inline int get_intv(tbx_t *tbx, kstring_t *str, tbx_intv_t *intv, int is_add)
-{
- if (tbx_parse1(&tbx->conf, str->l, str->s, intv) == 0) {
- int c = *intv->se;
- *intv->se = '\0'; intv->tid = get_tid(tbx, intv->ss, is_add); *intv->se = c;
- return (intv->tid >= 0 && intv->beg >= 0 && intv->end >= 0)? 0 : -1;
- } else {
- char *type = NULL;
- switch (tbx->conf.preset&0xffff)
- {
- case TBX_SAM: type = "TBX_SAM"; break;
- case TBX_VCF: type = "TBX_VCF"; break;
- case TBX_UCSC: type = "TBX_UCSC"; break;
- default: type = "TBX_GENERIC"; break;
- }
- fprintf(stderr, "[E::%s] failed to parse %s, was wrong -p [type] used?\nThe offending line was: \"%s\"\n", __func__, type, str->s);
- return -1;
- }
-}
-
-int tbx_readrec(BGZF *fp, void *tbxv, void *sv, int *tid, int *beg, int *end)
-{
- tbx_t *tbx = (tbx_t *) tbxv;
- kstring_t *s = (kstring_t *) sv;
- int ret;
- if ((ret = bgzf_getline(fp, '\n', s)) >= 0) {
- tbx_intv_t intv;
- get_intv(tbx, s, &intv, 0);
- *tid = intv.tid; *beg = intv.beg; *end = intv.end;
- }
- return ret;
-}
-
-void tbx_set_meta(tbx_t *tbx)
-{
- int i, l = 0, l_nm;
- uint32_t x[7];
- char **name;
- uint8_t *meta;
- khint_t k;
- khash_t(s2i) *d = (khash_t(s2i)*)tbx->dict;
-
- memcpy(x, &tbx->conf, 24);
- name = (char**)malloc(sizeof(char*) * kh_size(d));
- for (k = kh_begin(d), l = 0; k != kh_end(d); ++k) {
- if (!kh_exist(d, k)) continue;
- name[kh_val(d, k)] = (char*)kh_key(d, k);
- l += strlen(kh_key(d, k)) + 1; // +1 to include '\0'
- }
- l_nm = x[6] = l;
- meta = (uint8_t*)malloc(l_nm + 28);
- if (ed_is_big())
- for (i = 0; i < 7; ++i)
- x[i] = ed_swap_4(x[i]);
- memcpy(meta, x, 28);
- for (l = 28, i = 0; i < (int)kh_size(d); ++i) {
- int x = strlen(name[i]) + 1;
- memcpy(meta + l, name[i], x);
- l += x;
- }
- free(name);
- hts_idx_set_meta(tbx->idx, l, meta, 0);
-}
-
-tbx_t *tbx_index(BGZF *fp, int min_shift, const tbx_conf_t *conf)
-{
- tbx_t *tbx;
- kstring_t str;
- int ret, first = 0, n_lvls, fmt;
- int64_t lineno = 0;
- uint64_t last_off = 0;
- tbx_intv_t intv;
-
- str.s = 0; str.l = str.m = 0;
- tbx = (tbx_t*)calloc(1, sizeof(tbx_t));
- tbx->conf = *conf;
- if (min_shift > 0) n_lvls = (TBX_MAX_SHIFT - min_shift + 2) / 3, fmt = HTS_FMT_CSI;
- else min_shift = 14, n_lvls = 5, fmt = HTS_FMT_TBI;
- while ((ret = bgzf_getline(fp, '\n', &str)) >= 0) {
- ++lineno;
- if (lineno <= tbx->conf.line_skip || str.s[0] == tbx->conf.meta_char) {
- last_off = bgzf_tell(fp);
- continue;
- }
- if (first == 0) {
- tbx->idx = hts_idx_init(0, fmt, last_off, min_shift, n_lvls);
- first = 1;
- }
- get_intv(tbx, &str, &intv, 1);
- ret = hts_idx_push(tbx->idx, intv.tid, intv.beg, intv.end, bgzf_tell(fp), 1);
- if (ret < 0)
- {
- free(str.s);
- tbx_destroy(tbx);
- return NULL;
- }
- }
- if ( !tbx->idx ) tbx->idx = hts_idx_init(0, fmt, last_off, min_shift, n_lvls); // empty file
- if ( !tbx->dict ) tbx->dict = kh_init(s2i);
- hts_idx_finish(tbx->idx, bgzf_tell(fp));
- tbx_set_meta(tbx);
- free(str.s);
- return tbx;
-}
-
-void tbx_destroy(tbx_t *tbx)
-{
- khash_t(s2i) *d = (khash_t(s2i)*)tbx->dict;
- if (d != NULL)
- {
- khint_t k;
- for (k = kh_begin(d); k != kh_end(d); ++k)
- if (kh_exist(d, k)) free((char*)kh_key(d, k));
- }
- hts_idx_destroy(tbx->idx);
- kh_destroy(s2i, d);
- free(tbx);
-}
-
-int tbx_index_build(const char *fn, int min_shift, const tbx_conf_t *conf)
-{
- tbx_t *tbx;
- BGZF *fp;
- if ( bgzf_is_bgzf(fn)!=1 ) { fprintf(stderr,"Not a BGZF file: %s\n", fn); return -1; }
- if ((fp = bgzf_open(fn, "r")) == 0) return -1;
- if ( !fp->is_compressed ) { bgzf_close(fp); return -1; }
- tbx = tbx_index(fp, min_shift, conf);
- bgzf_close(fp);
- if ( !tbx ) return -1;
- hts_idx_save(tbx->idx, fn, min_shift > 0? HTS_FMT_CSI : HTS_FMT_TBI);
- tbx_destroy(tbx);
- return 0;
-}
-
-tbx_t *tbx_index_load(const char *fn)
-{
- tbx_t *tbx;
- uint8_t *meta;
- char *nm, *p;
- uint32_t x[7];
- int l_meta, l_nm;
- tbx = (tbx_t*)calloc(1, sizeof(tbx_t));
- tbx->idx = hts_idx_load(fn, HTS_FMT_TBI);
- if ( !tbx->idx )
- {
- free(tbx);
- return NULL;
- }
- meta = hts_idx_get_meta(tbx->idx, &l_meta);
- if ( !meta )
- {
- free(tbx);
- return NULL;
- }
- memcpy(x, meta, 28);
- memcpy(&tbx->conf, x, 24);
- p = nm = (char*)meta + 28;
- l_nm = x[6];
- for (; p - nm < l_nm; p += strlen(p) + 1) get_tid(tbx, p, 1);
- return tbx;
-}
-
-const char **tbx_seqnames(tbx_t *tbx, int *n)
-{
- khash_t(s2i) *d = (khash_t(s2i)*)tbx->dict;
- if (d == NULL)
- {
- *n = 0;
- return NULL;
- }
- int tid, m = kh_size(d);
- const char **names = (const char**) calloc(m,sizeof(const char*));
- khint_t k;
- for (k=kh_begin(d); k<kh_end(d); k++)
- {
- if ( !kh_exist(d,k) ) continue;
- tid = kh_val(d,k);
- assert( tid<m );
- names[tid] = kh_key(d,k);
- }
- // sanity check: there should be no gaps
- for (tid=0; tid<m; tid++)
- assert(names[tid]);
- *n = m;
- return names;
-}
-
diff --git a/htslib/test/auxf#values.sam b/htslib/test/auxf#values.sam
deleted file mode 100644
index 4e0902f..0000000
--- a/htslib/test/auxf#values.sam
+++ /dev/null
@@ -1,5 +0,0 @@
- at HD VN:1.4 SO:unsorted
- at SQ SN:Sheila LN:20
- at RG ID:ID SM:foo
-Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** RG:Z:ID A!:A:! Ac:A:c AC:A:C I0:i:0 I1:i:1 I2:i:127 I3:i:128 I4:i:255 I5:i:256 I6:i:32767 I7:i:32768 I8:i:65535 I9:i:65536 IA:i:2147483647 i1:i:-1 i2:i:-127 i3:i:-128 i4:i:-255 i5:i:-256 i6:i:-32767 i7:i:-32768 i8:i:-65535 i9:i:-65536 iA:i:-2147483647 iB:i:-2147483648 F0:f:-1 F1:f:0 F2:f:1 F3:f:9.9e-19 F4:f:-9.9e-19 F5:f:9.9e+19 F6:f:-9.9e+19 H0:H:AA H1:H:dead00beef Z0:Z:space space
-Jim 16 Sheila 11 11 10M * 0 0 AAAAAAAAAA * BC:B:C,0,127,128,255 Bc:B:c,-128,-127,0,127 BS:B:S,0,32767,32768,65535 Bs:B:s,-32768,-32767,0,32767 BI:B:I,0,2147483647,2147483648,4294967295 Bi:B:i,-2147483648,-2147483647,0,2147483647
diff --git a/htslib/test/auxf.fa b/htslib/test/auxf.fa
deleted file mode 100644
index 11d25dd..0000000
--- a/htslib/test/auxf.fa
+++ /dev/null
@@ -1,2 +0,0 @@
->Sheila
-GCTAGCTCAGAAAAAAAAAA
diff --git a/htslib/test/auxf.fa.fai b/htslib/test/auxf.fa.fai
deleted file mode 100644
index f3cdedb..0000000
--- a/htslib/test/auxf.fa.fai
+++ /dev/null
@@ -1 +0,0 @@
-Sheila 20 8 20 21
diff --git a/htslib/test/c1#bounds.sam b/htslib/test/c1#bounds.sam
deleted file mode 100644
index 181dbe0..0000000
--- a/htslib/test/c1#bounds.sam
+++ /dev/null
@@ -1,4 +0,0 @@
- at SQ SN:c1 LN:10
-s0 0 c1 1 0 10M * 0 0 AACCGCGGTT **********
-s1 0 c1 2 0 10M * 0 0 ACCGCGGTTC **********
-s2 0 c1 3 0 10M * 0 0 CCGCGGTTCG **********
diff --git a/htslib/test/c1#clip.sam b/htslib/test/c1#clip.sam
deleted file mode 100644
index fd073f0..0000000
--- a/htslib/test/c1#clip.sam
+++ /dev/null
@@ -1,8 +0,0 @@
- at SQ SN:c1 LN:10
-s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT **********
-s0A 0 c1 1 0 3M4N3M * 0 0 AACGTT ******
-s0b 0 c1 2 0 1S8M1S * 0 0 AACCGCGGTT **********
-s0B 0 c1 2 0 1H8M1H * 0 0 ACCGCGGT ********
-s0c 0 c1 3 0 2S6M2S * 0 0 AACCGCGGTT **********
-s0c 0 c1 3 0 2S3M2I3M2S * 0 0 AACCGNNCGGTT ************
-s0C 0 c1 3 0 2H6M2H * 0 0 CCGCGG ******
diff --git a/htslib/test/c1#pad1.sam b/htslib/test/c1#pad1.sam
deleted file mode 100644
index 54f7a11..0000000
--- a/htslib/test/c1#pad1.sam
+++ /dev/null
@@ -1,10 +0,0 @@
- at SQ SN:c1 LN:10
-s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s0b 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s0c 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s1 0 c1 1 0 5M6I5M * 0 0 AACCGGTTAACCGGTT *
-s2 0 c1 1 0 5M1P4I1P5M * 0 0 AACCGTTAACGGTT *
-s3 0 c1 1 0 5M3I3P5M * 0 0 AACCGGTTCGGTT *
-s4 0 c1 1 0 5M3P3I5M * 0 0 AACCGAACCGGTT *
-s5 0 c1 1 0 4M1D2P2I2P1D4M * 0 0 AACCTAGGTT *
-s6 0 c1 1 0 2M3D6I3D2M * 0 0 AAGTTAACTT *
diff --git a/htslib/test/c1#pad2.sam b/htslib/test/c1#pad2.sam
deleted file mode 100644
index 87c1977..0000000
--- a/htslib/test/c1#pad2.sam
+++ /dev/null
@@ -1,14 +0,0 @@
- at SQ SN:c1 LN:50
-s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s0b 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s0c 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s0d 0 c1 1 0 10M * 0 0 AACCGCGGTT *
-s1 0 c1 1 0 5M6I5M * 0 0 AACCGGTTAACCGGTT *
-s2 0 c1 1 0 5M1P4I1P5M * 0 0 AACCGTTAACGGTT *
-s3 0 c1 1 0 5M3I3P5M * 0 0 AACCGGTTCGGTT *
-s4 0 c1 1 0 5M3P3I5M * 0 0 AACCGAACCGGTT *
-s5 0 c1 1 0 4M1D2P2I2P1D4M * 0 0 AACCTAGGTT *
-s6 0 c1 1 0 2M3D6I3D2M * 0 0 AAGTTAACTT *
-s7 0 c1 1 0 4M2D4M * 0 0 AACCGGTT *
-s8 0 c1 1 0 5D2P2I2P5D * 0 0 TA *
-s9 0 c1 5 0 1M2P2I2P * 0 0 GTA *
diff --git a/htslib/test/c1#pad3.sam b/htslib/test/c1#pad3.sam
deleted file mode 100644
index 757fb2d..0000000
--- a/htslib/test/c1#pad3.sam
+++ /dev/null
@@ -1,14 +0,0 @@
- at SQ SN:c1 LN:16
- at RG ID:p.sam SM:unknown LB:p.sam
-s0a 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam
-s0b 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam
-s0c 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam
-s0d 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam
-s1 0 c1 6 0 11I5M * 0 0 AACCGGTTAACCGGTT * RG:Z:p.sam
-s2 0 c1 6 0 5I1P4I1P5M * 0 0 AACCGTTAACGGTT * RG:Z:p.sam
-s3 0 c1 6 0 8I3P5M * 0 0 AACCGGTTCGGTT * RG:Z:p.sam
-s4 0 c1 6 0 5I3P3I5M * 0 0 AACCGAACCGGTT * RG:Z:p.sam
-s5 0 c1 6 0 4I3P2I2P1D4M * 0 0 AACCTAGGTT * RG:Z:p.sam
-s6 0 c1 6 0 2I3P6I3D2M * 0 0 AAGTTAACTT * RG:Z:p.sam
-s7 0 c1 6 0 4I7P1D4M * 0 0 AACCGGTT * RG:Z:p.sam
-s8 0 c1 6 0 7P2I2P * 0 0 TA !! RG:Z:p.sam
diff --git a/htslib/test/c1.fa b/htslib/test/c1.fa
deleted file mode 100644
index 12c54c9..0000000
--- a/htslib/test/c1.fa
+++ /dev/null
@@ -1,2 +0,0 @@
->c1
-AACCGCGGTT
diff --git a/htslib/test/c1.fa.fai b/htslib/test/c1.fa.fai
deleted file mode 100644
index fc35bec..0000000
--- a/htslib/test/c1.fa.fai
+++ /dev/null
@@ -1 +0,0 @@
-c1 10 4 10 11
diff --git a/htslib/test/ce#1.sam b/htslib/test/ce#1.sam
deleted file mode 100644
index a712fe3..0000000
--- a/htslib/test/ce#1.sam
+++ /dev/null
@@ -1,2 +0,0 @@
- at SQ SN:CHROMOSOME_I LN:15072423
-SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 AS:i:-18 XS:i:-18 YT:Z:UU
diff --git a/htslib/test/ce#2.sam b/htslib/test/ce#2.sam
deleted file mode 100644
index 23273fa..0000000
--- a/htslib/test/ce#2.sam
+++ /dev/null
@@ -1,3 +0,0 @@
- at SQ SN:CHROMOSOME_I LN:15072423
-SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-SRR065390.921023 16 CHROMOSOME_I 3 12 100M * 0 0 CTAAGCCTAAATCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################???88:;98768700000<>:BBA?BBAB?BBBBBBBB>B>BB::;?:00000 XG:i:0 XM:i:3 XN:i:0 XO:i:0 AS:i:-6 XS:i:-13 YT:Z:UU
diff --git a/htslib/test/ce#5.sam b/htslib/test/ce#5.sam
deleted file mode 100644
index 8b09549..0000000
--- a/htslib/test/ce#5.sam
+++ /dev/null
@@ -1,11 +0,0 @@
- at SQ SN:CHROMOSOME_I LN:15072423
- at SQ SN:CHROMOSOME_II LN:15279345
- at SQ SN:CHROMOSOME_III LN:13783700
- at SQ SN:CHROMOSOME_IV LN:17493793
- at SQ SN:CHROMOSOME_V LN:20924149
-I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-II.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-III 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-IV 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-V 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-VI 2048 CHROMOSOME_I 2 1 27M100000D73M * 0 0 ACTAAGCCTAAGCCTAAGCCTAAGCCAATTATCGATTTCTGAAAAAATTATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTTA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
diff --git a/htslib/test/ce#5b.sam b/htslib/test/ce#5b.sam
deleted file mode 100644
index f40fd38..0000000
--- a/htslib/test/ce#5b.sam
+++ /dev/null
@@ -1,12 +0,0 @@
- at SQ SN:CHROMOSOME_I LN:15072423
- at SQ SN:CHROMOSOME_II LN:15279345
- at SQ SN:CHROMOSOME_III LN:13783700
- at SQ SN:CHROMOSOME_IV LN:17493793
- at SQ SN:CHROMOSOME_V LN:20924149
-I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-II.14978392 16 CHROMOSOME_II 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-III 16 CHROMOSOME_III 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-IV 16 CHROMOSOME_IV 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-V 16 CHROMOSOME_V 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU
-VI 0 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCTAAGCCTAAGCCTAAGCCTAAGCTTTTTTTTTTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA *
-VI 256 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 * *
diff --git a/htslib/test/ce#large_seq.sam b/htslib/test/ce#large_seq.sam
deleted file mode 100644
index 86d21b8..0000000
--- a/htslib/test/ce#large_seq.sam
+++ /dev/null
@@ -1,3 +0,0 @@
- at SQ SN:CHROMOSOME_I LN:15072423
-S1 0 CHROMOSOME_I 1 255 36M4I33M2D18M4I13M3I5M2I7M1I8M4I30M1D20M5D25M4D63M1D31M2I13M4I83M3I36M4D77M2D8M2D5M2D14M2I5M4D1M1D27M5I3M4D47M2D5M4D7M1I70M3D42M4I59M5I2M2I13M4D3M5D6M4I5M4I58M1I10M3I57M1I15M5D57M4I10M1I19M4D9M3I27M4D11M3I9M4I21M4I62M4I51M1I8M3D23M1I5M4I24M2D1M5I4M4D14M3D63M5I1M2I20M4D10M5D7M2D22M4I22M2I9M3I46M5I1M4D12M5D8M3D17M5D149M1D20M1D61M1I14M2I38M4D9M4I62M1I8M1I55M3D62M4I8M4I50M5D19M3D11M2I53M4D7M2D32M2D57M3I48M2D11M4D15M1I23M2D16M5I7M1I3M1D27M5D4M1I18M1D79M5D1M5D8M5D20M1D2 [...]
-V 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
diff --git a/htslib/test/ce#tag_depadded.sam b/htslib/test/ce#tag_depadded.sam
deleted file mode 100644
index 408080b..0000000
--- a/htslib/test/ce#tag_depadded.sam
+++ /dev/null
@@ -1,11 +0,0 @@
- at HD VN:1.4 SO:coordinate
- at RG ID:UNKNOWN SM:unknown LB:UNKNOWN
- at SQ SN:CHROMOSOME_I LN:102
-I 16 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;28;+;STOP;Note=tag1
-II.14978392 16 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;27;+;PRIM;Note=tag2|28;28;+;OLIG;Note=tag3
-III 0 CHROMOSOME_I 2 1 27M1I73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################"##@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:1;1;+;COMM|101;101;+;COMM
-IV 16 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-V 0 CHROMOSOME_I 2 1 100M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-* 768 CHROMOSOME_I 2 255 1M * 0 0 * * CT:Z:+;STOP
-* 768 CHROMOSOME_I 28 255 2M * 0 0 * * CT:Z:+;COMM;Note=consensus%0Amulti%09line%0Atag%0A!"#$%25^&*()_+<>?:@~{}%7C%0A1234567890-=[]'%3B#,./\
-* 768 CHROMOSOME_I 101 255 1M * 0 0 * * CT:Z:+;STOP
diff --git a/htslib/test/ce#tag_padded.sam b/htslib/test/ce#tag_padded.sam
deleted file mode 100644
index d0a3924..0000000
--- a/htslib/test/ce#tag_padded.sam
+++ /dev/null
@@ -1,11 +0,0 @@
- at HD VN:1.4 SO:coordinate
- at RG ID:UNKNOWN SM:unknown LB:UNKNOWN
- at SQ SN:CHROMOSOME_I LN:102
-I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;29;+;STOP;Note=tag1
-II.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;27;+;PRIM;Note=tag2|29;29;+;OLIG;Note=tag3
-III 0 CHROMOSOME_I 2 1 101M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################"##@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:1;1;+;COMM|101;101;+;COMM
-IV 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-V 0 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-* 768 CHROMOSOME_I 2 255 1M * 0 0 * * CT:Z:+;STOP
-* 768 CHROMOSOME_I 28 255 3M * 0 0 * * CT:Z:+;COMM;Note=consensus%0Amulti%09line%0Atag%0A!"#$%25^&*()_+<>?:@~{}%7C%0A1234567890-=[]'%3B#,./\
-* 768 CHROMOSOME_I 102 255 1M * 0 0 * * CT:Z:+;STOP
diff --git a/htslib/test/ce#unmap.sam b/htslib/test/ce#unmap.sam
deleted file mode 100644
index fec218c..0000000
--- a/htslib/test/ce#unmap.sam
+++ /dev/null
@@ -1,6 +0,0 @@
-I 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-II 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-III 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-IV 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-V 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-VI 4 * 0 1 * * 0 0 ACTAAGCCTAAGCCTAAGCCTAAGCCAATTATCGATTTCTGAAAAAATTATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTTA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
diff --git a/htslib/test/ce#unmap1.sam b/htslib/test/ce#unmap1.sam
deleted file mode 100644
index ba1bcfe..0000000
--- a/htslib/test/ce#unmap1.sam
+++ /dev/null
@@ -1,20 +0,0 @@
- at HD VN:1.0 SO:unsorted
- at SQ SN:CHROMOSOME_I LN:15072423
- at SQ SN:CHROMOSOME_II LN:15279345
- at SQ SN:CHROMOSOME_III LN:13783700
- at SQ SN:CHROMOSOME_IV LN:17493793
- at SQ SN:CHROMOSOME_V LN:20924149
- at SQ SN:CHROMOSOME_X LN:17718866
- at SQ SN:CHROMOSOME_MtDNA LN:13794
- at RG ID:UNKNOWN SM:UNKNOWN
- at PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta5
-SRR065390.33808391 4 * 0 0 * * 0 0 GATCGCACTGAAAATCTGGATATAGAACGTGTGCAAATGATTGTCTCTACCGTTCCGTAAAAATTATTGCTAATTAGCAATGATTTTAAGCTAATTAGTT CCCCCCCCCCCCCCCCCCCACCCCCACCCCCCCCCCCCB;CCCAACCCCCCCCCCCCCD=B9BCABCBCB>BBBC at B<<@BA;BCC?B>A<<@(?:4==4 YT:Z:UU
-SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### YT:Z:UU
-SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### YT:Z:UU
-SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ YT:Z:UU
-SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### YT:Z:UU
-SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### YT:Z:UU
-SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### YT:Z:UU
-SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## YT:Z:UU
-SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### YT:Z:UU
-SRR065390.33808523 4 * 0 0 * * 0 0 NTACTTCTTACAAGATTTTTATCGCTACTTGAAAAAAATTCATCAACATAATCGCCATGACTATCTGCACCGTGAGTATGATAAGCAGCAACTCTATCTG !***+--,')AAAA778577A72AA50888AAAAAAA72A88858AAAA77AAAAAA7AAAAAAAAA8AA############################## YT:Z:UU
diff --git a/htslib/test/ce#unmap2.sam b/htslib/test/ce#unmap2.sam
deleted file mode 100644
index 363362c..0000000
--- a/htslib/test/ce#unmap2.sam
+++ /dev/null
@@ -1,29 +0,0 @@
- at HD VN:1.0 SO:unsorted
- at SQ SN:CHROMOSOME_I LN:15072423
- at SQ SN:CHROMOSOME_II LN:15279345
- at SQ SN:CHROMOSOME_III LN:13783700
- at SQ SN:CHROMOSOME_IV LN:17493793
- at SQ SN:CHROMOSOME_V LN:20924149
- at SQ SN:CHROMOSOME_X LN:17718866
- at SQ SN:CHROMOSOME_MtDNA LN:13794
- at RG ID:UNKNOWN SM:UNKNOWN
- at PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta5
-SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC at CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 AS:i:-18 XS:i:-18 YT:Z:UU
-SRR065390.921023 16 CHROMOSOME_I 3 12 100M * 0 0 CTAAGCCTAAATCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################???88:;98768700000<>:BBA?BBAB?BBBBBBBB>B>BB::;?:00000 XG:i:0 XM:i:3 XN:i:0 XO:i:0 AS:i:-6 XS:i:-13 YT:Z:UU
-SRR065390.1871511 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA <?@<@A8>0:BB@>B<=B@???@=8 at B>BB at CA@DACDCBBCCCA at CCCCACCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.3743423 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################?6@:7<=@3=@ABAAB>BDBBABADABDDDBDDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.4251890 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########@BB=BCBBC?B>B;>B@@ADBBB at DBBBBDCCBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.5238868 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA @,=@@D8D;?BBB>;?BBB==BB at D;>D>BBB>BBDDB<DABADCACDCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.6023338 0 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAGCTAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC at CCDDDBCCABB=DABBA?################ XG:i:0 XM:i:3 XN:i:0 XO:i:0 AS:i:-6 XS:i:-6 YT:Z:UU
-SRR065390.6815812 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############?@.@?B;B0B=;<DADB@@BDDBBDDBCBCBD at CCDCCCCCCCDCCCCCCCCACCCCCCCCCCBCCCCCCDCCCCCCCCCCCBCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.6905811 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #######################BB@>A<BC>@@BCCB@=BACBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.8289592 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################A?@C9@@BC=AABDD at A@DC at CB=@BA?6 at CCAAC@+CCCCCCCCCCCCCCC at CCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU
-SRR065390.33808391 4 * 0 0 * * 0 0 GATCGCACTGAAAATCTGGATATAGAACGTGTGCAAATGATTGTCTCTACCGTTCCGTAAAAATTATTGCTAATTAGCAATGATTTTAAGCTAATTAGTT CCCCCCCCCCCCCCCCCCCACCCCCACCCCCCCCCCCCB;CCCAACCCCCCCCCCCCCD=B9BCABCBCB>BBBC at B<<@BA;BCC?B>A<<@(?:4==4 YT:Z:UU
-SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### YT:Z:UU
-SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### YT:Z:UU
-SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ YT:Z:UU
-SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### YT:Z:UU
-SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### YT:Z:UU
-SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### YT:Z:UU
-SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## YT:Z:UU
-SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### YT:Z:UU
diff --git a/htslib/test/ce.fa b/htslib/test/ce.fa
deleted file mode 100644
index ac19897..0000000
--- a/htslib/test/ce.fa
+++ /dev/null
@@ -1,20803 +0,0 @@
->CHROMOSOME_I
-GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAAAATTGAGATAAGAAAA
-CATTTTACTTTTTCAAAATTGTTTTCATGCTAAATTCAAAACGTTTTTTT
-TTTAGTGAAGCTTCTAGATATTTGGCGGGTACCTCTAATTTTGCCTGCCT
-GCCAACCTATATGCTCCTGTGTTTAGGCCTAATACTAAGCCTAAGCCTAA
-GCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAATACTAAGCCTAAGC
-CTAAGACTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAATACTAAGCCT
-AAGCCTAAGACTAAGCCTAAGCCTAATACTAAGCCTAAGCCTAAGACTAA
-GCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAAGA
-CTAAGCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAAAGA
-ATATGGTAGCTACAGAAACGGTAGTACACTCTTCTGAAAATACAAAAAAT
-TTGCAATTTTTATAGCTAGGGCACTTTTTGTCTGCCCAAATATAGGCAAC
-CAAAAATAATTGCCAAGTTTTTAATGATTTGTTGCATATTGAAAAAAACA
-TTTTTCGGGTTTTTTGAAATGAATATCGTAGCTACAGAAACGGTTGTGCA
-CTCATCTGAAAGTTTGTTTTTCTTGTTTTCTTGCACTTTGTGCAGAATTC
-TTGATTCTTGATTCTTGCAGAAATTTGCAAGAAAATTCGCAAGAAATTTG
-TATTAAAAACTGTTCAAAATTTTTGGAAATTAGTTTAAAAATCTCACATT
-TTTTTTAGAAAAATTATTTTTAAGAATTTTTCATTTTAGGAATATTGTTA
-TTTCAGAAAATAGCTAAATGTGATTTCTGTAATTTTGCCTGCCAAATTCG
-TGAAATGCAATAAAAATCTAATATCCCTCATCAGTGCGATTTCCGAATCA
-GTATATTTTTACGTAATAGCTTCTTTGACATCAATAAGTATTTGCCTATA
-TGACTTTAGACTTGAAATTGGCTATTAATGCCAATTTCATGATATCTAGC
-CACTTTAGTATAATTGTTTTTAGTTTTTGGCAAAACTATTGTCTAAACAG
-ATATTCGTGTTTTCAAGAAATTTTTCATGGTTTTTCTTGGTCTTTTCTTG
-GTATTTTTTTGACAAAAATTTTTGTTTCTTGATTCTTGCAAAAATTTTTC
-CGTTTGACGGCCTTGATGTGCACTACCTTCGCTTAAATACTACATTTTCT
-GAAAATGTTATAATAGTGTTCATTGTTTCATACAAATACTTATTTAATAG
-TATTTCTGGTTATATAATTTGTATAAAAAGTGGTTGACATAACAAGGCTG
-ACGAAACTTTGTGATGGCTGAAAATATTTTCCTAGCTTTATTGATTTTTA
-TTTATACGTGTTTGAATAACTTGGCCAAATCGCCGAGAAGGAATAGAATA
-CTGGACGACATTGTACATATTTTCCAAAAAATCAGAAAGTAGATGACGGG
-ACCAATTCTTTCTGTCAGGTTTTACAACCGCCCAGTGCGTCTACGTCACA
-TGTTGTATAAATGGTTGTAAACAATATGCGGAAACAATCAAATGCATTCC
-CATAAGGCATAATATAGAGGCTACAGGCAATGAGTATCGCTCTTTGCTTT
-GTTTAAAGGGGGAGTAGAGTTTGTGGGGAAATATATGTTTCTGACTCTAA
-TTTTGCCCCTGATACCGAATATCGATGTGAAAAAATTTAAAAAAATTTCC
-CTGATTTTATATTAATTTTTAAAATCCGAAAATCCATTGGATGCCTATAT
-GTGAGTTTTTAAACGCAAAATTTTCCCGGCAGAGACGCCCCGCCCACGAA
-ACCGTGCCGCACGTGTGGGTTTACGAGCTGAATATTTTCCTTCTATTTTT
-ATTTGATTTTATACCGATTTTCGTCGATTTTTCTCATTTTTTCTCTTTTT
-TTTGGTGTTTTTTATTGAAAATTTTGTGATTTTCGTAAATTTATTCCTAT
-TTATTAATAAAAACAAAAACAATTCCATTAAATATCCCATTTTCAGCGCA
-AAATCGACTGGAGACTAGGAAAATCGTCTGGAGATAGAACGGATCAACAA
-GATTATTATTATATCATTAATAATATTTATCAATTTTCTTCTGAGAGTCT
-CATTGAGACTCTTATTTACGCCAAGAAATAAATTTAACATTAAAATTGTT
-CATTTTTGAAAAAAAAATAATTAAAAAAACACATTTTTTGGAAAAAAAAA
-TAAATAAAAAAAATTGTCCTCGAGGATCCTCCGGAGCGCGTCGAATCAAT
-GTTTCCGGAACTCTGAAAATTAAATGTTTGTATGATTGTAGAACCCTTTC
-GCTATTGAGATTTGATAACTTTTAAGTAATAAAATTTTCGCAGTAAGACA
-TTAAAACATTTCACAATTAAGCTGGTTCTGAACTGTGTGAAGTATATTGA
-AAAAAACTAACTGATACAAAAATATAATTTTATGATAGTTTTCTGGATGT
-CCCAATATAAACGATGTCAATTCTGCGACATGCTACAGTCATCCACGAAA
-GTAACCCGAATACCGACAAAAGAAGAGGAACGCCAACTTTGGATAGACGC
-TCTAGGGGCTGATTTTGGTCGGAAAATAGTCGGGAAAAAATAGAGGACAT
-TACAGATGAGGATGAGGATGAAGATAGAAATTTGCCGACAACTTCGTCAT
-GCCGCTGATTTTTTTGATGTTCTACGCTTAAATTTTCAGCGAACGAACTA
-TTTTTTATATTTTGATTGTTTTTAAATAATATTTGCCATAAGAAATTCTC
-ACTTTTCCAGGAAACGTCGTTTCGCCGCGATTTTCCTCGTCTCCAGTCGA
-TTTTGCGCTGAAAATGGGATATTTAATGGAATTGTTTTTGTTTTTATTAA
-TAAATAGGAATAAATTTACGAAAATCACAAAATTTTCAATAAAAAACACC
-AAAAAAAAAGAGAAAAAATGAGAAAAATCGACGAAAATCGGTATAAAATC
-AAATAAAAATAGAAGGAAAATATTCAGCTCGTAAACCCGCAAGTGCGGCA
-CGGTTTCGTGGGCGGGGCGTCTCTGGCGGGAAAATTTTGCGTTTGAAAAC
-TCACATATAGGCATCCAATGGATTTTCGGATTTTCAAAATTAATATAAAA
-TCAGGGAAATTTTTTTAAATTTTGTCACATCGATATTCGGTATCAGGGGC
-AAAATTAGAGTCAGAAACATATATTTCCCCACAAACTCTACTCCCCCTTT
-AACAACCACCCGAGGATATATTCGACAAACGATCTATCTACTAGGAATAA
-CTCGATTATTGACATATTATAGACTTCTTTTAGTATTTGTAAAATAGAGG
-ATCAGACCCAAAATTCAGCCCGCGAAGGCATGACGTCAGCGCGAGGCAGT
-AGTTTCCAGAAGAACTCTGTCGTCTACCTTAATGCCTCAAATGCGAACCC
-GCTTCGGCCATCCTTCTCGCTCAGAGAATGGATTAGAGTTCTCATCAACT
-CCTCTGTCTAATTTTCAACTGCGGCGGTTGGCGACCGGTATTACCGCGGC
-GACCGACACCTCCCGGGTTCCGTCGATCGCTGTCTGTTGTGTGCGCCGCG
-ACTCCGCCCACCGGTGGTAACTTTTTGTGGGGGAATCTTTGTTTTTGGTC
-ATTTTTCAGCGCTTTTCAGCGATTATTGACCAATTTTGAATAAAATTTTC
-AACAGAATATCATCTAAAATATTGCTTAACATTTATTTAACAGAAATAAC
-GTGAGCACGCATGTAAAACATGAAATTTTCGGGAAAATTGCAATTAAACG
-AATAAAAATCGATATTTAAATCAATTATTGGTGAATCCGGTGTGTTGAGG
-CTTCAATGCATACATTTTTACTGGATAAATCTCCTTTGGGAATCCGGTTT
-GCAGTGCTTTCGAGACCATGTCCAGTTGAGAATCGGCGAACGCTTTAAGA
-AGCTCGGGCTGAATAATGAATTGTTTTAAAAAATGTTTAGTAAAAAATTG
-TTTTCGTGCAAATTGTCTTCGATATTATCCAAACGTGACGTTTTGCGATT
-TTCGCGCTAAAATTACAGTAAGTGGGGTCTCGACACGACAATTTTTGTGA
-AATACAAACGGGCGTGTGTCTTTAAGAAGTACTGTAGTTTAAAAACTTCA
-TTTCTGTGGAATTTTCATATATTTTTCATAGTTTTTCTCTTTAAATAAAT
-CACTTTTCAACAAAAAACTATGAGACAATAGTTTGAAATTACAGTATTCT
-TTAAAGGTGCACGCCTGCTCGAATTTCGCAAAAACGTGTCGTGTCGAGAC
-CCCAATTACAGTATTTTTGACCCGAATATCGCGAAATTTCGAGTCTGGGT
-GAAAACATTGAAATTTTTGGCAAAATAAAAGAAATATGTCCTTTTTCAGA
-ATATATTTTCTAAATTTCGAGACGAAACAACAATTTTAAATGAATTTTAA
-TTTTAAATATTAAATATTTCGGAATTTGGCGTTTTTTATGCATGTCGATT
-CACTAACGATTTTGTACTACACGTGGGCAAGTTTATACAGTTTTTGGCTA
-AAATTTGTGAATTTGAACCGTTTTTCGGCGAATATTTGAAAAATTGGCAA
-AACTGGTTCAAAAACAAAAATTTTTTAAACTGTACAAACTGTCCAAAAAT
-TCGTCGTAAATCGACACACCCTTCTCATTTTTTCAAAATTTTAATTGTTT
-TCGAATGTTTTTTTTGCAGAATAATTTGTAAAATGAGCCTTTTGTGAATT
-TTTTTTAATTTCAAAGTTTTTATTATTTTTTCTCAAACCAGCACCTCTGT
-TCTCGTCCAACTATGATCATCATCGTCGAATAACCGTTTCTCGTGATTTG
-TCACATTATCCTTGAGCACAATACATCCACCAGGTTTCAGTCCTTTCTGA
-AAATGAAAATTAATTTTAAAAAAATTGAATTATTTTAAATGAAACAGTTT
-TCAGAGATTTCTCAACTTTTGAGTCCACCACCAGGCCTGCACGTTTTTCG
-GGTTTTATCTTTTAAAAAACTGAAAAATCGAAAAATTTCAATTTCTGTTT
-TGTGGTCAAAATTGTAATTACAGGTAAGCAAATAGTTTAATTTTAAAATT
-GAAAATTAGGGAAATGACCGGACATAAGTTTAAAAACCCGATTTTTTCAA
-TAAAAAGGAAAATTGAAAATTTAATAAAACAGGTTGTAAATCAAGGAGAT
-CGTATTGATTGAAAAAAAATCCGAATGTTCCGGATTTTTCAGTGGTTTTT
-TTTGAAAGAAAATCGAAAAAGTAAATGTTTTTAATTTTTAAATTTAAATT
-TTTAATCGGAAAAAATGTACGAAATTGACTTTTTAATGTGAAAAATTGTT
-GTTTTAAAAAAAAATTTTAACCGATACAGATTTTCTAGACTCAGTTTTTT
-CGGTTGAATATTGTTTTTTACTATTTTTTCATTACAGAAAGAATCCAATT
-TTATTTCGCTTAAAAAATAACCGGAGCATCGAAAATATTTTTTTTTCTGT
-TTTACTCAAAGCATTTCAATTACCTAGAATTTTGTTTAAAAACTACATGC
-TTTATTTATGAACGTAATAAATAAGACCCCCTCTTATTTATAAACTTTCA
-ACATATTTTCAGTTTTCAGTGCTATCTAGTGCTTACCGCACATCTTTTAA
-AGAAATCAACCAAATCCTCATCAACCAAATGCCCTGAAACCCATTGAATC
-CATATCAAATCATAACGTCGTTCGGGCGGTGCAAACGTCTGCAGTCCTTC
-GACGAATTTATCTCCAATTCGTGGATGTTTTCCAATATATTGATCACTTT
-TCGTGATCAACTCCTCGACGACGTCTTCCATATCAACTTTCGAGAAGAAT
-GGCATTAAGAGATGCTTTGTAACACGTCCGATACCCGCTCCGCAGTCCAG
-TGCATAGTCAAAGTAGCCGAATAGATTCTGGAAAATATTTATAAAATTCA
-AAGTTGGCCCAGGGGTGACCGGCAATTTCAAGCAAATCGGCAAATTGTCA
-ATTTTCTGAATTTGCCGAAAATTTGACAAAAACGACAATTTGCCGGTTCG
-CCGAATTTACCTTTTTTAAATTTAATTTTCAATTCAGGCAAACTGACGAT
-TTTCCGTTTGCCGGATATCAATTTGCAGGAATTTCTCAAAGGAATTTTTA
-TTAAGACGGAAACACAGTGCTTTTTTGAATTTTTTTTCCCGTTTTCTTCA
-GATATTTTTATAGAATTTACTGACTTTTCAGAATAGATGTAGGACAATTT
-TGTTGTTTTAAAAATTGAAATTCTGAAATTTCCAACAAAAAAACATGTGC
-AAACCCACAAGTTGGCAAAAATATTTTGCATTTGCCGTTTTTCCCGTTTG
-CCGAAAAGTCTAATTTCGGTAATTGGGCCATTTTTCGAAATTTTGAGCCA
-CATAAAAAACTTTGAACCATTTTTGAGAAGTATTATTACGACATTCGTTT
-ATTTGAGCACAATTTGGGCCTATACTTTCAAAATCGGGGTTTGAAAACCC
-CTATATGTTCGACCGAATGTTAATCTCATAAAAATTTGATGAAAATAAAA
-TTTTCTACGGCTCATAAACGTATAGCCCCCGTCAGTCTCAAAATTTATAC
-GATAGACACTTTTTGGCGTTTATCGCCTATATTCCGTCAAAAACCATTAT
-TCATCATTCTTTCAATGTTGTTTTTTTTAAGGCTAAAAAACTTTCATGCA
-AATTTGTTAGCCGTGTCGTGGTTTATACGAAAATTTCAGAATTTATAAAA
-TAAAGGAAAACGAAAATGTTTCTATATACCCTATTTATGTTCTCTGATTC
-CGAATACCAATGTGAAAAATTCAAAAAAAATTCCCTGATTTTATATAAAT
-TTTTGTAAGCGACAAAAATTGTCGTTTGAATTTCACACTTGGTTACAAAA
-ATTTATGAAAATGAGGAAAATTTGTTTTAATTTTTTCACATTGATATTCG
-GAATCAGGAAAATAAATAGGGTCTATAGAAAAATTCCGAACCTTCACTCC
-TTCTCTGAGTATAATAAATTTAAAATAAATACAGAAAATTTCAGTTCAGA
-CCTCATTAAATTTGGGTATATTTCTAGGATCCGAGTTTTTACACCAGATT
-TACAAACTTTTAGCCTTTCACCGCCTTTTTATGCGCATTTCCCATCAGTC
-AACTCCAAAAAAATCGCAACTTTTGCCTCATATTTCAAGAATATTCCCCT
-TTCTCTCCCCATTGAAAGTCATTTTCGAAACAAGCGGAAGATTCGTCATA
-TGTGGTAATGTGTGGCGTGCGTTGGCAAACAACAAGAAAGAATCATTCTC
-TGAAAACAAAAAGCGTTTTGGGTGCCAAAGTAATATTGAAAATCTGCCGT
-GTTTTCTCATTTTCCATCAAAAGAAAATGAGAAAAAAGTTTCGGCGTTTT
-ATTTGATTTCCGGGAAAGAAGACTCGGAAAAAGATTTAATTGAATTTTTC
-ATAGCAAACCTATATTGCAACAACTTTCTAAAAGGTCAGAAATTGCCGCG
-TAGCCTAGAAAATTGGAAAACTCTTCCAGCTGGTATTATTTCAGACATGG
-TGCATCGAAAATTCGAAAATTACAGAAATTAACATTTTGGAGCATCTGCC
-AGAAAATTGAGATTACAGTACCCCACTTCTGCCGAGAAATTCGAGGTGGA
-AGAGGTCTTACAAAATTTTCGGTCACGTGAAAATGGGAAGCGTTCAGGCT
-CCACACGACGGAATTCACCTAGTTTTCAGGTGAGAAGATATCGTACGAGG
-AGAATTGACCTCCAAATCCTGATCGTGACTACAGGTCGTCGTTCGGAGCT
-GTGGAAGAGTTTTGAAAATCTTCGACCATGAGAGAAATAGACAGGACGAC
-CAAACATTTTCAGTGGAAGAGCTTTTCCTAGGCCATCAGGATGCTATTTC
-GACAGAGCTGAGTTATCCTCAAGTCGTTACGAGGTGTGGAAAAGTTTTCC
-AAAATCCCCGACCAGGTAGAAAATGAGCACACCGATTAAGTTTCTCCAGT
-GGTAGAGTTTTTTCTAGGCCATCATTATGCTATCTAGAAAAAAGCTTCGG
-CCATGGGGTTTTTAGGCCGTCTATTTATTTCTCATAACTTTCTCAGAAAT
-TCGTCTATTTCTCAGAACCCCCCAATGATAAGTTTTTTGCAAAAAAAGTT
-CTGCTTTGCTCATCAGCCGTAATCAGGTGACCTCATTAGGCCTACCCAAA
-CACAGATTTGTCATTATTTTTCAGACAAAAAACACGAAAAAAATCTTCAC
-GCATGGGGTGATAACCTGATTTTAAATCTTACTGTGCCGGCTGGCGCGGC
-GAGCTTCGATCACTGAGCCGAAAGATTATGAAAACTATGGGAATGACGGC
-GTAGCCTAGAAATCGTCCAGGCAGAGATTCTGTCTAATTTTCGAGCATAT
-ATCTCCCAGTTTTGTTATTAATTTAAGTAAACTCAAACCTAGAAACAAGT
-AAAACGGGAGGGGGGGGGGGAATATCAGAAAATTAAATCTTGCGACACTT
-TTCCATTGATACTTTCAAGGTAATGCCCAGAGGTGTGCGGCAAATTTTGA
-AACTTGCGCATGCCGCCTTTTTTTTTTTCTAGAAAACAGTCAGAATTTTT
-TGTCGAATTTGTTGAAAATTCGCTAATATACTGTGAGTTTAGAAAAAATA
-ACGAAAAAACTCGGAAAAGGAGGAAGAGATCTGAAATATGTAGATTTTTT
-TAGAAAAGACCAGAAATTACTGAAAAATTGGCATTTTTCGTCGAAACCCC
-AATATACTAAATTATTCGGATTTTTAGAAAATTTTCAAATTCACCATACA
-GTGCATTTTTTCCTACTTCTACGACTTTAAAGGGGGGAGCATTTATGCGG
-AAGGGTCTTGCCGCGCATTTAGTCATCATTTTTAGCAGTTTCTGTGTAAA
-ATTCGCGTAGATCACATGAAGATCACAAAATATTTATCCCATATTTCGTA
-TTTCTGTTGCTTTTTCACAAATTAATTGTGATCTACGCGTGATCTCCGCG
-AATTTTGAGCAGACTTTGTTAAAAATGATGACTATGTGCACGGCAAGACC
-CTTCCGCATAAATGCGCCCCCCTTTAAAGTCGTAGAAGTGGAAAAAAAAT
-GCACTGTAGCAAAAAATCGAACATTTCTGTTCGATTTTTGAATTTCTCGA
-AATTTTTTAAAATAATTTTTAAAATAACATTTTTATTTTATTTCGAAAAC
-TACCGATTTTAGAAAAATTCTAAAATTTCGATTTTTTTTGTTGATTTTTC
-GATTTTTAAAATAAAATTTCATAATTTTTTAAACCGATCTTTCTTGCTTT
-TCCTGAAAAATCGATGATTTCTATACCTTTTTCTTCAGTCCTTCAATAAA
-TCGTTTCGACGCCGATATGTCGGGCGCGTGAAGCGCTTCGAATCCGCCGA
-GCATTCCGTTGACGTCCTGGCTCGCGCGGCTCCAGTATTCCTCCGCCTGA
-AAGAGAATAGTTGAAAACATTGTTTTGAGACTTAAAAATTTTTTTTTTAG
-TTTTTTTCAAAAATTCTTACATGTTATAGAGTTTTTTTTTCAAATTTTCA
-GCTTTTTTCAGAAAAACTTAGTATTTTCGATAATTTTAAATAAAAAAGTT
-TTTTTTCAAAAAATGTTTCGGTTTTTTTTTTAATTTTTGGTCTAAAATTC
-TCCGCAAAAGATTTGCGTGCTGGCCGAACTTTTTGATTTTGTACCTTTTC
-ATAAACATCTTCACCATTGTGAATTCTAGAAGATGATGAAGAGCTCATTT
-TTGATGTTGTGACAGCTGCTCCGAGCAATCTGGAGACTTTTGTGACGAAA
-AGACGAGAGGTCACGGATATGATGATGATACTGGAAATGAGATATTTATA
-TTTACTAGTTCATCGGGAAAATTATTACGAGAAAGATAAACAGACATGTG
-CGTTTTTTTAATGGAAGAGAAACACAAGAAAAATCTGGAAAACTAGGCCA
-CGGCTATCAGTGTCGATTTACGGCATACGGTCTCGACACGACTATTTTTG
-TTAAATGTGAAGGTATGCACCTTTAAAGAGTACTGTAGTTTGTAACTCTC
-ATTGCTGCAACATATTTGACGCTCAGCGAAAACTACAGCAATTCTTCAAA
-AGACTACTGTAGCCTTTGTGTTGACTTACGGGCTCGATTCTCGAAACGAA
-TTTCTGCTCGAATTGTGACAGCCATATTCAATTTGGTATAGTCTTTTCGT
-ATTTTTTGCCATTTTTCTGTTTTCTTCTAATATTTAATCTATTATTAAAT
-TATGTCCGTAACTCCCTCCAAAATTAGAACTGCGACCGAACAGAGATTCG
-TTCCGCCCCATATTCCGGCCAATCAGATCGAGTAGGCGGAGTTCGAAGTC
-GCTGATTGGTTTGAAAAGTCGCGGAAATTTGCAAGTTTTAAGGTAGCGAA
-AACTGATGACTATTGTAGCGCGCTTGTGTCGATTTACGGAATCTCGATTT
-TCAGGAATGAATTTTTAATTACATTTTTTCGCTCAATTAATATTCTAAAT
-AAATAAATAAATGATTTGAATTAATTTAATTTCATTCGAGCCCGTAGATC
-GACACATGTGCTACAGTAATCATTAGTTTTCGCTACGAGATATTTTGCGC
-GTAAAATATTTTCCCGTAATAACTCTACTCCGACAAACATTACGACCTCC
-ATGGAGGCCTCCAGGTATAGGTGAGACTCTTGTATTTCCAATTCAGAGAC
-AATGCGTCACTGGAAGAGAAAACGAAGCGGAAAAAAAAACACGGAAACCC
-AAAAATAGTGTTTGCCCCGCTCTATTCTTCTCCAATAATTTCTGTGTCTA
-ATTTTGAAAGACTCCACCTGTGTATGCCTTCTCGACATAAACCCCCCCCC
-CCCCCCCTATCTTACATGGTACTGATAACACTTTCAGTCTTTCACACTTT
-TGGCGCGCAACGCCGCTCTTTTTTCGCGGCGAGCTGATGACGTCATCAAT
-TTTTCATCGCTTTTGATTATCTTCAATGTTCTAGAAGGGCACATAGGTCA
-TCCTTATTTTTTCCTTCTCTTTCTCGTGACGGCCCTTGTTGCGCATGCCC
-GCCCCCTAGAGCAGGGCGTGGCCTGAACGGCGGCTCCGAGAGCTACTCAT
-TCTTGCCGCGTCACCCTCCAGCGCCACCCAAACTTCTTCGGTTCTAGAGA
-TCGAGAAGAACGTATGATTTTTTAAAATTATAATTGTTTCTTTCGAAAAA
-AAAAATTTCATTTACAGTAAGCCAAACATACACAATCAACATGAAACTCG
-TAATTCTGCTATCTTTTGTTGCGACAGTTGCGGTTTTTGGTGAGTTTATG
-CTTTAGATAATACTTTTCCGCCAAAAATACAGTTGCCGGTCTCGGTATGG
-CAATATTTTTGTTAAATTCGAAAAGCAGTGAGTAATGTAGTTTCGAATTT
-TCGTTTCTGCTTAATTTTCATCAATTCATCGTTTTTCTCACGACTTCTTC
-TTTATGAAAAATCAATGAAAATTCTGACTAGGTCAGCTTAGGGGTGAGGT
-ACCTAGAGACGCCACATATGCCAAACGGAAGCTGAGATCATTGGCTACAA
-GAATATGCTTTCAAATTCTGCAACGGACCTCTGGGAGTCTGGAAATTCTT
-GTCTGAAATTATGCTTTTGAATGCTCGAAAGTGGTAAGAATTTAGAATTT
-ATTACAGAAAAACGTTTAATTAATAAAATTAGTTTTATACTTGAAACAAG
-TACTGTATGCACTGTATCAAAACACATTTTCATCTTTTCTAGGTATTCAA
-CTTCACGTTTTTCTGTAATAAATTCTAAATTCTTACCACTTTCGAGCATT
-CAAAAGCATAATTTCAGACAAGAATTTCCAGACTCCCAGAGGTCCGTTGC
-AGAATTTGAAAGCATATTCTTGTAGCCAATGATCTCAGCTTCCGTTTGGC
-ATATGTGGCGTCTCTAGGTACCTCACCCCTAAGCTGACCATTCCCTAGTG
-AGCAAACAAAATTTTGAAATTACAGTACTATTTAAAGGCACATTGATTTT
-TTGGGTCAAGCAAAAATTTGTCGTGTCGAGACCGGCTACGGTATTTTCGC
-GAAAAATCGCAAAATCTTGCGGCTGGGATATACTTGTGCGAAATACTTTT
-TGCATTAATTTTGAGCAAAATTATTTTTTTTAGACTTTTTGAAATCCAAA
-TTTTTTGGATTGCGAAAAAAACCTGTGTCCGGTTGTTTCATTAGGCCAAC
-AAAGTTCCTGGAACACTGATGAAAACCATGATAGAGGCGGAGCATAATAT
-CGATTTTTCGTACTTTCCTGTATTTCTTCTTCTATATGGCCGAGTAGAAC
-AGGATTAGGGGTAAAGTCAAAATTTTTCTCATATGGATATCATATGGATA
-TCAAAATTTTTCTCATATGGATATGGAGAAAATTTTTCTCATATGGACTT
-TGAAAGTTGAATCACTTGACATCTGGGAAATTAGTATTCCAGGCGTAAGT
-CGGATCTGTTAGAAACGGAATACTTATAGGCTTCGTGAATTAGGTAGACT
-TTCAATTAATCTGATCCATGGGAGTCAGACGCGGTTTCCAGGCCTGACGC
-CTGCCTCCAACTTGCCCGCCTCACGCCGGTCTCTCGCCTCATTTCTGCAC
-TGTGACGAGACAGACGAAGGTCGCCTTCTGGCGCCCGCATGGAAATCCTA
-CGAATATGTCAGCTTCTGATGGGACTCCGTAAATCGACACACAGGGGTAC
-CTCAGACATTTCCCTCCCCCTTACAAATTGTTAGGACAAGGAGGGGGAAT
-TCATCTCCACTCGAGACACACATATGTTGTCGTCAGTGAAGTGTAAAGAT
-CTAAACGATTGCGTGTATGAAAAAGCACTCTATGATCACCTTTTTCATCT
-TCCTACACCCTTTTTAGGTGTGGTGCCCATCGAGCACTCACGCCAGGCAG
-GGAGAGCACCGGTCCCTGACTAATGGGATTCGAATGTTTTAGACCGGAAA
-TAGGAGCGATGAAAGAGCATAGAAATGATCATTTGGAAATCACGTTTAAT
-TAGGTTACGGCGAAAATTTGCAAAAAAGAGCAGGAAACTTGGCTCAAATC
-CTTCGAAATATAACAACTAGGACTTCCATGTAGGCGTTAAAGCGCCCTGT
-CTCTCACCCCAATCCGTACCTTAAGCTGAAACAAACGTGAACTTTTTTCA
-TTTCTTAAAGGAGTATCGTCAATGGGAAAATTGTTTTAAAATGTAGTATT
-TGTACTTCAACTTCCAATTATTGCAAAAGAAAAACGGAAAAAATCCGTTA
-ACATTCAGCATTTTAAGTCGAAGAAATCTTTAAAATTTAACTAGAGAAAT
-CCTAGGCCACGACGCTCATTCGAATTTTAATTTGTTTTGATATTGTATTT
-TGAAAAAAAAACTTAATACAATTCCTTCTTCCCAGTTTTCTATAACTTTT
-TGAGAAAAAAACGAATTAAATTCCGAAAAAACTACATTTAAATCAATATT
-TTGTTTACGAATATGGCCTAGAAATCGCGTGGTGGCCTAGGATTCATTTG
-CGCGCGAAATTCAAATTCCGTCACTTTCGTCGATTTCAACGGCTAAATGC
-TGAATGTCAACGGATTTTTCCCGTTTTTCTTTTGCAATAATTAGAAGTTT
-GAGTACAAATACTACATTTTAAAACAATTTTATTTTTGGTATTTTGACGA
-AAAATTGATTTATTGGTTTTTTTGGTTGTTTGGGACCAAAAAATCCAAAA
-AAAATGTTTGGCGTGTCTAGTTTCGACTCGAGACTATTCTGTATTAAAAA
-TACATTAAAACATGTATTTTAACACAGTTGTGACGTCATAAATGTATTTT
-GATACATTTTGCAACATTACTTAAATAACCCCATTAAAAATTAACCTAAG
-CATCAAAAATTTTTTGGTTTTTTTGGTTTTTCGAAAATTTCAATTTTTTT
-TGTTTTTTGGTTTTTTTTGGTTTTTCAAAAACTTCAATTTTTTGTTTTTT
-GGTCCAACATTTTTTTTTGGTCTCAGCTCTGCTGCCTACCCTAGAAGAAC
-TAATAGCGCTTCAAAAACTGATGAAAACGTTCAAATTTGTCGAAATATTA
-CGAAAATTTGAAAAGTTGGCTCAAATCTAGATTGAATCGGCCGATTTTCC
-ACAAGTTTCCAAGTTTCCACAAGTCGCCACATATCCCGAGAAAAATCGAT
-TCAAATTGTTTGAAAATTGGAATACTGCGAATTTTGAACCAAATTTCCCT
-GGCTTCTCTGTTGAAATACTTGAAAATACCGCGAAGCAAACAAAAAATCT
-AATTATTACGTGAACACAAAATTCTGAAAATGCGTATATATTGCGCAACA
-TATTTGACGCGCAAAATATCTCGTAGCGAAAACTACATTAATTCTTTAAA
-TGACACGCTGTATGTGGTGATTTACGGGCTCAAAAAATTATTTTCGAAAA
-TCAAGCCCGTAAATCCACACGTAGTAATTATATAAAGAATTACTGTAGTT
-TTCGCTACGAGATATTTTGCGCGCCAAGTATGTTGCGCAATACGCAACCC
-CATATGTTGATATATACTGATGTGAGGATAAAAAACAACACAACTTTCAG
-CGGCTCCATCGGCTCCGGCAGGTCTCGAGGAGAAGCTGCGTGCTCTTCAG
-GAGCAACTGTACAGTCTGGAGAAAGAGAACGGAGTTGATGTGAAGCAAAA
-GGAGCAACCAGCAGCAGCCGACACATTCCTTGGATTTGTTCCACAGAAGA
-GAATGGTCGCGTGGCAGCCGATGAAGCGGTCGATGATCAATGAGGATTCT
-AGAGCTCCATGTAAGTTAGTGGTGGTGGCCGGAAAAGAGAAAACTCGGCC
-AAGCTGCTCGGAGTTTTTGAATTTTTGATAATCCGAAATAAAAATTGATT
-GCTCGAAAAGGAACAATCTTTTGGAAAAAAACGAATTTTGTCATTTTTTT
-CAGCAAAAATTGATTTTCGAATTTTTCCAATAAAAAATCGATAATTTCTC
-CCCGTGCAGTGGAAAACAAACAATATTTTTTTGTTGATCGTTCTCTTCCA
-AACCCGGAATAGGTACACACATTCCTGCGTCATCCCATTCTCTTATCACA
-CTTTTTTTTCGAAAATAAAAGTGTAGAGACGGAAAAGTGAGAAAGGAGTC
-AATTTTATGCGAAATTTTGCATGATAATACACTCAAATTAAAAAAACTGC
-GTGGCGTGCACTGCAGAAAACCTCATATTTAGGCCCCGCCTTTTTCTCGT
-CCACTCACGGAGAAAAGGCAAAAATTTGGGGACCAACCAATATCAGGCCG
-CCGACATCCTACGGGTTCCGCGCGCCGCTATGTTTAACTCGCTGTGGGTG
-TGGCGAGCTGTCTCCGCCCGCTGCGAGTTAAACATAGCGGCGCGCGGAAC
-CCGTAGGAAGTCGGCGGCCTGATATTGTTGGTCCCCAAATTTTTTCCTTT
-TCTCCGTGAGTGGACGAGAAAAAGGCGGGGCCTAATTATGAGGTTTTCTG
-CAGTACACGCCACGCAGTTTTTTTATTTTGAGTGTATAGGTCTCGATTCT
-CGAAAGTATGACAGTTATTTAAATGATGAACTCGTGATGACTGTTAAATT
-TTTGGAAATTTCGGGGGAATTATATCGATTTTTCGATAAATTTACAGGAA
-AAAAGTCCAAAATCTAGGTATTCCATGGTAGGCAGGCGCGATTTCTTGAC
-GCCTGCCTGGAATCTGTCCGCCTCACACCAAAAAATGTCAATCATTTTGC
-TGAAAACCAAATTAAGAAATGAAAAAGTGCACTTAGAGATGATGACGGAG
-GTCGCCTTAAGGTCAGACAGGTTAAAAAACCGATTTTAGTTGAGTTTTCC
-CGAAATTTTCTGAACAACCGAATTAGAAATATGCTGCTTGTCATTTTTGA
-GTAAAAATTAACGAAAACTTCGACCAAAACCACGAAAAAAATGAAGAAAA
-TAAAGATTTTTCGAGAAAATAACAACAAAATCCAGCAAATAGTGAAAAAT
-AGTTTTATCCGAGAAAAAGTAGTTTAGACGCTATGAACTCTCGAAAATCA
-GATTTTTTCAATCTAAAAGCCATAAAATTATCGATTTTTTAAAAATTCTC
-ACTGAAAACCGGCGAATTTCAGTGCTCCACGCAATCGAAGCCCGCTTGGC
-CGAAGTGTTGAGAGCCGGAGAACGCCTCGGAGTCAACCCGGAGGAAGTTT
-TGGCGGATCTTCGTGCTCGTAATCAATTCCAATAAATATTCTTTGCCCTA
-AATACTTTAAATTATCCATCTGACAACTAAAATTTCGGTTCTTCTTGGCT
-TCTTCTATTTGTGAAATGGTTTATTTTCCCCCGAACTCTCAAAAGGTTTA
-AATATTGTTCGATTACCCCTTTTTATCAATTATTTTCTTCAATTTCTTAT
-TTATCATTATTTTTCTAAACGAAGACGGATGTGATTTTAAATTATGTTAA
-TGGACTATTTTACAAACTGAATAAATTCAGCATGTTGGCAGGTTTTTTCA
-GTAGTTTTTGAGTGAAAATAGAGGTAAAAAGACAGAAAATCAATAAAAAA
-TGAAAACAAAACTATGAAAAATGGTTGAAAATCGAGCAAAAATCGTTCAA
-AAAAAAATAAATTCAAAAAATAATTGCGTCGAGAAACGCGTCAGTAGCCG
-CTCTCTGCGTCTCTCACCCTTCAGCACGCGGAGAGAGCCACGAGAAATGC
-GCAAAGGCTAAATTCGGCGCGGAAAATCATTTTTCAAAATAAATTCGACG
-AGAAAATCAATACTTAAGTAATTATCGATTTTCAGCTCGTTCAAAAAATT
-TTCAGAAACGTTTTAGTCGTTTAAAGGTTTTTTTAAAATTAAAATCGTCG
-GAAGTAAAAAAATAGCGCGGATGGAAATCTACGGAGTGCGGAGCGAACAA
-ACGCGCGGTAATTCAAATGGGTAGAATAGTCAAAATTGAAAATTAGCCAG
-CATCGACCGATTTTTTTAAAACTTAATGGATTTTTTCGTTTTTCTTTTGT
-GGTATTTCGGCATTTAGGATTAGATAGCACATTTTAAAGTAAAATTCCCA
-TCCAAGCTACTCCACCTTCTCCAGACTGTACAGTTAAACCAATTTGAAAA
-GTGTATTGTATCCCGTTTTTTTTTCTGAACAATTTTGAAAATTTTTCGTT
-TATCCAGGATACGATAATCATGATTCAAATTCGTTAACAAAAAATGAATA
-TATGAGAGCGATTAAAGCATTTGTGTCGGAAAATATGGGTTAAATGGGGA
-GAAGGGGGCGGACATTTGGATGGGGTACAAAAAAATATGCAAAAAATGGG
-CTAAAAACAATATTTTCAAATTATGCCCGACAAAGGTTCAAAAGTCAATA
-TATAGAAATGAGAACATGAGTATTATGCCACGTGGCGGGAAAAATATGTG
-GAATGTAATACGATGAGATCCTTGTGAATACAAAGCTTGTGACGACGTGG
-CCGAGAAGAACTTTTTAAGCCAACGAGAAAAAAGGGGTTCAAGGCCGAAA
-TTTTTTTTGGGCCACCTATTAAGTTAAATTGAAAATTTAAAAAAAACACA
-GCGGATCCAATTATTTGCCGAGTTTTGACTTGAGCTCGGCGCGATACGTG
-TCGATTGACTGAAAATATTGTTTTTTTTTATTTCCGAATAAAAAATGGTG
-AGTACCTCCAAAATTAGCTTTTCATTGTCCATATAGAACTTTTTGATTTG
-TTCCACAGTTTTTGTGGCCATCAACTCGGCGATCAACTCGAAATTGTCCT
-TGTACCAGTGGAAACCTGAAGGAATTTCGGATGTTTTTGCTTAATCATAA
-TCATAATAATCTTAATCATAAGACTTGGAAAATGCGAAATTTTTCGAGAA
-TATTCAATTTATCTTCAGATTTTATTGCAACAAATCGATTTTCAACATAA
-AATTAATTTTTCCAACTTTTTTTCCCAATTTATGAGAGTTTAAAGATTGT
-TTTAAAGCAAACCGCCAACTTTACATAAAAAATTAAAATATTGTGAAAAA
-AATGATGAAATTTAGCAGATTTTCTGATAAAAAATTGAATTTTTTTGGAT
-TCGCGCTTCAATTTCACATTGTTCTTTTAGAAAAGTCGAAATTTTATATT
-TCCAATTTTCAGATTTAAAAAAATTTAAAAAGGAATGAACTTTTCCAAAG
-AAAAACTGAATATAACCAGAAATTGTGATTTTTCAGCATTTTTTTTTAGG
-TTTGAATTTTTTTTTCATGATTAATCACGTGAAAAGTCAATTTTACCGCA
-AAACATTTAAAAAATCAAGATTTTTCAATTTTCTCTGAATTCCTGCAGAT
-TTTTCGATGAAAAATTGAATTTTCCTTGGAATTTATATTTTTCGGGTATT
-TAAAGTTTCGGATATTAAAAAAAATTTTCAATTTTCTCTGAAGTTATCGA
-TAAAAATTATTTTCTGCAAAAAATCTACTTTTTTTCGTTGAATATTCCGG
-AAAAAAAATCAGAATTTCAAGGCACATTTCCTTTTCTAATCTAATTCGAA
-TAATTCAATATTCTTTTAAAAATTCGGGGTAGAAAAGGAATTGTACCAAT
-TTTTATTTTTAAAAGTTAATTTTTCTAATTTTCAAAATTTTCTTGAATTT
-TCGAATTACAGATTTTCAAAAAAATTTTTTTTGTTTTTTTTTCTCGAAAA
-TTTGAAATCCATACATCTAATAGCATTCTTCTTTTCCTCAGGACTCCAAC
-CATAATTTATCCTGACTTTTCCAGATCGATTGCCATTTGTTGCAGTAGTA
-TCTAGTTCAGGAGTAAATCTCTCGAATCTTCCCTTCAACGCCATCATATC
-TTTCTTCCAATTTGCAATTTCTCCTTTTGGTACACGGCTGTATGTCATTG
-TTGCACGGAACATTTGTTGACGGGCTTCTTCATTCAGAATTCTGGAAAAA
-TTGATGTTGTGCGATTTTTTTTGGTTAAAAAAAACAATTTTCGTAAGTTT
-AATTAACTAATATTTTAAAAAATCTCTCATTTTCTGAGGCACCACGGATT
-CAAGATCTGGTGGGATTCCGGATCTGGCACCGTGCCAACGCATTAAATGC
-AATTTTTCTGAAAAAAGGGCAACGAAGATCCGATTTAAAAAAATTTTTCA
-ATTATTTTTCAAAATTTTCACTAACTATAAGAAATTAGAGATTTTTCACA
-AAAATTCCAGTTTTCTGTTAGAATTTGAAAAAAAAATTGAATTTTTCCTA
-AAAAATTTGTAATTTTCCGATATTTCAAGCTGTCAAAACCTAAAATCTGA
-AAACTGAATTTTTAAAGGAAAAATTTTGAGCATTCTTATCAAAAAATTGT
-TTCAACTTTTTCTCAAAATGTTTCAACCTTTTTCTTTCTAAATTCTGAAA
-AGCATATCTCAGCTTTTGCTAAACTATTTTTTTCCTCAATTTTTGAGAAA
-ATTAAAATATAATATATAATATAGTAAATATTGCTTATTTTCTAATAATT
-TTTGGTATTTCTATTCTTTCGTTTTTTTTTTCAAAAATTCCAAATAGTTT
-TAAATGTTCATATTATTTTTTTTGACGAAAATAAATTTTAATTTTAAACC
-GGAAAATTGTTTCGTAACTTTTTTTTTCAAAAAATTTGAATTTTCGACAT
-GAAAGATGTAAAGTGTAATTTAAAAATAATAGTGCAGGTATTTTCAGTTT
-ACAGCAAAAGTCAGTTTAAAAAATTTCGACTGGTTTTCAAAATGAGTTTC
-CTTATTTTTTACACGTAGAACTTTTTTTATTTTCCGATTTTTTTTGTTGC
-GCAGAAATTTTTTTTCCGCAAAATCAGGAAAAATTCAGAAAAAGACAGTC
-AAAAAATTGTAGATACAATTTTTTGACTGTCTTTTTCTGAATTTTTCCTG
-ATTTTGCGGAAAAAAAAATTTATTTTTTCATGAATAAAAATCGAATACCC
-ATCCAATTCCACAAACTTACTCGTTCTCCTCCATACATTTCGTTTGTTTA
-ACTCTCCAAACAAGTGGAACACACATATGATGTTTTCTCTTGATATTATC
-AATTAATGCCAGTGCAGCCGGTGTATCGAAGCACCGTGTCATTCTGCACG
-TATTCTCATCGATTGGATCAGCTTCAATCGATTGCTCCACAATGTAGGGG
-CCTGATGGTTTACGGAGAAGGCAGTCGTCTGGAGAAAAATAGAATAGAAT
-AATGATTTTTAGGTTATTTTACGTTTAAAAATCTAATTTTTAAGACGCGT
-AAACGTTGAGCTCATTTATAAAAATTCGGCAAACCGGCAATTTGCCGAAA
-AATTTCGGAAAATTGTCGGTTTGCACATTTTTTCTTGAAATTTCAGAACT
-TCGATTTCAAACGGCAAAATTGTATACATCCTATCAAAACATCAATCTTG
-AAAAGCCAGTAAACTCTATGAAAATGTCTAAAGAAAAGAAAACGGTAAAA
-AAATACAGTTTTAAATGTTTCCGTCTTATTAATAACAAAATTCGACAATT
-TGCCGGAATTGAAATTTTTTTTTCTCCAATTTCCGAAAAAAACCCACCGA
-CCACCATAATATCATCGTCTTCTTCTTTTTCTTTTCCAATTCCAAGCCGT
-TTGATCGCTTTTCCGTTGGCTGGCTCCATGAGCTCAAGATATCCGTATAC
-ATAAATTTTCATGTCTGAAAGAAAATTCAAATTTCTTCTGGAATCAGTTA
-TTCGAAACTAACATTCTGGACATAAAACTCGTTGCCGTCGTTTTGTCAGT
-GCACGGAGGCTTGCCGGACGTGGAACACGCATCAAACGGAAATAAAGGAT
-ACACGGTTTACATTCGTGACGCGACATTACACGATTTAGCTTAAAATTGT
-GAAATTAATTTTTTTTAATAGCTCTTTATTTTTTTGAAAATTTCTCCCAT
-GCTTTTTCCATTTTTTCAACGAGTTTCCTTATTTTTTGTCCATTTACTGT
-AAGTTTTTTTTGAGAATTTTTTTTTGTTAATTTAACATTTTATTAGCTCA
-AAACATTTATTAGCAAAAATTTTATTAGCAAAAAAATTTTTTAATTTTTT
-TAAATTAGCTCAAAATTCTCGAAATTTTAAATTTTTAGGGTAAACAATAT
-AAAACTTAGGGAGTTTTGAGCTATAAAATGATAAATTGATTTTAAAAAGG
-ATGAAAAACTTATTTTAAAAAACCGACAAAAATCGACAAAAATGAAGGGA
-ACAGGCAGCAGCTTAGCCCCATGCTTAGCCAGCAGCCCCGTAGCAACCCA
-GTATCAATAATATCCCGTGCCAATTTTCATAAAACTGAATATAAATTGGG
-TTGATGTTGCTAAAGGGCTGCGAAAAACTGACCTGGGATGAAGCTGGGCT
-GCAAGGGGCTGCGAAGTGCTGCGAGGGCAAAGCGCTACAGTGCTAAAAGG
-GGGCTGAGCCCAGACCCTCAGGAAAAAACTCATACTCGCAGCCCTTCGCA
-GCCCACATTTGCGCTCTGATCGCGTGCTATCCGCGCGCACAGAATTTCGA
-AAGTATTTTCCAAATTCGGAATGCGCGCGGAGCAGACGCAATTAGAGCGC
-GGATCTGGCACGTAAGGAAGAAGTGTGACTGGAGCACGAACCAGTAATCT
-AGTCGCGCCCCGTCCGCGCTCCAGGAGGAGCGATTTGCCGAGCAGTTCAG
-CCCTTCGCAGCCCTTTAGCAACAACCAAATTTATACAGTTTTATGAAAAT
-TGGAACGGGATATTATTGATACGCCTAAGCAGCCCTATTAAATAGTGATG
-AGGGCGTAAATGAAATTCGCCATTTCCAGCTAAAATATAAATTTTTTGAA
-TTTTTTAACATTGATATTCGGAATGGATTCAGCAGAAAATTTGAAGTCAT
-TTGAAAATATTTTCCAGATTTCGGTACTCCACTTTTAAAATTGAATAAAA
-CTGTAGTCTTTATTCAATGTTTCTTCAAAATTTAAAAAGTAGAATATAAC
-TGTGAGAAAATTTCCAAAATTGTCAAAATTTCAAATAGCTGAAATATTTC
-ACGGCCCGGCGGGGGGTACATGGATGAGAATTCTCTACCGTATTCCAATT
-TGGCTGACTGCGTGCTCAACGTTGAATACTCAGTGTAAACTTTCGTACAC
-CGTTGCGTACTGCACAGCGCGCATTTTAATTGACGACATTTAGCAAAAAT
-TGAACATAAGATTTTTCGGAATTATGAAGCTCAATTTTCACAAAAATAAT
-GAGTTTTTTGTAGAATTTATGAAAAAACGTGAATATATAGATTTTTTGTT
-CATGATATTCAAGAAAAAGCGATTTTTAGTTCTTCACAGAGGAATCCTCT
-CGCATTTCACTTGCTCATGATGTTTTTTGCTCCACTTTAGGACGATAAAA
-ATGCGAATTGTTGATAAAATGAATGAATAATATAAAAAGTGCAAATATGA
-CTTCAGCAAGTGTTAAATCCCAAATTTTTCCTGCGATTTTCTGCTAGATT
-CCTGGTTTTGAGTAAACAGTCTGATATATTCATGATTATAATGATAACAA
-TAACGAACATAATAATAAAAATGGAGAGCACAGAGAAACAACAAATTGCA
-AAAACAGCAACTGATATCAGAATTAACGACGACCACGGAAACCGCCTCGG
-TCTCCACCTCGCCCACCACGGAAGCCACCACCTCTGTCGCGTCCTCTGAA
-TCCTCCTCGATCTCCACCGAATCCACCTCTAAATCCTCCATCGCGGTCTT
-CTGATCTACCACGGAAGCCTCCACCTCCACCAGGATCTGTTGAAAGTCCT
-CTGAAGCCTCCTCGATCGCCACCTCCACGGAAGCCACCACGATCCGCGGA
-TTTTCCTCTATAGCCTTCGAGGCTTCAGTTGTACCCCATTCTTCGTTGGC
-ACGCTTCAGATCTCTACAAAAAAAACAAATTAGAAGCATTCAATTATCGA
-AATGTGTACCTATCCCGATTTATCGCAATCTGTCTATTCTTCTCCTTCTG
-ATTCTCAACTTCTTTAACTTGTCCAGTAGCGGCAGCTTGCTTACGAGCAG
-CATTTTCCCGAATCGCCTTCACCTCTGCCTCCTCAGCATCCTGTTGCTCC
-TTGACAATCGTAAGTCTTCGAATGACACGTTGCTCACTCTCCTGCTCACG
-ACGCTTTTTCATCTGCTTCTTCTTGTTTATAGTCACCGCATTATGCTTGT
-GATAGAGAACCTCTCCCTCATCGATTTCTTCTTCAATTTTGACGAGTTCC
-AGGGTCAGTCGGGTCCGATCTCACGAAGACGGACGTTGCTATTCTGGCCA
-ATTCCGCAGTCACGTCCTTCATAAATGTCTTGTGGAAGTTCTTCTTGCTG
-AGGGGGCTGCTGAAACCAATGTCGGCATGATGAGAGTTCCGGTCTTCTGA
-ATCCATTTCCTGCGTGGGCTGTGGCGACGAGCTGCACGTCTGAAAATCAA
-GTTTTTGTAATTTTTGGGCGCATGATATGGAGCTGAATCATTCGATTTTA
-GAATCAGCATGCTTTTATTCATATTTTAGGATCTTTTTAAAAAATCTGGA
-CCAACAGTTTTCGAAAAAATTTAATTTTTGTTCAGAAATGTGAATATTCA
-CTAAATCGAAAAAAATAATTGCAAAATCCGTCAGCTGAACATTCAAAACT
-TATCAATTTGAAATCAGCATATTTCAGTGTATAATTAAAAAAGTTTCAAA
-AATTCTGAGACCAATTTTTATTGAGAAAAATAATTTTTCGCTCGAATTAT
-TGAATTTTCACTAAATGCAAAAAACAGTAAACTTGGGCCCATGCTACAAG
-CCTGAATCTTTCAAATTAAGAACCAGCATGATTTTTTCAATATTCTAGGA
-CGTTTAAAAAAAATCTGGACCAACAGTTTTTGAGGAACGTAATTTTTTAT
-ACAAAAATGTTCTGATTTTTCACTAAACTCAAAAAAATAGTCAAGTTGGG
-CCCATGCTGTACACCTAAATCATTAAAATTCAGAACCGCCATGTATTTTT
-TCTTACCAAAGGCTCTTTAAAAAAAATCTGGACCAACAGTTTTTGAGATA
-TTTAGAAAAACAACTCACTTTTCGACGTTTTTCGCCTTTTCGTGGCTCAC
-CCGGTTGATTTTTGCGGCGATTTGTGGTCTTTCGCTGAAAATATTATTTT
-TATTTCAATTATTAACGAAGAAAACAAGAAAAAACGACGAGAAAACATCA
-AAAAAACGCGAAAAAACATCGAAAAACCACCGCAACCTCATGAACAAAAA
-AAAAGCATTGCAGCCGCGGGACTAGTTTTCGCAACTTTCTAGGCCATGTC
-CCGTTCGCCGTGCCGTGTATTTGTTTAATTCCCTTTTTGGAAAAAGTCAA
-CATATTTTTCTAACAAATCGTTTTTCTATTAATTTTTTTCTAAAACTCAC
-AATCAACAGATCACTTTTTGCATTGCAATTCTCACAATATCCCGACGGAA
-CCCTCTCCAAATGATTGACCTCTTTGAATAGTTCATCATAAGTGTCGGTT
-TCATTCAAATGCACATTAATCATTGTTTTATAGTTTTGCACTTTTTTCGT
-GTTGTAATAGTATTGGATAATGGAAGAAAGCGAGCGTTGGGGCATCTGCA
-AAAAATAATGAAATTTATTTTCTTTTTATGATTAAATTAAATTTTCAAAA
-ATTCCCTTTTTTTGACATATGCACTTACAGCCGCATGAATCTTCTTGAAC
-CGTTTTCCGAAATGAAAGAAGCAAGTGGAGAAAAGACTAATTTCTTCTGC
-CGTCCAATCATCATGAATTTCTTTTCTTCTCATCGCTTGAACCATCGCAG
-CGTCGAAATCATTTGACTGTTTGTTCAGAATGAACAGAGCCTGTAAAAGC
-AGTTAGTTTTTTTTTCAAATTCAAAGTACATTTCCGAAAAATAAAAAAAA
-GGCTTGATTTTTTAAAATCTCGAATTTTTATTATGGTCAATTGTTATTTT
-TTCCAGAGAAAAACTCATTTTCTCCCAATTTTCAGACGTTTCTCTCTAAA
-TTTGGTGTTTTTCCAATCGTACCCTATCTATAGGTAATTGATATCGTCCA
-GTAGCTTCTGAAATGTATTCTGTAAGCCGATTCTCGTTCATTTCGTCTGG
-AAACGCCCAAATTTGTTGATCTCTGCACGGTTCTTTTTCCAATTGCTCTG
-CAGTTGGCTGTATAATCGCCTGATATTCGGTTCCCACGTGGATTAGATTG
-TCGACGTTGGAAAGTGGATTTGCTGGAAGAAATTGGGAATTTTTCAAGGT
-TTTAAGTGGATTTTCAAGCTATTTATAAAAGCATGAAAAAGCTCAGAAAT
-GACTATAAAACCTTTTTTTACGTCGTATTTTTTTCAATGAAATTACCTAC
-TTTTAATTAATTGTTCGGCTTAAAACCAGAAAATTGTTTCATATCGATTT
-TCCCGGTGAAAATCGAAGGAATCGTCGCATTCTCAAAGTTTTTTCACCGA
-TTTGTTTCAATTTTAGCACAACTAAATGGAAAAATCACAAAAATTCCATT
-ACAGCCGATTTTCGTGAATTTTCCTACATTTCGAACTAAAAATTGTCCTT
-TCTTCTGTTTAAACCGGAAATTCTCTTTTGAAAAACCAATGAAAATTTGA
-ATTTTCTGGGCTTTTCTTCGGAAAATTATTCTCGAAATTTATCAATCGAT
-CCTTGGGCTTTTTTTGTTCCGCAGAGGCTGGCGGAGTTTACAAGCGTACG
-AAGTGGTTCAACTTTTATATAAAGCTTTATAAATGGGACATAGATGAATA
-TTTCGAATGCTAAATGCAAAAAGAATCAGTAAAAAAGCGCGCAGCCCCGT
-CCTTCTCTGACGAAAAACGCCGTTTAAGGATCGATTGCTAAATTTTGGCA
-GTAGTTAGAAGTGTCAAAATTTCTGCCGGAGAGTCGTCAAATTTCACTGA
-AACGTAACCCGGTAATTTCCACAATTAATGGTCGATTTTTCGCAAAAAGT
-GGTATGTTTGTCAGGATTTATTAGAAATTGTGGCTGTCCAGATTTTAAAG
-AGTATTTTTGGGCAAAAATGTCGAATTTTCTCTGAAAAAGTTCGATTTTT
-ATCGAAAATTCAGATTTTTTAGATAGTTTTCATCGATTTTCCCAGTTTTC
-AGCCTGAGAACTTTACTAACAGAAAGATGTGTCATGAGCACCACTTTCAT
-GATGCTCACGAGCTTCAGCTTCTTCATCTTCGTCCTCTTCATCCTCCAAA
-TCTTCATCCTCATCGCCCATTGATTCCCCAGACGTTGTTTCGCGTTTTCT
-CATGGATCTTATAGGACGAGCCATCTGAAGTTTCAATTTTAGCTTTTAAA
-TTCAATTTTACCGCTTAAAAATCGATAATTCTCCCGTACTCTGCTGGTTT
-CTTCTTCTTGTTCCGCCTGCTCCTCTGGATCATCTTCCTCCATTGGCTCC
-GGCGATGCATTCAACATATTCAAGCCTTCGTCTGAAATATCTGGCCAATT
-TATAGAAAAACCGACAAAATAATAAGCCTCACTTTCTTTTCGAGAGGCGT
-CTTCGTCAGATGACGTGTACGAATCCATTTTCTGGAATTTGAGGATTTTT
-GAATGTTTTTAAACAAACTTTATAGAGAAAACATTCGAAACACTAGAAGT
-TATGTTGAAACACGAGAAAATTTTTTAAAAATCCATGAGAAAAACAGTTT
-TGAAAAATCTGTTTTTGGAGGCTCTCCGGATTTTGAGGAATCGTCACCCC
-GGAGACGCAGATTCTCCGGTAATTTTTCATTCATATTTGAGTTTAAGAAC
-AAAACAGTTTAAAAAAATGTTTTTAGTATTTGAATGAAACTTATAATGTA
-TTTTTTCTTCCATTAAAACTTAAAAAAAACTACAAAATTATTATGAATCA
-AATTTGAAACCGTGAATCAATCTCCGCGGAAGGGCGAGTCTATACTGCTG
-CAAGCGCACTCTATCGCAAATGTACAATTGGCGGTTTTTCAAACAGGAAT
-TAATCGGATTCTCGTAGTTTATTTTGGATTTCTTTTTTCGGGAACATATT
-GGTGTTTTTGCGTTCAATATTCAAATTTAGAGGAAAACTGCTTCAAATAT
-TTAGGTAAACTCTTGAAACCGCTGAAAATAGGCAAAAATAATTATTTTTG
-TATTTTTTAGGCTACTTTCTATACTTTTGCGTAAATACTATAGTTTTTCT
-ATAAAACACCCATTAAAATTATTTTTATAAAATGATTTTTCCAATAAAAA
-TAAAATGCGCAAAATGATTCTTTTCCAGAATCCTATATGCGCCTTTAAAA
-TCTCTCGGATTACTGTAGTTTCAAAGAAATTATCCTTTATATTTTTAATT
-TTAAATTTTTTCCTGAATGTCAAATATTAGGGGAAAAATTATAATAATAT
-GTGCTTTATTCATATGAGTGTAGAATTAGTGAAAAAGAAAAAAAACATGT
-ATGGACTGTAAAATTGGAATTTTAGCGAGAAAATAAAAATAATATGCAGA
-AAAAATTAAAATTTTCAGGAAAAAAGTCAGTAAAGCCATCAAAAACTACT
-CGATTTTGAAGGAAATCAGCAAGAAAAATTAGAAAAAAGTATTTTTAAGT
-TGGAAAACCCCTGCTTGAATTTGTACACTAAATTGGGCATAAAAGCGTAC
-AAATTCGCAAAAACCGGTAAAAATCTGGGGATCGTGATGGATGGAGTGTT
-TTGTGAAAAAATGCAGCGAAAAATTGAGTAGACAATTTCAAAAATGTCGA
-TTTTTGAAATTTGTGACGAAAAAATTGAACAAAAACTGTTTTTTTTTGGA
-ATTTTCAACAAGAAGTTTTATAAATTTTTTTGTTTAAAATTTTGAATATT
-ATATGAGTTTGGTTTCACTTAACAGAACAATTCGAACAAAAGTATTCTAG
-AAAGGAAATGTGCGCTCCAGCACACTATTTGCCCGTGGAGCGCACTTGTG
-TGCACGAACGCTAGCGAGAATGTGTGGTAGAAAGGGAGGGAATAGGAAAT
-ATTAACAAAATTGGGCAAAATATGTAAGATTCGGAGAAAGAATTGGAGAA
-AAATATGTATTTCGAGCTCCGCGAGCTGATCAATCCAAAGGCTTTCTCCA
-TCCTTTTTTCGAGAGGCACATTGCATTATAGTTACACACAGCACGTGTAT
-AATGGAACATTGAAGCCTGGAAACGAGCCATCGCTACCATCATTACCACG
-TGGATCTGAAAAAATTAAAGTTTGATGATTCGAAAATTTTCTGGAAAAGT
-TATGATTGTGAGATAAATTGAATTCTTTGAAAAATCAAAATTCAAAAGCT
-TGTAGAAAATTTTATATATTTTTTTAAGCGTATTTTTTCCGTATACATTT
-CCAAATTTTTTTGTTACCCAATTTTAAAGATTTTCTTGAATTTTAAAATT
-TCTTTCAGTAAAAACTTTTTTTCAACTTTTTGATTTTTTTTCCGCATTTT
-TTAAAATTTTATTCAGAATTATTAGATTCTTTTGAATTTAACGAATTTTT
-TTCGCTAAAAAATTGTTCGATTTTTCCCGAATTAAGAAAAATATTATTTG
-GTTTTTGAATTATTTTCCTGATTTTTTTCGATTAATAAATTTGTAAAAAC
-AATTTTTTTTCTAATTTTTGGTTTTGATGATTGTGTTTTTTTTCTGAACT
-TTACAGTTTTCAAAGTTTACACCGAACTTCCACATTAAAAAATTCTGATA
-CAAAAAAGTATTCACATGATTTTTAAAATTTAAATATTTTTCAAAAAAAA
-TAATATTTAAACTGTGTTTTTTTCGGAATTTTTTTTCGATTTTTTCCGAG
-TTTTTTTTGGAATTTTTTCCTTTCTGCTCCAAAAATATTCAAATTCAATG
-TTGTGTAGAAATTTTATTCAAAAAAAGTGTTCAACTTCTGAGTCTAAACC
-TTTTCCGAATCCTTAAATCCTGGCAGAGCTCTCGTGAATTCAGTTGTCAA
-TTTATGTGGATAGCAAGCTGCCAGTTTAATGAAAGTTTTAGTTCCTTTGT
-CAAGTACTCGATTAATTTTCGAATAATCATAATCATCGACTCGAACACCA
-TATAATCCTTGAGTATAGTTCCAAATTGCTTCACGGAATGCAGCAGTGTC
-AATTTCATTCTGATTCACGGCGGCTGGTGGTTCTCCGTCTCCAGATGCAT
-GGGATGAGCCGGATGGCCTGAAAAATTAATTTTTTGGAATTATTATATTT
-TTCTGTTTTTGAAATTTCATGCATCTCGAATATTTTAACAAAATTACCAA
-ATTCAACTAGATTTCTTACAACTTTCACTGTGTCGATTTACGGGTTCGTT
-ATACGAATTGAATTTGTTTATCGATAGAATATTAAAATTTAGCTAAAATT
-GAGAAGAATATAAGAAGAAATTAATTTTTTTAATTTCAAAAATCGAGCCA
-GTAAATCGACACGAGCGATCGACACAGTAGTCATTTAAAGACCAGTTTCC
-GCCACGAAATATTTCGCGCTTCAAACATGTTGCGTAGTACGTATTCTCAA
-AATTGTGCGTTCACGTATAATATTTATGCGAATTTTTGGTCTACTTTGTT
-AGAGAAATCATCACTAACATATTGCCAGTAAGAGTCCGAATATGATCGAA
-CATTCGATCAAGCCGTGACGTCAGTGTATCCGTATACTCATTCATCGTAT
-TATAAACATGATCCCATCCAAATTCTTCAACTCGGAATGGCGGAATATCC
-TTTTCAGGTCGCTTTCTAAAATCAATATATCCAAATGTTCGATGATGCGA
-GTAAATTGGATAATTACACGGCGGCTCTTTTTCCATAATATCTTCTCCAT
-TTTCATCGATATTTGCAAGAAGAAGTACAGGCGAGTAGTTTTTCCGATTG
-GAACTATATGTTGCTGCAGGAGCACTAATTAATGATTCAATAGTTTCAGT
-AGTCATTGCACACATCTTCGCTGGTGGCCTAGTTTGTCCTTTTTCCGTCT
-TTTTCAGCTCACTGATCAAATATTCGACTTCAGTTGGCCGACGATCTGGG
-ACTTTTCGGAAATAGGCCGACATTCTCGCCTCCCAATAGTCGAGATCATC
-GATATTAAGGAAATCAATCTCATCTTGTGTCAAATCAACACGACGTTCCA
-ATCCAATACAGCATATAACTGTGCACATTGCGTGAGTCATTGACATTATT
-CCGACGGCGTGGTGGAGAGAGCAAACCGAGAAAAACGCAGGACCACCGTC
-TGGCGTGCGGCGAGCGAAGAGCACCTGGAAATTTTCAAATTCTTGAGAAA
-AACCTAACATCGTTGTTATACGTTCGTTCTCTTGGCATTGGAGTTGGCAG
-AATTTGTTTTGAAAAAACGTTGTTTTTTTTTTGAAAGAACATTTTTTTAT
-TACGGGACCATGAGATCATGAGAATTCCTATTTACTGGCGCGAAAATATT
-GGCAGGCCACGGCAACGAGAGAGCATATGGCAAAGAGAGACGCATCTTAT
-TTTGTCTTGTAATTTTTTTTTAAAATAATTTACAATCCCTTTTCAACTAT
-CGTGATTGTAAAATATTACAAATTTCAGAATTTCGCTACCAAATTATTAC
-TGGAAAACTAAACTCTGAGAATGCGCATTGAGCAACATATTTGACGCGCA
-AAGCATCTCGTAGCGAAAACTACAGTTATTCTTTAAATGACTACTGTAGC
-GCTTGTGTCGATTTACGGGTTCGGTTTTTGAAATAATTTTCTTTTCGAGA
-AGTGACAGTGATATTCCATTTTCCTTCTTTTCTTCCTATTATTTTATCAT
-TATTTGCTTAATTTTAATATTCAATTCATAACTAAATTACTTTAATTCAT
-TTCGAGTAGACATTCAAAGAATTCCGGTAGTTTTCGCTTCGAGATATTTT
-GCGCGTGAAATATGTTGTGAAATACGCATTCTTAGAATATGGTGTTCCCG
-TAATATTCAGAAAAGAAAAGATTTCCAAGAACTTTCTGAAGATTTCAATA
-TTTGCAAAATCAGAAACCAGTTCTGAATATTCTTTATTTTTAGAAATTTT
-TCAAGGTTTTCTAAATAACTTTTCTAAATAACCTACCGTATTTCTTCTAT
-TAATATGGCTGCAATACTATTTTTCGATGGTCTTCCCGCTTGCAATACTA
-TTAGGGAGTGCAAGTCTAATAGGGAGTGCCATACTATTCTTCAGAAAATT
-TTTCTGTGTTGGGGCTTACTAGATTCTACTTGAAAAAACTCCAATTTTAT
-TTGGAAGTATAGAAAATTTGATTGAAATTGCAACAAAAAGGTACAATAAC
-TTCAATCTCTAAAAATTTTGTTATAAACTGTTGCAAAATAGGCAAAAAAT
-GTTATTAAAATTTTAAAATTAGTAAGGAGTGTTTGCAACAAAAAAAAGTA
-GGTGCAAGACTATTAGGGAGTGCAACACTAATAGGGAGTGCAATACTAAT
-TTTCGGAAGGTCTCCGAGGGGCAATACTAATAGGGAGTGCAAATCTAATA
-GGGAGGCCATATTAATAGAAGATATACGGTATATATAGCTTTGAAAAATC
-GGAAAATGCCTAATTTTTACTTTTTGAGGTTTGAAAATCTCTAAAAATTC
-AATAAAATTTCAAATTACCGCTAGATTTTTCCAATGAATCATCCATGGTC
-TATGACAGAGCATTCGATTCAAATAATCCAATTTTCGAAATTTCATGTAT
-GACCAATCAATGCCCAACAACCACATTTGTTGTCCACCCTTTTCCAGAAA
-TTTGCGACGATGATGATCCATAAGTGATAGGCATCTGTGACGTGATGCAG
-CCATTAGTGCAAGATAATGACGAGCCGAAGCTGGTAGATCACTTATATCA
-ACGAACATATGGCCATAACTTCCTGTCATATGAACATGTAGAGTTGGGTG
-TTTACATGTGAAACGGAATAATCTGGAAACGTGAGGGAAATTAGTTCGAG
-ACGGGGAGGGGCAGGTTGGCGGTGCCAACCGACAGCCGAACATTGGGGTT
-TCTCAGCTGGTAGCGCCAGCCGACAGTCTACTGCAGTACTGCAGATAAAT
-TTTCGTCGGCTGTCGGCTGGTGAAAATTTTCATGAAAATCAATAATTTTA
-AAGAAATTGTTGCAAATTTTTCCCAAACTTGACCAAATTTGTTGGCTGGC
-TGTACCAGCCGACACCCGAAATTTAGAACATTGATTAGAGGCTGCTTGGC
-AGAAATAATTTTAAATTCAGAAATTCAATTCGTTTTCAAAAAATATTTTT
-TAAAACTTTACCGATCAACTTCTGGAATCGGATCAAAATTGAGCCAATCC
-ATGGCTTTTCGTCTTTTAGTTGTAGTGTGCATTGTGTAGATCTTTTTATA
-TTGCTGCGAGGTGAGTAAATGAAGAATTTTCGCGACCCGTTTCTGAAAAA
-ACTCAGTTTTCTAAGGAAATTTTGAAAATAAATTCGAGAAAAAGAAACTG
-AGTCAGCAAAAGAAAATTGGAAATGTCTGTCTGGAAATATTCGAATATTA
-TATTCAAAAGTTTTCAAAAAAACAACGAAATTACAAGCAATTGTGATCAG
-AAACCGCGGAAGGAACTGGACGAAAAAAATTATCTTTGAGACGAATCTCT
-TTGCATCTTTGTGATCTAAAAGATTAATAAAGGTTGTCATCACATTTTTC
-GAGATTTGGGAATGTGATAAGGGTGAAAAATGGAGATTAATTGTGGTAAA
-ATGAGGAAAAACCTAATTTTTGGTGAGAAAATTGTGGAAAAACTATAAAA
-GAATCTTTATGGAGTTTAAAACTCAAGTTTTTCACGCTTTTCCGCACTGT
-GCGGAACGTTTTTTGAGAGAATTTGGCCGAATTCGGTGATTAAAAAAATA
-ATTTCAAAACTTTGCGCCTCAATTGTGATGTATTACCGTACTCTGTTGCC
-ATTCCACCAAAATTTCCTTCATTGTTTTGCCATTTTTCTGCATAATAACT
-GTTCTGGGTTTTTTTGCTTCATGTGCCCAAATGTACGAATTTCCCTAAAA
-ATTATACCTATTTTTTCAAAATTTTTAATCGCTAGAATTTTTTTTTCTGC
-ATTTTCTTTAAAAAAAGAGATTTCTCGCAAGTAGAAGGAGAAAAAATGTG
-TGGCTATACTTCTTCTTAAAGAATGCACGACTAGCCATAGCTCAAGCCCC
-CTCTGGAACGTTCCATCTTCCTCCCATTTTCCCACGTTCAAGAATCATCA
-GCTTCTTCTCCCTCAGCTTCTCTTCTTCTAAAACCACAACTAGACAAATG
-TTCTTGTTTTCCACCCTATTTTTCACATAAAACCGCCGAGAAACCCGCTA
-TCACAGACTCAATGCGCACCGGAGGGGCTCTTTGTGTGTGTGTACTGATC
-TCTGCGTTATATTCGAACACCGGCGCACACTCGGATTGAACCAGAGGGGG
-GGGGGGAGGGGGGGGGGGGGGTGAAAAAAGAGAAATACTCTGAAATTCCA
-TAAAATCTAGAAGAAGAAAGAAAACAAAGGAAAAATTGGACATTCCGAAG
-TCAGGCTAAAAAATCTCATAAAACAAAATCTATTCGATTTGTGACCATTT
-TCATCTATCTCTCTCAAAACCCGAATAAACAAAGCCTCCCGTCCCCAAAG
-TGTGCTCTCATGCTCTTCTGGAGCCTTCTAGACTGTCTGTAGAGCCTAGA
-GACAGCGGAATTGCACTGAAGTGATGGAGAGACGTAGAGAAAACGCCTGA
-AGAAAAAAACGAACACTTTGGTGGAGGAGGAGATGGCTTCCCTCCAAATA
-AACAACAATTTCTATCGTTTCTCTGTGATTGTGTTCTCTTCTATGTATAC
-TGTTACGATATTGAACAGGAAATTAAATTGAGCACTCTGAATACATAATA
-CACAATAAATAAATACAAAAACTATAGTTTCAGCACAAAAAATTCGAAAA
-AAAAACGATTTTTTTTGTCCGAGAGGAGTATATGGCCTAGAAAAAGAAAA
-CTCGGCCACTCTGATGCAATAAATTTAAAAAATTATGGCCGAATTTTAGA
-TTTCTCAGGCCAATTTGATACGTTTCTCGAAAAGCCATAAATTAGTCGGT
-TTTTCACGGGCTTCTTGCCTTCCTCATTGCATTTTTCGCGCTCCATTGGC
-AATCTCCTGCTGGACAACGCGTGGGAAATCGTGTGCCCCACACGGGCAAA
-TACATTTTGTTTTACAAAGAAAACCGTGCCGCGACGCGACACGCAACGAG
-CCGTAAATCTACCCCAGATATGGCCGAGCTCAAATGGCCTAACCTGTCAA
-AATCTTCCACTTCAAAATATGAGGGAAGCCAGAAGCGCGTGTTGTTTCTG
-AAAAAAAAACCCGCCTAAAGTTGATTTAAATTATCGTTTTTTTGGAAATA
-ATAAAATCGATGAATTTGTAGATTTTGATAAATTTCCGATAAAAAAAAAA
-TTTTAAAAGAGGAAAAAAAATGTTTCTTCGCCCTTTAGTACCAAAAATAC
-GCCCAACTAACCAAATCGTTCTTTCAATCTTTTTTAAATGTTTGTGCGTC
-TATAATTGTCGCTTCAGAAAACTACACAAAACACACACACACACAAGGAG
-AAGAAAAGAAAAAACGTGTTCCATGACCTGCCACTGGGATCGATCTGTAA
-AAGAATTGGGGAAAATTGAGGTAAACTGGTTTTTTATCGGGAAGATTTTT
-TCGGAAGGATTGAGATGAAAGTTCGAAAGGTAATTGGCAAAGTTGAAAAT
-TGAAAAATTCGAAAAAAATCTCAATTCTCTGCTGTAACCCCCAATTTTGC
-GTCATGGCCTAGAGTATGCAGCGTGGCCTAGAAATTCCTAACGTGGCCTA
-AAAGATCACGGCGGTACCTATGATTTTCTAGCGTGACCTAGAATATACCA
-GACCTAGAATTTGATAGCGTAGAATTTCCCAGTATATCCTAGCAGTCTTA
-AGTGACAGTTTCTCAGTACGTCCAAGAATTCGTCAGCATGACCTAGGATG
-TTAAAGCGTGGCCTACAAATTTTCAGAGTCTTCTAGGATATTCCAGTCTA
-AAAATTTTCAGTGAGGCCTGAAATCATCGCGTGTCCTAGAATGTCTAATA
-ATTGCAAAAAAAAGATTTGAAAACTAGTATTTACCCTAAAATTGCATTTT
-GAGCATTATTTTTAATCTAGTTTTAAGGAAAAAATCAGAAAAAATAAACA
-TTTTTTGATTAAATCTTCCGATCTACAGATAGAAAGTGTGCAAGAAAGAA
-TGCAACATTGTGCTCGGTGGAGCAAGAAGATAAAAGAAAGAGAAAGAAGG
-TCCCCCACCCCTCCAGTGGTCGAAACAATGATAAATTGGACAAACGGAGG
-ACCAAGGGGCCGGGCAGACACAAGAGAGAGAGTACGTGAACTGAGGAGGG
-TGTGCAGGGAAAAATGGGATGGGGGCAAATCTAGTTCAAAGATGAGACAC
-TTTTCAGGATCTTTGATTCTGAGAAAAATTTTGAACAAAAAGAATACTTC
-AATAATTTAATGGCACATAGAAATATTTTCAGATTGTTCTTCAAAAGAAA
-AATATTTTTATGCCCGGAAAATTTATTTATTGCATTTCTTCCAAAACAGT
-GGCCGGTCTCGACACGACAAATTTTTGTTAAATGCGAAGAGGTGTGCGCC
-TTTAAAGAGTACTGTAATTTCAAACTTTCGTTTTAATATTTACTTGTGGG
-AAAACATTAATGCTTAACGAAAAATTACAGTACTCTTTAAAAGCGCACAT
-CTTTTCGCATGTGACAAACATTTTCGCGTCTCGGTGACAACTTTTAAGTT
-AAAGGCACATAGAACTTTTCTGAAGAATTTTATTTATTTTTCTGAAAGTT
-AATTGCTACAGTATCCTTTTTCAAGTCGCACCGAGAGCCAAACTGTAGCA
-AATCATCAAAAAAAAGTCGACAAAACGTGCCGAAATCAGTAAACTTGAGA
-GCTTTAAAACTCTATTATCAGTTCTTCGCCAACAAAAAAAAAGAGTACCG
-TATCAAAAACGAACTTCGACTTTTTTGGCTCTCCTGCATACGGACATGAT
-TCTGATTGACAGTTTTCATGTTTTTTTTTGGGAGTTTTATTTATTGTGCA
-TTTAAAAAATCGTATAGTTTGATGCGTGGCCTAGAATTTGCCAGTGTGAG
-CATTAACTCTCCACGGTAGCCAAGAAATTTTCTACGGTGGCCTAAAAACT
-GCCAGTGTAGCCTAAAATATTTTATTGTGGCCTAAATTTTCCAATGGTCT
-GTTTTTTTTATAGTTGCCTAGAATTTCTTTTCGTGACCTAGAAGCGTACA
-GAGTGGTGGCCTAGAAAACGATTCATGGCAGAGTTTTGAAAAAAAAACGA
-AATTTCGAGAAACAAGCGAACAAAAATCGTCTGTCGAAAGAGTATTTCGA
-ATGCTGGGGATGCAAATCAGCAAATCATTCAAAAAAAACTTTTGTGATAA
-GAAATCAAACTGATAAGCCAGTGTCAAAGTCTCGAGGATTAAAAATAGCA
-TTTCAGGTCGGGGTACGGTAGGGTTTTTGTAGAAATTAATGCAAAATTTC
-AGTGGGAAACGAGTTCGTGGCCTAGAAAAATCATGTCTGAAAAATTGCAA
-ATGCGCTCCCCCGAAATGGTTAAAAATTTTCAATTGATAGCCTATTTGAA
-GTGGCGGCCTAGAATATCAAATAATGGCCTAGAACTCAAATTGGCGGCCT
-AGAAATCAAACTAATGACCTAGATTAGGGCATCTTGTAGGCAGCTTAGAT
-CACCTATTATAGGCAGGTGTAGGTAAAATTGTAGACAAATGTAAGTTTCT
-TTGAAGATAGGCGTAGGTTCCTTTGCAGGCATACATAGATCATTTATTAG
-GCAGATGTAGGCCTGATTGTAGGTACAGTGCCGGCCAAAAATATATCCTA
-TTTTTGACTTTTGATAAATTTACAAATTTTCCAAACGAGCACAACTTTAA
-AACTAGAAATGTTATCGAAAAAAGTTCAACTCATGTATGTATTGCCCATA
-ATTACGTCTACTCGTATTCAATTGTTTGTTGTTTACTAGTGTCACGACAA
-CAAATACAGCGGCCGACATCTCGTAAGCCCGTTTTTGACAACGTTTACTG
-ATTCGGCCGTATCTCGAAAACTAATTTTTTTCTGAAAATGTTGTTAAAGT
-GAAATAGTTTTCATGTTATTTGTTATCATTTGTGTTTATTCACTTTGTTC
-TGAAAAATCCAGTAAAAAAGTTATGGGAGTGCAAACTTGTCGCTCACTGC
-CACTCACCCGCTACAATCAAAAATCAGGTTACTTATAGTTAGTTCTAATT
-TTTTTTTTGTAGAGCATTTTTTAGAAATAACACATGTAAAATCACAATGA
-AGCTATATTCAAACACGATATCAAGATTCAGGAAAAAATTCATTGTTTGC
-GAGAAATGTTCAAGGCGTGGCCAAACACTATTCAAGTTTAATCTCTCATA
-ACTCTTTTTCTGGATTTTTCAGAACAAAGTGAATAGACATAAATGATGAC
-AAGTAGTATGAAAACTATTTCACTTTAACAACACCTCGAAAAAAAAATCG
-CTCTCGAGATACGGCCGAATCAGTAAACGTTGTCAAAAACGGGCTCACGA
-GATGTCGGCCGCTGTATTTTTTGTCGTGGCACTGGTAAAAAACTTAAAAA
-ATTGAATACAAGTAGACGCAATTATGGGCAATACTTCATCAGTTAAACTT
-TTTTCGATAACATTTCTAGTTTTAAAGTTTTGCTCGTTTGGAAAAGTTGT
-AAAGTTATCAAAAATCGAAAATGGCATATGTTTTTGGCCGGCCCTGTAGG
-TTAAATATTTTCGTTATCAGGTGTAGGCATGAATCGCCATGTAGGCGGGC
-GTAGGTATCTTCTAGGTAGGCGTAGGTTACCTGAGTCAAATTATAGGCAG
-ACGTAAGTAATCATAAAAATTGACACTTTGTGGGCAGGCGTAGGTCACCT
-TTTAGACAATCATAGTTAGCTTTCTAAGTAGGGTTAGGACACCTATTATA
-GGCAGGTTTAATTCCTCTTATATGTGTGCGTAGAACACGTTATAGTCAGG
-TGTAGGTCACTTTGTAGGCAAGTCTAGGTTCTTCTTTCGGCAGGCGAAGG
-TCATCTTCTGAGCAAGTTAAGGTTCGCCTTGTAGGTCGGTGTAGGTTGCC
-TCGTAGGCAGACTAAGTTACCTTCTGGGCATGCCTAGATTGACTAGTAGG
-CAGGTGTTGGCACCAAGGGTGTCAGTGTCCCGTAAAAATTACAAAAACGG
-GACAACGGGATGTCCCGTTCCCGTGAAAATTTTAAAAACGGGACAACGGG
-ACGTCCCGTTCCCACGAAAACACCCAAAAAACGGGACAACGGGACATCCC
-GTTCCCGTGAAAACGCTCAAAAACGGGACAAAAGACGTCCCGTTCCCGTA
-AAAATGACAAAAACGGGACACCGGGACGTCCCGTTCCCGTGATAATTTTG
-AAAACGGGACAACGGGACGTCCCGTTCCCGTGAAAACACCCAAAAAACAC
-CCAAAAAAACGGGACAACGGGACAAACGGGACACGGGACTTGACACCCTT
-GGTTGGCACCACTGAAGAATGCTGAAACCGACTTTTTTTTCAAAAATGTC
-CTGCTCAACGAGCCGAATGCATTTTGGTCGGATTATATTGGCACACCTTT
-TTGCCCCCGAGAGAATCATTGAACAAAATCTCATGCACTTTCAATTTCAT
-TTTTCATTTCATCAAATAAAAAGATTCGGGAGGATTTGATATATATTGGA
-AAAATAAATGAATGGGGGATTTGTATGGTGGGGGAAAAGTGCACACCCGG
-AAATGAGCAGTAGGATTTTGAGCAGGAAATTGAAGGAGCTGGAGCAGGAG
-AGCAGCTACAGTAACCACCCCTTCACAGCAAAACACATGGCTCATAAAAT
-TGAATATTTGAAGTGAACTACTAGTGATAAGCGGTGAAACGGGGTATGTG
-GCACTAATTTTTTTTTCTTCAAAAAACCCATTTCTTATCACTTGTGTGCA
-GAAGCATTATGGAGACAGGCAGGAGGCAAGTGGTGGTCTAAAAATTAGAA
-AAGTTCGGCCACAGCTTGCCCGATAGGAGCACACGGGCATACTGTTTCAA
-CAAAAATTCGAAAAAATTGGAAAATCCCGGAATTTTGATTCCGCGGAATC
-CGACGATTAAAGAAATTCTCGCGTTTCTGATTTCACGGAAATCGGTATTC
-TCGAAATTTGGTTTCTGCGGTGTCTATTGTTTTGGAAATGTTGTGTTCAT
-GTTTTATGAAGAACAATATAATATTATGTATAATAGATATTATATATTAT
-ATATAATAGAATAATTTTAGTAAAAACCCCACAAAACTTCGAAAATAGAA
-GAAATTCTCGCGTGTCTCCAAAATTACAAAAAAATCAGTTTTTTTCCTTT
-ATTTTATATTACACAGGATATTTATATCAATTCAGCAAAAAAACGGGCGG
-GACAGAAAATTAAGAAATTTGCGAATATTCGTTCCCACGGAAGTAAATTT
-CCCCGAATTAGAAAAAATTCGAATTTTTACTGGATTTGTCTCAAGCTTTT
-GAATCTAGAAACATTTTCTAGTAAAATCTCTTTAAAAAATTTTTTACACC
-AAAAAACTTTTTAGGCCCTGAATTCTGCGAATTAAAAAATTCCGCAAGAG
-ACCACACAAAATCGAGAGACTTAGTTAGACAAGTAGAGGGAAAAATAAGA
-GGCAACAAATCATCGAAAGTTTTTTTCTGCAGAGAGAATGGGGGAGAAGT
-TGCGGCGCTGAAAGAGAGAGAAAGAGAGAGAGAGACAGAGAGGGTGAGAG
-ATATAACAGAAAACCAGGATAGTGCGGAGGAAGAGAAGAAAAAAGTGTTA
-GAAATATTTGTCCGTCGACGCCTTCTTCGTCTTCTTCGTCGCCTTCATAA
-ATGAAACTATGCATTTTCCTCAGATATTGCCTTACTATTAAATGGGGCCC
-GGGCTAAAGGGTGTGGCCGGCCGATCCAAAACGGTGGCCTAGAAAAATAT
-CGGCGGTGGCCGATATCAAATAAAAAAAACATCGATAGTTATGAGACCAT
-AATTTTTAGTTTTTCAGATTTTGAGTCACTTTTCTGATTTTTATCCCAAA
-AATAGAGCTCTTTGCTGTTTTTCTGCAGAATCAGCAGGTGGCAACTTGGT
-TTTCGGAATTTGTGCTATTCTTAGAAATTCCCGACACAGCATCGAGTTTT
-ACTGGAGAACACGTAGCGAGCACAGAAAAAGGAAGGAAAGACAAGAATTG
-GCTCGGCGAGCAACCAGAAAAGCAGCAAGAAAAAACTGACCGAGCAAAGA
-ACAGCGCGATGGGGCTCATATATATCTAAAAATGGATGGATGGAGAGATG
-AGAGACAGCAGCAGTATTCGGTCAAATGAAGACAAGCCAATTTCGAAGCT
-TATTTGGTATTCATGCGTGTCTTTTTTTTTCTTGCAAGAAAAACTGATCA
-TTAGCAGAAAATTCAAAAAATATTGGTTGTCCGAGAGGAGTACAGAAATT
-AAAAAAAATCGTCCGAAAGGAGTACAAAATTCAAAATGTCTATTATCCAA
-GAGAAGTACAAAATTCAAAAGTGTATATTGTCCGAGAGGAGTACAAGATC
-CAAAATATGAATTGTCCGAGAGGAGTAAAAATTCAAACCACAAAAATCCG
-AATTTGCCAAGAAAGGGGCGGAGCCTGATTCGAGTGGAGTGTCGTTGCAA
-AACGCAAAACTTCAAAAACATACGGTTTTCAAAATCTACCTCGCCGACCT
-ACCGTAACCCTCTAAAATTTCTAGGATCAAATATCATCGCAAGAAAAGTG
-TTCGTTCGAAACGAAAAATATTTCTGACGCCTCATCAATCATCATATCAG
-TAACAAAAACCTGAGAGAGACGGAAACAAAGAAATATATTTTGAACCGAA
-CAGGGATCCTGCAACAAATCACGTAATGGACAAAATGCGCCCTATTGCTA
-AATATGCAGCAAGACGCAATTGCATTCTTCTGCCAGAATATCGATTTTTA
-TACGTACTTATAGTGATAAAAAAAATGCTGAATTATCGATTTTTAATTCC
-CCGGAAAAATGTGCGACAGAGCGTGTTTGCATTTTTTTTTTCGAATTTTC
-GTGCAGAAAAACCCGTAAGCATCGATTTTTCTCAGTAAAAATTTCTCGCG
-CCAAAATTGTTTCTATTTTTTTCGGGAAAAATCGAAAATCTCCAAAACTT
-CGGTGGAGCGCACTTTCTGGACCACAATTTTTGAAGGGAAACATCACTTT
-CTGCGGTTTTCAATAAACGAACAAACATCAACAAGAAACGAGAGAGAGTT
-TTTGTTGACTTTCAAGAAAAAAATGGATATCGAATTTCTGTGCTCCATTT
-CCCTCTCCGGGAAATGGCGCGGGGAACGTGCAAACAATGCGAGTATGTCT
-AATGGCTCTCACGTAGATCGAGAAAGTGGAAAATTTGCTAGTATAGACAG
-TTTAAGGAGGCTCTTTTATTCTATTGGGGAACCGATTTGTTTATGTCTTG
-CCGTGGAGCGTAGTTACTGTAATTTTTTTGCAAACGTGCTCCATCGAACA
-GTAAAAAAATCAGTATGCATACTAGTATGTACCTTTAAATAGCTGTAACA
-CGAATTGCCTGTGAAAATAAAAATCTCGGCAAGTTCTCTCCATCGGATCA
-ATGTAGGGAATTTTGCTGTTTATAATGCAAACTCGCTCTAATAAACTACA
-ATTTTCGATCGGTATTTCATGCATTTCGACTGATTTTCGTTATTTTTTAT
-GTACGCTCTCTATTGAAACACGGGGCCCGAGAAAATATCCAAAATCTAGA
-GAGGTTGTATTGCTTAGGCTTAGCCGAAAACCTGTAAAGATTTTTTAAAA
-ATTGTTCAGCCTGCGATGGACGACTTTTTGTAAAACTTGGCCACCAACTT
-TTTTACGGTGCGGCTACATCGCATTTGGGTGACCTTTAATGTGTTCAGGG
-TGTCTAAACATGCACCCAAAAGAGAGTGTCATTTTTAACGCGAAACAGCA
-TCAATCCAAACGGGGCGACAAAAAATGAGAGAGAGAGAGAGAGCGGGCGC
-AATCTAATGTTTTATCAAGTGTCTCTTCTTCTCCTCCGACCTCGTTTGCA
-TCCCCCTAATTCATCATTCGTCGGTTTGTAATACAGAGAGAGGGACATAG
-TGAGTGAGAGGGAAAATTGAGGAGATTCAGAGAGTTAGAAAGAGAGAGTG
-AGAGGGAACTTCAACTTTTTTTTTCAAAAGTTTTGGTCGATGATTTTGAC
-ATTTGATAAAACTGAATGAGAGATGATGCTTAGATAAATGAAAATTGATG
-AGATGATATTTATAAATGCACTTGCGATGTTGTTTTACGTGCAAATTGCT
-GATTAGTCGAGAAGTTGTGATTTTCGTGTCGGGAATATTTCACTAGGAAC
-GCCCTTGCGCCTTTAAAATGTAAAGTAGCATAATTTATTTTCAGAAAATT
-TAAGCGTTGGAAAAATAAGTAGTGCGCAACATATTTGACTCCCAAAATGT
-TTTGTAGCGAAAACTACAGTAACTCTTTAAACGAATACTGTGGTTCTGGT
-GTCGAGTTACGGGCTGCCAAAATTCGAAAGTAAATTCATTTATAATCGAA
-CCCGTAAATCGACACAAGCGCTGCAGAAGTCATTCGAAGAATTACTGTTG
-TTTTCGCTACTAGATATTTTGCGCGTCAAACATGTTGCGCAGTACACATT
-CTCAGAATTTTGTGTTCCCGTGATATAACAATTCATTTTTCTGTCTATAA
-CCTCTTTCAATTATAAGAAACCATTTGCAGCGAAACACAAAAAATTTAGC
-CGATTTCTATTTCACCTATAAAATTCGCGTCAAATGGCCCGCGCTGTCAA
-GACAGTCATAAAACCAAATGTTATGCAAATGGCGTAAAATTCAACAGTGC
-CCGCCCGCATGGTCATTGATCGTTTAAGAAGAATGGAGGAGGGTGCGGGG
-AGCATCATTTCCTGAAATGAGCCCAGAAGCGAGAGATTAGAGAATTAGAG
-AAATGAGAGATCAATGAGGAGAGGGTGAAAGGTATGAACAATGAATAAGA
-AAGGGATGGAAATGATCACAGATGGAAATAGATGGAATAATGAAGTGCAT
-CGATGCACCATTTCAGATTTTTCGGGCTTTTCGCAGATAATTGAGGAATT
-ACATTTTTCGGGCTCCATCGATAATACCCTGCCGGACAACGCGTTGGAAA
-GTGTGTGTACTCCACACGGGCAAATACCTTTAGTTTTACAATGAAACCCG
-AGCCGCGACCCGACACGCAACGCGCCGTAAATCGACCCCAGCCGTGGCCG
-AACCAAAATGGCCTAATTCGTCAAACTTTTACATTCCAAAATATCAGGGA
-AACCAGAAGTGCGCGTTTCCTGTTGTCCGAAAAAAGATTACAACAAAAAA
-GAAGAAATGGAGCATTTGCGCTCCATCACACTCTCAGACAATTTCATTTT
-CCACATCCTATATATATTTTGGTTTTTCTGTCGTATTTTGTTTTAATTTA
-TTGGTATTTCGTTCAAAAATAATTATTTTGACTGTATTTTTGGTTGCATA
-CATGTAGAACTGCTGTTTTTTAAGATATTCTGCCCATTCAAGTTTTTCAG
-TGTAAAATTGATATATTTCATTCCAACTGAAAATGAGATCGAAACGATGG
-AAAACCTCGGATATTACTGATTATGGAAAGAAGAGAAAAGAATCGGAAAG
-TTGTGGATCAAGTTCACCGATTCTCGAAACACAGTCATCTGGCGGTGCGG
-AACTTGACGAAGTTACTGAGGATGAATATTCTAGTAATTCGAGCAGTAAT
-GAAACTAGCGACGAAGAGGAAAACTCAGAAGTACCAAATGTCTTATCTAT
-AACAGAAAGAGGTAAGAATTGCGTCTTCTAGTGATCATACTTTTCGCCAG
-ATTCCCTAATGTAATATATTTTGTTGTAGAGAAAAGTTGGCAAAAGTTAA
-CGGAAAACGATTTGGGACGAATTCGTTTCATCTTGAAGTACACTAGCAAT
-ACTAAAAAATGCGTGAACGAGTATTTTCAATATAATCATGGGCAAAACAA
-TGAAATTATGAAAAGTCTATTATTGGATACCGATGGAACTATGACTGCAA
-AGGCTTGTTCGGAATGTGCCTACGATTTGAATCAGTAAGTTACTCTCTCG
-ATTTATTCCCAAAATTAATATGTGCTTCAGGTGCCACTGCAAAAAACCGC
-TTCGCTTCATCAATGCTCCGTGTGGTTGGTTTGCTATTCAAAACTATAAA
-TAGTTCACTGTTTCCGTTCAGAGGTCATCAACCAAGTTCTTCATGTTGAA
-AATGCGGAGCCCACCAGGATCAACCATGTAATCGCAACACTCTTCCGGAA
-TCACATTGGCGAGATTTTGTTGGTCCACTCTATTTCTGTGCGAGAACTGT
-GATAAAACTAGTATTTTCAGCACAAAGGCTCGAACTGCGGAAGCTCGCGC
-ATCTGAAGAAGCTCAAATCAGGATTCAAATCCAAGACAACTCGAACGCAT
-TCCAAAGATCGTATCATAACGATCCACAACCTTCATCAGCCGAAGAACAT
-GAGGAAGATATCGTGGTGGATGGCTGAGTACGGAGCTCAAATGCCTTAAG
-GCGAAACAATTGGTTTTTTAATTTGCTGGTTATCATGTTAGATTTTGAAC
-GTGTTAGGTCTTTCAATTGTTTTTTTTTTTCGAAATGTTGTTGTTCTAAT
-AAATTTGTTTTATTTAATCAAACGTTTTTTAGTCTACTACGGGCGTGAAG
-CCAGATATCAGTGGTATCTTCTTATCAGAAGCTGAATCATTTCCGGTTGA
-CAATGTTTGAAGGACATAAGAAAGGCTGTGTTACTGATTTCGACCATTGA
-TTTGTTTATATATGGATATGTTCCACTGCCTTTTGGAAAGGCAGTATTCC
-CGGTATATATGGGCCTAATACGGAATCTAAAATAACCTGACACAAACCTG
-ACGTTGACCTGTTGCCGGCCCGCGGCGGCTTAGTGTCAACTTGACAGCGG
-GTCGCGATTTCACCTGCCAGTTGTTCTCCATTCAGCAGCCAGCGACCTGC
-TGGCAGGTTGCCACTAACCTGACGCGGTTTACCTGTGTTATCGGCGCGTG
-CATAGCTTAGTGGTTTCAGGAAATGATGCTAGTAATCAGAAGATCGGGGT
-TCGGGAAACGGCAGGGGCTTGAAGGTTAGGTTCTATGAAGCAGGGCGAAG
-GGTTGACAAGGAGAGGCAATAAGCAAGTAGTAGGGGTTCTCTAGAAAACA
-TTTTTGTCTTTAATATGCGTTTCCTACTGATTTATTATTGATATTTGGAT
-CCCCTTTTCTAGAAAAAAAAATCAGAATCAGCAGAAAAATTTGAGAAAAA
-GTCATAGCAAATCAGAGTTGGTCAGAGTAAATCAGAGCTAGTCATAGTAA
-ATCATAGCTAGTCAGAGAATATCAGAGTTAATCAGGGTAATAAGTAGACC
-TAGTCATAGTAAATCAGAGCTAGGCATAGTAAAGCGTGGTTACTCCGAGT
-AAAACCACACTTGCACCGAACTGCGGTTAGTGTGCTTTACCATTATGTAA
-CTCCGCTTTTTACTCTGAGTTAGTATGATATGGTTTGTCTGAGCTGTGGT
-TGGGCTTCGCGGGAAACTTGAATAATTCGAGACAAAATCTAATTTTAGCG
-AATTTTCTTTAATTTCTTTGAGGTTTCTACGACAGAACTCGAAAAATTTC
-GGGTTTTAATGTTTACACATTTTATTTAAAATTGAATAATCAACTGCGGG
-ACTCCTCGAAAATCACATGCTCATTTAAATTTTGAAGTTCAAACCTCAAA
-AAACGCGCAAAAACCAAATTCAGCTAGGATATCAAATTTATGATTGAAAT
-CTATATTTTGATGCGGTGTTTCTGAAGTTTTCGCGATAAAATCCGAATAA
-TAATTCCACGTACCGTATATTCTCTATCTAATTTCCAGGTCATTTTTTAA
-TGCAGCACTATTAGAGACTGTCGTACTACTGGAGACTGCAGCATTAATTT
-TCGAACGGCTACTGTCAATTATAGATCACTAGTATTTAGTCACAAAAGCT
-AATTTTTTAAGCAGAAATTCATAAAAATGTTTTCAATATTGCGAACTTTT
-GTAACAAAAAGACCCAGTAATTCAATTACTTTCGTAAATTATCAAAAAAT
-CATCAAAAATATACAAAAAAATACCAAAAAATATTGAAACTTTCAAGTGA
-CTCTTTCAATAGAAAATGGGGTGCAGCACTAATAGAGACTGCTGCACTAT
-TTTTCGGACCCTTTTTGAATGCAGCACTATTAGAGACTGCAGTATTTACT
-ACTGGAGATGCAGCACTAATAGAGAATATACGGTATATACGTAATATATT
-CTTGCAGAAAAAAGTACGATTATCAATGAAAAATAGCTGATAAGAGGCTT
-TTGTTTGAACTAACAGACGGAACGACTCCGGTTTAGTTCAAAAAATTCTA
-AAAACACGTTGTGTCAGGCTGTCTCATTGCGGTTTGATCTACGAAAAATG
-CGGGAATATTTTTCCAGAAAAATTGTGACGTCAGCACGCTCTTAACCATG
-CGAAACGAGATGAGATGTCTGCGTCTCTTTTCCCGCATTTTTCGAAGATC
-AAAACGAATGGGACTTTCTGACTCCACGTGTAAAAAGGGGTTACGACGGA
-CCCTGGCCTAGAAATTAGGCGTGAAAATTCTCGGGCACTGGATGTAGTGA
-ACGCCCGCGATGAAAAATTGGGGGAAAATTAGGCTTTCTTTGCGAGAAAG
-ATTAATTAAAAATGTTTTCCTTTGTCGAAAATAATTTTTAAAAAACACAC
-CACGTGTATTCAGCTCGACCAACGCCTCGAAAATTTTCAAAAAAGGCGGG
-AAAAATTAGTTGAATTCGCCAAGAGGAATTTCACCGCAGCGCGTGCAAAA
-ATTTCAGCATTTGCGCGTGACGGTGTTTGCACAAATTACACCGAATGGTC
-GAGCTGAAAACACGTGCACACTTTTAAATAAAACTAGAAAATAAATCCCA
-GGCCTGCAAATATTGCACACAAAACCGTAATCCCCTTCGCGCTAAACAAC
-ACGCGCAACGATGCTCCGCTTGGGGACAAGGAAAAATTAATTTAACTCGG
-GATTTTCATTAAAAAATTAGGTTTTTAGTTAATTTTTCGATGTTTTCACT
-GCGAAAAAGTGTTAAAATAACGATTTTTCAACCTATTTTCAATTAATCCG
-TGCAAAAAATCGTGTATTTCTCGAGTTTTGAAAGAAATTTATGAAAATCG
-GCATTTTTAATAATGGTTTTTCAAATAAAAATATAATTTTTCGGTGCAGA
-AAAGTCGTTGCTCGTACAGTTTTTTTAAAGCATTTTCACATCAAAATCCT
-CCATTTTTCCAGTAAATCGATATGGAGTGCGACGAGACAAAGCTGAGCGA
-CGGCGCAAGCGGCTGGGTGCCGAGTATCCCGACAGATATCGATTCAAAAG
-ACACACCGTTGCTCGATATATCTTCTCAGGCGATTTGGGCGCTTTCCAGT
-TGTAAAAGCGGTAAATTTTCCGACTTTCAAGGGAGAAAAGTGTAGAAAAA
-TCGAAATTACTTCTTAAAAATCTCGTAAAAATCGAATTCTTTCAGGATTC
-GGCATCGACGAGCTCCTATCCGACAGTGTTGAGAAATATTGGCAAAGCGA
-TGGCCCGCAGCCGCACACGATTCTTCTAGAATTCCAGAAAAAGACCGACG
-TGGCTATGATGATGTTCTATTTGGATTTTAAAAACGACGAGTCTTATACA
-CCGTCAAAGTTAGCATTTTTGGCTTTTTCAAACGAAAAAATACAATGAAA
-CACTGAATATCTAGTTTTTTTCTCAATTTTTGCCTAAAAAACGGCGATTT
-TTCACTAGCTTTTCAATTAAAATTTGAACAAAAAGTTTTTTAAAGGAAAA
-ACATGAATTTCTAGCTTTTTCAGAGGTTTTCTATTAAAAAATAGAGATTT
-TTGTGATATCTGACTGAAAAATTACCAAACTGTCGATTTTTTTAAACTAT
-TTTTCACTTAAAATCTGCAATTTTTTTTTTCGAGGAAACATGTGAATTTC
-AAGCTTTTTCAGAGATTTTCTATGAAAAAGGTTCGTGCCGAGACCCATGT
-GCTTTTAAACTTCAGAATTTTCCCAATTTTGAAATTAAAAAGAGAATGAA
-AATTGATTTTCATGGAAAAATGCGTTTTTGGCCCAAAACCTCCAAAAAGT
-ACAAATATAGGTCGACTTTCAACTGTTTTAGATCAATTTTTTTGCAGAAT
-TCAAGTAAAAATGGGTTCATCTCACCAGGATATATTTTTCCGTCAAACAC
-AAACATTCAACGAGCCCCAGGGATGGACATTTATCGATTTACGCGACAAA
-AATGGGAAACCGAATCGCGTTTTTTGGCTTCAAGTACAAGTTATTCAGAA
-TCATCAAAATGGGAGAGATACTCATATAAGGTAGAGGAATTGAGAATTTC
-AGAACGAAAATTGCCGAAAAAATGAAATTTTAGCGAATTTGAGTCGGAAA
-TTTCGAAATTTGATTGATTTTAAGCAAATTTCCAACTAAAATCTTGAAAA
-TTTGATCTTTTTAGATAAATTTTTTTTTAATTTTGTGCTTTTCAAAAAAC
-CTCAAAAAACAATTAAAAATTGAAGTAAAATTAATTTTTCAACAATTTTT
-GAAAGGCCGAATTTTTGATTGAAAATTTTCACAATTTGTCCATTTTGTGG
-TGGGGCTTATTCCGAAAAATCGTTGTTTTTTTTTTCAAAAAAGTTATAAA
-AACTTTAAAATTGCCATGTAAAATATGTTTATTCTCAGACCTCGTAGGCA
-CGAAGCAGGCGTAGGTCGCCTCGCAATAAATTTGAAAATCTCAAGAAAAA
-TCAATAAATTTGTGATTAATCAAAAAAATTTAATTTCCTGGTCCCAGCAC
-GAATGCTATTTTTCGAAAAAAAAAAAGAGGCGAGCCTAATATAGACCACG
-CCCACAAAATGGGCAAAAGTTTGATTTTTCAAAAAATCGAAACAAAAATT
-TTTCCAATTTTGTGAGATTTTAAAATTTCCGGTTTTTGGAAAATCGAAAA
-AAAATTTCTCGTTTTTTAATTTTCAAAAAAAATTGTGCCTAAAATTCAAA
-AAAAAAATCAATACTTTCTCAAAATTTCCAGAAAACAGTCCATTTTCCAG
-GCACGTTCGAGTCCTTGGACCCCAGCGATCTCGTGTCTCCACAACGAATC
-GAATATTCACCGGAGAACCACACGGACCGATTCCCGATAAAAATATCACT
-AATTTCGACGACGAGGATTTTGCCAATTTTATCGATCACTCACTTGTTCA
-CTTATCACTTCGTTAAATTTACCTCCAGTGATTCCAGATAATGAGCCAGT
-TTTGCATTGAAATTTAGTGCCAAAATATAGAAAATCGCATGATTTAACAT
-AAAATAGCGTTTCGAATTGAAACAATGGAAAAAAAGTGCTATGATGATTT
-TTTAACACTTTTAATTGTTCCAATTTGAAGTAAAATCTATTTTCAGATAA
-ATCAACTGATTTTCTATATTCTGCCACTAAAGCTTAAAAACTTGCCCTGC
-TGTCCTAACCTTCAAATTGTTCCCTGCAAATTTTATTATTCTTGTTTCAT
-ATTTTTGCGATTGCTTCGCGAGACCCAAACTCACACATTTACCTGTAAAA
-TATAATCGAATAATTATTTATATATTTTCTGTAAATTTCCTTAGTATACT
-ATAAATTTTCTGATCTCTCTTCAAAAATCGCTAGAAAAAATAAACAAATG
-TCGGTTTAAAAATTCCTGGTAATTTACCTTCTATAGAAAATTTTTCGAAA
-AAAAAACCGAAGAAATTCAGATGGAAATTCCCGATCCCGAACTGCCGGGA
-ATACCGATTGATCCGCAAGATTTGGAGATTCTAGACACGCCCACACGGTT
-TTACGAGAAGCTTTTAGTGCGTTTTTCGTGTCGGGACCCGGAAATTTGAC
-ATTTTTGGCGCGCGGCTTGTTAGACTCCAAACCTTTTCAAAGATTTTTTT
-TTCGAATTAAATAACATTCGTGCTTGGGCCCGGAAATTGAATTTTTGATT
-TGAAAACAATTTTTTTTGAGTCCAAAATTTTCAAAGTTTGTCCATTTTTG
-GCGCGTGGCCTAGTAGGATCCGCCCCTTCTAAATTTTTTTTGAGCAAGTT
-TTCTGAAGCATTGATTTCAAAAATTTTTTTTGGAAATTTCTGGTTTATTT
-TTCCGGTTTTTTTCCGAGTTGCTGTTTAAGTTTGGAGAAATTCCAGAATT
-TGTCAATTTTTGGGGCGTGGCTTTTTCAGTAAGCACAGTTTTTTTTTTTT
-GAAAAATTGAAATTTTCGCGGTGCGGTTCAAGAAAAACCACAAAAACTCA
-ATGATTTTTTAACGAAAATTTCAAATTTCTTGCAAGACCTACTGCAATTT
-CGATTTTTAGAAACTTTTTGAAAAAAATCCGAATTTTCTGATTTAGCCCC
-GCCCCAAAAATGGAAAGATTTCCGAAAATTCGAACCAAAAGTTCGCAAAA
-ACTTGAATTTCTCTCACACAGATTGACGCGCTAATTTGAATTTTTCCAAA
-AATAAGCCCCGCCCCAAAAATGGACAAATTTTAAAAATTTTGAACCAAAT
-AAATTCAATTTTTTTTCGCTTTTTTCCGTTTTCGAACAAAAAATTCTAAA
-AATATATGGTTCTAGGCGGGGCTCAGGCACCCATCTACCTACTTAAAAAT
-GCGTTAAATTTCAGGAATTAACTGCATCAACCGAACGGCGTCTCGCATTG
-TGTAGTCTGTATTTGGGCGAAGGAGATCTCGAAAAAAATCTGATCGCTGC
-GATCCGAGAAAGATCCGAAAAATCCGAGATTGAAGTGACGATTCTGTTGG
-ATTTTTTGCGCGGAACACGGACCAATTCAAGCGGCGAAAGTAGTGTAACA
-GTGCTGAAACCTATTTCGGAAAAGTCAAAAGTTGGTTTTTTTTGCAAAAA
-AAAATCGATAAATCGATAAAAACCGACAATTTTGAGAATTTTCATTTCAA
-ATTTGAGTCCCACATGCGCCTTTAAATATGGTGTACTGTAGTTTTAGCTC
-GAATGTTGAATTTCAAAAATTGAGAATAAAGAAATGTCGTGACGAGACCC
-ACAAATGTTTTGAAAAAAATTTTCAATTTCAAAAAAATGTAAAAAATTGG
-GAATTTCCCTCCAAAAGTTAAATTGGTTTAGTCACAAACTTTGAAATTTT
-GAAATAAAATTTTTTTCGGCTAAAAATAAGTATTTTTTAAAAACTATTTT
-GAAGAAAAAAAGTTAGGTCTCGCCACGATGTATCTTGTATATGTGTATCT
-AAATTGCCATGTCGTGACGAGACCCTCTCATATTTTACACTGCAACTTTT
-TCCTCACGAGGGACGAGGAAAAGTGGTTTCTAGGCCATGGCCGAGGGGCC
-GACAAGTTTCATCGGCCATTTATCTTGCTTTGTTTTCCGCCTGTTTTCTT
-TCGTTTTTCACAGCTTTTTCCCATTTTTTCTTATTAAAACTGATAAATAA
-ATATTTTTGCAGATGCCAAAACGATTTTCAAGTAAAAAAATCATGTATTC
-AGTGGGCAAGCAGCGGTGAAAGTGGGCATTGTAATATGATGGATTACGGG
-AATACAAAACCTAAACTTTTTCTGAAACATGATACATATGATGCTTAAAT
-GCTGAGACTACCTGATTTTCATAACGAGACCGCTGAAAAAGTTTTGAGGT
-TTTCAAAATTCAACTTTTTGTGCGAAAATCTCGACTTTTTCACCGAAAAA
-GTTGAATTTTGGAAACCTCAAAACTTTTTCAGCGGTCTTGATATGAAAAT
-CAGGTAGCTTCAGCATCTAAGCAGCATATGTATCATGTTAAAGAAAAAGT
-TTAGGTTTTGTATTCCTGTAATCCATCATATTACATTGCCCACTTTCACC
-GCTGCTTGCCCACTGAATACATAATTTTTTCACTTGGAAATTGTTTTAGC
-ATCTGCAAAAAATATTTATTTATCAGTTTTATTAAGAAAAAACGAAAAAA
-ATCAGTGAAAAACGAAAGAAGACAGGCGGAAAACAATACAAGATAAATGG
-CCGCTGAAACTTATCGGCCCCTCGGCCATGGCCTAGAAATCACTTTTCCT
-CGTCCCTCGTGAGGAAAAAGTTGCAGTGATTTTGCTCAAATAAAAAAATC
-CCCCAAAAACCGATAATTTCACCATTTATCAGATATATCTCTTCCACACA
-CCGGAGCTTAGTGGCTTAGTAAAACGAGTTCTTCCACAGCGAGCCGACGA
-GATTATCGGTCTCCAGCACATGAAATTATACATTTTTGATGACAATGTAT
-TGATTAGTGGGTTAGTTTTTTGTTTGCATGGGTCAGACTACAAACTACAA
-AAAGCCTAATTTCAGAGCAAATTTGTCGGATTCTTATTTTACTAATCGAA
-CGGATCGATATTTTCTATTCAGAAATTGCAAACCATTGGCAGATTTCTTC
-CACGAAATTATCAATGTTGTTGGTGAGTTGGCGATTGCGCTCCACCGCAC
-ACACTGTTCAATGGGGCTCGCTTGAACTGATAATTTTTTCTAAAAAATTA
-CAAAAATTGTTTTAATTTGCCTTCAAAAAACCATCAGTTAATTAAAATTT
-TCTAAGCAAAAAATTATATACTTTCTAAAAAAATTGAATTTCCCGCGAAA
-ATAATTTTTTCTGAGAAAATTTGAATTTTTCACCAAAATATTTTTTTCAA
-CATTTTTTACCACAAAATGAGGCGGGGCCTCGGTATACACGCTCAAAAAA
-TCAAAAAATACTTGTAAATTTGACTACCAGCTATTTTTTTTTCGAAAAAA
-AAATCGAAAAGTAGGCCAGTTTTCGAAAAATTCTCGACAAAAATTCCGAA
-AAATGGGGCGGAGACCTGTGCGGTATTCGGCATTCGGCATATGCCGATGC
-CGGTTTTTGGAGCCCGTCATATGCCGTTATGCCGATTTGAAAATTCACGG
-CATATGCCGAAAATGCCGTTATGCCGAAAAATCCCGAATGCCGCACAAGT
-CTGGGCGGGACTTCAAAAACCACGCCCACAACAGAGAACAAAAATTTGGA
-GTGATGGTTTGCAATTCCCTCGCGCACTTTTTCTTGTTTTTTTTCAAAAA
-GATGAAAAAGCGCTCTACTGTACACGTTTTTTTTCGAATATTTTCATTAA
-AAATCCAATTTTCAGCCGACTCGAGCTTCATTGTCGAAAATGAGCAACTG
-GTGCCGAGCCCAAAATGTGATGTGCACCCATATTTAGGTAATCTGAAAGG
-ATGGGTAACCTGAAATTTTTCCAAAAAAATTTTTTTTAAGGCTCCGCTCA
-TCTCTACCGAGAAATGCTCAAAACACGTGTGAATCGAGTTATCGAAAAAT
-ACAAAGAATCGCGAAAAACGTCGTCGAATTGCATGTCTGCTGACACGTGG
-ATTTACCCCGTTTTACAAATGGGGCTTTTGGGAATTCATCAGGAGTTTGA
-ATTTTTGCAAAAACTTTTCTCACTGAAAAATCCGGAGCTCAAAATGACGA
-TGGCTTCGGGATATTTCAATTTTATTCGAGATTATGAGGAATCGATTCTG
-AAAGAAGGAGATTATCATTTGGATATTCTTACAGCTTCTCCTTTTGTAAG
-ATTTTTTTTGAGGGAAAAATATCTGAAATAAGTTCAAAAATTTCAAAATT
-GAATTTTTTCGAAATTTTTGTAGGAAATTTTGGTTAAAAAAAGTTTTCTC
-GAGAAATTTGAATTTCCCGCCAAATTTTTTCTGTGAAAATTTGATTTTCC
-CCTCAAACATGTTTTCTCATAAAATTTGAATTTCCCGTCAAAATGTTTCT
-GAGGAAGTTTGATTTTCTCATCAAAATTTTTCAAAATTTCCAGGCGAACG
-GATTCTTCGAATCAAATGGCTTCTCGAAATATATTCCACCACTATATTCC
-AACATTTCTGATCAATTTCTTCGAAAACGAGAAATCAACGGCCGATTGAA
-TGTAAAAATGTTCGAATATCGAAGAGAAGAATGGACATTTCATGCAAAAG
-GTCTTTGGGCAGAACATAATAATCAATTAATGACATTAATTGGCTCATCA
-AATTACGGTTATCGATCGGTTCATCGAGATCTTGAAGCTCAAGTGATGGT
-TGTTACAAGAAATCCGACACTTATCGATCGATTGAAAGATGAGAAAAATC
-TATTATTCGAATATTCATCGATACTTGACATGGCTGCACTTCAACAACCG
-GAACATCATATTCCACCATTAGTTCGAGTTATTTCACGTCTTATTCGGAG
-TTTTTTGTAGACGTTTTCCAATTTTTTATAGCGGAATAATAAGGTTTTTG
-ACTTTAATAAATCTTTGTAGATTTCAGTTTTTTTGAAATGCAACATTTTG
-CCGAATTAGGCCATTTGACAATTTTTGGTCGTGTCACGGCGCGGTTTGCA
-GTAGAAAACTAAATGTATTTTGATTTGTTTTTTCGAAATATCCGAAAAAC
-AACAAAAAAATCTGTTTTTTGTTGAAAAAAATGTTGCGAATTTCAGAAAA
-CGGCACTTTTCCGATTTCTGCCCCCTAGGGCTGTTATGAGGGACGTCCCC
-TATTGGGGGGCGGGGACGATCATTTGTCCCCCCATGGGGGACGGGGGCTC
-GTCCCCGTCCCCACGTCGGGGGACGGGGAGCGCCCCTTGTCCCCGATGGA
-ACGAAAAGTCGTCCCCTTTTAATTTTTGATTTATTTTAGATTTTCACTTC
-ATTTATTACCGGTACAGAGAGTGTAGATAGTTAGAGAGTGCCAGACATCC
-GGGACCCAATGGAGCGGGGCGCGCGGAAGAGACGATTAGTGTCGATTTAC
-GAAATTTTCCTCGTTGTCATCATTTCGTAAATCGACACAAATCGTCTCTT
-CCGCTTGGGTCCCGGATGTCTGGCACTCTAACTATCTACACTCTCTGTAC
-CGATAATAAAATATTTTTACGTGAATCTCGTTTCCACTAAGATGTGCGGG
-TGGATACCGTGGATATTCCACACAAAAAACGTGTCGCTTTAATAATTATG
-AAGCAAAATACAAACGCACATTCTTCACATTGGGTAAAGGGGGCGCGCTC
-CCCCTTTACCCGGGCGCCCCTTTTCGGGGGGGGGGGGGGGGCGTATTACG
-GGAGGTTTTTTGAAAAATAATTTTTGAAATTTGTCAACTGTCGACAGCTG
-TCGTTCAATTAATGTTTTTTTTTCAAATCTCCATACAAAAATGTTCATAG
-TAAATTCTTTATCAATATTGGGGTCCCTCACAAAGTTCAAGTTTTCTTCT
-CACTCTTCACGGCCGCCTTCGATTTTTTCTTAAGACCTTCATTTGCATCA
-AAATACATTCGACAAATTTGAGTCACATAAGCATCATCATGTGCGTTTGC
-CTGCAAATGTTAACAAAGTACCAGGCGGATGCCAAGCTTTCACGTCTTCA
-TGTCTACGTAGAAAATGCAGTCATGAAGTAGGCACGCAGACAGACAGGCA
-AGTACATAATCAGGCAATAAATGGGCAAGTAGGCAAAGCAGGCATGAAAT
-AGGCGCTTAGGCACGTGGGTAGGCAGGTATGAGACATAGGCAAACATGCA
-GGCAGGTATGAAAAGCGAGAAAAGGCAGGTGAGCATGATGAAGGCACATA
-GGCAGGTAGGCAAGGAAGCTCCTAGACAGGTACAAAATAGATGTGCGCAA
-AGTAGGCATGTGCAAAGAAACTAAGCTCGTCGCCAGGCATGAGGTAAGCG
-CATAGGCTTGCAAGTAGGCGAGTAAACACGCGGGCATCGAATAGGCAATT
-AGGCAGGTATTTTTGTGCTCCATTTGGAAACACACTTACTGGATAGAAAA
-GAGTGAGAGTCGTGTAAAATGCAAATGCCAAATAAATTGGATCCGGTGCA
-GCACATTTTCTCTTTGATCTCGTTTGTTCAATCAGACTCCGATAATTGAT
-TTCTCCAGTTTCACTTGTATTGATCGCTTGGAAGAGGCTCTCGATGACTG
-AAAAATGCTCAGAAATTTCGGATATGTTCTCGATTTTCAGTGAATTTTTC
-CTGAGAAAAAGCTAAAAACTCACGAACAAACGCTGCCGATCGTCCACCAC
-CAGTATTGCATACGACAAAAACCGGTCTCTCGCTGTCTGTCACTAGTTTC
-AACAAATACCTAATCTCCTCGGCATCTTTCGGTCCCATATGCTCCGGCCA
-TCCGGTATACTGGTAATGAGTCACCTCTTGAGTACGCTTCTTTCTGGAAA
-AAAGTTTGTTGCAGGCTACCTTTTATGCCTGCATGGAAAAAAATAGTAGG
-CGGACAGGCGTGAGGAAGGTTAGAATATTGATGAGAAAAATTGAAAACAA
-TCATTTCAAAAAGCAAAGAATTGACCGGTTATTATTAAAAAATAAAAATT
-TTTATCCGGACAATCCGATGCAGATGTGAGTGCCTGCCTACCGGCGTGCC
-ACCGCGCCTATTTCATGCCTGCGTGCCTATACTTACCCAAATGTTAGCAA
-CAATTGTCTAGTCTTCAACAAAGGCTTCGAGATACTCTTCGTGCAAGTGA
-TTGTTAAGTCCGCCAAAATTAGTTTTTCGTCGAGTTCAGTGGGAAAGTAC
-CTATCACAGTTCACCTTATTAGCTCCAATAAAGTGATCTGAAAAATAAAT
-GGATTAAAAACGGAGGGTGGCTTGATAGACAGGCAGGCAGGACTACTGCC
-CTGTGTAGGCCGTCTTGTAGACAAGCAGACAGGAGTGGGTCACCATGTAG
-GCAGACGGGAGGGTGTAGGTTGTCTAGTGGGCAGGCAGGCGTAGGCTGCT
-GCCAAGCAGATATAGGCTCACCTATTTCCGCGAAATCGCACAACATCACA
-ATTGTGCTTGGTTTATTCAGCTTCACTGACTCCCAAAATGCGGCAATCGC
-CAAAATATCGGAGCTTTTCTTATCAACAGGCAACTGCGGAGCAGGCATCA
-ACACAAACTTCAAGCCGTTATCCAATTCAACAACATGTGATGATTCTCCC
-TGGCTGAAAATGAAGATTTTTTGGTAGGTACCCATAATTTTGCCTACCTG
-TCTACCTATGTGCGCTTGAGTTAAAGGTTAAACCTAAGCCTATGCCTAAA
-CCTGAGCCTAAGCTGAAGCCTAAGCTTAAGGTTAAGTGTAAGCGTAAGCG
-TAAACCTAAGCAATATGTAGAGGCGAAAGGTAGGCAGGCAGGCGTAACAG
-TCTTACCCATTCTTTTTCGAAGACTCATATGACACCGGATCACATTGACA
-GTGATTACCTCCCTGTAAGCCGCAAAACTGGGCAAAATCGTCTCCCGTAA
-TTTCTAGGTTATTTGGAACATTCTCAAATACTGAAGTACAATTTCTTTTT
-CTAGTAACGAAATCCGAAATTTGCGTGTTGAATGTCTTGAGGAAGTTTGA
-AAAACGTGTCTCATTCACATCCACACGACTGATCATCTGATTTGGCGGGT
-ACAGTTTCTCTTTTTCTTCCGAGTCGAGTATTTTGTAGCCGTTCGGGGTT
-AAGCAAAAGTAAGCAATTATTGCACAAATTATGACAATGACGATCAGAGC
-CAAAATTACATATTGTCCGTGTGTTCTGGGATTTTGGAAATTTTTAGTGA
-AGCTTCTAGGCTTTAGCTTATGCTTAGGCATAGGCTTAGGCTTCGGCTTA
-GGATTAGGCCTAAACACAGGAGCATATAGGTTGGCAGGCAGGCAAAATTA
-GAGGTACCCGCCAAATATCTAGAAGCTTCACTAAAAAAAAAACGTTTTGA
-ATTTAGCATGAAAACAATTTTGAAAAAGTAAAATGTTTTCTTATCTCAAT
-TTTTTCCTTGATTTTATATTGTAATTAAAAATAATAATTTGAATTTTCAG
-CTCGATTTAGATAGAGTTGTGCTAGATTTCAAGAAGAAATTGAGAATTTT
-CGTAAAAAATATTTTTAACGCGAAAAAATTTTTAAAGCTTTAATCCAAAT
-TGTTCAAAAAAGTTTGGAGTAAAAAATTTGGAATTTTTTTGATTTTCACC
-CGAAAACCTTTCTTTAGAATGTCTGCCTCTTGCCTCCATCCGCGCCTTAT
-GCTCAATCCGCGCCTTATGATTTTTCTCCGGGAACTTGAGACGATTTGGT
-TGTTGGGAGAAGAAGTGCGGAATGTGGAGCGTTTGTTGAGAAAAGATAAA
-ATTTGGAATTTTTTTGATTTTCACCCGAAAACCTTTCTTTAGAATGTCTG
-CCTCTTGCCTCAATCCGCCTTATGATTTTTCTCCGGGAACTTGAGACGAT
-TTGGTTGTTGGGAGAAGAAGTGCGGAATGTGGAGCGTTTGTTGAGAAAAG
-ATAGATTTTCTACTATTTCTCAATTATTCAATACTATCGAACGACTTGAT
-GTCCAGTCTTTGAATGTTCTTGTCGAGGAGGCGAAGGTTATTGGTAAGTG
-TATGCGTGGCTTTCCGATGAATTACCAACGGCACGGAAAGCCTGAGTGTA
-CCCTTTCGATTTCATCTTCGGAAAGTGTGCTAAGCGTAGGCGCGTTAAGC
-TAATTTTTCCTGGTAAATCCGCAATTCTTGAAGATCGAACCAATAGGGAA
-CACTGTGGCACCACGTGCAACTTCAGGGGTAGGCGGCAAACACAACGGAA
-ATTTATCGATTTGCCCAATTTGCCAGAAATTTCGGTTTCCGAAATTTTGT
-CGATGCATTAAGGGTTTGATAATAAAATCGAGTTTGGGAATTAGCGTTTT
-TCAAAAATTGTCGAATACCTTCAGAATTTTGGTTTCCGAAAGTTTGTCTA
-AAAATGCAGGGGTAGGCGGCAACTGCCGTTTGGCATATTTATTTTTGGCG
-AATTCACCAAATTCCCGTGAAACATGCGTGAACTTTCTTCTCGTTTCTTA
-ATTAGTTTTTCATCAAATTGATAAAAATGAGAAAATTATAAATTTGTAAA
-TTCACTTCAAAATGCAGGCGGGCAGGTTTCAGTCAAGCCCTGAAACCGCG
-CCTGTCTACCATGGAAGCCCTACTTTCAAATAAGATCAACTCACTGTGGT
-GGTGGACCATTCTTTTCAGAATTTCCAAGATCTGGCGGTGGGAGAATTGC
-AGTCGGCAGAGGCTTGAATAAATTTGAAAAAAACAAGTCAAGAGCAGCAA
-GAGCCTTTTTCGGTTCATCAAGTCTGTTTTGAAAACTTGAAAACTCCAGT
-CCACCATCATCCAAGCTCTTCAGAGCATCCTGAACTTCACCGAGCGACTT
-CTTATTGCCAACATCCTTCACAAGTTCTACCAGTTTTTCCAACGATTTTT
-CCAAGCCCATAAGACCACCAAGATTAGCCCAATCAACCTTCTTAGCTTCC
-GTGAAAACATAACCATAGTCTACAAATTTTGTGGAATCAGACTTTTTAAT
-TCCACTCTTCCATGCATCTAGCTGAACAAACATCACATCCAAAGATGCTC
-CAAGCGCCACCAGCTTCTCCAGATTATCCTTATCGTCCTGTGCCAAAGTG
-GCTCCACTCGCTGCCAACTCTCGTTGCACAATTTGTGCATGGTTCTTGAT
-AATATCCACATTTGCTCTTTCTCGGAGCACGTCCTCCAGTCGAGCAATTT
-CTTGTGCCGCTGGGCCAATGGAATTAGTGTGTTCAGCGGCGTTTGGAAAC
-TGGGATGTTTTATCCGAAGCAAATTTGCGGCGCTTGCTAAAGTACAGCGC
-CAGAGATTTCAGACCACTATTGAGGCTTGAAACTGAGATCAGAGCATCTT
-CGACGGCAGTGACTATCGGCGGGAATTTTTGATCTGCTCGGAACGAATTC
-AAATCTGACAGGTTCTTTTGAATTTTGTCCAATTCTTTGTTGGATTGAAG
-ACAGCTCAGTACGTCGAGAAATTGAGCAATATCAGATCGAGAGTCATTGA
-TTTTTTCAATAGCACGTTTTTCTAGTGTTTTCAAAAGATTCGGATTCAAG
-AAAGTAGCGTTTGCCGTCATTCTACTCATGGTCAGCGACAAGCCGGTCAT
-TTTTTTCACTCCATTAAAGCATGGCTCAGCGGTTGTCCAATTGCTATTGT
-TCATATCCTTGCAAACAGTGAGCACTTCTGCGTGTCCTGATTTGCTTTCA
-ACAAGTTGATTCATCACACTTTTCAATATCGATTTCGATTGTTCCAATTC
-GGTGTCAATGTTCGATGCAATTTTAGATAGTTCCTCCAGATTCGTGAAGT
-CGGGGGCGGTAGTTAGAGTAGATTTGGCGCATTGGGCTGAAAGTTTATTT
-TTATTTTCGTTTTTTTGAGTTTGAACTTTTGTGGACAACCGACAGATTGG
-CTCAAACTAAAAGGACTCTAAAATATACAAATTTTGGAACTCAAATCAAT
-TTCGCAAATATTACTTTTTTCTACGGAGCTTTGATCAGGGTGGGGTGGCA
-AACGATTTTTTTCCAGCAAACGGTAAATCGGCAAACCGGCATTTTGCCGA
-TTTTCCAAAATGGCCGAAAATTTTTGAATCCCTCCCTCTAAACACTTCCG
-GCAAATTGTTATCCAGCAAACTACAATTCGGCAAATTGCCTGAATTAAAA
-ATTTCCGCCCAATCGGCAAATTGCAGTAACTGCAAATTTCCGATAAATTT
-GGAGAAACCGGCAAATCGCCGAAAATTTTTGGTAACTGGAAAAAATTTCA
-AAAGGCACTGTACCCGTGCTTCCGTTTTTTAAAAAATGCTTCTAAACAGT
-TCCGGCATATTGATATCCGGCAAACGGCAAATCAGCAGTTTGGCTAAAAT
-AAAAATATCCGGCGAATCAGCAAATTGCTGGAATTAAAAAGTTCCTCCAA
-ATCGGCAAAACCGGGAATTTGGTGAATTCGCCAAAAATAAATATGCCAAA
-CGGCAGTTGCCGCCTACCCCTGCATTTTTAGACAAACTTTCGGAAACCAA
-AATTCTGAAGGTATTCGACAATTTTTGAAAAACGCTAATTCCCAAACTCG
-ATTTTATTATCAAACACTTAATGCATCGACAAAATTTCGGAAACCGAAAT
-TTCTGGCAAATTGGGCAAATCGATAAATTTCCGTTGTGTTTGCCGCCTAC
-CCCTGAAGTTGCACGTGGTGCCACAGTGTTCCCTATTGGTTCGATCTTCA
-AGAATTGCGGATTTACCAGGAAAAATTAGCTTAACGCGCCTACGCTTAGC
-ACACTTTCCGAAGATGAAATCGAAAGGGTACACTCAGGCTTTCCGTGCCG
-TTGGTAATTCATCGGAAAGCCACGCATACACTTACCAATAACCTTCGCCT
-CATCGACAAGAACATTCAAAGACTGGATATCAAGTCGTTCGATAGTATTG
-AATAATTGAGAAATAGTAGAAAATCTATCTTTTCTCAACAAACGCTCCAC
-ATTCCGCACTTCTTCTCCCAACAACCAAATCGTCTCAAGTTCCCGGAGAA
-AAATCATGTGATCAGTAGTTTCTCGGGCCCAAGCGTCGGTTGCCAATTGA
-GAGTTTAGTGCTCCAATATCAATTGCTCCATTCGGTAGACCAACTGTGTA
-CTTCTTGGTTCGCAGGGACTGCCCGATGGATTCGATGGTTTGAAGATGGA
-TCTTCGATTCTTGATTTGGAAATGCATTCCGGATAGATGCCATGTGTTCT
-TCTAGCTTTCTTAGTCCCCGATTGATGTCTACAATCTTGAAGGATGAAAT
-AAAGTTCATCACATCACGAACTTTTGGCCATAATACAAAGAAAGAAGCAG
-CAGAATTATTGTTTTTGAAGCCATGCAACGTAATCTTCGGATTCTCCACT
-ATGTTCAAAAAATCTTGGGATTTTTTCAACAAATCGTTTAACGCAGAATG
-GGATTTGGGAATATCGGTGAAACTAGTGAACGCTTCAATCTCTGTGTACG
-AGTTGCTCCATACTGATAGCTTTTCGGAAAGGGTTGTAACTGATGAAAAA
-CTGTCTGTAATGTCTTTCATGTCTGCCTTGAAATTAGTCTCGTCTGGCCA
-CTTCTTGAGATCTCCAATATCATGAGCCACGTGGACAACACTTTTGACAG
-TTGTGAAGAATTGATCTGCCTCAACATCGTCGCCGATATTCGATTGTAGT
-TCTATAAAGGTATAGTTTTTGGGGGCAAAAAACGAAAGTGGTTCAAAATT
-TTGGAACAAAATGCCTATTTTTAGATAGCTAAAATCTAAAATTTTGCAAT
-GCTGACAAGTTGTGAAAATTTGAAATTTTAACAGAAAATAGGCTTTTTCC
-TAAACTTTGAATCACCTTACTTTTTTTTTGAAATTTTCGAAACTTTTCGG
-TTATTTCCAAAAAAAAGCCGCAAATACTCTATCAGGGGTAGGCGGGAATT
-GCAGTTCGGCAAATGTATTTTCTGCAAATTCGGCAAATCGGGATGTGTAC
-AATTTTGTCGTCTCTGGCAGTTTACCGACTTGCCCATTTACCGAAAATTT
-TAATTCCGGCAAATTGTCCATACTCTATTACTACCATAGGCCCTTATATA
-ATCTTTTTCCGCCCACCCCTGTACTCTATTACCACCTAATCTGTTACTAC
-AGTGGATTTTTTGAAACCAAAATTTCAGCTTTTGAATTTTATATTCGTAG
-TGAAAAGATATTCGTAGTGAAAAGTTGAAACCTGGAAAACATAGTTGCAT
-AATTGCATCGTAATATGTAAAAATAGGTCTTCCATGGTAGATAGGCGCGG
-TTTCAGGGCCTGCCTGGAACCTGCCTGCCCTATGTGAACGAGTAGACTGT
-AGTTTTAAAAAACAAAAAAAGGTATTTGCCTAACAAAAAACATACTCAAA
-TATTTGAATGTTTGCAACCAAACCTTTAAGCGCTATCAGTTTAGATTCCA
-GCGAACTGTAGTCAATTGCATTCAGTTGATCCATTGAGAAATCGTATTTG
-AACAAATCCAAAGTTAAATTCATTGATGGAATGGTTCCTTTTGTCAATTC
-TTGTTGTAGGTACATTGCATTGATCAATCGTGAGGCGAATTGTAATCGCT
-CAACGGCAGTTATCAAGTTGTCATCTGCAACTTTTATGAATGATTTTTTT
-AAAAAGTTATTTGTTGTCATTTTTCTTTTATTAATTATTACGTATATTAT
-ACGTATCATGCGAGTTTAGCTTTCCAACCCCCCGCGAACTCTTTTTACTT
-TTTTTTTTTTTAACTTTTGTCTTTTTTGTCCTTTCTTGGCTATTTTTTTT
-ATGAGAATTGACCCGAATTTGACTTTTTTCGGATTTTTAGGAATTTCTAG
-GAATTTTTCTTTTTTGTCAAAGCGAGCTAACGCTCGCCACTGACGCCAAG
-CCTAACATAAGACTTAACCTAAGTCTTAGCCTAAGCCTTACAAGGAAAGT
-CTTTGAAGGGGCCTGTAGATTTGGGTTTCTCATGTTGATATTCCGATAGA
-AGAGTGTTAGTTTTGATCTCTCCAAAAAATTTAGCTGCCCAAGCCAAGTT
-TCAGCAAAGTAATGACATTTTGAAATTTCAGTTAAAAACACCATTGAAAT
-ACACTGTCTTACAGTGCTATCCACACAAATATCAGCTTGCGTGAACACCG
-AAAATGTGACGCCCACCACAATAGGCTGAAGACAGTGGATTTCAATGGTG
-TTTTTAACTGAAATTTCAAAATGTCATAACTTTGCTGAAACTTGACTTGG
-GCAGCTAAATTGTTTGGAGAGATCAAAACTAACACTCTTCTATCGGAATA
-TCAACATGAGAACCCCAAATCTACGGGCCGCTTTAAAGACTTCCCTTGTT
-AGCCTAAGCCTATGCAAGACACGCAAAATATACATTAACATATATATACA
-ACAAATACAACGTAAAAATTGTTTTTCTGTAATTCGACTGACAAACCTTT
-AGCTTCACGTTTGGAACGTGGATCTAATGACATCACATTAAAGAAACTGG
-ATTCTTCTGGAACAAAATATATTGAAATTAAAGCTCTGAAACAGTCAAGA
-AACCTTCGAAAGTATCCGAATTGACAACACGATTAACCGTTATAATTATC
-AAAACGATTATTATTTTGATTCCTGGAAGACAGAAGAAATTCGGAACGAA
-AATAAAAATCAACCTACTCATTGCAAAGTATTATGAAACTTCCCTTTGAT
-CGACGGTTTTTGAATCAATTAATGATTGGAAGTGTGAATTCTGAGAGAAG
-GAGTGTTGGAATTTTTATTTATTTTATAACGAAAAGGTCACGGTTTCTGT
-AATTTTAATTTCTATGAAAGTTTTAGGGACTCACAGAATGTCAAACACTA
-GATGGCCGAAGAAAATTTGACATAAGCAGCGAAATTTGACCTTTCAAAAA
-AAAATTAATATTACGTGAAATCTTTTTTTTTCCAATGGAATTGAATTTTT
-GGCTGATACATGAGGGAATGTGTTTCAAGCTGTAATTTCAGTAAAACTGT
-ACAAGAAAAAACGTTCAATATTTTTACCTTTGCTTATAACTCCTCTACAA
-AATTTTTTCGGACAAAAAAATAAAACAAGCATGGAGATTACAGGTGAATT
-TCGAATCCTCATCTTCATTTTTCAGACTGAAAATCCAAGAAAAGTAGCCC
-GAACTTTTTTCTGAAAAAGTTCCTATATACTCATCAAACATTCATAAACA
-GTATTTAAACAAAAAATCCCGAGATAACACTTTTGTCTTCAAGATATTCA
-GGTTGAAAACTAATGTCCTGAAACTTGGATTTTGGGTCCTTAAGAAGATA
-AAACAGATAATTAGCTTTTACGTTAATACCCGCAATCATTTGCAAATTAG
-AGCAAAATTAAATTGAAACTTTTTTTTGGATTTAAACATTTTTTGGAGCC
-GAAATACAAGTTTCAGGACACTAGTTTTCAACCTGAATATCTTGAAGACA
-AAAGTGTTATCTTGGGATTTTTTGTTTAAATACTGTTTATGAATGTTTGA
-TGAGTATTTAGGAACTTTTTCAGAAAAAAGTTCGGGCTACTTTTCTCGGA
-ATTTCAGTCTGAAAATGTATGATTTTTTAATTCAAAATTTGAGGGAATGT
-CGTTCATTGTGGCTCGAGGTCAATGGATAAATGGCTAAGACTAAAACATC
-ATTGATCGAAGAATGATTTTTTATTCATAAAAACTATATATTTGACCTGA
-AATCATTGTTTTTTGTCACTATAACCCATTGGAATGAGCTGTAGAAATTA
-ATTAAATTTAGAAATGATTTTACCGATACGTGGCAATGTTTAATACATTA
-GTTTTCTGGCCGAAGATTTGTATGTTTTCCCGAGAAAGTGAAGCGACAGC
-TTAAAAGCGCATCGCCTTTAGTGAGAGGCAGGTCTCGACGCGACGACATC
-TTTCCTCGCGCGCAGCGGCGAGATTTCGTCATTCTACGTGTTGGTAAAGA
-AAAAGGACGTGATTTTATCGATTTGCATCGATTTTTTTTGGATTTTTCTT
-TGTTTTTATTGTATTTTTATCGAATTTTTAGTAGTTTTAAGGTTTTTTAT
-CGATTTTCCTTGATTCCGTTGCGTTTTTAAGCGTTTTTCTCGTTCGTAAT
-GATAAAAAGGGGGTTATTTCTCCGTTTTCCAAGAGTTATCTGCGCGTATG
-CCAGATTTTGCAGGAGGAATCATCAAAATTCTCAGTTTTTGGCATGTAAT
-CCTTACGAAGAGTACTTTCTGAGGCTCAATGGCTTTTTCCCCCGCTGTTA
-GGTGCTTCAGTAAGTGTTCTACTCCTTTCAGGGGTTCCTTCTCTCGTCTA
-GGAGATTAAATATGTTCGCATTTGTTTCTTCCCTCTCTCTTACGCGCTCT
-TTCCAGCATTGTTAGTTTATCCACGCTCTTTTCCTCTGTAATTTTTCGTT
-TATCACTTTCTCTAATTTTTCGGTTTCCGGTTCGTGCACTCGCGCACCCT
-CTCCCTATTTTACTCTATCTCTCACTATCTCTCACATCTATCTCTATCTC
-TCACAAGCTATTTTGGTATTTTGCGCGTTAAGAAGTCATGTTTTGATGGA
-CCGTGTCCAAAGGAAGAATATTTTCGTCGAGTGAAAGGTATGTAACTTCG
-TGTGAAGTCGACTCCATGAGTCTTGTGAATATTCCGATAACGTTTTATCG
-AGATGTATTATCGGGCGGCCCGAATTTTATGTATGTTTTTCATTGTGGTT
-ACCATGTAACGGGAGTTCACATCGCAGAAAGAGCAATTCTTTATCGCGAA
-AGTACGATTTCAGGCCCCGGAAGGCTTTCTTATCAGTTTAATGCGACATC
-TTTCGTCGGGTGAGATATATTGTCTTGCGTTTCTATCGCATTTCATTGGA
-CCGGTCGAGCCAGGTCTGAGTGTTTATGAGTACGAGTCGACTCCGTGAGT
-CTCAATGATTTTCCGTTTTCAGGCGGTTTTCAAGGTTTCCCGTTCTTGGT
-TTCTGCTTCATCTTCTACTACCGTTTTAAGTAGGATTGGCTCAAGTCTAC
-GGAAGAGTAGAGCAAGCCTACGAAGAAGGTCTTCGAAAGAGTAGCGCAAG
-TTTACGGAGGATTCACGCAGGTCTACGGAAGAGTGGAGCAGGTATACGTT
-AGAGTGGCACTAGACCATACTGGGAGTCCGATTTCCAATTGGATTCTCGA
-AAAACCTTGTACCTGCACAAATAACCAGACGAGCCGATATATCTACCTTA
-CCGAGCTCCGGGTTAATCGTCGTCAAGTATTTCAGGATGAAGCGTATAAG
-GCGATGATTTTCTTTAGCTATGCCGCGCGTTTTGCAATTGCATAGCTGTG
-TATTCCGTGTAGACTTTATCGCTCACTTGTTCGATTTTCAGGACATCCGG
-TTCGACCTTTTTTCTTTCTCCCGCTATCGACGACGCAGATCACGTATGAG
-TTGCTTTTATATACGGCGATCGATTGGTCCGGTATACGTAAAATTAGCTC
-TATATTTTATCGCTTTCGTTGCTCACGCGATTCCCAGGTATTTTAATGTC
-GAATCATATTCCGTCACCTACCACTACGTAGGAGATATGCAGGGCTATGT
-GAGAATAACTCAGGTTTCGTAAGAGTTTCTCAAGACTAGGGAGGATATTC
-GCAGGTTGTTGAGTAATTTGTTTTTCCAATTAGCTATTCTCCTTGTCAGG
-ACTTATTCAGGTGTGAGTCGAAGTAGCCCGAGACGTTTGGCCCTAGTATG
-GATACTTCACGACAGTTTCAGACAGATTGTGGTCCGCCTTTAATGGGAAT
-TATTTCTACTGCACAGGTTCATAGCTGACTTAGCCGAATGAGCCCCTTCG
-ACGTCGCAATTTGGCGGTTAGCACACTTCCAGGAAGACATAGACGAATCA
-CAGTTTCAGAATTCCTATACACTTCAGTAACTACGGAGTAAGGCGATCAG
-TTCCTTGCCGCATTTATATGTTCATCTTAACTTTATTTTATATTAGCTCA
-CGGCTTTCATTGGAAACTACAGATAACTGAGCCAAATGCTTCGCCTTTTT
-GTCACTTTTTCCCAGTTCACTCAAGCCCAGAGTAGATGTAGTTTGAGGTT
-ATCTACTTCTCGTTTCCATGTGCGGATACTAGCAGAGTTTCTCCTGTTAT
-AACTGAGAGTCATTTCACACACAATACGGTTTATCTGTCGGCAGTTTCTT
-CTCACAAGGTTTTCGCTATAGATGAATATCTGGTATAGGGGTGAAGAATC
-TGTAATTATTAAACGCCTCAAGCTTATAGCCGTGACTGACAGTTATAGCC
-CCCGGCTTTGCTGGTTCTACCCTATACCACACAAAACCCAAACCAATAAA
-CCCATAATACTATATAATTCGTGTTGTCTTATTAGAGCGTAACTTGATCA
-GGGAAAACGAATTCTCGGGGAGCGAAGCGATCCGAGAATTGTATGTTTTC
-CCGAGAAAGTGAAGCGACAGCTTAAAGGCGCATCGCCTTTAGTGAGAGGC
-AGGTCTCGACGCGACGACATCTTTCCTCGCGCGCAGCGGCGAGATTTCGT
-CATTCTACGTGTTGGTTTCCCCCCTCCCGCCCCACACACATATTATTCCA
-AAGTGCGAGACACATATGCTATGATTTCCCTTCCGGAGAAAAATCGAATT
-ATTATGAAAATATTAAGTTTAAACCGTAAGTCGTTTATTTTCAGGAGGTG
-AGTTTTATTTTTCCTTCATTGTCGCCTGAGTGGGCAGTCGGTGTCTATCT
-GCAACATTCGCAGCTCGACCCTTGTGCTTGTTTTGGCGGTAGCAGGAAAC
-TTATGGGTTTTTTCACAGTTTCGGGAGAGATATTTACAGGCTCTGGTTCA
-GGGAACCAGATTCAGAGTTTAATAATGATATATCTTTACAGGAAAATTGT
-GGTTAGAGTTTCATGGCAGCTTCAGATCCCCTGATGATCAACAGTTCAAT
-CCACGGAAACACGGACGAAATGAGTGGTCCACCGAGCAACAATGTGGAAC
-GAGACGATTCCAGGTTTTCCATGCCCCCTAACATCGATGATGGTCTTATG
-GTAAAGTTCTTCCAATCAAGCGGTGTTCGTGTTTTGGATAAACTTCTTCG
-ATAAGTAATACTTGACTAAAAAATATCGAGAATTAAAGTCACAATTAAAA
-TTTACAAAATATTTTGTTCCAGATTATGAATTTTCGAAGATTAGACTATT
-CACGGCCACGTAGCGTTTGACATGTTGTGGGACTGAATTTCTACAAAAAC
-GTGAACTCACGTAGACTGTCTCTTGAATAATTTGAATGAAACAGATGTGA
-GCTCCGGAATAGGCTTAGGCTTAGGCTTAGGCGGGGCTGGGAGGAGAAAA
-AAATTGCGGAATTTGCCGTTTGAAGAGCTCGGCGAGTTTGCCGAGTTTGG
-CAAATTTTAAATTTTGCCGTACACACTACAAATTGGACAAAAAATCGAAA
-TATCAAAAATAACAAATTGTTCTGAGTTTGATCAGTTCGGTAAGAAAATT
-TTGAAAAAAGTGATTTGCAGAATTTGCCAAGCTCGCCTTTGTCTTTGGTC
-AATTTAGCACCATATGAGTGATTATTATCAATTTTCCCACTGTCGCTACT
-TCACATTTAAAAAGTAGTCATCAATTGCCGAAACAACTTCCTTCCAGCTT
-AAACTTTTTTCTTAGCCTCATCGGGACCCTTTCCTAATCCCTTCTTAACC
-TCATTCTTCCCATCTTCCAAAATTTCCATCCTTCTTCTTCTTCTTCTTCC
-CACTACGACCATCTTTGTCGTATAGCACCTTTCTCGCGAGAGTGTGTGGA
-AACAATTTGCGAAAAACGGCTCCCGATCCCCCCATTCGTTTTGGCGAAAT
-CAATAGACACAAAAATGTTCAAACAAATCTCCCCTTCTCGTTTATCCCCC
-TGTTGCACAATATCCTTTTCTCACAAAAAAACCTTTGCTCTTCAATTTTC
-GGAATCATCTTTTTGCGCTTTGTCGTGTTACTGTGAAAGGCGGAGTACTG
-AAATATGGAAAATATTTTTAAATGACTCCCTGATTCCGAATATCTATGTG
-AGAAAGTTCAAAAAATTTTCCCTCATTTTATATTTCAGCTTGAAATCGTG
-ACTTTCATTGTGCACTAATGAGATTTCGATTTCGAAGTTTTTTTGAAATG
-TGTTTTCAAGGTCAATTTTCAAGGTCAATTTATTATTTTACTATCGAAAA
-ACTAAAAAAATTTCAATGAGTAAAGTAAGTAAGTAAGCATTTCGTAAATA
-TACAAAAATCTCGTAAATCGACACATAGCGTCTCTGGCGCGAAAATTCGA
-AATCTCATGGGTGCACAAATGAAATGCGAGATTTCAAACTCAAATGTAAA
-ATAAGGGAAATTTTTTTGAATTTTGTCACATAGATATTCGGAATCAGGGG
-CAAATTTGAAGTCAATTAAAAATATTTTTCAGATTTCGTGGTACTCTAGT
-CTAAAACTAAAACTAAAACTAAACTAAAGTTAAATTAATATTAAATTACC
-ATGAATCTAATTTTTGTTTTTTAAAGTTTCCTGCAAAAATTCCAAGATCT
-CAGTTTGCCGAAGTCTAAATAACGACAACTCTGAACTTTTGTCCCGAAAG
-AAATCGAACACCGGTGTATACTAATAAGATCCCTCGAAGCTCGGTATACA
-AAAGGATCATGAAAAAGGGGTGTCTCACCTTGCGCATAATACCTTCTGTC
-TTTCCCCCTTCACCAGAAAGATTTCCTTCTTATATTTGTTCGTTTCGTTC
-CTGCACACTCTCCATCTCTTCTAACCCCCTCCTCATTCAGAATACTCTCT
-CATCTCACAACGCTTCTGTCTACCTGCCTGCGTCTCCTCGGTACCATATA
-CTATCTTGTAGCTGCCACTTACCAACAGACTTGCCTCTTGGAGGTCTCTC
-TCTCTTTTCCACCAAATCACCTTGTTCTTCCGACTTGTTCTCTCTTATCG
-AACTGACTTTTCGTGTCTGCGGGCCTTTCACATTATTTTCCAATTTTATT
-CGAATTTTATGTGCCCACTGCTTGCTAGGTTTATTGAGTGCCGCATTAAT
-TTTATTGATTAAAAAAAAAGCCACTTGTAACAATTTTTATGAAATTTGTT
-TGCATATTTATTTAACAGTAGCGAAATTGTTTTAAAATTCGTACTGTGTG
-AGAAATTTGCACTTTCGAAGTGTTTAAAACATTCTATTACGGGATCACAA
-GATTATGAGAATGCTTATTGCGCAACATTTTTGACGCGCAAAATATCTAG
-TAGCGAAAACTACAGTAATTCTTCAAATGACTACTGTAGCGCTTGTGTCG
-ATACTGGCTCGATTTTTTAAATGATTTTTTTTCGAATAGTGACGTCGATA
-TTCCATTTTGCTTTCTTTTTCGTATTATAATTTTATTCATTTCGAGAATC
-GAGCCCATAAATCGACACAAACACTACAGTAGTCATTTAAAGAATTACTG
-TTATTTTCGCTACGAGATATTTAGCGCGTCAAGATTTTTCCTTACGGAAA
-TACAAACTTCTTGGCGAAAATTTCACGAAAATTCAAATTTCCCGCTTAGA
-ATTTCCCGAATTTTTCGAATTTCCTGCCAAATAAAAACTAGTTTAAATAT
-TTAAAAAAAAGCTTAGAATTCTTAGAATGCGTATTGCGCAGCATATTTGA
-CGCCCAAAGTATCTCATAGCGAAAACACAGTAATTCTTGAAATGACTACT
-GTAGCGCTTTTGTCGATTTACGGGCTCGATTTTTGAAATAAATTTTTTAA
-AATCTTTTCGAATCAAGCCCGTGAATCGACACAAGCTCTACAGTAGTTAT
-TCAAAAAGTAGTTTTGGCTTCGATCGAGATATTTTGTGTGTCAAATATAT
-TCCCGTAAAACAAAATACCGTCTAAAGATATAAAATTTAACGCCTATTAC
-ACCCCAAAACCCGCCGGAAAATCCAGAAAAATTATATAAATTCGCAGTCA
-CTTCTCAAAAATAACCTGAATAGTTGACCGCGTAATTCGACCCGTTTCCC
-TACGACTGACCACACCCCGATTCTCTCGAATTACCCGCGACAAGCTTAAG
-CATCTTTCTTCATTCCCACACTTTTCGTAAACTTCTGAGAGACAAAACAA
-TAATATTTCTTTCTCAAATCAATAATGCCTATATTCTCCGCATCCCGTAG
-CCGATCCCATCACCGTAATTCTAGAAATCCCACGAAATTTTCCAATTTCT
-CTATTGAAAAGGTCTCTCTTTTATATTACCCAGGCGCAAAATTTCGTGCA
-AAAATACAATCGACGGTCTCGACGCGATAATTTTTGCTAAATTCCAAAAA
-TGTGTGCGCCTTTAAAGATTATTGTAAATAGCTTCAAACTTTCACCGATA
-TTTTTAAAAATTGATTTTTCTATGTTTTCCGTTTAATATATATTTATTTA
-TTTAAAAATTAAGTTGAAATTGAGAAATCGATGAAAATCGAAAATTACAT
-TACTCTTTAAAGGCGTACATGTCGTTTCGAGACCGGGTACAGTATTTTCG
-ACTGCGATTTTGGTTTTTAAAAAAACCTAACCAATAGAATTTCCAGCGCT
-CACACTCATTGGGTGGAAGCAGCAGCAGTCCGACGAGCTCTTTTTCGTCA
-AACGACGAATTCGACGATCGTCAGAACAAAAAGTGAGTCATCAGTTTTGT
-TTGAACAGCAGGTGTGAAATTTATTGTGAAATTTAAAATGGGAAATCCGA
-AAAAACACACCTTGTGTGATCTAAGATCCAAAAAAAATAGAACAATCGAT
-AATTTTCGGGTAATTTTAAAGTTATTTTTAGCGAAATAAACAATGCATTT
-TTGAGGGATTGGTTTTCAGTCATTTTCGATTAAAAAATTCAATGTTGAGC
-TGAAAATATCGATTTTTACCAGAAAATTGATAATTTTCGAGCTCAATACC
-ACAATTTTAATGTTTAAATCGCTTTGAAACCTCATAAAATCTCCCGCACC
-TCCAGTTTTTGTAGTTTTCCGCCTAAAATGTCGGAAATTCAACAGAATAC
-TCATTTTCCTAGCGAAATCTATTAGTTTATAATAAATTTGATCGTTTTCT
-GCTTAAAATTCCCTGAAACTTCTGAAAAAAAACCGATTAATCAGCTGAAA
-TTCGCTTAAAACTAATTTCGTGCCGGGACCACGGCCTTTTAAATCGGTAT
-GCGCTTTTAGTTTTGTACCGTATCTATTTTAGTTTTTAAAGTAAAAAATG
-AAATTTTCAGCAAGTTTTGGCGTCAAAGAAATGTATCGAACGCAGAAATT
-GAACGAATAATCGAGGATTTCATAGCGAATGGTATTTTAAGTGAGTTTTA
-TTCGATAAAATCGACGAAAAACCAGAAATAAACAGTTAATTTCCAGAAAT
-GAGCAACGGGAACAGCTACAATCACCATCACCAATTCCCGATGAGCATTC
-CAATATCGTGCTCGTCACACTCAATTCAATCACAATCACGAATGAACACT
-CTGAACGCGAATAGGGATCTCCTGTCTCCCGGCAACGACGTAATTGTCAC
-CAGAACCGTGTCACCGTCGTTTTATTCGCATGGAATGCCGGCCCGGGATA
-ATGTTTTTCGAAAAGACGATCATGTCAGGATATTGGGGAATACAACGGTA
-TGAAAATCTGCTTTTCATCGAAAAAAATTGGAATTTTCAGGACCCAGCGT
-GGTATCGAGCCCGTAATGCGAATCAGGAGGAGGGTCTGGTTCATGCAGAT
-TGTGTAGTGAGAATAAAGTTGGTTTTTCTGATCAATTTCTGTGAATAACC
-CCGATTCCCATGAAAATAGGATTTTCAGCAGAAACTCCAGGCAAATTGAG
-TTTTTGATGCGAATAATGGATTAAAAAAGATAAAAATCCATGAAAATTTA
-ATTTTTTACATCAAAAATCCATAAAAATCGGATTTTTGAGCGGATTAGAT
-TACTTTGCCGAAAATTCATTTAGAAAAAAACAATTCTTGCGCGCAATTGC
-GCAAAAAATTCAGAAAAATGAAACATAAAAGTTAAAAAAATTATTTTTAA
-ATATTTTTGAGCTGAAAATAAAAGAAAATTCGGATTTTGTGGCCAAAAAT
-TCAAGAATATTCCATGAAAATTAGTTTTTGTTTGCAAAAATCCGAACAAA
-AATTAATTCTTTTTTTCGCTAAAAATTGAGAAAATGGTTTTAACACAAAA
-ATCCACAAAAAATTGATTTTTAGGCCACAAAATCTATGAAAATTCTGATT
-TTCTGGAAAAAAATTAAGAAAATTCAAATTTTTTGTTCAAAAACTTTTTT
-CAAAAGCATTTCAAGAAAATTTGATTTTTCATCAAAAAAATTAATAAATT
-TTAGCGGGCAAGCCTACGACAATGGAATTGTAAGAATGAGAGCTAGCGGA
-TGTGACGTGGCTCCGGGAGCAGCTTCAACAACCTCCAGCACATCATCACA
-TCATTCAACTGCAGCAAACCATCAGCCATGGTTTCATTCAATGATTAGCA
-GAGAAAATACTGAAAAGTAATATTGAAAATGTTGGAAAAATCTGGAAAAA
-TGCGTCATTATCTCGGTTTTCAGTCGGTTTCCAGTTTTATGAAAAAAACG
-TCACTAAAAACGACATATTTCTTTAAAAACGTAAACATCGGAAATTGTTT
-GCATGAAAAATGTCGCGATTTTCTAGAAAATTTTAAAATTTAAAGAAAAA
-TGTTGAAAATAGATTTTTTCTGAATTTTTTGAATTTTATTAGAAAATAGA
-GAAAACATCATGTTTTTCAACGTTTTTCGCCTGAAACGCTGGAAAATGCA
-GAAAATGGTTTTTTTAGTGGAAAATAAAAATATTTTTTAAAAAAACGAGA
-ATTTTTTTTTCGTCGAAAGTTCCAACAAAAATTACATGTTTTACAAAACA
-TGTAATTTTTGTTGGAACGTCTTTTTTTTCTGAATTTTTCTTTGATTTTG
-TTAACTTTCTGAATTTCAATTCAAATCGGCAAAATTGTACGCGTCTTTTG
-AATGTTCCCACATCTATTTTGTAACGAATACGGGAAAAAATATTTCAAAA
-AGGCACATTTTTCAAGTGTTTCCGCCTTATAAAAAATTGCCACTTCCGGC
-AAATTGATATCCGACATACGGCAAATCGGCGAACTGACAAATTGCCGGAA
-TCGAAAGATTCCGGCAAACCGACAACCCTCCGATTTGCCGGTGTCAGAAA
-ATTGAAAAGTGTAGAAAAATGACGTCACAACTAAATTATAATACATGTCA
-TTTCTTAATGTATTTTAATACAGTTTTGACGTCATTTTTCTCCACTTTTC
-ATTTTTCCGGCACTACTTGAATAACCCTGTATACCACTTTTAAAAATCAT
-GTTTTACAAATTTGTAAACTCCAGATTACTCCGCGGCAAACCGGACGGAA
-CCTTCCTAGTACGTGAATCCACAAATTTCCCCGGCGACTTCACACTATGT
-ATGTCGTTTCACGGAAAAGTCGAACACTATCGCATCGAACAGACGTCCGG
-CGGACAGCTGACCTGTGACAAGGAAGAATACTTTTCCAATTTGACACAGT
-TGGTCTCGGTGAGTCATTTCGGGGCTGTAGAGACAGGAAAAGGGGGAGGA
-ATGGGTAATGAACCGGTATTCGTTAGAATGAGACAGGTGAAGATAACAGT
-TATGATTTTATATTGTGAAGAGTTGTATTATAAAAAAGGTTGGTAGAGAT
-TTGAATATTTGGGAGAAAGAGAAAATGAGGGGAAAATTGTTAAAATTCGG
-ATTTAAGTTTGAAAAGTCACAAAAATGTTATATAAATATTTATATTTATT
-GGATATAACTAATTAAGATTTTATATAGCAATACTTTAAATAATATGAAT
-ATTGTTAAATATTGATATAATATCATATCAATCTTCATTTAATGGCTAAT
-TGTAATTTCCAATTTTCCAGCACTACAAACGTGACGCGGACGGTCTCTGC
-CATCGCCTGGTAACTCCGATTATTTGTGAAACAGCGACATTTTCATCAAA
-CGGATCATCGTCATTTGGTTCATCGTCGACAGTTGATTTGGAAGATCGAA
-CATCAGTATTTCGACACGCGGGTCTAGTTATTTCATCGAACGATATTGAT
-GTTGGTGATACAATTGGACACGGAGAATTTGGAGATGTTCGATTGGGAAC
-TTATAAGAATCGAAAAGTCGCGTTAAAAGTGTCGAAAAGGCATGGAAATG
-GAATGTTGGACTCATTGCTGGATGAAGCCAAGTTTATGGTGTAAGTTATC
-AAATTATTGAGAAGAAAATAATTTTGGCAAAGCCCAAAACAATGCGTGTT
-GAACAAAGTCATATTAAAAATATATTTATGTTTCAAAAATGTTATAATTC
-AATTTATTTTTAATTTCGAAAATCTATAATAACAACTTTTCCAAGTTTTT
-AGTTATGAGTACCCCGAAATCTGAAAAATATTTTCAATTGACTCCAAATT
-TGCCCCTGATTCCGAAAATCTAAGTGAAAAATTCGAAACCTGATGGGCGC
-ACAAATTATTTGTACAATTTAAACACTTTTTAATTAAGATTAAAAATTTC
-CCCAATTTTTTTGAAAATATTCATTAATTTCTATTTTATGTTAATAATTG
-TTTCAGTTTATAACGCTTAGTTTCAAAATTTTCAATTTTCCTGATTGATG
-ACTGATAACTAATGGCAGCAAATAAATCTGAAAAATTCCGAATTTTGCAG
-AGGTCTCTCGCATCCAAATCTAGTGACACTTGTCGGTGTTGTACTGGATG
-ATGTGAATGTCTACATGATAACTGAATATATGGCAAATGGTAATTTAATC
-GATTTACTCCGATCTCGAGGAAGGCATGCGTTGGAGAGGAGGCAGTTGAT
-GATGTTTGCGATGTAAGAAAAAGTTGACAAATAAAAAAATTGGAATTTAA
-CATTCAAATTAGATTGTTCAAAAATTGTTGACATTTCTGCATTTTTATAA
-CCGAAAAATCGAAATTTCATTTTTTCCGCCTGAGTAATAGTAACTCACCA
-CGAAAAGGGTTACTGTAGCAGTGCTTTTAGCTGTCTCTGGTTTAGAAATT
-TACGATTTGCCGGTCTGTCTGAAACCCGATTTTTTCTAGATTTTAAACAA
-TTTTCTAGTATCCTGTTGAATTAATTCCAAAAACATTTTTTGCTAAATTT
-TTGTTCTCCGTTTGTCAAAAAGCCGACTTTTTAAAAACACTGCAAAATTT
-CTCTCTAAGTTTTTTAAAAAATGTTTGCCCTTGAAATCAATGCAGTTTTT
-TTTTTAAATTTTATTTTGGAGTTTTTTCGAACAAAAATTTATTTCTTCGT
-CTATTCGTACCGAAACACCAAAAAATCCACTTTTTTTCGAAATTTTTTTT
-TTCAAACAACAACCCTGATTTCAAGGGTAAACATTTTTTAAAAAATTTGA
-AAAAAATATTGTAAAATCGGTTTTAGTTTTTAAAAAAAGTCGTTTAAATT
-TGTTGCACAATTAAAAAAAAATTTAGAGAAAAATCTTGCAATGCTTCAGG
-CACACAGCTGAAAATGCTAATACAGTACTGCTTTTCGTGGTTGGACCCAG
-CCGTGGTTACTGTACCTCCGGCAAAGTGGAAAATTCGATTTTTTTTTGTT
-AGAAAATTTGAAAATGTCAAAGATCTGATTTGAATGTTTCAATTTTTTGT
-GACAGCTGTTCTTGAAATCCAAATTTTCAACTTTTTTTCCATTTTCAGGG
-ATATTTGCCAAGGAATGTGTTATCTGGAATCAAAACAGATTGTTCATCGA
-GACTTGGCCGCTCGAAATGTCCTACTCGACGATGATTTAGTAGCGAAAGT
-TTCGGATTTTGGATTAGCGAAAAAAGCAAACAGCCAGTCACATGATTCGG
-CTTCTGGCAAATTTCCGATTAAATGGACGGCACCTGAAGCGCTTAGACAT
-AGTGTAAGTTTGGTTGAAAAATTGAAAAAAATTGAGAAATTTTTACAGAA
-TTTATTCTTTCAAAATTAATTTCATAAAAAGAAACAAAATCATTTCAATT
-TAAATTGGAATTTCGTATTCTTAAATTTTTAATTTAAAAAAATCGATATT
-TTTTAAATTTAACAAAATTTGAAAAAAGAAATCCGAAAATCCGCCGGAAA
-ATGCCTCAAAAATCTGCACTTTTTTTGAATTTTTGCCCAAATTTCTAGAA
-TTTTCCCTTACTTCATTTTCTTTCATAGCTTGAATATCAAAAATGGGAAA
-ATCTTGAAAAAAAATCCCAAAAAAATAAAAAACGAAAAAATCGATTTTCA
-AAAGTTTATTTTTTAAAAATTTTTGTGATTTTTTTCTGATAAAAATAGTT
-TGAAACTAGAATTTTTAGAAAATATCCAAATTTTCTAATAGTTCGCTGAA
-AAATGACTCAAAAATCACCAAAAAATATTGAATTTTCGCATAAATTTTTC
-AAAAATGGAATTTTTTTCATTAAAAATTAAGAATTTTTGCAATTTTCCCA
-AATTTTTTTTAGCAATTCACCACAAAATCCGATGTTTGGTCATTCGGCAT
-TCTTCTTTGGGAAATTTTTTCATTCGGACGAGTACCGTACCCAAGAATTG
-TGAGTTTTCAGACAACATTTTTTTAATTAAAAAAATTTCTCGTGTTTTTT
-CATATTATTCCTCGCTAGCTGTTGTTTTTATTTCTTGGTTGGGATCATTT
-CTTTTAAGGCTCCACGGAAAGGGAATCTGCGCGAGAATGAGATCTACGAA
-AATGAGCGACGATGCTAGGATGAAACGCGCGTTGTTTAGCATGTTTTTGA
-GACTTTTCAAAAATAGAGTTTTTAACCTTTTTCGTAGATCCTCTTCTCGT
-AGATTCCTTTTTCGTGGGTCCTCTTCCTATATTTTCGGCTTGGCCGAGTT
-TTCTCCCGGCCACGATCATCACTATTTTATTGATTTTTGTCATGATTTTC
-AGGGAGCCGATGGTCGTTCGGTATGTGTATATTGCATTTTTTCGTTAGGT
-TCTATTTTTTTCAAATTCTATCCACTTCTATTATACAATACATCTCACTA
-TCTTTTCCCCTGCCTGAAATTTTTGAAAAAAAATGAAGAAATTTTAATTT
-TAAACTTTTTCCAAAATTTTCCAAAAAAAAAAGTTTTTTATCAATTTTTT
-CAATAGCTCGAATTCTGAAAATGAAAAATGATGATAGAAATTGTTTTAAA
-AAAATGATTTTTTTTGTTGCAAAATTTAATTTTTAAATCGAAATACAACG
-TTTTTTTCAAAAAAAAAACACCTTATTCGAGACAAAAATAAGTTTCTTTT
-TTTTTCAAAATTGAACATTTGGATTTTCTGGAAAATTGAATAATTAAAAA
-AGATTAAATGTTCGAAAAAAAGAGAAATATATATTTATTGGCTTATTTGG
-AAAAATCAAAAAATAGTAAGAAAAAAATCAAAATTGTTCGATTTTTTATT
-TTTGTTTTGTTTCCGAAGATGTCCTTGTGGTATATAGTATTTTGGGTCCC
-ACCACGAAAATCGCCGTGCGCCTTTAAATTCGGCCGACCACGTCTCGCCT
-AAGTCCAGTCCCCCACTAATGTCAAAAAAAATTTTTTTTCGCAAAACCTG
-AATTTTGAAATCTTTTTTCCAAAAAAAAAAACGTTTTTTATTTAATTTTA
-AAAGAAAAAATTGGAAAAAAGTATTATTTTTTCTAATTTTGAACTTTTTA
-AAAAAATTATTACACATTATCTGGATTTTCAAAATTTTCCATATTCGATG
-TTAAAAATTATAAACATTTTTCAGAAAGGAACACCGAAATTTTTTTTAGA
-AAAAAGTCAAATTTGGAGCGAAAATTATGTTTTTCAACAATTTTTCAACA
-ATAATTTTGTTCAATTTTTTTTTTGGATCCAAAAAAATCTGTGTGTTTTT
-GTGTGATTTCCGGCACCCAACTCCCCAGAATTTCCCTCAAAAACTCTATT
-TTTTTCTCTGCTACCTCTTCTCAATCTTCTAATTAATTCTATGTTTTTTC
-ACTATTTTTTATTATTTTTTCACCCCTTTCAGAGCTCATTTAGAGCCCAA
-AAATAACCATCAGAAACACAAAAAAAACAACTTTTTTTTTCTTTTTGAAT
-TAATTTTTTCAGCCTATCCAAGACGTTGTGAGATATATTGAGAAGGGATA
-TCGAATGGAAGCACCTGAAGGATGTCCACCGGAAATTTTCAAGGTTATGA
-ATGAAACATGGGCTCTATCGGCACAAGATCGACCGTCTTTTGGACAGGTA
-GATTTTTTAAGGGAAATTTTTTAGAATTTTAAGACGAAAATCTGAAAAAA
-AAACCTACAATTATGGCAATTTTTGTGATGAAAATCTACAAAATTGAATT
-TTTTTTCGAAAACCTGATAGAAAAAAGAATAAAAATTAATTTGAAAAATG
-CCGTAAATTGACCAAAAATATGGAATTTTTACCAAAATTTCAGGGGTTTT
-TCAGATTTTACCAGAGTTTCTGCCTTATAAATTAAAAATTTCAAAGAGAA
-ATATCTTTTTAAAATCAGCATTTTTAGCAATTTTTGTGATGAAAATTGTT
-TAAAAATTGCCAAAAATGGGAATGTTTGAAGAAAATTCAGAAAAATCTAA
-ATTTTGGGCAATTTTTGCAATAAAATTGAAAGATTCGGAAAATAATAAAT
-TTTTCGAAATCCTGAAAAAATTTCACAATTTTTGCGAAAAGAATTGTAGA
-AAATTCGAAATTTTATTATTAAAAATATTGAAAAAAACAAAAAATTTCAA
-AAATCCGCCGAAAATGGCTTAAAAATCTAAAAGAAAAGATTTTTTGCATT
-AAATTTTATTGCATTAGTATTTGCGAAAAACAAACCCGAAAATTCACTCT
-AAAATTACAAAAATTTCAATTTTCTGAAGCTGCGTCCACAAAATGGCTTT
-AAAAATCATTTTCATGTACAATGTCAAAATTTTAAAAAAAGTGAAATTTT
-GTTCAGAAGTTACTATAATAAAGGTTTTTTGCTTTCCGGTCATTTTTTTG
-AATTTTGGAACATTAACCGAAAAAAAAATTCCGCATTTTTACCCTGAAAA
-ATGCGAAAATGTTTGAATTTTTTGAAAATTCCACTTAAATTTTTTATATT
-TTCAGGTCTTGCAACGATTGACAACCATCCGAAATACAGTATGACATCGG
-CGCACATCTCGAAACTTCCAGAAATCCATCGAATTTTCTAGTCCATATGA
-TGTTTCTGTTTTTTTTTCGCTGTTTTTTACACAAATTTTGTCATATTTTA
-TTGTAATTTCCCCCACACATTTTTAGGCATCGTTATTATATATTTTCTAA
-TCCGCTGCCGCGCATTTCGGGAGATCCTGGAATTTAAAGGCACAGCGGTG
-TTTTTGGATGGGTCCCACCGCGAAAATTATTATGCGCCTTTGAAATTTTT
-TTTTCGATATTCCTAAAAATCACAAAAAACATTTTTTTTTCTAAATTAGA
-GAAGTTTTAGCCTTTCTTTCGAAAAGTCGATTTTTTTGGTTTAAATTTTT
-CTCGATTTGAAAAAAATTTCAATTTTTAGTGAAATCAAAGAAAAAACATC
-AAGAAACTTCTATTCGAAAGAATTTTTTAAAATTGTATTTTCCGAAATAA
-TTTTCTCTGTTGGGTCTCACCACGAAAATCGTCATGCACCTTTAAATTTC
-CTTGCCCACACCTCTCCGAACGGCCGATACCCAATCTACGGTTTCTTCAA
-TTTTCCTCTGCATTTTTCATCGATTTTTAAAAATTTTTATCGAATATTTT
-CACGTTTAAAATTATTAATTTGCAACGAATTTCCCTCAACAAAAAATGCT
-CAAAACTCCGCCCCTTTATTGGCATAATTTTTGCCGCCACGGAAAATGCA
-ATAAATTTTATATTACTTTTCACCGATTTTTTAAGATTATTTTTAGAACT
-TTTAGTTTTTGTATGTGTGTGTGCTCGTAGTTTATCGGCAAGAAATTATT
-GTTTTTTTTTCTTAATTTTTAATAAGGGAACATTTTTTAAAGAGATTTTC
-AGAAAATCGGTAAAGATTTAAGATGCTCTGAATATGTCCAACTTCACAAG
-CTTCGTAGATTACGCGGAAAAGGTGATTTTGAATGTTGAATGTGCAAGTG
-CGCCCTATGGATAAATGGAGCAGCGTGGCAATTCGAAAAAATTTAAATAA
-AAACGTATTACTCGAAAGTTCACAGAGTTTTTCACCAAAAAATTGAAAAT
-TCGCTGAAAAAGTCGCGGGACATTCCATTTTTATTTTTCGGGAAGAAATT
-CGAGAATTGACTGAAAAAAGCGCGTCTTTATTCCAGAAATTTTAGCGGAA
-AATTCCAGATTTTTTTATTTAAAAAGACTCAAAACATGAAAAAAATATTC
-TGGAGAAATCAAAAATTGATTGAAAAGTTTCAGTTTTAGGCTAAAATTTT
-TTTGCGAAAAATTCATTTAGTTTTTGTTGGTAAAGTTCCGATTTTTCTGC
-AAAATTTGAATTTCTTTCTGAAAAAGTGCGTTTTTTTTTTCAAAAAATTC
-TTAAAATCGGAAATTTTTCGCCCCGAAACTGAACCGAAAAATTCGAAAAA
-TGAAGCGCGGTCAATTTTTGAATTTTGGCATTGAAAATATTCTGAAAAAT
-TCAAAAATTGACGGAAAAGCTCAAAGTTTTTCACAATATAATCGATATTT
-TCTCATTTTTCAATGTAAAAATCGATAGTTTCAGCCGCACGTCGCAGCAA
-CAAGCCAGACACCAATACCGCCGTCACCGTTGAACGAAAAACGGCCAATT
-CCACTGTTTCCAAGTGAATTTATCGATTTTTCTGTAGAAAAATCTGAAAA
-TTTCTGAATTTTCAGACGAAATCAGCAGCTCTTCGTGCGATGACGTCTCG
-TTTTCCATGCAATTCGGAGAATCTGAGCAGGGACATGTTATATGTACAAA
-AGTTCGACTTCGATTCTATCCTGCCGTGGTGAAAGAGGTTCGAAATTCAA
-AAAAAAAAGAAAACAATATTACTATACATTCGTAAAAATTAAATTTCAGT
-TTAAAGGCGCATCTCACATTTAAATATGCATTATTATTCATTAGTGTCGA
-CCCAGATTGAAAGCGCATGCAAATTTTGAACTTTAAAACTGGAAAAAAAA
-TTTTATTACACATTCGTGTAACATGAATATTCAGTTTAAAGGCGCGTGCT
-AGTTTTAAACTTCAAAAATTAAAAAAATATATATATATTCGTGAAAAAAT
-GTTCTTTTTAAAAGCTCTTTAAAAGTTTAAAAATGATTATTATACGTTTC
-TCAAAATTTTCAAAAATCAGGTCAAATGCACTTAGAATATTGGAAAATAT
-GAAGAAAAATCTTTATACATTCCTGAAAAAATACGCATGGTCCAAAAGTC
-GACAAATCGTGGCCCAATATTTTCTATTTTTTCAGAGAAATCTTCCGCAA
-AGGTCGAAATTTTTCGACGATTTCTACGATGTTCCGCTCACTGCGATCGC
-CAGAATTGAGGTGGCCATTGTGAAAGGTGAAAAATATTTTTACTTCAAAA
-AATTATTATATTAAATTTACACATACACATTCGTGAAAAAATTTTGCCGG
-TAAAAATAATGAAAAATATATACAGAAAAATACGGAAAATTTGGATGAAA
-AATATTTTTTGGTGACAATTAGAATATTACCCGCAAACAAAATTCAAATG
-AATTTTTTCAGTTTTTGAAAATCTAAACAAATTTCAAAATGTTATTATAG
-ATTCGTGAAAAATTAAAACTCAGTTTAAAGGCGCATTTCATATTCAAATG
-AGAATTATTAAACATCTTAAAGACATAAACAAAAAAAATGAAATCTGAAG
-AAGAAAAATTATACATTCGTGAAAGTTGGGAACAAAATTTTGTAATTTGA
-GTGCTTGACATCAGTTTAATAAAAAATTTTGAAACCAAGAATTTTCGAAA
-AAAAATCACGTATACCTAAAAACTTGTAGTTTTTTAAAGTTAGTAAACTA
-TTTTCTCTCAAAAATTCAAAAATATTCCAGGTAACAGTAAAGGAAAAGCG
-GACAAATTTCAACGCCTCGAGACAAGCCTATCAACAATGGAAACAGTATC
-AATAATTCGTCTAATATTAAAAGATGTCAGAGTTGTTACAATTGACTTGA
-GAAGATCTCAAAATGCAAATATATTGGCTAATCAAATACTCTACTTCTCG
-AAAAGTGGACCAATCGAAAAAATGACTCAAGTTGGAGCTGCTATGGAGGA
-GCGCGGTGTGAAGGCGAAAAGTAGGCATTGGATAATTAGTATTGGGGGTT
-GGGAGGGGAGGGAGGAAAGTTCGAGAAAATCGGAATATCTTATAAATATT
-AGGCCGTTTGATTAATAAATCGACACATCAAGTAAATAAATTTTGAAACA
-AATTAAAAATTTTAAACGTTTCGATTGATATATGTGTATCAATTTTTTAA
-AAGATGTATATTAGTAACAAACAAGAAATTTTTTATTCAATAAAAATATA
-CTACGGGAGCACTAAATTTTTAGAATGCGTATTGCACAACATATTGGACC
-AGATATCTCGTAGCGAAAACTACAGTAATTCTTTAAATGACTGGTGTCGA
-TTTACGGGCTCTTTTTTCATTTCTCCGTATTATTTTCTCTTTTTTGCTTA
-ATTTTAATATTCTATCTATAACTAAAAAATTAATTCATTTCGAAAATCTA
-GCCCGTAAATCGACACAAGCGCTACAGTAGTCATTTAAAGGATTACTGTA
-ATTTCGCTACGCGATACTTTGTGCGTCAAATATATTGTGCATTACGCATT
-TTCAGAATTTTGTATTCTCGTAAAATTTTCGAAAAAGTAAATCTTTTAAA
-AAACTTTTTATTAAATGAATAAAAACGCATTTTTTGGAGAATCGGATAAA
-AATAATTTATTTAAGTTTTGAAATTTTAATATTTTGAAAAAAAAACATTT
-TAATTGGAAAAAAATATGAAACTTTCTTTTGTAAATATGGTTTTTACAAA
-ATTCCCGAATGTCCAATATACAAACTTATCATTTTCCAGCAGCATTCAAT
-AGCTACGAAGCATGGCGTTCGGAACTCCAAAGGTGCCAGCAGAAGACGGA
-TTCAACGTCTGTCTGGAAAATTGTAGCACTTAACAAAGAAGGCTTCAACT
-ATGCGGCTCAGGGGTGCGATTTTTGGAAAAAAAAACTGGATTTCCGATTA
-AAAATATGTATAGTGTATGTATTTTTCAAATTTCCAGCTACCCTGTGTAC
-GTAGTAGTGAGCAACTTCTTGGATCGTGTGGACATTGAACGACAACTACA
-ACACTACAAACAAGGACGATTTCCGATTTGGGTGTGGTCTCGGGCGAACG
-GACACTCGGCGTTATTCGTTTCGGCGGATCACGAGAACAATATCGCGATG
-CCGGCGATTTTGGCGAAGTTAGTACATTATATTTTAAATTTGTAAAATGT
-TATTTTCTTCCAGAATGCAAGAAAGTATCACCCGTTGCCATCCGAATAAC
-GAGAAGCCGCATGTTATAAAATTGGACGTCGATTTTGTGTCGAATGTTGG
-AAAAGCTTTTGATAATCTTCTATCGCTTTGTGCAATTGGTGAGGGAGAGC
-ATTTCATATTTAAAAAAAAAATTATTCGCCGTATTTTCAGCTGTTTTATT
-TTCCATTATTTTCCATATAATATGCATTTTCCCAGACTCCTACGAGCAAT
-ACGTTACACTGCAAAACGGTTGGAATACGAAACTCTCGAGAACCGGATGG
-CTTCATCTCGTCAAGCTGTGCCTTCAGACTACCTATCAGACGATTCAATG
-GATTGTTGATAGAGATCGATCGGTTATTTTACAGGGTACTATCAATTTAG
-GTTTTATTCAGAGAGAGAGAGATAGCAATTTTCAAAATATTTACAAACGA
-GTTAGTCATTTACATCCACAATCGACTGATCAGAATCTGATTCGTGGCCG
-TTTTCCTCCGCCAGAACTTTAGGAACTTGCACCGAACTACTTGCTGCTTG
-ATCCTCCCCCTCCAGAGGATCTTCTCCAGATGGGATACAACTTTTGATGA
-AGCTGATCATCGGATCCTCCTCTCCATCATCCGAACTAGTTTGTCTGAGA
-AGAATATCAACCAGTGTCTGCATTAAATCACCGGGTTCCGTTCTTGCTCG
-TCGAGTACTCAAATTGTGTCGGCACATGAATTTGTCCAACCATCCGCGGG
-ATGCCTGAATGATAAAGGTGGAGTAGCGTCGAATAGTTATTTTTTATGTT
-TTTCATATACTCGTTTGCATTAAAGTAACGGCTCTCCTACCTTGAAATCC
-GAGTTCTGACTGATTTTCTTTGCCGTTTCACCGATGATTCTTCTGGTGAC
-TCGTTGTTTCTCCTTACGCTGATCGTGAACCCATTTAATCAATTCCTTAT
-CAACGTCGTCATACTTTAAAGGTCTTCCACCTCCCGAAAGTCGCTTTGTT
-GCAGTTGAGCCGTTGTCTTCTCTGAAAGTGTTATTTGCCAAAAGGCAGCA
-AGTCGAAAATTTTTCAAAAAGAAAATTTGAAATCGAACAGAGAATTTATG
-TTATGCCCGTATTTCAAAATATAGGAATAGTTGAAATGACTTCTTTTGAT
-AGGATTAATTATAAGCCTAGAAAAAATCATAGTATTTGGAATAAAAGGTC
-CATAAAAGGTTCTCAATTGATAGGGCTTGCATGTAGGCGTTAAACCCTGC
-CTTTAAGGCGACCTCCGCTTGCCTCTCGGTTACGCCTTACGTTGTGCTAA
-AACATAATCAATCTTTTTTTTTTTAATTTCTATTTTGATTTTCATCAAAT
-TGAGAGAAATGAGAAAATTAGAAATTTGTAAATTCACATAGGCGGGTTTC
-AAGCAGGACCCTGACACCGCGCATGCCTAACATGAAAGTCCTAGCCCTGG
-ACTATTTTTTTGAACACAAAAATATGTCCGAAGTGGCAAAACTTACAACT
-GCTTCTCGATTTCAGCTTTCTGGGCGATCCACTGTTGAATGTTTTGCCTA
-TTCACATTCAAATCCTTTGCTGCTTTCGATATATTCTTATGTTCAAGGGC
-ATAATTTATGGCATGCAGTTTGAACTTCAAGTCATACGTTCTTTTTCGAG
-TTTTTACAGGCACTTCTGTAGGGATTTCGCTCATTGGTTTTCTCTGAAAA
-ATAAGTATATAACAAGCAAAGTCTTAACTAGTCAGCAAGTTATTGGAAAT
-AAAACATGTGAGAAAAGCGAACGAAGGGGCAAGACTAATGGAGACAGCAA
-ATTGGCACACACGCAGAGAGACATGGCTAATAGAGTGTGCAAGACTATTA
-GAGGGTAGAGGCAGTGAGACGAATTTCCGACTGGTCAGAATGTAAAGGGG
-GTGCAAGGCTAATAGGAGGAGACAAGACAAATAGAAAAACTACATTATTA
-TATGAAAAGAGAGTAAGACTGAATACGTGTATGGGCACCCCACATATTTG
-TATGTAAGTAGTTATGTAAATGACTTTTTGGAATTGAAAAGAAAATACCA
-AGAAATGGAAAAAACCTCCGGTCAATCGTAAAAAAATTATGAAAGAAGTT
-CGATCTACTCGGCTACGATTTACAGTTTCCCTTACTGATTTCTACTAAAA
-TGCATTAATCTTGAGTTTATCTCTAACAAATTGATGGTACTTTTGAATGG
-TTATAACACCGGATATTTTGCAGAAGACGAAGGATCAGATATGTCGATTA
-TTGTGGCCAGCCTCACGCAAATGTGCTGTGATCCATTTTACAGAACAACT
-ACGGGTGAGTTTATTAAATGTTTTTTCTGTACTAAAAATGGGGTTTAAAA
-AACTAATTTTAATTTAGTTCTCTCCTTGTATTAATTTCCAAAATTTTCCG
-AAATTTTTTTTTCAATTTAAAAATCAATTTCAGGTCTTCAACAACTCATC
-GAAAAAATGTGGATTGCCCTTGGCCACCCATTTGGTGAACGGCTACTCGG
-AAGAACCGACGATGATCCATCGAGACGTGGAAAACCACAGAATAAAATGA
-GAACTGACGTCATGCCGACGTGGTTGCTCTTCTTGGATTGTGTTTCACAG
-CTACATCGAATATATACATTTGAGTAGGTTTGGTAAAAAAAATGTTTTCC
-CCCGCAAAAAAATGTTTTCCTCAAAAAATTTGAATTTCCCACCCAAAATT
-TTTCTCAAAAATTTTTTTAAAAATTAATTTTAAAATTGTTTTCTCAAAAA
-ATTTGAATCTCCCGGATTTAAAAATTCCAAAAATTCGTCTATCAATAAAT
-TTTATATTGTTTTCGAATTTCGAATCATAAAAATTAGTTTCAAGTTAACA
-CACCTTTTTTTTCAAATAATTTTTTTAAAAAATAATTTTAAAAACAATTA
-ATTTTTTTCCTATTTCCAGATTCACATTCTCTCCACACGTTCTCATTGCA
-CTATGGGATCTTTCATTAACTGGAATGGTTCCATCAATGGCTTGTAATAA
-TCTGGAAGAGCAATTACTCGCAAAAGTCGGCGGTGGACCATTCCCATTGG
-ATCGATATTTTGAGAAAAGCTACTCGAAATTATTTGGAAATATTTGGCAC
-GACGCAGTGCTTTTTATGGAATCTATTAAGAAAAGTTGGTGCTTTTTAAG
-AAAAAAATTTTATATCGATTGTTCTTTTCTTTTTGATTTCAGCTACTTTT
-TCACCTCGGTCAGCAACATTTTTTTGCAACATTTTGGACGTGGCCGCGAA
-AAAAAAATTGGTGGCCGAGTTTTCTTTTTTTTCACTGCCATTAATTTCCG
-AGAGGAAAATCTAGGAATTAAAATTTTTTCGAAAGTATACAATGTTGACC
-GAGAAAAAATCGGTGGCCGAATTTTCTCTTTCTTCTCTGCCACGTTATTT
-TAGTAAAAAATTAGAAAAAAAAACACAAAATGTTGTTCAAATTTTGGAAA
-AAGTCTGTAAAAACAACAAAAAATTGATGGCCGAGTTTTTTTTCCATTTT
-CGCGGCCACGTGACAAGCAGTGATTTCTCAAATGTTTTCAGGAAAAAAAA
-ACAGGCGGAATTCAGATAATTCTACGAAAACTATTTTTGTTTCTGGAAAA
-AAGTCAAAACTTGAAAATCGGTGGTCGAGTGTTCTCTTTTTTTGCGGCCT
-TATCTCGATTTTTCCAGATCAACCAGTGTGTGCTCACTCGAAATTCCTTC
-AATGTGAATTTATTCGGCCACCGACGTCGTTTTGCGATATTCAACTGTGG
-TCCGAGTGCTATCTTCGATGGATTCCTCCGGCAAACGGGAAAAATTCGGG
-AAAACTCGGCGAAGAACTCTCGCTGGACGAGAAAATGATCGAAATGGCCA
-AAAAATGGAACAGTTCCGAGTGGAAAATGCATTTGGACCTACCGGAAGAG
-GTGACCAAACTTTTCGGATTTATAGGCTCTAAACATATTTTTACTTTCAA
-TTCTTAAATTTTTAGTATTCATCTGCATATCCTTACTCGATTCCGGAGAT
-TTCCCGCCCAATAATGGATTTAAATGATTTTGATATGATCCGGCCGGATG
-ATTTCGACGCAATGTCCATGAATTCATCCATCAACTCATATTCGTTCGTT
-AATACGGTAGGGATACTTATTAGCTCGGAAAATAAATTACGACATATTTT
-GTCTCGAATTTTTTATAGGTGACTTATAATAGACATTTAGTGTCTAGGCA
-CACATAAAAGTTAGATCTTTTTCAGCTATCGTTTCGATACTTTCACACAA
-AAGTAGGTTTTTTTTCGCAACTTTGTAAATTGAAAAATCAATAGGTCGGC
-AAATAATTGTTGGCGTATTTTGTCAATTCACGATATTTATCAAAAATTTT
-ATATGTGACTTCTGGTAGAAATTTATTATGGTTGGCAATAAGTACTGAGT
-CAAAATTCATATAACTTGTTTTGTTGCTTATCGATTTTTTTTAATTGCCG
-GAGTTCATGTTATTAACTATGGGCTTTCATCTGAAAGTAGTCACAAAACA
-TTTTAAAAACTCGAAGTGATCCAAGTCGAAACAACTTTTTCAAGGTTTAC
-GCCCTCTTATTTTTTCTCTTATTTTCAGCATTGATATGAGTTTATGTACG
-GATCAAGAGTGTCGGTTTTTCGATTTTTGTATAAAATCGAAATTTTTTTT
-TTGATTTTTCGATTTTCCCTGAAAAACACACAATTGAAAAATGTCACTCT
-TGGTACGGATATTGCTAAATCTATTATACAATGTGAGAATCCAATAAAAG
-TTTTATATTTTATTTTTGCAGCCAGTTCGTAACAACACGACAACAGAATC
-AATATTCGATCATTCGACACTTGAGAAACGAAATCGTCGAGCAGCTGCCA
-CAATTGGCTCCGAATCGCCAGTTATTCAAATGAGACCAAAAGAGCAAATT
-GTCGGATATTCGAAATATGCATTTGATGATTCATTATCACCAAGACCACA
-TTCCCGAACTGTTGAGACGCCTATTTTAAAGAATGTACGGGATTTTTGGA
-AAATTTAAAATTTGGAAAATGAAAAATTCAAACAAAACAATTTTTTCGCT
-TTCAAATTTCATAAAAATTTATGTTAAAAATAGTTTTTAATTGAATTTTT
-AAAAAATTCTTACTGAAAACTTTCGAAATAATTAAAAAAAAAAACCAAAC
-TATATTTGTTTTTTTATTATTGAAAAAGTTAAAAAAAATGTTTTTTTTTG
-ATAATTTTACACTGCTCGCCTTCAAAATTTGATGAAAATCTTAATACTAG
-ATTTTTTTAATTTTTCATTTAAGACTTTTCGAAAAATTCGAAAGTTCAAA
-AAAAAAAATCCAAAAAAAATTTCACTCAAATCAATCGCCTTCAAAATTTG
-ATAAAAACTCGATGAAAATTTTGTGGAATTAAAATGTTTAATTTATCATT
-CTGAGGCACCACGTTTTCAAGATCTGGTGGGATTCCGGATCTACATTCTT
-CATTTCAGCGCAAAATCCCTAAATCCGGAATTCCACCGAATCTTGAAACC
-GTGGTGCCTCATCATTCTACCTTTAAAAACTCGAAATTATAAAAAATTCT
-GCAAAACTCTAAAAAAATTTGATTTTCGATTTTCGAAAATTTATCTTTTT
-TTGTATTTAACATTCAATAAAATATTGATGAAAAAATTTCTAGAATCATA
-TTTTTAAATTTTGCTTTACAAAATTTTTTAAAAATCTACAATCGTTCACT
-TTCTTGCCTTCAAAATTTGAATGAAGAAAAAATTTCAAAAACTTTAAGAA
-TTAAATTTAAAATGTGCTCAAAAAATTCTTTAAAAATATGCGTTTCCCTA
-ATAATTTCCATGTTTCAGTCCCCATCGCCCTCCTACACCCCATTTCACCC
-GACGCCCGTTCACCGGAGCAACACCGTCCGTGCCGACAATCGCCCAATTC
-CCCCGCCCCGGCCGCAGGGCCTAGGAACACTGACCCCATCACGCCCCGAG
-ATAAGAGCTCATCGAGATGATATAGAGAGCCCTACTATTCGGGTCACAAG
-ATTTTGAAGAAAAAGTTATACTTTTATTTTAATTTCCGCTCAAAATCGGA
-ATTTTCTATAAATATGCCCCTTTAAATTGAGCTACAGTAGTCACGTCGAA
-AAATTTTCAATTTTTTTGAATTTTTTGAATTTTTTCATCCAGTTATAAAA
-AAAAGCTTGCCCCTCAGCTCTACCCCATTTTTCTTTCATTTGTCACCTAC
-TTCCTTCATATATGCCCGGTTAATTATGTATTTTTTGATGCTTTTTTAGT
-CCCGCCACGGTTTTTTTCATTTCGAAAAGTCGATCGATTATCGATTTTTT
-CGAAAATTTGGAAAATTTGGAGAAAATCTAAATATTATCGATTTTAAGCT
-AAAATTTTAAGATTTTATTTTTTCAAATAAAATTTTGGAAATGTTTTTTT
-GAAAAAAAAAGTGCAAAAAACACTCAAGGGAAAATTTTTAAAAAATTGGA
-AAAAATCTTGAAAGTTTGTCGATTTTTCAGTGTGCATTTTGGAGTTATCG
-GTTTTCTTTCCGAATTTTCATCAAATTTATTTTTGATCTACCAAAAAATC
-TCTAAAACCCCGTGGCGGGAACCTACTTCACTTTTATTCTGCATAATTAG
-ACAAAAATGTGATTATTTTCTCATTTCAAAACTTGTTACATATTTTGTGT
-TGTGATACATATGTCTAAATTTTTACGGACTGAAAAAATACTTTTTTCTT
-AATGTTTTTGAAATTTTCATTATTGGTGGCGTCATCCATGTCTATTTGAT
-TTTCCAGACCCCCCCCCCCCCCTCTAAAATGAAAAGAACAAGACGATTGA
-CAGCTAGCATGTGCGACGATCAAAGTACCGATTTGATTCAGTTGAAGGGA
-CACGAGAACGCGAAAAAGTCGGAAGCCCATCTGAAAGTGCTGGAATACAT
-TGGCAAACGCTATGAAATTCGAATGACCGACGGGCGGTACATACGTGGCA
-CGATGATCGCCACTGACAAGGACGCTAATATGGTTTTCAACAAGGTAAAA
-ATTTGATGAAAATTTGGTCCAAAAGCTCATAGTTTCAAATATTTTTCCTT
-AAAATTATGCGCCGCAGGCAAAACAACATTCCGCCTTTTTCTATTGCTGG
-CTTAGTTTTCGCAATTTTCTCGGCTACCAGGCTACTGCAAAAATGATCGA
-TCCGTGAATTGTGCAAACATCTGAGTTACACAGAGAGTGGGGCGGAGCGG
-AACATCGCAACACTGCCGCATGGTTTTTCCACAACTTTTTTTTTCAAGAA
-AGTTTCGATTGTACTTGTTTTTTCTCTTTTTTGTATAAAAATGGTATTCA
-TTCTAAATAATTCACATATGCTAAATTGCATATAAAAACATGGAATATCC
-TCTCAAATTAAGAGTCTTAATCTTATTAGAATTAAATTGGATATCATTTT
-CATTCGAAAAGAAAGAGAAAGAAACAAGTAAAATCGAAACTTTTTTGAAA
-AAAATGCTTGATTTTATTTCATTTTCGTTGTTTTTTTTTCAGTATTTAAC
-TTTTGAACGATCGATTATTTATAAGGTTTGCGGTTAAAAACGATGAATTT
-CGTGTTTTTCTTTTCTGGATTCAAATGACAAGTTTTAACCAATTCGAATG
-TCAAACACGGAAAAATAAGCGAAAATAACAAAAAATCGTGTATTGTAACC
-AAAAAGTTCTCCACGAGTAGTACACTAGAGCCGACGCGCCGCAGGTTTGC
-AAAACAACGCCCACCCCGTTTTCTGCGCGGCACTACACAATTTTCTATCT
-CACGAATAAATATTTCAGAAAAGGCAGGATTTTGTCTGAAAATCATGAAA
-AATCAAGTTTTTTTCAGGTTTCCAACGCTGAAATGGTTGGAATTAGGGTT
-TGTTACCAAAAATCGTATAATATTAAAATCCCAGTGCTTCTCTGTCTTTC
-AGCAATTTCTTTTAATTTCCAGGCAGACGAGCGATGGGACAAAGATCCAC
-AATTGAAAGGAGTCCGATTTCTAGGGCAAGCGATGATCTCGAAAAAGCAC
-GTGGAATCGATGCACGCGTTGCCGGACCCTAAAGAAACTGAAATTTGATC
-CAGTTTTCTTATTTTCTCTAATTTATCCCATCCTTTTCTTGTCAAGATTA
-ATATAAATTAATTTTTATCGAAGCGATTTTTGTTCATCTCATCCAAATAT
-GAAAAAACATTCGAAAAAAAATCGCAGGCTTCACTTGGAACCGCGCGCCA
-TCAGTTGAAAATGCTGAATATGTACAAAGACTGGAAAATATTAAATTTTT
-ATGTTTAAAATTTCACGTTTTTCGTGTTTTCCACAAAAAAGCAATGCATT
-GTCGTTTTTCAAAAAACACTCATGGTAAACGAAGTCCCCGTGGAGTACAC
-GACAATGTCGCATCGAGACCCAAACTGGGAAACGCCTGCGCCTTTAATTT
-TAGGAGTTTAATTTTCGAATTTCGAGTTATTTTTTTCTCAAGTCTTTTTG
-CGACTTTTTTTTGAATATTTTATTACTTGTAGCGCTGAAATATGACAGTT
-ATTATAGCGTCACACTGGGGACCTCAATCAAAACAGGTATTTTTCAAAAT
-TTCGCCGTAAAATCTAATAACCAATTTTGAGATGTTGCCACCCGAGCCCC
-CACGGATAATTCTGAGAGAAGTTCCGGTCCAGAATAACCAGAAAGAGCAT
-CCACCGGTTCAGGAGATCAAAACCGTGTCCAGCAAGTCGAAGGAACATCG
-CGTCAGTTCGAGCCGGAAAATTCCGGATCACTTCGACGTGGGCCCACGGT
-TCTACATGAATGTCCCCGCAGATGGCTCAGAAGTGTTCGAGGACGACGAA
-AAAGACGTCGAGAACGAGTGTTGGGCGGTGATCGAAAGAATAGGAAGCGA
-GGATGACAAGTTCGAGGCCTCTGAGCTTGTCGAGTACCGCGATCACGATT
-GGTACATCGCTTTGGCGATTAATAAGGAGAAAACGCCGGATAAGGCGAAT
-TATCAAGTAGGAATTACGAAAAAAATTTTGATTTTCAATCTCATTTTTTA
-AATTTCAGCACCTACTCTACAGCTATCGAGGCGGAATCCAACGCATAATT
-CTCACGCCTCAACAGACGGATTCGATCGACAAAACGCCGCTAGTGAAGTA
-CAAAATCATCGGAGACGGTCTGTACGAAGTGCTTCCGATTCACTCGTCCC
-TTCCTCAAACTGGTCTAATCAGTCCCAAATATCGTTACAACAAAGGCGTC
-GAGCTTCGGATTTTCGGGATAGTGAATTGGATTGATTTTGTGTTGGACGA
-CGATCATCAGACGCACAGGACGATGGTTTGGACAGATGCGGTCGGACCGA
-TCTATCTGAGTGCCGCGGATCGAGCCAATATTCGACGGAAGCTGCTGCTG
-ACCGAGATGCAGATTTTCGCGCCGTTGCGAATGTGCCATATTACTGTCAA
-GGCGGAATTTAACTTGTTAGTTAAAAAAAACGCGTAAAAAGAATAATAGT
-TCCAAATTTTCAGCTCGATTCCCGATGGTTCCCCGATTCAATGGACCATA
-TCATCGTTCCAGCCACTCATCGAAGAATCAGAGAAGGATCCGAATATTGG
-GCGCAATTTATGGCCAGCGAGAGTGCTCAGATTCGATGATTTAGTCGTTA
-CAAAGAAGGTGCTTAATCATTTTAATATTAAATTTTAACAGCATTTATAA
-TTATTTATCTATTTCCAGACACCGAACGGCTACTGGCTGAAGTCTCAAAG
-ATTGGAGGGTCACGTTAATGTGTTCGCCGGTGCAAATCAAATCGGAATCA
-TTGAGTCGGCGGGTGAAAAATACGCGACGAAGGGAAGCATGATGGCGTTC
-GTGGTTCCGTGCTATCAGAACAGCACGTTTGCATATTTCGAAGCACTTAT
-CGCCGGACCCCCGCGAGTCGTGATGATTATTACCGAAGGACGCTTTCTGA
-ATTATTGCCCGAAGACGTGGCCACCGTCTGTTCGGAAAATGCGTGATCAG
-TATCAGAAAGAGCACGTTGTAAGCACAATTTTCCAGAGAAAAAGGCTTTC
-GATAAATTTTCTTATTTTCAGCTGAAATCCGAAGTCCGAAGTTCACCAAT
-CTGCATGAAACAGCCGGATTATTGCCTCAAATCACTACGAGGATTCAGCG
-AGTGCCCATTTTGATCACTCAAAGTTTTATATATTTCTGTATTTCTTCTG
-CCTTATTTTAAAAAGTATTTTCCCGTTTTTTTTCTTTTGTTCAATTTTCC
-CTTTTTCTTTACTTGTTATGTCCTATGTTTCATGCTAAATTAACGTATAT
-TTTTAATTAGCAATTAAAAAACTTTCTGATTAACTGCCAGTTTTTGAGAA
-GAACCAGAAGATGGAACGCAGGCGAGTTTCTGAAACGGAAAGGGTTTGAA
-ATTTTTATCAATCAAACAAACTCGCAATTTTATCAAAAACCATGCCGTCG
-TTGCAAGTTTGAAAAAACCACATATATTTGCAACATTGATAGAATATCAT
-TGGATCGTATGGATCCGCCATGGCCAGACCATCATATTGACATGTACCGT
-TTAATGGGTTCGGTACCGCTGAAAAGTTGTTGGTCTCGCAGCGAAGTACT
-ACAGTAATCGGGAAAAAGCGCTGTTTATTATCGATTTTTCAATTAAAAAT
-CAATAAACTCGCCGCGAGATCCAAACCTCAACTTACGATAGCTTTTTGTA
-GGAGTCGATTGTCCATCGACAAGGAAGCCAGCAACTAGGAAAATTTTGAT
-AGGGAGAAGCATTGAAATTTAATTGTTTTTGGGGGTTTCGTTTGGTTTTT
-ATAGGAATTTTTGAGCTGTAAGAAAACAAAGCAACATTTATTTCAATTAA
-AACCGGAAAATATGAGTCATTATGGGGGGTTTTCAACCGTACGGAATTTG
-ACAAATTTGAAACTACCATAAAATGGTTAGTTTTGTAGTTAGAGAACTCA
-AAATTGATTTTCTAAGACAAAAAAATTGCCCTTTTTCAGAATATAGTAGG
-TTTGTATAATTTCCAAAAAATTATTTTTCTTGCCCAAAAAAAAAAGGACA
-GTCATTAGATGGCTGAAAAAAAAGTGGGCAAAAATAAAAAGTGTCTAATT
-TTGTTGAAAACGGGTAATTAATATATGCAGAATTCAGAAAATCTAGGTTT
-AACCCATCAAAAACCATTAAAAAGTGGCAAAATTTGGCAATTTTTGCAAA
-AACTCACAATTTTGAAACTCCTCTAAATTGGTTCAATTTGTAGCTAGAGA
-ACTTAAAATTGGTCTCCAAGCCCTAAAAAATTGTCCTTTTTCAAAATATA
-ATAGTTTTAAACGTTTTTAGAAAATTTATTTTTCTTGCCCAAAAAAAAGG
-ACAGTCATTAGATGGCTGAAAAAAATTGGGCAAAAATAAAAACTTGTCTA
-ATTTTGTTGAAAACGGGTAATTCATATATGCAGAATTCAGAAAATCTAGG
-TTTAACCCATCAAAAACCATTAAAAATCTAAAATGATTAATTTTCTAGTT
-AAAGGATTCAAAATTGATCTTCGAACACTAAAAAGTTGTCAAGTATCCAA
-AAAAAGTGGTTCAATTTAAAAAAAATTGGTCAGGGAAAATTATCGATTTT
-TTCGCCGCTTCGCAACTTGGACGAATTTTTCTTTCGCTGCACAAAAATCA
-ATAATTATTGATTTTTTTTCTAAAACAGAAAAATAGATATTTGCACTTTT
-CTGAAAAATCGATATTAAACGGAAATTCGCAAAAATCGATGGTCACTAAT
-TTTTTTGCAAAACCCCAGTAAAAAATCGCTTTTTTCGCCGCATTTCCTAA
-CTTTTTCTATGCCACCACTATTGATTTTTTTTCCAGAAATCTTGGAGCTT
-CCCAAACCCGCTCATCAGCCCGCGTGCTTCATCAATCATTCCGTTGAGAA
-CTATGAATTTTTCGAATGAAAATTAAAAAGAGGGGGATTTATTAGACTGA
-AAAAGTGTTTTTGTGCCACGTGGCGGCGGCCGAATTCTCCTGGACGGGAA
-TTTCTAGGCCATGCTTGGGGGAGATGAGGAGATGGGGGTCAACTTCAAAT
-GTGTGTAACAAAATAGAAAAAAAACTATAAAAGGTAAGAGGAGATCAAAG
-GTCACGCCACTAGGGCTTGAAAAATGAATGCCTGCCTACAAATAGACATG
-TAGGAATGTAGGCAGGCAGACAAAAAGTGGGTGAACAACGAGAAAAGGCA
-CGTAAAAAGGGGTAAAGGTTAGAGAAAAAGAAAAAAAAAGCTCACAGAGC
-ACATTAAAAATGGAAAAAAACGAGATCATTGGATATTCTGCTGCCGTTGA
-TCATCGTCATCATGAATGATCAGCTGATTGGGGTCGACTATCACATCATC
-TGGGTTCACGAGAGCATCTTCTTCGAGCAGCTCATGCGGAGGATGATCGT
-CGTGATGATTTGGCTCTTCCACAACCACTTGTTCGAGGACATCTGGAATT
-TATAGAATTAAAAAATACATTTTTTAGACAAGAAATCGACAAATTTCTGT
-GTTTATTTCTATTTTTCAGATAATTCCACACAATTAGATAGTTATTGAGT
-TTTCTTTCTATAAATTTCAAAAAAAAAAACGATAATTATTGATTTTTTTT
-TAAATCAAAAACTTCACAAAACTCAATAATTATATATTTTTCGTCCTCAT
-TCTCTTTCGGTTTTGTGTGTGTGTGAGTTTTTTTGAAAAACGCAAAATTT
-TCTGTGATATTTCTATTTTTTAACCTGACATGGGCAGTTTTTGAAAAAAT
-TTTGCAATATTTTCGGTGTTCTTTCTCAGAAAAACTCGAAAAATTGCAAA
-ATAAATGTAAAATTTATCAAAAATTACACATTTTCGGTCAACCTTTTGCT
-CAGAGAAACTAGAAAAAAAATTTCAATTTTTTTGGAAACCTGCCAAAAAA
-TGAAGTTTCAGTGAAACATTTTTTTTATCTTTTTTCGAAAATTTAATACA
-TTTTTTTGCAATTTTTTAATATCAATCCGTTCTCACATTTTTTGGTAAAA
-ATATGAGGAAAATGAATACATTTTGGATTTTTTCAGAAAATCTGTTTACC
-ATTAATCTGCTTCTCCCCAGTATAAACTTTAGGCTCATTCTCGTGCACTT
-CTTCTTCCAAATTAACATCATCACCAACTGTCCCAATAACTTCTTCCTCG
-ACAATTTCCTCAACAATTGCTCCATCAGGAGCCATATGCAAATGCATTTC
-TCCATTATCCATTTCTTCTCCAGCCATTATTTCGACTCCAAACGTGTGAT
-TCACTATTTGCAAGAGACGATGTTCGCTTTTTTCGAAGAGCATTTTGAAG
-AGCAAATCGAATGTCTCGTTGTCGGTTGCTGAGCCAAATGAGTTCTTGGC
-AATACGGAAGAGAGCCTCGTTTCGACTTGTTCCACGCGCCATTCCAGATT
-GTGATAGAGGCTGGAAATATTACTATTTCAGATTTTTAGATTAAATGTGG
-AGCTGGGAAATTCGAGTTTTCGACGAAAAAATAGCCTTTCAAAAGATTAT
-TTTCAGATATGTTTAAAAAAATTCCGTTGAAAACGACGAAATTAGATAAA
-AATTGGATTTTCAGCACATACACGGGCGTTTGATTACGTGGCCGTGAAAA
-CGGAGAAACTCGGCCACGTAGAAACAAAACCGAAAATTGCAGAAAATCCA
-GGAATTTTTTTTAATGACTCCGAAATTTCCCCGATTCCGAATAATATATA
-TGAATGAATATATACTTCTGAAAAATTTCAAAACCTTTGCTCACCAAGCC
-ACTACTCTGCTGCCCAAAATTTTTAGGCTCCTGATATTTCGCCTTTCTAT
-ACGGCAGCTGAATCTGTTGCTGGGATGATGATGGTTGCTGAATCTCTTCG
-GTATGTGAAACCTGAAGCTCTCGCTCGTCGAGCATCTCCTCAAGATGCAC
-ATTTTTCTTTCTGGATCCTCCTTCTGAAGCTTCTGCTGAAGCTCCAGCCG
-TGTCAGTCGTCCAATCATCCACAAAATCACCCGCCGCCGCCGAAACAATC
-ATCTCATTCTTCAACTCGTACGGATCATGATCATCTTCAGCATCCCGAAT
-ACCATCAGTCGCCGCCATAATCTCACGACGTCGTACATAATAGAGCATCT
-TCGTGTTCACCTGAATCCCATACTTCTCCAAAATCACTTTAGCCACCTCG
-GCAGGTGTCATTCTCGCGAGCAGCCGGAGCACATCCTCCCGAATGTGTGG
-TGGAAGACGTTGAAGTGAGTATTCTTGAGCGGAGCTCATCGTGCTCACGT
-TAACCGGAGCCGGCATCTCGCCGGGCTCAGTGTACCAGTAAATGATCATT
-GCGTTGCCGATTTGATGGCCATTCTTCAACACGTACGTCACCTTCTTGCG
-AAGACGTGGACAACGTGGAAGGGTGGCTGTGTAGACGTGAAGCTGGAATT
-CGATGAGATCCGAACGATGGGATGATGGTGTCTTCCAGATGCGTAGTTGA
-CCTTCTCGATTCAGTGCGAGCGCTTGTTTCGCAGATTTTGGACGTTTTGT
-GATGCCGTCTGAAAAACAGAAAAAAAATTAAGTTTGGAGCATCTTGAATT
-TGCCTTTTTTACTTTCGGAACGTCCCACTTTTGCTGATTTTTCGTGTTTT
-TTTTTCTGGAATTTTGGAATTACAGGGAATATCTCTCCAAACCAATTACA
-GGGAATATCTCTCCAAACTGGCCGTCGCAGGAAGACTTCACTTTTAAATT
-GTTTTACCTGTAGGCACAAAAGCAAAAGAGGAGAGCCTACATCTTTGTAT
-CTTCGATAAATTCGTTAAAAGTTCTTTTGTCTTTATTCATTTTTCAAATT
-ATTTTCCAATGTTTTAAAAACATTTTTTCTAAACTTTACAGTAATTTGGG
-CTATTTTCACTATTTTTCAACTTTTTGACGCGTTTTTAATTCTTCATTTC
-AACCTCATTTTGTCCAAACTTTCTCAAATTTCCACATAATATGGCCGATT
-TTCATGAAATTTTCATAATTTACACCAATATATTCAATTTTTAACCTCAT
-TTTTTTCACAGAAATTCCCAACATTTTCACATATTTTTCATGACAAATTT
-GAATTATTTCAATGTTTTCCAAACTTACGAGGATTGGTGCTAGTATTCTC
-TGACCACGGAACCAGTCCATCACACGTCAAATTTCTTGCATCAACCTCGA
-GCCCATCAATAAAGAAAACGAATGCGGCTTTGCCAGTTGTGGCTGGCGGA
-AGGGCCGGTACTCGATTGTTGAGGCATCCGAGGGACTCACTGCAAAAAAA
-TCATCGTTTTTTCTAGAAATGGATCGATGTTTGTGTAACTTTATCGATTT
-GCTAGAATATTATCGATTATTCCGAAAAAAAATTTTAAAACAACAACTGT
-ATTTCTATTTTTATTTTTTTAAAGATAGACTTCCAGATCATATTTTTTTT
-GAAAATTTATTTAAAAAATTATCGATTTCTCTAGGAAAAATATCGGCTAT
-TCTCGAAACTTGTGGATTTCCCTAGAGATTTATCGATTTCTGAAAAAATT
-ATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTT
-TCTGAAATATATCGACTTTTCGCCCAAAAAGTACGTACATCAATGAAGGC
-TTATTGACAAGAAAGTGTAATTGTCGATTCCTATCATTCCAGAACTCCAT
-ATCCAACAGCTGAAGATACAAACTACCATCATCGGCGGCTTGTGCTGGCA
-CAGCAAACGGGCATTCTTTCTCGCATTCCGACATATCCGACACATCATTA
-TCGATATCATGTATCTGCGTTGGCTGGAAAAATGGATCCTACACGCGTTG
-AGCACACACTTTGTGAGCTCTGCGAGAGCTCAATGAGAACCTACCGGTCG
-TTTTGTGGCTCGTTTCGCGAATCGTTTCAAATATCCGCCATGCATTCGTG
-GTAGCTCGCCTTCCTGATTATAGTCGTACATGATGAGCGCATGGCTCACC
-ACGAGCCGTGATTCGGTTTCCATCATGTAATAGATTTTTTTGCGTAGTCG
-TGGCTCGCGTGGATTGATGGAATACAGGAATACCAAGTGGAATGGGCACG
-TTTTGTAGTCCATGTTGTCTTTGGTCTGTGAGGGGTTTTGGATATTATTA
-CGGGAGGCATAAAATTCTGAGAATGCGTATTGCACAGCATATAGACCAGA
-TCCGTAAATCAACACAAGCCCTACAGTAGTTATTTAATAAATTACTGTAG
-TTTTTGCTGCGAGATATTTTGCGCGTCAAATGTGTTGCGAAATACGAATT
-CTCAGAATTTTTTGTTCCTAAGAACAGCTCGTCAATTTTTTTTTCAGTTT
-TTCAGGGTTATTCAAAAAAAACCTGTTTTTAAAGCTTCTAGGTCTCATAT
-TTAAAAAGTTTTGAGAATTTAATACATTTTTTTTAATAGAAATTTGGCAA
-TTTTTTCATCACCTCATCGTCGATTATTCTTTTTGAAAAATTTTCGATTT
-TTATGGGAATATATTTATTTTCCAAGAAGATTAACTTTTTTTCAAGAAAT
-CTGAAAATTTATCAATTTTTCAAAAGAAATTAATGAATTTTATCAAAAAA
-AGAATAACTTTTCCAGAAAATATTTTTTTTTCTTAAAAATTAAAAAAAAA
-TTGTTAAATCGCTTTTTGTGTCAATTTTTCAAAAAAAAAAAAGAGGCATC
-GAGAATATCCCATTTTTTTCGAAAAAAATTTTTTGGTTATTTTTCTTTTT
-TTAGATAAAATGTATATACTTTTTTAAAAATGTTTTTTCACCAACAAATT
-TTGATATTAAAAAGTTGGAATTTTATGACTAAATTATGGAAAACTTTTTC
-GATTTTTAGAAAATCGGAAAATTTTGAAAGTGGGCGTCGTCAAAAAATTT
-AATTTTTTAAGAAATTATAGAAAATATGCTGATTTTGGTATTTTTGGAGA
-GCGTCGATTTCCATCGGATTTTTTTGGTTGTTTTCCCTGGGATCCATGTA
-ACACCTGAAACTGTGATCCCAGCTCATCACAAATCACTCCGACTTTGCGA
-ACTTTCGTCCGATAGCACGTCGGATTCTGTGCATTTCCATTATGAGACCA
-TGGCGAGAAGTCGTCACGATTGATGTCGTGTGGAAAGATGGCTGTCCCGG
-CGACGAAGAATGCGTACGCACGAGAATTACGAACAATTGGTGGGTGTCCC
-GGCTTCGCGTAGTTCAGCAGACCACGTTCTTCGCTGGAAAAATGATGATT
-ATATCGAAACATTCGAGGAAAATGGATAGAAAAAACGAAAAATTCAATTT
-TTATCAAAGTTCGTTTATGTTGATGAAAACATTATTACGGGAACACAAAA
-TTCTGAGAATGCGTATTGTGCAAAGTATCTCGTAGCGAAAACTACAGTTA
-TTCTTCAAATGACTACTGTACCTATTGTGTCGATTTACGGAAATAATTTA
-TAAATCGATAAAACAGTAGTTATTTTTAGAATTACTGTAGTCCTCGCCAC
-GAGATATTTTGCGCGTCAAATATGATGCACAATACGCATTCTCCAAATTT
-TGTGTTCCGTAATAAAAAATAAAGTTGTTAGATGAATATTCAGGGTCTCA
-ACAAAATTTAATCTGTGTTTTCAGTTTTCATGTTTTTAGAGTGGAAAACG
-TTTTTTTTTCAGAAAACAGTCAGAAATGTAGATTTTGTTCCATATTTCAA
-AAAATCATTTAAAAAATATAGAACATTTTTTTGAAAAATCAAATTTCTCC
-AGAGTGTAGTACGCCATTAAAGGTCTCGTCACGATTTTGTTTGTTTTCAA
-TTTTTAAGTTTTTGAAGTAGAAAATTATTTTTTTTAGGAAAATTTTTCGT
-CGATTTCGTTGAAAATTCGCTAATAAACGGGGATTAAAAAAAACGAAATT
-TTCCAATTTTTCGAAAAAAAAAATCGAAAAATTCCTCCCAAACTTACACA
-ACATTGGTATTAGCAATCCACTCCAACACGGCCTCAAACGTGCTGGCGAC
-CCTCTTATGTCGAACAGTCAAGTAGATATGTCCCGTTTCCAATTGCCGGG
-GATTCTCAAAATAGGGCGCCGGGTTCTCCTGCTGAGTAAGCGGATCATCG
-TCAAACTCCAAATCGTAGCCATTGTTGAGCACATCCTCTTGAGACATATC
-CAACAAATCATCGTCTAGCAGATGTCCCTGAGCGTCTTGAGCAATCGAAA
-CATCTTGCATTAGCTGATGTTGCTGCTGCTGGTGCTGATCGTGTTGAAGC
-TGGATCTGATCTAGGGAATCATTGTGATGTCCGATGACTTCTTCTTCCAC
-AACTTCCAAATCTTCTACATCTATAAATTGTTCTTCATCATTCGGTGCAG
-CAGATGATGTAGATGGATCTTGTGATGTATCAATCTTCTTCTGATCGTCG
-ATCCATTTCGATCCTCCAACACCTCGTCCAGGTGTTCCAGGTGGTTTAAC
-ATACGGACACGGAACCGGACCATCTCTCACATATTCATAGATATAACACA
-CATTTCCGATCGTAATCGTATTGTTGCGTTGAATATAAATGAGACGCTTC
-CGAAGACGGGGACATCTCGCCAGGACGGACATTGTTTCGACGAGACACAA
-CTGTGACGAGTGCCAGCCGCCAGCCGTGTCTTTTGCCATTTGGAACTGGC
-CGTTGTCGTCTTGGACGATGGCTCGGCGAGTTGAGCGGACGCGGGGTGAC
-GGACCTTCCGAGGCAGCTGAAATTAATGAAACTACGGCACTCTGTACATC
-TCCGGAGGCACCACGTTTTCAAGATCTACCAAAACAAGATCTACTATTTG
-GAGATCTACGAAAACAAAATCTACGTTTTCAAGAAATGGTACCATGCTAA
-TTGCAGTTTTCGCAGTTTTCTCGAAGAACAACAAATCAACAATGTTGACC
-GCCCAGTGTGCTCCGATGTCGCGTGTTGTTTAGCGTTTAGAAAAATCTTT
-TTTGAAAGAAAAACTTCAGGAGAACGATAAACAACGCACGATGAGTAATA
-TGGAAGAATTTTTGTTTCGTTTTTCTTTGAGAAAACTGCGAAAAAGTGCT
-AGATCCTGAAAACGTATATCTTGTTTTGGTAGATCTTATTTTCGTAGATC
-TTGTTTTTGAACAGATCTCGAAAACGTGATGCCTCAATCTTCTGCAGTTG
-CCGAATTTTCACATTTTTAAACCTTAAAACATATTTTTTCTAAAACTTTT
-CCAAAAATCGATTTCTTCGTTTTCACGATTTTTTTCAGAGAAAATATAGA
-AAATCGAAAATTTGTAAATTTTCGATTGAAAAAATGGAAAAATTACAGGA
-AATTATTGAAGATTTAAACTTGTTTCTAAACAATCGAAAATTATCGTTTT
-TTTTCTTTTGGAAATTTTTTTTTGGATTTTTCCCAAAATGGTGGTTTTTG
-AAATCAAAAAGCGTTAAAAACAAATTTCTTTTAAAATTACCGGAAATTAT
-TTTAGAAAATTTCCGAAAAGTCAATAAATTAAAAAATCGAACAAGAGAAA
-GAGTTATTAAATTAAACAAAAACAATTTCACAAAAGTCGATAACTATTGA
-TTTTTCATCAGAATTTCCTAAAAGTCGATATTTTTAAACCTTCTGATAAA
-TTCTTTTTTTGTTAAAAAAAACTTTCGATTGATTAGAAACACGTTTAAAT
-CTTTAATAACTTCCTGTAATTTTTCCTTTTTTTAATCGAAAATTTACAAT
-TTTAATTTATTCTTTTAAAAAAATCAAAAAACGAAGAAATTGTTCGTTTT
-TTCTGGAAAAATTAATTCTTCGGCTCGAAATTTCGATGATTTCTTTTTAG
-AAAAAAATATATGTAAAAAATTATACAATTTCAAATAAAACACTGTTTTT
-TTTCTTTTGATATTGAAAATAGTAGAAATTTTTCAATAAAAATTCCAATT
-GTTCACTCAAAATTTCAAATTTTCGACAAAAAAACTTACGATTAACAGTC
-CACGGTGACAGTCCATCGCCAGTATGATTAATCTGATTTGCAACAAAATT
-CGCCGGCACAAAGTACACAAAAACGCCGGTTGTCGGAATAAGTGGCGGTA
-GGTACGGTGTTCGGCGATTCAAACAATTCGATTGGCTCAGCAGCTCGGGC
-TCATTCACCAAATATCGGAGGAGAAGCTTCTTGTTGTGTGCCCAACCGAG
-TTTTGCAAGTTTTACGCGAAGAAACATTCCACCACGTGGTCCTTCCACTA
-TCTCGTCTTCGAACTGGGAATTTTTTTTTGATGAATTTGAGAAAAATAGT
-TTAAATCTTTATATTTCAGTTTGAAATCGCCGAATTTCAGTTGTGCACCT
-TCGTGTATATTTACGATATGTTTAATCTTTTTCGGATGCTGATTTCCGAT
-CTTTAACGGTTTTCCTTCATTTTCGTCGGTTTTTTTTGGATATGTGTTTT
-TGAGGTCAATTAATGAACCATTTTATTATCAGAAAACTAGCAAAATGTTC
-AATACTCGACAGAAAATCCATATGCTATATGCTTTTCTCGACTGAAAACC
-GGAAATGTTGCTAGTTTTTGATAATAAAATGTTAAATTAACACATTTTCA
-AAAAAAAAACACTTCTACAAAAACCGACGAAAATTAAAGAAAATCGTTGA
-AAAAACGAAAATCAACACCCGATAAAGATTAAGCATTTCGTAAATATACA
-CGAATTTGGTAAATCGACACATGGCATCTCTAGCGCGAAAATTCGAAATT
-CGTAATTTCCAGCTGAAATATTAAATCAGGGAATTTTTCTGAATATTTCA
-CTTAGATATTCGGAATCAGGGAAAAATTTGGAGTTCTTATAAAAAAATTT
-ACTAAGCAAAGTTTTAGCAATTTAGGTTCTAATAGGCTTTACAAATATCA
-AAAAGTCCCGATTTTTCAAGGATCTATATATATTTTTAGAACCACAGATT
-TTTTGCTGTTTTTCAGCATTCTCGGAAGACCATACCGGTGTGGATCCGGG
-ATCATCCAGATCTAACGAGACGTGCGGATCAGTTGGATCGACCATCGCAT
-GTCTTAAATAGTCGTTTCCGTGCGGAAGATTTACGATTGGTGGAATTTCA
-CCGGGACACGTGTAGTCGTAGAGAATGAGCACGTTTCCATAGATTTGGCC
-ATCGCGGGAGAGGTAGAAAATCTGGAAAAAATTTTTTGAATAGATTTTTT
-CGCCTTTTCTGAAGGATTTTTTTTGAAATTTGAAGGAAGACGGGTTTTTG
-CTTGCATAGACTCAAAATAAACCCTTTAGAAAATTTTTACGTTGGCTCAA
-AATATCGAGAATAAAAACCAATTTTTTTCTAAAATTTCGAAAAAATGGGC
-ATAACGGCGGAAAATGTATTTTTATTTGATTATTGTACCTTTTTCAGTTC
-ATTTTGGAGCATTTTTGGCCCATAGGCTTAAAATTAACCTTAAACATTTA
-AAAAACGTGAAATAAGATATCAAAAAGCCATTATGGCCACTATGACCTAA
-AAAAAATATTTAAAAAAAAACAACTTTTTTTTGAATATTCAAATTTTCTG
-AAACTGATAATAAACCTTTTTTCTCAATCTTAACAGTCTCGGCAGCCACG
-CGCTGTACTCGGTGAGATGAAGTTCGGCGATACGTGGATCTCCTTTGACC
-GATTGGAGCCGTCCGTTGAGACGAGCAACCGGATGACGTCGGACATTCGG
-TTTGATGACTGGATCGTTGAAGTGTTGCTCGCCGCCAGTAGAGCTCCATG
-GCTTCAGATCGTCATTCGAGACGTCTTTTATCGACATGATTTTGGAGCCG
-TCCACGTAGAATGCGAAACAGGCTTTGTGTGGAACAAGTGGTGGGAGACG
-GGGTGGTTTGTCGAGAAGCCAACCTCCTTCGCGACTAAAAATGGGGACCG
-TTGATTTTTGTTTTTTTTTTCTGACCGATTTTTCGGACAATAGCTTGAAA
-TTTTGACAATTTTCTTTATTTTTAGAAGATATTTTTTTCTTATATTTTTT
-TTTCTCTAAAAACTATAGTAAAAAATAGTTCAATTTTTTGTGGTTCTGGC
-GAAAAATGTATTTTTTCGAAAAAAATTTTTTTTTTTCAAAACAAGATATT
-TAGATTTATCACTGAAAATTGCTAATTTCCAGTGCGAAAAATGACTTTTT
-CTGGCTATTTCTGCCTGATTTTTGATATAAATTCCAATTTTCACAATAAA
-ATTGCTGAAATTTTCTCCTTTTTTCACTGTCTCCGTACATCATTGCAATT
-TCGGTCTCGTTGGTGAGCAGCTCAATTATTCGTTCCTTTCTGAGAAGGTA
-GGCCAGGCAGCCTGATATCACTGTGGCGTAGCAATCACCGTTTTCCGTCA
-TTTCAACTTCATCTTCGAACTGCAAAAATTATAGAATTGAAAAAAAAAAA
-CGATAAAATCCGACTTTCTCGATGATTTTTATGATTTTTAACTGAAAAAT
-TGATTTTTCGGCATTTTCTGAAGGATTTTGATTAAAATTTGAAGGTTTTT
-TTTTCTCCCGTAGGCTCAAAAAACGCCCTTTTTATGGCGGCTCAAAGGCA
-AATTTTAAGTAATAATCGAATAAAAAATCATAAATTTACGACCCCTACGG
-CACGGGAAATTGGAGACTTCAGCTAAAACTAACCGTTGATTTTGAATATT
-TTGAGCCAAATTTGGCCAAATAGGCATTAAATGCACTCCAGATGACTAAA
-AACACGTGAAAAAAGCTATTAAAATTAGGTAAATAAGACAAAAACAGAAA
-AAAAAGAACTTGAAGCGAAACTGGAGCCCATTTTTGGAGACAATTCTCAT
-TACAAAATTGGTTTTTTGGGCACATTTTTTAGTCTTTCTAGTTATTTCGA
-ACATTTTCCGAAGAATTCCCATAAAACTTTGAAGCTTTTCCATGTAAGCC
-CCTACCAATTTCACGTGGTACTGCCTTTCAGCAAGAGCTTTACTGATAAC
-TCGTTCTCCTTGAACTCGGAACATTTTCGACGGTGTCGCCGCCGCCGGAT
-TTATAATTTTCATCGCCTTCTTCTCCTTATCCCCATCGTCGATAGACCCA
-TCGGTATCCATTGGCTTGCGTGTTCGGACACGTCGCTGTTTGCTGGGCCT
-GGAAAATTTCGATTTTAAAGATTTTTTAAATAAAAAATCCCCCACAAATT
-CATTTCCAAATCCGGTGGTTGCCCATCCATAAACCCGTCGTCCTCCTCCT
-CATCATCACCGAACGGGTCCATTTGTATGCGATCCTCGTCTCGATATCGG
-GAAAGGTTCAGAATTGGCGGCTCATCCTCTACGATGACCTCCGTCTCTGC
-GTGGAGCATCGAGTCGTCGCCGGCGAAGATGGGCTCTCCGAGCTCTCCGG
-CGGTGAGCTCCTCCAAATGTGGCGCTGGCTTTCTCTTTTTCGCGTTTCGA
-ACCGTACTTTCCTCCGTCCTGGAGCGTTTTGGAGCTGCGATCGAGCTTGT
-TGATGCAGAGGCGAGCGCTTCTTCCTTTGGGATGCCCAACTCGTAGTCTT
-CATTGTTGTAGAGCACGGATTTCCGAGCATTTCGACGTGGACGAGATTTT
-GTGGCTGGATCCTGGGGCTCTGCGGCAGGCTCTGGATTTTGCTGGGGCTC
-TTCGGCCGGCTCTGGATTTTGCTGGGGCTCTGTTGGATTTTGCACAAGCT
-CTTGATCAACTTCTTCCTGATTTTCTGCCAATTCTCCCGAATTTTCAGGA
-TTCTCGGACATTTTTCTGCAATTTAATAATTGAAAATAAGAATAATTAAC
-GGGGTGGAAAATTAAAAATTAAACAAGCATTAAAATAAATTTGAAAAAGT
-CCTGATTTGTAGTCCGCAACGCACGCACGCAAGCATACACCAGAACAACT
-AAGAGAGACGGGAGGAGAGATGGAGAATTTGAAAGAGACGGCGAGGCGAC
-GAGAGAGCCGGAGGATTGAGGAAGGACAAACACACAGATGTGGGGTCTTG
-CAGCGCTTTCTCTGCGTCTCTTTTTTCGACATTTTTCAATGGGAAATTTT
-TTTTTGGAGTTTTTCTTTTTTTTTATCGGAAAACTTCAAAAAATTCAAAT
-GGAAACGCTGTACGGACAATGCATAGAATAACACGCAAAAATGCACATTT
-TTAGGCCTTAGGTTACTGTAGTGGTCTCGGCGCGAAAATGCGGATTTTCA
-TTTTGAATTCAAAATAAAAAAACTGGACGTGATTTGGTACAAGCGTTTAG
-TGAAAATGTTTCACAAAATAGGAGATCAATTAGATATATTTATTTATTCA
-TGGAAAATGACTATTTGGAAAAAAATTGCGAAATAAATAAAACTCGATTA
-AAAACAATGTGCATATGTCTTCGTTGCTTTCTTGGCGAGGGTTTCTCGGT
-ATCGAGTTCTACAAGAGACACACATTACGAATAACCAAAATAGTTTAGGT
-AATATACACATTGGGTGGGGGTGGGCCAGAATAATATTGAATAAGGGTGA
-AGAAAAAATATTCAAAATACGTCGCTGAAGTTGGCATACAATCTTGAGTC
-GGATAAATGGTAAGAAAGCAGCACCACTCAACTCAGATCACAATCTTCTG
-AAGAAAAAGGGACGAATGTATAGGTTCGGAGGGGGGGGAGGGGGAAGGGG
-TGGGGATGGAGGCAATTACAAATAAATCTGAAAGAAAGTTACAAATACTA
-CACACCAAAACGGTGAAGACTTGCAAACGCAGTGCTTGCAAGAATTCGAT
-AAAACTCGCGGATGTTAAGAGCGAATCATTTGGATTTCGGGGGCAGTAAA
-TTAAATGGACAAGGCATTTCGAAAAATACACACGTTAGACTGAAAAAAAA
-AAACACGATGTGATTTATGGGATGCAACACTGCTTCTTTGGTGGGTCGGA
-CGCTGGCGAAGGAATGATTGTACCACTGCCACCGCCATATCCTTGTCTGT
-CAGTTCCTACATGCTTGTTGGATACTGATTTGTAGATTTCCGTCAGGATA
-TTAGTGAAAGCTGCTTCAACGTTGGTGCTGTCGAGGGCAGATGTTTCTGA
-AAAAAAAAAATATATAAACGCAATAGATTAGTTTAACTTACCAATAAACG
-ACAATTGATTTCTTTCGGCGTAGATCTTGGCCTCGTCTGTTGGAACTGCA
-CGCAAATGGCGCAAGTCGCTCTTGTTTCCGACCAACATAATCACAATGTT
-CTGATCGGCGTGATCACGAAGCTCCTTCAACCATCGCTCAACATTCTCGT
-ACGTCACATGCTTAGCGATGTCGTAGACTAGGAGAGCTCCGACAGCCCCA
-CGATAGTAAGCGGATGTGATGGCACGGTAACGTTCCTGTCCAGCAGTATC
-CCAAATTTGAGCCTTCACTGTCTTGCCTTCTACCTACAAAAATAATAATT
-TGAATCATAAGTGTATTCTAATGAAGTTCCTCACCGAGATGCTTCTCGTG
-GCAAACTCGACTCCGATTGTTGATTTTGATTCCAAGTTGAACTCATTTCT
-TGTGAAACGAGACAGGAGATTCGACTTTCCGACGCCTGAGTCTCCAATCA
-GAACAACTGAAACAATTTTTCGTTTGGGAATTGAAAAATGAAAAACAAAA
-TTACCCTTGAACAAGTAGTCGTATTCATCGTCACGAGAGCCCATCTTTAC
-TGCTGAGCTGTAAAATGATAAAGCTTGTTTGAAAGTTGTGTATATATTGG
-GACGATTGTAAAAAAGAAAAAGGGCATTGGTCACATGATTCATCAGCCGG
-GCGCAATGTTTTGTTGTAAAATCGATATTAAAAGAACGAGACACTGTTTT
-ATCGGCGGAGAATATTTTTATGTTCTGTTCCCGACACAAACGCGGAGTCA
-GGAACCGGTTGTCTATCTCGACGGGGATTGAAAAAATATAAGTGAACTTG
-ATTTAAGAATGATTCAAAGTATATGGAGTTGGGAGTTTTATATTGAATTT
-TATCAATATATGAGGGTGGTTAGTCAGAAGAAAAATGTGAAAATGTATAT
-AGAAGTGTGTTATGAAAGAGTATTTGAGGCTTATCATACCCGAAAAAGGG
-AAGGTGAGCGGCCGAACTTTGTTTGTCGACACGATTTCGAAATAGTTGAA
-CAGGATATTTTTAACAAGGGAAAGCTTTCTCTGGGTGTTCTTTTTTGATA
-ATTTCAGCTAAAAATTGAAAAAAATAATTAGTTTTATGGCTGTGAACATC
-CAGAATAAGCTTTTCCGAACGCGAAATGCGTGTGAAACCCATAAAATCGA
-ACGTAAAACAGGTCAGGCGCACCGGCGCAGCCACGTCGGTCTGAGGGTAC
-GCGACGCTAGCCGCAGCGCAAGCCTCCTCGGGTCTCGGCACGACAACTAC
-CGTACCCCTTTCGCAGCGGCGCAACGGAATCTCAATTTTACATTTTTTTC
-TTTTTGGCCTAACGAATTTTTCCGTTTTTTCAGAGCATTTTTCATTGATT
-TTCTTAAATTTTCATCAGAATAAATTTTAGAACTAATTTCCCGTAATTCT
-GATACGCGTTTTTTATAGTTTTCGTGAAGAAAATGCTGAACATTCGAAAA
-ATACTGAAATAATTTAGTTTTGAAAACTTGCTCCTCTGTTTCAATATCTT
-ATAATTTTCTTTTCTGATTAATATTTTGATTTTCCAGGTAATCAATCGCC
-TATAATGGCTCCAACGTAAGTTTTCTTTATAAATTTATATTAGATTGAAA
-TTTACTTTTAGGCCTGACTTTCAAATACTTCAATTTTGATATTAATTCTT
-GGTTTTTCAGAAAGAAAGTGCCACAGGTTCCAGAAACTGTGCTCAAGCGC
-AGAAAGCAGAGAGCCGATGCCCGCACCAAGGCTGCTCAACACAAGGTGAC
-CGTCGCCGCTGTAAGTTTATTTAACTGTCAGAAAACAGAAAATGCTCTTC
-AAAAGCACTGGTTTTAGGATCCACTATTATCCAAGCCAGCCGTCAAAACT
-GAGCTATAAGAATTATCTTGTTTTTGGGTGAGGTGTATTCAATTCAGAAT
-GCGTCTCAATAACACGATGACAATTCGAAATTTTAAAGTTTAAATTTTCT
-TTTAGGTGTTTGAAAATTAATTTGAACTAATCCTGCATTAAAAATAAAAT
-TTTTTACAGAAGAACAAGGAGAAGAAGACCCAATACTTCAAGCGTGCTGA
-GAAATACGTCCAGGAGTACAGAAACGCCCAAAAGGAAGGACTCAGACTCA
-AGCGCGAGGCTGAGGCCAAGGGAGACTTCTACGTTCCAGCTGAGCACAAG
-GTCGCCTTCGTCGTCAGAATTCGCGGTATCAACCAGCTTCATCCAAAGCC
-AAGAAAGGTGAAATTGTGTTAATGAGTTTTTTAATAACCATTCTTTGTTT
-TCAGGCTCTCCAGATCCTCCGTCTTCGTCAGATCAACAACGGAGTGTTCG
-TCAAGCTGAACAAGGCTACTCTTCCACTTCTCCGTATCATCGAGCCATAC
-GTAGCTTGGGGTTATCCAAACAACAAGACCATCCACGATCTCCTCTACAA
-GCGCGGATACGCCAAGGTTGACGGAAACCGTGTCCCAATCACCGACAACA
-CCATCGTCGAGCAGAGCCTCGGTAATTTGAAAACTTATGCTTTTTAATTC
-TTATTTAATTGTTTTCAGGAAAGTTCAACATCATCTGTCTTGAGGATTTG
-GCCCACGAGATCGCCACCGTCGGACCACACTTCAAGGAGGCCACCAACTT
-CTTGTGGCCCTTCAAGCTCAACAACCCAACTGGAGGATGGACCAAGAAGA
-CCAACCACTTCGTTGAAGGAGGAGACTTCGGAAACAGAGAAGATCAAATC
-AACAACCTTCTCCGAAAAATGGTCTAACTTGTTTGTTGTTCATACCTTCC
-TTCCGGATAAATCGTTATTGTTTGACGTTGTTTAATTATGTGCATAAATA
-ATCATGAAACGTGATCGTCTTGGCTCGACTCATCTCGCATTTCATGAAGC
-GTCTCATCATTCAGATGAATCGTAAAACCGCTTTGCTGACTACTCTCCCG
-AGAACAGTCACTGTTCCCTACTATGCTCCATCCTGTTTATTTCTAGAAAC
-TTTTCTTCGGAGCAAGCTAATTCCCTATGAAGTGAGAGCATTTAGGTTAA
-TAAACATAGTCCAGATTTAAATCCAGACAACGCAATGTTCTCTCTACAAT
-GTACTCCCTCGTGAGCACCTATACCCATTGATTGATGTCGATGGGTATTT
-CTTCAAAAATTTGATGGAAGGACTTGATTATCTGCTCGCCAAATATGGAA
-AAGTTGGCTTAAAACTAGAATTTTAGAAAAAGCTTAAATATTCTTCCAGT
-CTCTGGACTCGGGCCTGACTCCAAAAGAGCGAGCACAGGCTCTCGCATTG
-AGCGCTTTGCTCGACGAGCTTACTTGGATGCTCGCCTACTCGCGAGGCCA
-AGATTTCACGTGGCTCCGCGATGATCGTAAGATTATCGAAGACTTCGGGC
-TTGTTCAGCTCTATTTTTGGAGGAATTGGATTGTACCGCAGATGCAGAAA
-CGGGTAGATTATTGATATTTTATGGAAAAATCGATAAAATATTGATTTTT
-TACTGAAAAAATTGATCAAAAATCGATTTTTTTTTCCTCGGAAAATCTGT
-AAATTAGTAGTTTTTTGTTGAAACAATCGATAAAATTCTGGTTTTTCAGA
-AGCAAAATCGATATATTAGGCCAAAATCACCAAAAATTATCAATTTTCCT
-ATAAAATTTACCATTTTTGGCTAGATTATCGATTTTTAAGGCAAGAAAGT
-CGATATTTCACAATTTTTTATTGATTTTTTTGGCTTTCCAGCGCGCAAAC
-TGTGCCAAGATCTAAATTTTCCGAAATTTTCATTTCAGACACGCCGCCGA
-GTGCGAGGCTACGGAATATCCGGAAAATCGGCGAGAAAGGAGGTCGCCTG
-CCGAACTGAAGCAATGTTGGAGGCATTGGCCTCACTTTTGGCCTCGAATA
-AATACTTTTTCGATGTCAATGAACCGTCTTGGGTAGGTGGCAGCCAAAAA
-ACTCGGCCAAAACTCGGCCTTTCAGCTCGACTGCAAGGCGTTCGCCGTGC
-TGGCTCAATTCAAATATACACCACTGCAGAACGAGGCCCGCGTAAAACAA
-TTCATGAAGGACCGAACTCCAAATTTGGTGGGTGGCCTTGAGTTTTCTAG
-GCCACGAGATTTGAAAAATTCTATAATTAGGGCATGTGGTTTCAGATGAC
-ATTTGTGACGCGCATGAAAGAGGAATTCTGGTCGGATTGGTGCACCACGT
-CGGAGGATTGAATTTCGTGGAAAATGCTAATTTGTTTAATGTAATATGAT
-TTTGCTTCGTAGATTTTAACCTATGCTCGAATAAAATTTATATTCTAATT
-TTAAAAAAATTTCAAAACAAAAAATTTCTTACGTGACAATTAAAGGGTAT
-TACAATATGGGCATAAAAAATGTATTCCCTAATTTTCGAACTTGTTCAGT
-CTTGGTTGCCCAGGTAATTTTTTTGCAGTTCTTGTTTGGGACTCGGAGCG
-ATTTTGCGCAGATGCATCATATTTGACGCGCAGAGTTTTAATTGAGGTTT
-GAGCTTGAATTGAGTTTGAATTGAATTTTAATTAAATAAAGCGAATTCTA
-GAATAAAATGATGTGTTTATTGCGAAATAGATCGTGAACCTACAAAACAA
-CAGACTTTACGCGCAAATTTCCGAAATTTTCCAGAAAAACCAGTCAGAAT
-TTCAAATGATACTTGTTCCTCTTCTATTTCTTCTCCCAATTTTGTTGTGC
-GGTGGGAAAAAGAAAAAAGCGAACAAAAATGTGAAAGAGGCGTCGAAAGT
-GAACTCACTGGTTCCACCGTCGACCTCTACGGACCCGCTGAAGACTAAAG
-AGAAGGAGATGAAAAAAGAAGAAGCTCCGGGAGCACCAGACGCCCCGACT
-AAGCCGAAAAGTCCTCCGAAACCAGTGGTCCAGGACACGAAACTTGCTGA
-AGTGCTGCCTGAAAGTGAGAAGGAAGACGAAATGAAGAATGGTATTCAGT
-TGCCGAATCCGCCGAAAAATTTGGTGGGTCTCACGGCGATTTGAGTGTTT
-TATCGATTTTCTATGAAATAATTGATTTTTTCTAAAATTATTGAGATCTA
-GATTTGCGAGTTTTCTGAATTTTCTAATATATCGATTTTTCAGAAATGCG
-AAAGTGAAATTGCTCCAAAGGAAAAGCCGGCGGCTGACGAAAAGAAGGAC
-GAGAAAAAAGATGAAAGCAAGAAGGATAAGAAGGAAGAGAAAAAGGAGGA
-GAAAAAAAAGGAAAATGACGAAATTATGTGAAAAATTCGATAAATTGGTT
-CTTGAAGATTATTGATTTTTCATTGTCGATTTTTCAGAATTCCTCGAAAT
-TTATTTGCGCGTCATATATGGTGCATTGAGTCCATAGAGACTTCAAAGTT
-CACGCGCAAATGCAGACATTTTTGCACGCGCTGCGGTGAAATTCCTCTTG
-GCGAATTCAAATATTTTTTCCCGCCTTTTTTGAAAATTTTCGAGGCGTTG
-GTCGAGCTGAATACACGTGAAGTTTAGACTGAATGTCAAATCACAAATAC
-ATCACATTTGACGCGCAAAAAATTCGTTTTGAAAATTTGCGCGTCAAATA
-GGGTGCATTGAGTACGCGGAGCCAATACATCACACTTGCTTTTCGTGGAA
-AATGGAGCGAAATTTGATTTTTTGATTTAAATATTACGGGAACAGAAAAT
-TCTGAGAATGCGTATTGTGCAACATAATTGACGCGCAAAATATCTCGTAG
-CGAAAACTACAGTAATTCTTTAAATGACTACAGTAGCGCTTGTGTCGATT
-TACGGGCTTGATTTTTTTTCCATTTTCTTCAGTTTTTCTGACATTATTGT
-GTTTTATTTTAATATTTTTACCGATTAATAAATGATTTCCGTAAATCGAC
-ACAAACGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCGCTGCGAG
-ATATTTTGCGCGTCAAATATGTTGTGCAATACGCATTCTCAGAATTTTGT
-GGCCACGTAATATTTGCGTTAAATAAAAATCAAAAAATTAAAAAAAAAAA
-AACATTTCAGAAATTTTCAAAAATTTTTTGAAAAATTGACGCACAAAGTC
-TCCTGTTTCCCTTTTCCCCAAAGTTTTAAACTAATAAAACTTTTTTAATT
-GTCGAATCCGACCAGTTATTTAATACGAGACAAAACGGAAACAAAGATTC
-CAATTTCCGATTACGGTCAGCTCAACACTTTCGCTCAAGGAATTCTCTAC
-GCTTAGATTTTGATCTTAATGGAAAACTGGTAGAACTTGGTATAAAACTA
-TCCAAAAAACTGGCAGAAAGAGTAGTCTTTCCGAAGAAATGAAGTCCCTA
-ATCGAGGAAGATGACTTGGAAGTCGGCAGATTCCGCCGCAACGCGTTTTC
-CGCCGTCGCCCTCTCCACCTCCTGTATTCTGGCGATTGTGGTGTTAACAC
-CAATTGCCTATCAGGCAATTCAGAGAATTCACTCAAATTTGCTTAACGAT
-GCCCATTTTTGTCAGGTAATTTTTTTAAAAAATTTAGAAATTTTGATTTG
-GAAATATTCAAATAAAAAAAAAGTTTTTCGAAATTTATTTTCAATCGTTT
-GAGATTTTGACATACATTCCAAAAATTCCTACTCTTCGCAATTTTTTAGT
-CAACTCAAACTCAAAACCTTAAAAAAAAACCGCAAACCTGTCATGGCGCA
-TCGATGTTATCCCTACGCTAAATGTTCTGTTTTCGAAGGTTACTTTTTTC
-CAATTTTTATCACCAAGGAAAATGTATACACAAAAATATATAGAATTTGA
-CGTGCAAATTGGCAAAAAACTAAACTTGCGCGTAAAATCACTGCATTGCC
-TCTGCGGACTCAACACACCAGATTTGAAATTTCAGGAACTTATCGATTTT
-TGTAAAATTTTGCAGCATGGCGCATCGATTAAATATTAAAAAAAAATTGA
-AAATTATCGATTTTTTTGAACACGAACAATTTGTGGAAAATATGAAATAA
-AAAAAAACATGGTGCATCGAAAAACTTACAGGCTCGAAACCGTGACCTCT
-GGACAGAAACAATGAAGATGGCTCGGAGCCGCGGCCGGGACGAGGAGCTC
-GTGGCCCGAACCAAGCGAGCGGTTAAAGGCACATGGCTCTTCGGACAGTA
-TATTCCAGACCGATCAAGCAGAAATCGACGACAGCAATACGCCGAGGCCG
-CTGGCGGAGGCGGTGGAGCACCACATGCCGAGTGTAGACGGGGTCCACCG
-GGACCACCGGGTGATGGTAGGTTTTTAGATTTGCGAGGCAATTGTGGTGT
-ATTGGTTTAATTTTACAGACGGGGTCGACGGAACGGACGGAAAAGACGGT
-GCACCTGGAACCGATGGAAAAGACGGTCAGGTACCACAAGGACCAGCCGA
-CGGAGGTTATCAAGAGGGACCATCTGATGCAGTTGAAGCATGCACACGTG
-AATGCCCACCAGGACCGCCTGGACCAACTGGAGCGCCCGGAGACAAAGGA
-TCTCGAGGCTACCCTGGAGAATCTGGAGAGCCAGGCACCCCGGGAAGCGC
-CGGACCGAAAGGAAATGCTGGACCGTAAGTGGAACTAAAGAATCGATAGT
-TTTCGGTAAAAAATCAATCATTTTAGGAAAAAAATCGATAATTTTCATTT
-TCATTTTTCTCCATTAAATTATGTTAACTTTCTAGAGCTGGACCACCAGG
-ACCACCCGGATATCCAGGACGTCCTGGAGAAACCGGAGATCACGGAAAGA
-CGATCGCCGGAGAGGCGCCACCTGGACCACCAGGACGACAAGGAGAAATG
-GGTCCACAAGGACCACCGGGACCACCAGGGCCACGTGGAAAGGACGGAGC
-CGGTGGAGAGAAGGGTGCTCCGGGAGATCAAGGTAATCCGGGACCATATG
-GAAAACCTGGGCAACCGGGAGCTCCAGGACCCGATGGCTCTGCTGGTGAG
-AAGGGAGGATGCGATCATTGCCCACCGCCAAGAACTCCACCTGGTTATTA
-AAGATTCTTCGATTGATATTTTATTTTATTTTCATGACGTTATTCATTTT
-GTCATTCGGTTTTCTTTTGTTGCAATATGATAATAAATCAGATTCTCTTG
-CCAGTAGTTCCAAGTGCCCCAACATATTTTTGAGTCCTTTATGTAGATCC
-CTCTCCTCGAAAGCTGGATGATTTAATAAATCTTTCAGAAAAATCGAAAA
-TTTTAGAAAAAAAAACATCAAAATTTTTGACAAACTGCATAATCAGTCAA
-TATTCTAAAAAAAAATACGATCGCACAAAAATAAACAACGACGCAACGAC
-ACTCCGCGGTTACTAAGCTCCGCCCACGATTTCATTTGCACTGCGTTGAG
-TCGGCCGTATTGTTATTCAAACATGAATGAATATACTGGTGAAGTTTAAA
-AAATTGGGTGTTTAGTTTTGAAGAAAATAATTTTTTTGGAATTTTGAATA
-AAGCACAATTGGCAGCTGAAACTGGACTTTCAGACAAATTTTGAACGGTG
-GTTGTTGATGCTTTGAGTTTATATTGTTATTCAAACATGTATGAACTTGT
-AAAGTGCTTGTAAAACTTGTAAGTTGCTTGTTCGCTCATTCTGAAATAAA
-ATTTAAATTAAATAAAAGTTCACGTGATACAAAAAAGCCAACTTATTGAT
-TGAAATCGATAAAATCGATAAGAAATTCATTCATTTAATAGTTTTTAACA
-AACAACAAATGCGATCAAAAAGTTCGGAAGGTGATTTACAACCAGAGGAC
-ACCCAATCCAGAGAAGATAAAGAGACGACTGCTACGTATAGTGAGGATAC
-AAAGCCAGGTAAATACAGTAGTCCTACCTTAAAATTACAGTAACCCAGCT
-GACTAAATATCATAATAAAACTTGCAAAAAAATGATGTAAAATCTTAGTT
-TTTAGTCTTTTGAACTGGTAGAAACTGTGTTAGCGCCACTTTTTGACTCT
-AAATAGAAAAATTTCCCATTTTAAAAGAGTTGTATTATGATACACTGCGT
-GGCGTGTAAAATACCAAAAAATAAGCGCGGTTTTTTTTTTCGTAAAATCA
-CAGGGAAAAATCCGAAATCGGAACTCCAATCAGCCGCCAACATCCCACGG
-GCCCAATAACTTCTGGGTTTTGTTTCAACAATCTCATTTACTCCAATTCC
-AGAAACCCAAAAGGAGAGAAACGCGGCACTGGACAATCTTGCCAAGACCC
-CAATCCAGTTAGTCGTCCAACCAACTCCTCTCACACCAGCCATCACGCCA
-TGCGAAGCACCACCACCACCACCTCCACCAAAACCCTCTAGCGATAATAA
-CAACTCGAAACGATTGAAAGTGAAAGATCAACTGATTGAAGTGCCCAGCG
-ATGAAGTAGGCCGAGTTGAGAATAATATAGACAATTTCCCGTTCTATCAT
-GGATTCATGGGAAGGAACGAGTGTGAGGCGATGTTGAGCAATCATGGAGA
-CTTTTTGATTCGAATGACGGAAATTGGGAAGAGGGTCGCCTATGTGATTA
-GTATCAAGTGGAAGTATCAAAATATTCATGTTCTAGTGAAACGGACCAAG
-ACGGTGAGAGTTGTTTGGTATTATCATTTAGTTTCGTTTCAAATCAGACC
-GAGATACATACAAATATTGAAGTTCAAATTTAGAACATGTTGCATCGCAA
-TGTGTTCATTGTGCTCCCTGAAGCATTATGCGGACATCACGAATTACATA
-AATTATTTTAACCAATGGTGGGCGGCAAATTGACAAATTGCCGATTTGCC
-GAATTTGCCAAAAATTTTCGGAAAATTGTATTTTTGCACATTTTTTTTAA
-ATTTCAAAATTTCAAATTTTATCGGCAAAATTGTATGCATCCTATGAATA
-TTTCTACATCTGTTTCGAAAAGTAAGCAAATTATATGAAAATATCTAAAG
-AAAAGGGGAAAAAATTCGAAAAGGCACAGTTTTCAGTGTTTCCGTCTTAC
-AAAAAAAACCTCGAAAAACTTTCGGCAAATAAGCAAACCGGCAAATTGCC
-GGAAATTATAGTTTCAGGCAAATCGGCAAACCGGCTATTTGCCGAATTTG
-CCGAACGGCAGTAGCCTCTCACCCCTGATTTGAACATGGTGCATTGCATC
-ACCGCTCCTCGACTTGGAAAGTTTATATCGGTAGATATTTGCAGCAGATG
-TAATTTACTGATATTTTCAGAAAAAGCTCTACTGGACCAAAAAGTACGCC
-TTCAAATCCATCTGTGAGCTTATTGCCTATCACAAGCGAAATCACAAGCC
-GATTTATGAGGGCATGACGTTGATCTGTGGCCTGGCACGACATGGATGGC
-AGCTGAACAACGAGCAGGTCACATTGAATAAGAAGTTGGGAGAGGGACAG
-TTTGGAGAAGTGCACAAAGGATCGCTGAAGACATCTGTATTTGCAGCCCC
-GGTCACTGTTGCCGTGAAGACCTTGCACCAGAACCATCTATCCGCCAATG
-AGAAGATCTTGTTCCTAAGAGAGGCCAATGTGATGCTCACCCTGTCTCAT
-GTAAGCTACCTGTTTCAAGTTGAACTAAACTAAAATTAATTTCAGCCAAA
-TGTGATAAAATTCTACGGAGTATGCACCATGAAGGAGCCCATCATGATTG
-TCATGGAGTTTTGCGACGGGAAATCCCTGGAGGACGCTCTACTCTCCAAG
-GAAGAAAAAGTGTCAGCTGAGGACAAGATTCTCTACCTTTTCCACGCCGC
-CTGCGGTATTGATTATTTGCACGGAAAGCAGGTTATTCACAGGGATATTG
-CGGCGAGAAATTGTTTGTTGAATTCCAAAAAGATCGTGAGTTTGTTTTTC
-AAAAATTTCTGAATCTATGTGAATGAAAAAATAAATTTCAGCTGAAAATC
-TCCGACTTTGGATTGTCGGTCAAAGGAGTTGCTATAAAGGAGCGAAAGGG
-AGGATGTCTGCCGGTCAAGTACATGGCTCCGGAGACATTGAAGAAGGGGT
-TGTACAGTACTGCCTCTGATATTTATAGGTGAGCCTACGAGCATACATAG
-ACATTGGTAGTGGCGTCAGCGGTGGCCTAGAAACCTTATCCGCGTCTGAA
-GGTTAATCAACCTCACACAAGTCTCTATGATTTCCAGCTACGGCGCTCTA
-ATGTACGAAGTCTACACGGACGGAAAGACGCCATTCGAAACGTGCGGGCT
-ACGTGGAAATGAGCTCCGAAAAGCGATCATCGGGAAGAGAATCAGCTTGG
-CCGTTGAGGTAGAGCTACCAGTGTTCATTGCCAACATTTTCGAGCAAAGC
-AGGCAGTACGAGACCGAAGATCGCATAAGCTCCAAGCAAATTATTCAGAT
-TTTTAAGGAGGTTTGTGAAGCATTTTATCGGTTTTTTGTTCAAAAAATTA
-GTAATTTTCCAGGAAGTCGGATTCCATGAAATTGAGACAAGTGGGATACT
-GCATAAGCTTGTCAATTCTCTTCCGAGAATTCACAATAAGGAAAGAAAAC
-CCGCGGCGGTGGCAGTGTAATAAATATCTGAAAATCCCCCCACCCCTGAA
-AATATTTGACTGTATTTTTTAAATCAAACACACAACGCACACAAACAGAC
-AGACAGAAAGCCTAAGTACACAGAGAAAATGTTTGAGGTGAGGTGCGAAA
-GGGAGGAGGCTAGAACACCTACTTTACGCCAACAAGTTATGACTTTTTGG
-AATTCAAAATGTCGTTTTTTGCTAGTTCACTGCTTACCTACAAACCTTCC
-TACCTTGTCTGCCTACCTTCCTTCCTATTCTCTTATTGCAAGATCTTTTG
-AATTTTTCTGAAACGTCTGTCTACTTCTGCGTCATTTGCAAACAGGCTGT
-TCTCAGTTTTAGGGGGTGGCAGCACCCACAAAAAAACATTGGAACAGAAA
-TCAGTCGGAGTGATCTACTAGATTAGATAAACATTAGATATCAGTTTGGA
-AAAGTTAAACATTATTAACTCACAATGGATTTTCTTATTGTGTTTCTTGA
-TATAAAGCGTTGAGCGGTATTGATACCATTACAATGCACTAAGCTAAAGG
-CTGTCAGAGCCGAATGAAAAACATGATACATCGAGCATGCGGCAATTGGC
-GTTCGGAAAATCGGCAAATTAAGATTTGCCGGAAATGTTTTGAGGGATTT
-TTTATAAGATTTAAATGTGCCTTTTTGAAATTGTGTCCCGTTTTCTTTAG
-ATATTTTTATAGGATTCGCTCACTTTTCAAAATAGACGTAGGAGAATTCA
-TAGGATGCATACACTTTTGCCGATTGAAATTTAAATTCTGAAATTTCCAA
-TAAAAGTGCATCACCACAATTTGCCGACTTTTGGCAATTGCCGTTTCTCC
-GGCAAATTCGACAAACCGGCAATTTGCCGATTTGTCGATTTGCCAGAAAT
-TTTCAATTCCGGCAATTTTTCGATTTGCCAATTTGCCGAGAATTTCAATT
-CCGTCAATTTGCCATATTGCCGGAAAAAATCGTTTGCCGCCCATCCCTGG
-TTCGAACTCCTAGAATGGTAGAATATGAGTATACTAAAAATAATTTGAAC
-AGAACTGGAACTGGAAGAAAAATTTTTTACCGACGTCTTCTGAGAAAATT
-TCGTGAAAATTGAGTTTTTATCACTTTCTGACTCACAATAAAAAAAATTT
-CCAAAATTTTTTGAATAGTTCTCGATCGTTTCCAAACTGGTCTTCCGACA
-TTCAGGTGCGTGATTGGTAAATATGAGGGAACTGCCATAATCAAATGAAA
-AACACGGTGTATCGTCTGAGAAAACCTTAAACTGTTCCGTTTTAGTAATT
-GGACAAGGATCTGCTGAATCTCGCTACTATAGCAACCGACATCTTGCGGG
-TCCAAAAAAGATTGATCTTGAAAATTTGATCCAAGTTTATTTAATCGCCG
-CCACACACACACTCACAAAAAAATCAATCAAATCACCCATATCAGTTGCG
-CGATTTCTAGTTTCTAGGCGCGAAAATCAAAAGGAGGAGAAGAAGCATTT
-CCGCATTACTCGTGTGTGTGCCGTTTCCGTTTATTTGTCCCTCAGGCTCC
-CCTCTCTGTTTTTTTTGTTTGCGAAAACTGTCTCTCTCTCTCTCTCTCCA
-TCACTTTTCTGTTGCGGAATAGAGGGAGAGAGAGAGAATTTCGGAGGGAA
-AAATACCTGAAATGTGATCCTCTCTCTGTATGTCATTGACTGTTGCGCGA
-GAGCCTTTTCCCGCGCGCGCGAGCCTCCCACCTACCCGTCGACGAGCCTA
-TTTTCTTGTCGGCGGTGCCATTCGGCAATACACGTCCCTCTCTCTTCTTG
-CTCTAGAAACATTCGGATTTTGATTTTTTGATTTTTCATGGTGGATCTGT
-AGGCTTTTTTAGGCCATCTTGGACTTTGTGGTGGCCTAATATATGGTGTA
-TTTTCCAATTTATCATATTTGCTTTAGTATTGTCCGACTTGTAGGCAAAT
-TGCACCATTTTAAGCCAAGTAATAAAGCTTTGAAGTTTGGCTGCCTAGGT
-TTTTCTAGCCACCAAACAATTTTTTTGTTTTCACAGCACACTTTTTTAAA
-GACTGTCATAAGTTTTCAAAATTCTTTGAAAAATTTTACACCGAATTTTG
-AGATCTTTAAGTTTGGTGGCCTAAATTTTTCAAAATTTTCTATGCCACCA
-GACTGAAACGTCCTAACTCTATTTGAATTATCTTTGAAACTATGAAAACT
-ACAAGTTCGACTAAATATGGCTTATCCAATTAAACTCGATTGGTGGCCTA
-GAAAACCAATTTCGATTTATTTCATTTTCTAGGCCACCAATAATCTTGTT
-CGAAAATTACTTTTATTTAATTACAGTGGAGTTTGGAATACTTACTGCCA
-TGGGCTGTAAGATGTTGCTCGCCTAACTTTTTCTATGCCAGCAACCAAAA
-AGTGGTGTTGGTGGCCGACAAACCCAAACTTGGACAATTGCATTTTCTAG
-GCCATCATTTTTTTTAAACTAATCGTTGTTGGTTTAGTCTACTGTAAAAA
-ATCAAATCGATAAGAACATTGGGAGCCAAGCTTTGGAGTTGGTGGCCTAG
-ATTTTTCTAGGTCACTAACTTGAAATGTCTGTAACTCTAAAAAATAATTT
-AGAGATATATAACAGAATTAGTAGGCTAATTTTAGGATGAGAAACTATTT
-AAACAATTGGTGGACTAGAAACTGAATTTTGAAATTTCTAGGCCACCAAT
-TCCAAATAAGCCTATTTCACTCCTGAATTGAGATAAAACGCTGAAATTTT
-GGACATATTAGAATACGCTATATTTGAAAAAATGGAATTGGTGACCTAGA
-AAATATTTTTTTGAAATTTCTGCTCCACCAATTTCAATTATAGCATAACT
-CATTTCATAGTTGTAGGACGGTGATTGAAATTTAGGATAGACAGATTTTA
-AACCAAAACAGATTGATGGCCCTTGAAATTTCTAGGCCACCTCTCCAGAA
-AAAAATCTGAAAATTGTTTTTATTTCTAATTCATTTTCTTCGTCCGTTTT
-TCATCTCTCGAGGATCTTATCCCCTTGTCTTACGTCTCCCACCCGCTGCT
-ATTTGGGCGACCTTCATAACTGTGAAAATTCTCACCATTCTCCCTCTCTC
-GTTTTTGCCCCCCCCCCCCGGTCTCCTATCATTGTTCAAGTACACCTGTT
-GTCCCATAACATCTGCCAACCAATTTTTTCCAATTTTGCCACAATTTTTA
-TTCAAAAAAGTGCATTGCAGCGGCAGGCATGCCTCACTCGTACACACACT
-TGAGCATACAGGAAAAGCGAAAAAATCAGTGATTGTTTGGATTCCTGGCT
-CTTTCTAGGAAAAAAACTCTTCCATTTTTGTAGTGCACATCAAAATGATC
-AAGCTGGTTAATTTTCAAGTGACTCCCAAAAAAATAACTGAGAAAGTTGC
-GTTTTAAAGTTTCTAGGCCATTGTGGGATTTCTAGGTAGGTTTTTGAAAA
-TAGAAGACAGTCTTGCACTAAAGTTTTGATTAGGCTGTTAAATGATTTTT
-GTCAGTACGTTTTTTGGAACTTCGATTTTTGCCAAAAATTCCTTTTTTAG
-TTTTTGTTTCAGTTTTTTGCAAATTTTTATTTCTTCCATATCTTACAACA
-TTTAGAAGGTCTCAAAGTCTCTGATAGCCAAGAATTGACTCTAATGACGT
-TATGAGCTCCGAGACTATTTTAACCTTTTTCCCTTTTAAGCATAAAATAT
-ATAAATATCAAAAATTTAATACAAAAACTTCTCGTTTCGAAACGTTTCGA
-AATCCTCCAGTTAAAAAAAAATTAGATTACGGCATCGGAAAAATTGCGAA
-ACTTTTGAATCTGAGGGATTTTCAATAGAGGGTCCCGCCAGGAATTTGAG
-TTTTTAACAGTACCCTTTCCATCGTCCTTCCCGAAGCCCATTACATCATC
-ATTAATTTTGCGACCTTTCTAAAAGCGGTCATGGGGGGGGGGACATGTGT
-TTGTTGCATATACAGGGACCCCCCGCCACAACCACCGCAACTAGAGATAA
-AGATCTGCTGCACACAGACAGCTGGCACATGGATGGACAGAATGTCTCCT
-TAATTTTACCGCCTATTTCATAATAATAAAAGTAGAACGGGGGGCAGAAA
-AGAGAATGATTGCGAAACCACCTGCTTGGCTGTCAGCGCATAAACTTTTC
-GGAAATTTTGGGTCCCACCACGCTTTTTTCGGTAACAAATTTTGAGATTT
-CTCGATACACCATGATGTCTTTTGGTGGAATTTTGGGTTATCATGGCTAA
-TACAAAGCTTTAACGTGCCTTGAACTTTCGCAATTTGAACTTTTGGCCTT
-TACTTAAAAATTTCGATGGGGCTCTATAAGCCATGTGGTTTCGAACTTTT
-CCTGAAAATTTAGATTTTTGTTCATGCACCATGTTGTTTTTTTTTTGGAA
-TAATTGAGGAATTCCTTACTTTTAAAGTAAAAAGTTTGGTGAGATCCATG
-TGTTTTCATATTATTCAGTTGGTAAATTATACAGATTATTGACTGAAGGT
-TAATTTTTTGTTGGGAAAATAAAAATCGCCAAAATCAATAAAATCGTATT
-TAGAAGTAGGGTTTCCATATAGGCGGTAAAAGGCTTGTCTGCCTGACAAT
-AAGACGACCGCCGCTCGCCTCAATCCGCGGCGGAGGCAGGCAGGGTTCAG
-GTAGGCACTGAAACCGCGCCTGCTTACCATGATGTTCCGTTCTTGTCGAT
-GCACCATGATAATTTTGGGTTACATTTTGAGCCTTTTCGAAAAATTAATG
-GTGGAAAATTTCAAGCTGAATTTTAATATTTATTTTTTTAACCGTATTGT
-GGGACATGCAAATGTCTTTCATTTTGTGTCCCTTCACTCTAACGTCTTCA
-GAATTTTCGAACTTCTCGATGCACCATAATGCTGTTTGGCGATAACTTTA
-GAGTAAGAATGGTAGCGATTTTTGCGATGCACCATGACGTTTTTATCGAT
-TTTCAGAAAAAAAATCACTCCGAGACCCAAATAGTTTCATTCTCGACGCA
-CTATAACGTTTTCGAAGTAAATTTCAAAATTGCTTCTCGGAAAAGTTTTT
-TGAGACCTACATGCACCTTTAATCTTCTTTGGAAACTTTGGAATTTCCGC
-CGAATACTCTCATTTCAGTTGTTCTCGATGCACCATGATGGTATTTTTTT
-CAAATTACTTTTTTTTGATTTTTCCATGAGAGGACCAATATCTGTCTTTA
-TAACGGCGCATTCTGTAACCAAATTTTGAAATTCCACGACATTCTGCTCT
-CATCGATTCAACATGATAATTTTAAAATGAAATTTAGCGATTTTTCGGGA
-AAAAAACAGTTTCGAGATTTTCTAGTTATTGGACACTCTGCACCTTGCTT
-ATTTGGAAATTACATTTTAAACCGACAACCCTTCAAAAACTGCTTTTCGT
-CGATGCACTATGAGTGCATAATTTTGTGTAAATCGTGGTGGGCCTCTAAA
-AAAACCGAAAAAAAAAACGTATAAAACGCAAACAAATTGTTTTTGTTGTA
-ATGTTGACACCAACAGATTCGGCGTGGAATATACGGAAGATCGGATTTCC
-AAAAAAACAACCGCTCTCCTGTTTTCGACGTTCCGCCGCTTTTTATGGGA
-GAAGTAGTATGTACCTTTAAGGGTACTGTAGCCCCTTGAATATTGGCCTA
-AAAGTGAAACTAGTGTTGCCAAAAAAAAACGAGATGACCAGTTTCAATAT
-GTCATTTACATCTACACATTTCTAAAATCTCATTTTAAATTCCATTGTTT
-TCTCGTTTCTTCTGTCCCAAAGTACCGTATCCTCATCCTTCTACCACCTT
-AATTTGCATTTCTTCTTCCTTATTCACTCTTCTTCCCCTGGACGAAAAAT
-GTTGCACGACAACAACAAAAGAGACCCGCCCCCCACCATCGGTTTCTCTG
-AACCTCTAACTGTCCCCGCCCCCTTTTGGGAGCCCACTGTCTTTTCTTTT
-TTTCTTTGGTCGCTGATTATGACGGATCGTTTTTGTCGTTTTTGTATTAC
-AGGAATACAAATTTCCCAAAACGCGTATTGCACAACATATTTGACGTGCA
-AAATATCTAGTAGCGAAAACTATAGTAACTCTTTAAATGACTTTTGTAGC
-ACTGATGCCGATTTAATTAAATTATTTATTAACAGATAAAATATTAAAAG
-AAAACACGACAATTCAAAAAAATTCATTTCGTAAATCGAGCCCGTAAATC
-GACACAAGCGCTACAGTAGTCATTTAAAGAATTACTGTTTTTTCGCTACG
-AGATATTTTGTGCGTCAAATATGTTGCGCAATACGCATTCTTATAATTTT
-GTGTACCCGTAGTATATTTTTGTCTCTCTGATTTCCATTGCAATTTTTTA
-ATTCCATATTTTTTTGGTGACAAATTTCTCCGCTTATCAATTTTTTTTTC
-AACCACATAATTATTAACCCCAAAACATCGCAGATTTTCAGGTAAAATGC
-CAGTCGTGAGCGTTAGACCTTTTTCTATGAGAAATGGTGAGCAATTTTTT
-TGAAGTTTTTTTTTGAAATTTTTAATTTTTCCAGAAGGCTTCTCAAACGG
-GCATAACACGTGGAACGACGCCGAATTTTGGAAACCGTGAGTTTTCGGCA
-AATAAGCTAACAGTCTAAGAAACACGAAAAAAAATCCAATTTTCTTTTCA
-AAATTCGTGATTTTCGGATGATTTTTGAACTTTTTGATTAATGTTCCCAC
-TGAAAATCCTCCAAATCTCTAAAAATCCGCTTCTAAAAAAGCCTCAAATG
-GCCTTGCGAGAATAGACGGAATGTTCAAGGATGACTGGTATAAAATCGGC
-AAACGTGTTGCCATTCAAACAGAATATCTCGAAATTTCGCCTTCCTTTTT
-TTTAAGTGGGTCGGATATTTAACATACAGAAGAGAATAGGGAGAGAAAAG
-AGGGAAAAGAGGGGAAAAGTCTTCTTGGAAACAACCTCGAACCGCAATTA
-AGTTTTTGCCTCACCCTTCAATTTTCGTGAGAAAGTTAAAAATCCAAATT
-TTTTTCTCCTTTTTTAAAAAAAGATTTCCTCCTCAAAAATTCAAAGGATC
-GAATTTTTTGTTACACGCCTGCCTCCTTTTTATTACCCTTGTTCTTGATC
-GCAACCTCTTTTCTAGATTACTTGAAAAAATGCGCTATTTTTTTTCCTTT
-TTCAACAGAGTCAATTTCAAAGGTGCTGTGGAAAAAGTTTCGGTTTTTTT
-TTGCAAAAATAATCGAAATTTGTTCGTTTATACTGCTTAAAAAATGACCA
-AAATTTCAAGTAATTCATTCGAAAAATCGATTTTTTTGAAATATACAAAA
-ATTTTCAATTTTTCATATCTGAAAACACAATTTTTTCGATTTTTCATTTT
-TCTTGGAAAAAACACAAAAAAAAACTGTATTTAATTTCCCACTTAATACT
-ACGATATCCAAGCCCCGCCTCCGCGTATTGTACGTGAACACGGCGGCCCA
-AAATTACACACTATCTCACACACGTTAAATGAGTGATACCGTACTCTCTC
-TGTTTTTTCTTTCATTTTTTCGGCGCCGAAAATTTTCAATTTTTGGTGGT
-TCTTTTGGCGGGATTTTTCGGATTTTTGTCGCGTTCACACACACACACCA
-GTTGGTGTTGCCTGTCGTCACCCACCCGCCCCACTCTTTGTCCGTGTACT
-GCTTTGCCATTTGTGCGCGCGTACCGCTGCCCGTCTGTCTTTCTCATCAT
-ATGCGCCTCGTTTTGTCGCTTTTTCTCCATTTGCCCTTCCTACATGGGTA
-CCTGCGGTTTTCATCGAAAATATCCTTAAAAATTCCGAAAAACCTCTATT
-TTTCGATTTTTGAATCGATTTTCGCCCAAACATAACCATTTTTCAGAATG
-AAGGAAGAACAAATCGCCTATAAATTGCCAGGGGCTTGGTATTACGAGGA
-GGACACTGCCTCGTGCTCTCCAGTCAGCGATCCGGAGGATATTGCGCAGT
-TTCTCAACTACAGAACGTCGATAGGCGTGCAAAATGTCACAGAGTCCGTG
-GAAGTTCCGACGTCGGAGCATGTCGCCGAGATTGTTGGTCGTCAAGGTAA
-AAATTGCCTTTTTAGTCAAATCTACAGTTTCCACAAATTTTCAGGCTGCA
-AAATTAAGGCACTGCGCGCCAAGACCAACACCTACATCAAGACACCGGTT
-CGCGGAGAAGATCCAATTTTCGTGGTCACCGGACGCCTGGAGGACGTGAA
-CGAGGCGAAACGAGAGATCGACTGCGCCGCCGAGCACTTCACACAGATCC
-GTGCGTCGAGAAGACATACACAAGGTAGGTGACCGTAGGCAGCCGGTTCC
-TGAGCGCCTTGTTCAGTTGTTCCAGGAGCCCATGCACCTGGACAGATCAC
-GAGCTATGTCAGAGTTCCGTTAAGAGTTGTCGGACTCGTCGTCGGACCGA
-AAGGAGCGACTATCAAGCGAATTCAACAGGACACCCACACGTACATCATT
-ACGCCGAGCCGAGAAAGGGAGCCCGTTTTTGAGGTAATTTTGTTGGAGAG
-CATAGAGTTTTGGAGCAAAATTCTCAGCAATTTCATGCTTTTTAACAAAA
-ACAGAGAAGTTTCTAGTTTCGGCTTAGAAAATACTGAAAATCGGCTTTTC
-CATGGCATATATCGTGCTGAAAATCTACTTTTGACTGAAAAATTCAAGTT
-TATGACTAAGAAAAGTTAGATAATTAGACCATGCTATTATTTCATAATAT
-TGGTCCAATTTTTGTTGCTTTGCTGAAAATTAACAAAATTTAAAAATCGG
-CGGGGTTTCTGAAATATTTCTGTATAAAAACCGATTTCAACTCCAATTTT
-CCTCGATTTTTACATATAAGTAATCTAGAAAAATTGTAAAATGGGGAGAA
-TTCATAAGAAAATCGGCTGTTTTGTAGCAAAGTTTGTAAATATATCATTC
-TGAAAGTCTCAGCGATAACCGTGATTCTAGAAAACCTCATCAGGATTTGA
-TTTCTGCGACACACTTCTCTCGAGTTTTACATAGAAGTTGTTCATTACAA
-ATTTCTATTTTTAAGGTCCCCATTACCATTGTCAATCTTTCATTCCGATT
-ATTTGTTTTTCCTCGTCACTGCAAGAAGGGGAGCCTAATGCCTAGACAGA
-GACAGAAAACACATGTGTGTTTGTAAGTGTCTGGTGTGATATACCCAATT
-CTTTTCGGCCGTCTCTTGTTTTCTTCCTGACACCGAGTTTCGAGCGATTT
-TCGAGGTCGTACAGTTGTGAATTGGCTGCCACTGCTGTGGCAAACAAACA
-AAAACAATCAAACTTGTGCGGAATTGATATTCTAAAGAGAATAAAGAGCA
-ACCATGGGCGCCGAAACGAGCAGCGGAAGGGCTTGTGACCTCTTGGTGTG
-AATTTTAAACGGTTTCCTTCCATCCGAAATGCTAAAAATTCCTCGGGAGC
-CGTTTAGGGTCTTCACTGAGAGATGATGATTAGAATCTTTTAATTTGGTA
-GAATTCCCCCCGCGGGACCGATTAATGTTGCATGTCGTCTTCTTCTTCTT
-GGCAGCAAAATATCATTGTTGATGAGATATCTCAGTTTGATGCTCAATGA
-CGCCTTGAGAAACATCCAGCACACAGTAGATTAGTCGAATTACCGATGGA
-TGGGGCCGCCCGGGTTTTTGGAGCCAAGAGTCACGCGATGGGGAGTCCAC
-ATACACACGCACCAACTCTTTCATTCCATCTAACAGGGTAGTAGGGTGAA
-GAAAAGGGGGGGGATCGCGATGACAAAGAGACTCAATTAATTAAATGACC
-GGGGCGGGCGCCAAATTGCACATATGCTTGGTTTTATTGCACCGTTGGCT
-CAGGGAGAGCAACATTTTGTGGCAGCACCAGGGGTACTTCAAAATGACGA
-ACAAAGGTCGTTGTTGTTTCTATAGGAAGGCTTCCGAACTTTTGAACAGT
-AATCAGATCATATTAGGGTTATGTAATTGACGGTTTTGACCGTATGTGTC
-TATAGATGCGTGTGTGTGTGTGTGTGTGGCGACATAAATTACCGTATCCG
-CATGGCCTTTTTCCTCCTTCCTCACAATGGTAATTATCATCCCCCACTAC
-TCTGGGTCGCCGGACGAACTGTGAATGTGTTGACAGTGCGGGCCCACTAG
-TACATGACATCTTGCCCCGGTGCGGTGCGCTCATCGTTATTCCTCCCAAT
-TTAGTTGTCCGTTTGACACAAATGCCTCCGGTACCCTGGACGAGACAAGG
-AGGTGATGGATTTGCCAGGCGGGGAAGGAATTACATGATGTTTGGGAGAA
-TATGAGGGAAAGGTACAGAAGCTTCACCTCGGATATTATATGCGTTCTAA
-AAAGACCAATTGTCGTTTTTGTTCGTGGCTCAAATGAATAATTGGTATGG
-AAATATAGAAAAATGTCCGACTAGTTTGGTAATAGAATTGTTTCGTTTTG
-AACATTTCAAAAATACCTCAAATAGTGCACTTGAGATCTTTGTTGAATTT
-TCAAAGGTTTTATTTTCAGATAAATTGAGCATTTTCCATACTTATAAAAT
-CAATTTTTGGTTCAAAAACTTCTAATTTTCTCACCGAAAAAGTTCTCACA
-AGACAGTGACAGAGGTCGCGTGTCGTTTTGATATCCATCTCGATAATCAG
-AGATTGTGATCTATGCCTCAATGACACAGTTCCGCGAAGGAGTCCGAGAA
-AAACGTACAAAATTGGGGAAAAATATTGGAAATAACATTTATTGAAAAAT
-TAAAAAAAAAACATAAACTATTTAAATTCACAAAAATTCGGAAGCATATT
-TCCTATAATGAAAACAAAAAATTCTGAAAATGTGTACTGCACAACATATT
-TGACGCGCATAATCTCTTGTAGCAAAAACTACAGTAATTCATAAAATTGA
-CTACTGTAGCGCTTGTTTTGAGTTACGTGCTCTACGAAATGAATTTAAAT
-AATTTATCGATGGAAAAATAATTTTAAGCAGAAAATGAGAAAATAATATG
-AAGAAACAAAAAGAAATTCGAGTTACGTGCTCTAAGAAATGAATTTAAAA
-AATTTATCGATGGAAAAATATTTTTAAGAAGAAAATGAGAAAATAATATG
-AAGAAACGAAAAGAAATTCATTCGAAAATCGAGCGCGTAAATCCAGAGCT
-ACAGTAATCAGTGAAAGAATTACTGTAGTTTTCGCTACTAGATATTTAGT
-GCGTCAAATATGTTGCGCAATACACATTTCTGGAATTTTGTGTTTCCGTA
-ATAAAATAAGTTTTTTGCGAGAACTACAAAAATATAACTATTTCTATTCC
-AGGTGACCGGCCTCCCACATAACGTCGAGGCTGCCCGCAAGGAGATCGAG
-ACGCACATCTTCCAGCGAACCGGAAATCTTCCAGAAACCGACAATGACTT
-TGCCGGACAGTTGGCCGGTGTCTCGTTGATGGTGCAGAAGCAGCAACAGG
-CTCAACAACAAATGCAGGAGGCTCAGCAACAATCGATGTTCTATCGAAGA
-GCATTCGGCAACAGTAATCCGTTCAATCAGAAGGAGATGTCGTCGTCGCC
-ATTCGGAATGGAGAGCTCGTTGGGATTGGACGCGTTGCTCCGCAGTTTCC
-CATCGATGCGTAGTTCGTTGACTCCGGAATCTCTTTCCGGTACTGGACTG
-TCTTCTCGTCCATCGTTGGGAGGAGGACAATCGGCGAAACAAGATCTGCC
-AACCTACGACTACTGGGGAACCAACAACTCGCTTAATGATATTATGGAGA
-ACGGTAAGCTTTTTTTGCGAATTTTAATAAGAATTTTAAATGACAAATAA
-GGATTTTTCAGAAATTCTCAGCCGCAAGTACGATGCCCTGTCCGCATGGT
-CGTCGATGGGATTGGAGAAACGCGAGGAATCCCCAACCAATGGGTATATA
-TTTTTGAAGGAATTTTATAAATTTTTGAAATAAAACTAAAAATTGCAATT
-TTCCTTCAAAGTTCTAAATTTTTGAAAGAAAATTTGATTTTCCGCTAAAA
-AATTTAAAAAAAAAACAAGTTTTCGTGTTTTCCACTCGGAACCTGACGGC
-TTCTTATCAATTTTTTAAATAAAAAATAACGTTTCTAAAACTCAGAATGT
-TTAAAAAATTTCACATTAAAAAATTATTTTTCCGAAATCTTGAACCTATC
-CGTTTTTGAAAATAAAAAAGAGTAAAATCGTAGTTTTCTCTATAAAAATT
-ATAATTTTCATTTGAAATTCAAAAATTTTTAAATAAAATTGGATTTTGTC
-CGTCAGAAATCTATAAAAAGAAAATTTTTTTTGAACAATAAAAGAAAAAT
-TGTAATTTTCTTTTGAACTTCAAAAAAATATGTTTTTTTTCACATGCAAA
-AAATTGATTTTTTCAAAACCTCGTTTTTGAGAGAAAAAGGTGAAATTCCA
-ATTTTAAGAGGTAAAGTTAAATTTATTTATTTTATGAGAAAAACTTGAAA
-TTTAAAGGAAAATTACTGAAATTTACAATTTATCATACATATTTTTTAAT
-TTCGACATATCTCGAAATATCAAGTCGTAAATTTTTTCCACAAAAGTGTG
-ATATTCTCTTTAAAAACTAGAAAATTTCAATTGTAAATTTATGAAAAATC
-AAATTTTTTGCAGGCTCATGTCCTCCCTCAAAGGAACATCCGCCGGCTTC
-GGTCTTCTCAGCACAATCTGGTCTGGCGGAAACATGAATCTGAGCCCAGG
-ATCGTTGGCTTCAGCATCTGCCTCGCCGACTTCATCGACCTGCGATCACA
-ACGATCATACTCTCGTGCCGATCAATGGATAAGCTGTGGATCCATTCATC
-ATTCCATTACTATCGTGTAGACTCTCATCTAGCAAAAACCCATCCTCAAC
-GAGTTCCAAATTCATCTTTCCATTCTTTAAAAGACTCTTTTTCCCATTTT
-CTACTTTGTTCATCGGTGTACGAGTCCCTCCATTCCCATTTTCTCACCTC
-TTTACTACATTACTAGAACACACAAAAATCACCATCATTCTCACCCCAAA
-ATCCTAGACAAAAAAAACGAAAAAAATCACATATATTTATATATAACTAT
-TATTATTTGTTATTCATATTTTTGAAATATCTATATTATATATATTTATA
-TATGTAACCCATGCAGTCCCCCAATATATATTCCTACAGTAGGTTTTTTT
-GGAAAATCTGTAACTTTCTCTATTATTCTTTTTTGCATTATGATAGGACG
-ACCAACTCATGTTTTAAACAAAAATTATATATATTATAAGGATTTCCTCT
-TTTCTCTCTATCTCTCACCTAGTGTTTAACTCCCAATTTTCCCCCTCTCT
-ACTACGCACAACTAACGGAGAATTGAGAGGCCTTTTATATTTATAGCACC
-TCTTTATAATTAAAAACTCGAGTGATCCCCACCTCACCCATCAAATTTAT
-CGTATTTTGTAAAAGTTCTGATATATTCCACAGATTTTGGTGTATGTGAA
-TGAAGCGATTCGTGTCGTCTCTCCATATTCTGGTATCCATAGCAACTCCC
-CGAGCTTTTGGCTCACTCGCGCACGCCCTATACTATACCTTTACTATTAT
-TAAATGCACTCAACAAATCCTATCCTGCGTCAATTGGCCGATCAATTGTC
-CGAATTGCCACAATATGCACCATTGCGGGTAATAATAGCACAATAGTTGA
-ATATATTAATAATTCAAAAATATTTATTATATTTTGAGGTGTCCCATTGT
-TTCAGACATATATCCGCGCGACGATAAGTGCCACGTTGGGGGAAACGCCA
-AAGAAAACGAGTAGGGATTTGACGTATAGAGGTGAAATTTTTAGAAAATT
-TGAAATTTTCTGAAAAAAAAAGGATTTTTCTTTTATGAAAAATGCTCTTT
-TCGCCAAAAAAATCACAATTTTCGACTTAAAAACTTCAAAATTTTTTCAG
-GAACACACAATTCAAAATACAAAATATCTCGTAGCAAAAACTACAGTAAT
-TCTTTAAATGACTACTGTAGAGCTTGTGTCGATTTACGGGCTCAATTTTA
-AAATTAGATAAAAATGAGAAAATAAAGACACGAAGAAACGAATGAAAGTG
-TAATATCGAAAATATTCGAAAATAAATAAATTTCAAAAATCGAGTCCGTA
-AATCGACACAAGAGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCG
-TTACAAGATATTTTGCGCGTCAAATATATTGTGCAATATGCATTTTCAGA
-ATTTTGTGTTTCCGTAATAGGTAAAATGTCAGAAAATCAAGGATTCAGTG
-CAACCCCGCGTTCTACGGGTATTTTGGCCACGGCCACTTTTTGCAAAACT
-GCAAAATAGGCGTTGTTATTTCATTTTCTGAAAAAAACATTGAAAATTAT
-TATCGAGAAAGTACGATCTGACAAATTTCTCATAATTTATTTTTGATCTA
-CCTGTTGAACTTTACTCCGCCCCCAATCTTGTTGCCGTTGTTATTTTGTT
-GTAGCTGTCTTGTCGAAGGACGGGGAGGAGCCTAGTCAACAAGGTAGATA
-AAAAATATATTATGAGAAATTTGTGCGATCGTATTTTTTCGATTATATAT
-ATATATATATCTTCATGTAATTCTCATGAAATCTTGAAAAAAAACGCGAC
-ACATGGTATTACCACGCCCACTTTTTATAATTTGAGCGCGTGCAATTTTT
-TGTCGATAACATAGTTTCTATTTAAACAAAAAACATCGTGCGCCCACATT
-GAAGAAAATCCTATAATTGGGCGTGGCCTTAACTCTGAAAATTTACAGAA
-CGTGTCACCCATAGCATGATTGCCGATTGGCTCGAGCAGAATGGATATCC
-AATATCATCTCAAGTCTTGAAAACAGAAATGTCTGGAAACTACATGGAGA
-GTGCAGAAAAACACGTGGAAAATGGGGAAAAAATCGATAATCTATTGCGA
-AGTCAGCTGAAAATCGATATTCGCGATGGCACCGGTGACGATTTTGAACG
-AAAATCGATAAAATCGATTGGCGCCGGCCGCCCGTTTGCAAAAATTAATA
-TGGTCGATAAACAGCGAGCACCGTTGAAAATTACACCGCTTAGTGATGAG
-GAATTTCGAAAAACGATGCGGAAACGGATGGAAATGGAGAGGGAACGAGT
-GAGTTGCGTTAAATAATTTTTTTTTGAAATATTTAACAAAAGTCGACAAG
-GCGATTTTTTAAAATCGATGTTTCGCGACTTTTATTCAAAAGAAAAATTT
-CAATGCCCTAAATCACTCAAATGATGATTAAAAAAGTATTTGCGCGCGCG
-CGTAAAATTTAGTGCCAGCGTATGACACTATGTGGTGCAAACTTCACTCC
-GGGTCCGACACTTTTTGGATTTTGCGCATCGCTATAAAGATTTCAGATCG
-CGGCGTGAGAGCGGCGTTTGCGGCGCCGACATGAGAGTCCTACTTTCCTA
-CTTTTCTTGGCAAAAAAATCGATCGATTTTTCAGCTCGCACGTCTATCCA
-ACCAGGCAGAAGACGATTCCGACGATTCATCGTCCTCCTCCGACTCTTCC
-ACGTCATCCGCGTCGTCATCTTCCGAGGAGAAGTTGACTTTTTCGGATAT
-CTTGGGGAAACCCACAGCAGCTGGCGCGGAGAAAATGATCGAACTAAGCC
-AAATTCCCAACGCATGGGGTCCGTCAAAATCCGCGTTAGTCACTGATGAC
-GTGGCAAGCACTTCTGACCCACTTCCGGCGATTTTCAACGCACATCTTCC
-GCCGCTCTCCATGGGACGACCACCGCTGACAAAAAGCGCGAAAAGTCGGG
-AAATCGACGCCATTTTCGGCTCGGATAACGTGGATTATGATTTAGAGGAT
-TTCGAGCAGGATGGCGTGGCGAAGAAAAAGTCTATACTGCCTATGGAGAA
-AAAGAAGGAGGAAGCGAAACCAAAGGAACAGGAGCTAGTGGAGCCGTTGG
-TCTTGTCAGAAGGTAACTTTGAACTTGCACCATGCAAAAATTTCGAAAAA
-TTATGCACGTGGTCACTGGCTGTCCTTTTGCATAAGCTTGAAGCAAACGC
-GCCTCATTGAGAATTCACGTTTGCGCCAACTCTCGCTATCCATTGGGCGT
-GAGAGACGCAGATACTACTTTTTTCTCTGAACGTGAAAAACGCAAAGAAT
-AACCGTTTTGCCGTCTGCATCTCTTCTTTCACACGCTATTTTGGCTGTGG
-ACGAGGAATTCTCCTCTTCCAGGATTTTCTAGGCCATTTTCTCATATTTC
-TCAAGTTTTCTCGTCCGCGAGAAAACGTGAATTTTGAGACAGCCAGCGAG
-CACGTGATTATGCAACTCTCCTAAAAATCGATCATTGTTCCTGTAGCTTA
-TAATTTTAAAGGCGCATATTCCGCTTGCGGAGCAAAAGTAAAAAAAAAAC
-ATGCCTCTACATACAAATCGATGAATTTCCTGAAAAATCAATAATAAAAA
-ATTTTCAGGAGAATCAATCGACGAGCTTGAAGATTTCGACACCGGTCTAC
-TATCTTCCGGAGGATCCGATTATTCTTTTTAAAATTTTCTTCTTTTAAAA
-AATTTCTTTTGAAATAAATAAATTCTCACCTAGGAATTTCAACAATTCAA
-CTTGAAAAAAGTTCGCGCAAACTACGAACAAATGTGTGTCGAGCGGGCGG
-AGCCACTGAGAAAGAGGAGCAAAATGTACACAAAACCATATTTGAGTGTA
-ATTTTTCAAAGTTTGGCGCCGATTTTCTGTGAGAGATGAGTTTTCTCAAT
-TTATATTTGGTTATTTTTATTTTAGTTCTTACTGGTAAATTTCTGGGTAA
-GTCCTGATGACTTTGAAAACGAAAAAAACTCTTTCATTGATGCTAGTGCG
-ATTGCTAGGAAAGCAACTTTTCAGTTACCAAGAAAAAGTCCAAGGCCATA
-GGGATTAGCTGCGTGGCATAACAACTCATCCATCCTCGCAGATGCAAATC
-CGCTCTATTGGCAAATAACATGGAAGAGTATAAACATTTTCTCTTCCACA
-CGGAAACCTAGTCCCCTTGGGGAGCGGTAGTGCCCACAACCCCGCATGTT
-TACCAAACTACACAGACAGCGCTATTGTCTGCAAGTGGCAAAAAATGGCC
-GCCGAAAATTTTTACAATGTAAATAATTTTCAAAGTGTTACTATTTGCAC
-CTTTTTGGCAAAAATTCCATAAGTAAGAAATTTGATGGAAGAGATGCGAG
-GTGCGGGGAGTCTGAAAATGGCTGCATGGCCTGTATGTGACCTGTGTATG
-TGGCCTAAAGGTCTAGTTACCCCTAGAAATCAAAGTTCAGTTCAGCAAAG
-AGACTTTATTTTCAGCACTCCAACAAGAGGCAGAAACTCAACGGTACGAC
-GGATGGTACAACAACCTGGCGAACAGTGAATGGGGTTCTGCTGGTAGGTT
-TTTTTGGAAGAGAAATGACGTCACACTGACCTACTCCTTCAGGAAGTCGG
-CTGCATAGAGATGCACGTTCCTACTACTCAGACGGTGTATATTCAGTGAA
-TAACTCACTTCCGTCCGCCCGTGAACTCTCCGATATACTATTTAAAGGAG
-AGTCCGGTATTCCTAATACAAGAGGATGCACCACTTTATTGGCATTTTTC
-AGTTTGTATTTTTTTAATACTTATAGTAGCCAATGTTTGTAGGTCAAGTA
-GTTGCTTATGAAATAATGCAATCAAATGGAGTATCCTGTCCACTAGAGAC
-ACTTAAAATTCAAGTACCCCTATGTGATAATGTATTTGATAACGAATGCG
-AGGGGAAAACTACAATCCCATTTTACCGTGCAAAATACGACAAAGCAACT
-GGAAATGGTCTTAACTCGCCTCGAGAACAAATCAATGAACGGACTTCATG
-GATTGATGGATCATTCATCTATGGTACCACCCAGCCATGGGTGTCCGCAT
-TAAGATCTTTTAAACAAGGACGGTTAGCTGAAGGTGTACCTGGATATCCA
-CCACTTAACAACCCACATATTCCATTGAATAACCCCGCTCCGCCACAAGT
-ACATCGATTGATGAGTCCAGATAGATTATTTAGTGAGTTCATTGTTCTAT
-AGAAAAGTATAAATATTTAAAATTGAAGTGTTGGGAGACTCGCGTGTGAA
-TGAGAATCCTGGTCTTCTTTCATTTGGTCTGATCCTCTTCCGTTGGCATA
-ACTACAATGCAAATCAAATCTATCGAGAACATCCTGACTGGACAGACGAG
-CAAATCTTCCAGGCAGCACGTCGTTTGGTGATTGCATCTATGCAGAAGAT
-TATTGCATATGACTTTGTTCCAGGACTTCTAGGTTACTCAACTATCATTT
-AATAGCTTAAACTCAGTGTTTCTTTTAAGGTGAAGACGTTCGTTTGTCAA
-ACTACACCAAATACATGCCACATGTTCCACCTGGAATCTCGCATGCTTTT
-GGAGCAGCCGCCTTCAGGTTCCCTCACTCAATTGTGCCACCAGCAATGCT
-TCTGAGAAAACGAGGAAATAAATGTGAATTCCGGACGGAAGTTGGTGGAT
-ATCCTGCATTGAGATTGTGCCAGAATTGGTGGAATGCACAGGATATTGTG
-AAGGAGTACAGTGTGGATGAGATTATTCTTGGTTAGTTCATACTTGAGTG
-GTTATATAATAAAGATTGTAATTTCAGGAATGGCAAGCCAGATAGCTGAA
-CGAGATGATAACATAGTAGTCGAAGATCTTCGTGATTACATCTTCGGACC
-AATGCATTTCTCTCGTTTGGATGTTGTTGCTTCATCAATAATGAGAGGAA
-GGGACAATGGAGTACCACCGTATAATGAATTGAGAAGAACATTCGGACTT
-GCACCAAAGACATGGGAGACAATGAATGAAGATTTCTACAAGAAGCATAC
-TGCAAAAGTGGAAAAGTTGAAAGAGTTGTATGGAGGCAATATTTTATATC
-TGGATGCTTATGTTGGAGGGTAAGCGTTTTTTATAAATTAAGTTAGAGAT
-CCTCCAATATACCCTCATAACATATTGTATCAGTTTACTTCATCAATAAT
-TCAGCTTGAACCATTTAGAATGCTGGAAGGAGGTGAAAATGGGCCTGGAG
-AGATGTTCAAAGAAATCATAAAGGATCAGTTCACCCGTATTCGAGATGGA
-GATCGATTCTGGTTTGAGAATAAACTAAATAGATTATTCACTGATGAAGA
-AGTTCAAATGATTCATAGTATTACACTTCGTGATATTATCAAAGCAACAA
-CCGATATCGATGAGACGATGCTTCAGAAGGATGTGAGTTTATTGTAAACA
-CCCGTTGGTGATGATCGAGTAAGTTAATAGCATGTTTCATTCCAGTCATT
-GATTGATATTTTGTCATGAATTGTTATATAACAATATATGTATGTATTAT
-ATTACTCATGTCTCAATATTGCATTTAATTTCCAGGTATTTTTCTTCAAA
-GAAGGTGATCCATGCCCCCAGCCGTTCCAAGTGAATACCATTGGACTTGA
-GCCTTGTGCTCCACTTATTCAATCCACCTACTGGGATGATAACGATACTA
-CTTATATCTACACTCTAATTGGTTTGGCGTGTATTCCTTTAAGTCAGTCT
-TTATTTCAATCTAAATGACTACCGATAGAGACTCAGCGATTATAGAGTTG
-ATCAAGCTAAGAACTTTCAGTTTGCTATAGTATCGGTCATTATATGGTTG
-AACGACGTATCCGAATAGGTCATAACAGTGCTTGTGACAGCTTGACTACT
-GACTTTTCAACAGAAAGTCCCAAAGTTAATGTCTACAAAGTGAATGGTTC
-GTTATTTTTTCATACTTGATTTTTATTTAAATTATACGGTGAATCTGTTA
-CAGCTTTGGAATGGCTTCAAGAAGAGTACATACGGCAAGTTCGGATAGAA
-ATAGAGAATACCACGTTGACAGTGAAGAAGCCACGTGGTGGAATCCTTCG
-AAAAATTCGTTTTGAAACTGGACAGAAGATTGAGGTATTCCACTCTATAC
-CGAATCCATCAGCAATGCACGGACCATTTGTACTTTTGTCTCAAAAGAAT
-AATCATCATTTGGTGATAAGATTGTCGTCTGATAGAGATTTATCTAAATT
-TTTGGATCAAATTAGACAGGCGGCTAGTGGAATCAATGCAGAGGTTATCA
-TAAAGGATGAGGAGAATTCTGTGAGTTTACTTCAAGAAATACGTCGAATC
-TGGAAATTATTTCAGATTCTCTTGTCCCAAGCAATCACAAAAGAACGCCG
-TCAAGACCGACTGGACCTGTTCTTCCGTGAAGCCTACGCAAAAGCATTCA
-ATGATAGTGAACTTCAAGATTCGGAAACTTCATTTGACTCATCGAATGAT
-GATATATTAAATGAGACAATATCTCGTGAGGAATTGGCAAGTGCAATGGG
-AATGAAAGCTAATAATGAGTTTGTGAAGAGAATGTTCGCGATGACTGCAA
-AACATAATGAGGATTCGCTCAGTTTCAATGAGTTTTTGACAGTATTGAGG
-GAGTTTGTTAATGGTGAGTATGATTTACTAAAGTTCTGATCACAAAAACT
-ACACGTGAATGAATGTTCCAGTCCGTTTTACACTAGGTTCGGTAAATATG
-TATAATGTTATAGTGACTGTTACATGTTGAAGCAGTAGTCTTCTTTTCTT
-TGAATGGCAACAAAAAGGCTCCCTCATTATTTAAGCTGTATTTCACTGCG
-AATAACGGCTTAATGTGCTATTTAAACATTCGGGTCTATTAGTCTTTTAG
-TATATTGTCGCGCATACTAAGGCTCGCTTTAATAATCAGTTTGAAACGCG
-AATTTGATGGTGTTAAATACGATTTTAATTTGGGAATTGTTCACAATTAG
-ATGCTATCTTGACTAATAATAATTAAATACAGAAACAAAAAACTTTTAAT
-GGACAAAAATCACTCCGAAACTACCCAAATCGGCATTAGGTTAATGTCTT
-TGATTACTCACCTTCTTTCCTAATTTCCAGCTCCTCAAAAGCAAAAACTG
-CAAACTCTATTCAAAATGTGTGATTTGGAGGGAAAGAACAAGGTACTCCG
-AAAGGATCTCGCAGAACTCGTCAAGTCCCTCAATCAAACCGCCGGAGTTC
-ACATTACCGAAAGTGTGCAGCTTCGATTATTCAATGACGTGCTGCACAAG
-TCTGGTATACATCCCTGTTTAGTATGCCAAGTATTATAAGAAGTTTCAGG
-AGTAAGTGACGATGCGGAGTACTTGACTTGTAATAATTTCGACGCATTGT
-TCTCGGAGATCTCTGACGTCCAGCCGATCGGTCTGCCATTTAATAGGAAG
-AATTATAACTCACATATCAAGGAGTATGTTGTTGAATTCAAATCCGCAAG
-TAAATACAAACTTCAGGCCATCATGCCACACCTCATTCCCAATAGTGGAC
-CACTCTACTCCTGCTCCACTTTCTCTGATTCAGAGAATTTGTGCATTCCT
-GGAAACCTATCGCCAACACGTCTTCATCATCTTCTGCTTTGTCGCCATTA
-ACATTGTCCTTTTTTTCGAACTTTTCTGGCGTAAGTTTACTGTTTAGTTC
-GGTTTTCAAAAGCAATATTCAATTAAGATTCCCGCTACCTAAACGAAGAT
-CGAGACCTCCGTCGGGTGATGGGTGCCGGGATCGCTATCACTCTCTCTTC
-TGCGGGAGCCTTGTCATTTTGCATGGCGTTGATATTGCTCACAGTTTGTA
-GAAATATTATAACACTGCTTCGAGAGACAGTTATTGCGCAGTATATTCCA
-TTTGACTCGGCTATCGCGTTCCATAAGGTAAGAGCCTCTCTCTTGGCCTA
-GCGCTGTAAATAAAACTGCCAAATTTTTAAACTCCATCAATTTCAGATCG
-TCGCATTATTCACCCTATTCTGGTCTACCCTTCACACCATCGGCCATTGT
-GTTAACTTTTATCACGTTGGAACTCAAAGCGACCGTGGACTTGCTTGTCT
-CTTCCAGGAAACATTTTTCGGGTAAGCCCCACCTACTCGGTAGATCTCTC
-AGTAGATTGAACGTTGGCTTGCTTTCAGATCTGACGTCGTGCCTACCCTA
-AGCTATTGGTTCTATGGAACAATTACTGGGTTGACGGGAATTGGATTAGT
-TATTGTTATGAGTATCATTTATGTGTTCGCATTGCCAAAGTTCACTAGAA
-GAGCATATCACGCGTTCCGGCTGACTCATCTTTTGAATATTGGGTTTTAT
-GCACTCACTATTCTTCACGGACTTCCTTCACTTTTTGGGGTAAGGCTTAA
-TTTAATTTGATTCATTTACGCTCTTTTTACGCTCTTGACGTCAATATTTG
-TTACAGTCTCCCAAATTTGGCTACTACGTTGTTGGACCCATTGTCCTTTT
-TGTAATCGATCGTATAATTGGGTTGATGCAATATTACAAGTCGTTGGATA
-TTGCCCATGCAGAAATCCTTCCATCAGATATTATATACATCGAGTACCGT
-CGTCCAAGAGAATTTGAATATAAATCAGGACAATGGATTACTGTATCATC
-ACCATCTATATCATGTACCTTTAATGAATCTCACGCATTCTCGATTGCCT
-CAAGTCCACAGGATGAGAATATGAAGTTGTATATAAAAGCAGTTGGACCA
-TGGACATGGAAGTTGAGAAGTGAATTGATAAGATCATTGAATACAGGGTC
-ACCATTCCCATTAATTCATATGAAAGGACCATATGGTGATGGTAATCAGG
-AATGGATGAATTATGAAGTTGCAATAATGGTTGGAGCAGGAATCGGAGTG
-ACTCCATATGCATCCACGCTTGTTGATCTTGTACAAAAAACATCAAGTGA
-CTCGTTTCATAGAGTTCGATGTCGTAAAGTATATTTCCTATGGGTGTGTT
-CGAGTCACAAGAACTTTGAATGGTTTGTGGATATGCTGAAAAATGTTGAA
-AATCAAGCAAAGCCGGGAATCCTGGAGACACACATATTCGTCACTCAGAT
-GTTCCATAAGTTTGATTTAAGAACTACTATGCTTGTGAGTTTTTTATGCG
-TTTTTGGTTTTTTAGTGGTATAACTCTAAAACTAAATGTTTGGAGAAAAA
-GGCTTAACTAATAAAATGTTGCTCATAACTTTTTCTATGCAATAAAATAT
-GTTTCAAAATTTCATCCGAGATCTCACAAGTCCAAATTTGATTATTTTTC
-TTAAAACGAGTATATTTCAAGACCGAAAAGTTTTCTTGAAAAAATGGTAT
-ATTTTTTGCACATAATCATTTTTTCATAAAGTGCTCTGCAAATCAGAAAT
-TAAAGTTCGAACAGTCTTATAGTTAGTACCGTGACATTTATTGTAACTTA
-AAAAAAAAAATTACGCGACATAGAAACGCTCGATTATCTGAAAAACCAAA
-TTGGATTTTGATTCTAGTTAATTTATTTTCAAAAATAAACATATTTTGTG
-ATAATTGTAAACTAAAAACTATACCTGAATATTTTTATAAATTTTATGTG
-GTTTTTGGTTTCAGGATTAAAACAATGGTAAAATACTACCCTAACGGCTT
-ACCCAAGGCTCAGAAAATTGTAGTTAGTCTCAACAAATTAATACATATCA
-TTTCTTATTTGCAGTACATTTGCGAGAAGCACTTCCGTGCCACCAACTCA
-GGCATATCAATGTTCACTGGCCTACACGCTAAGAATCATTTCGGACGGCC
-CAACTTCAAAGCTTTCTTCCAATTTATTCAGAGTGAACATAAGGAGGTTA
-GTTTCATGGTTTTAACCTCTAAATAAAGCAAATTTGCAGCAATCCGAAAT
-TGGAGTGTTCAGTTGTGGACCTGTAAACTTAAATGAAAGTATAGCTGAAG
-GATGTGCAGATGCCAATCGACAACGAGATGCTCCGTCATTTGCACACCGC
-TTTGAAACTTTCTAATCTTTCTACTGTTACTTACTATGAAAATCATAAAA
-ATTAAGACGCTTCATGAATAAAACATTGAGAAAAAAAACCTGAAATAAAG
-AATTTTCACATTTGTCCAGGTAGTATATATCCCCAATACAAACATTTTGA
-GACGCGAACCTTCCCAAATAATCATCAGACATTGTTCTGTAATTAGGCAA
-AAAACCAGCCCCCTAGCCTCCTCCCTCACCACAAATAAAACCAATTCCCC
-CATTTCCCCCCAGTTCATTCACCAACAATGAGTTTGTTCAAAGTATACAC
-CTCGTTTTCTTTGTTTTTCTCCGTTCTATTCCTTCTCGTCGCTTTTATTG
-TGATCTATGACATTTTCGATGAAATTCGCGAATTTCAAGAAGTAATCGAA
-AAAGATGCCAGGAAGTTTGAGGTAAGGCAATATGTGGTGCAGCAATAATT
-TCCGCATTTTTCGTAGATCATACCGTTATGGGACAGTCTGACACCACGTG
-ATAAAATAGTATACTAAGTATTACAAGCAAGGTTGAAACGAAAATGAAAT
-TTCGTTTTCGAAAACGAAAACGAGAATTTTCGTTTTAAACGCGAAAAACG
-AAAACGAAAACGAAAATATCAGTTTTGTCCAATTTAATTGGTAAAATATA
-GATTTCATGAAATATTAGGTCCATTTTCGAATCAATAATAAACAAACAAT
-AGTTTTATTACAAAAAAAACAATAAAAATTAAATAAAGCAAAAGAACAAT
-AACAATAACACTTGCTGAACAACTATTCCATTAATCTAAACCAATTTTAA
-AGCCTAAAACTTTTTGATTTTGCTGTAAGAACACAGACTTGCTCAACGAC
-TTTGTAGACATCTTTCTTCTCAGCTTTGTAGAAACGCGGCCAGCTCCTGA
-AAAAACTCGTTCCGATTCAGCAGATGAAGCTGGAGTTGTCAGATATCTGT
-TCGCTATTTGAGAAAGCAATGGAAACTTAGATCGATTGAGCGGATTTTGC
-CAAAAAACAGCGGGGTCTGATTTTCTATTGTTATCGGTATCGTAGAAAAC
-TTCAACTTCTGCACTAGCACAGAGCATGGAATCTACAGGCGCTTTGTCTT
-TTCTTTTTCTGATCTTGGAATGCTTTTTCTCGTAAGCTTCAAACAGGTCG
-TCTATTCCCTCAAGAGTTTCATTTTCTGGCTCATCGACTGCTTCTTCCTC
-TTCTTTTGATAATCCTTGAGCTAAGCTCAAAACAAGCTCTTTTCCGTCAC
-AATATTTTCTTTTGTATCGTGGGTCAATGTTTGATGCAACAATCAGTTTG
-AATGTCACCAGTCGGTGCCCGCGCCGTAGGTGCGGTCAACGGCTGGTATG
-TATATAAAATATATTAGATTGAAAATATAACATTGAAAAAAAAAAACAAA
-CATTGAAACACAATAAAAATCAAAATATAGACGCTCTTTATTCTTGAATA
-AAAATAAGAATTACGAATTGTTCACTGGGAGTCAGCTTATTTCTTGTACA
-AAATAATGATTTTGACCAGTGTCAGCTCAAAAAAAATACGTTGACAGAGA
-GAGGTGGCATTTTCGTTTTTTCGAAAATTTTCGAAAACGAAAACGAAAAA
-ATCATTTTCGCCAAAAACCCGAAAATAACGAAAAAACGAAAATTCGAAAA
-CGAAAAAGTGACAAGCCTGATTACAAGGTCGGTATTTCATAATATGAATA
-TTGTAGAGAAAGGTTACTAGCGATGATTCCAAAAAAATTTAGATTCATCA
-GAGATGTACACCCAAATACCCAAGGCATAGGCCCTAATTATTGATTAGTC
-ACAACTTCTTACTTCCAACAAGCTTTTCCTATTTTTCCAGTTCTACTCCA
-CCGCCGCCTCACGTTCAATTGCCGGTCTCGACAAGCGGAGCCTATTCGGA
-GGAGCTGTTTCTTTTTAGTTGTATATACATCTATTCAAAATTAAAAGTCA
-TTGTTGTTGTTACCCATAAAACAGTGAATGAAAAAAAATGAAGTCTAGAC
-AGAAAATGTAAAGCTGGCACAGAATACTCAAAGAAGCATAAAATATGTAT
-AATAATGATGATATAGGGAAGGTTAGAACGTTTCAAAGCGATGTGCAAAT
-GAAGGAGCATCTCGTTGTCGGTTGGCATCTGCACATCCTTCAGCTATACT
-TTCATTCAAGTTTACAGGTCCACAACTGAACACTCCGATTTTGGATTGCT
-GCAAATTTGCTTTATTTAGAGGTTAAAAAGCATTTAACTAACCTCCTTAT
-GTTCACTCTGAATAAATTGGAAGAAAGCTTTGAAGTTGGGCCGTCCGAAA
-TGGTTCTTAGCGTGGAGACCAGTAAACATTGAAATTCCTGAGTTGGTGGC
-ACGGAAGTGCTTCTCGCAAATGTACTGCAAATAAGATGTTAAAGTTTAAA
-AGCTTCAGACCTTAAGATGCCACTGCGTTTAAATGCGTCCGCTTTAATCA
-GTTTATAACCAAACCTGACGTTTGATTTTGAAAATTATCTTCAATAAACT
-CACAAGCATAGTAGTTCTCAAATCAAACTTGTGGAACGTCTGAGTGACAA
-AGATATGTGTCTCCAAAATTCCCGACCTTGCTTGGTCTTCCACGTTCTTG
-AGCACATCCACAAACCATTCATAGTTCTTGTGAGTTGAGCACACCCATAG
-GAAATATACTTTACGGCAACGAACTCTGTGAAATGAGTCACTTGATGTTC
-GTTGTACAAGATCAACAAGTGTCGATGCATATGGAGTCACTCCGATTCCT
-GCTCCAACCATTATTGCAACTTCATAATCCATCCATTCTTGGTTACCATC
-ACCATATGGTCCTTTCATATGGATTAATGGAAATGGCGATCCTGTATTCA
-ATGATCTTATCAATTCGCTTCTCAACTTCCATGTCCATGGTCCAACTGCT
-TTTATATACAACTTCATATTCTCATCCTGTGGACTTGAGGCAATCGAGAA
-TGCGTGAGATTCATTAAAGGTACATGATATTGATGGTGATGATACAGTAA
-CCCATTGTCCTGATTTATATTTAAACTCTCTTGGACGACGGTACTCGATG
-TATATAATATCTGATGGAAGGATTTCTGCGTTTACAATTTCTAATTTTTT
-GTAATATTGCATCAAACCAATTATGCGATCAATTACAAATAACACGATGG
-GACCAACAACGTAGTAGCCAAATTTGGGAGACTGTAACAAATATTGAAGA
-AACTTCTTGAACCGAACAGTGGCAAAAACTCACATCCAACAACTTTGGAA
-GCCCATGAAGAAGAGTAAGTGCGTAAAAGGCAATATTGAGAAGATGTGTG
-AGCCGGAATGCGTGATAAGCTCTCTTAATGAAACATGGTAACGCGAAAAC
-ATAAATGATGCACATGACAGCGACCAATGCAATTCCTGTCAGACCTGTAA
-TTGTGCTGAAGAACCAGTAACTGATTGAAGGAAGGAAGTTGGATCTGAAA
-GTTATTTGATGAAAGTTGTTGACAGTCTTGAGGGAGTTTGTTAATGGTGC
-GTATTCTAGTAAGATTGAATGCAAAAATGAATTCAAGTAAAGTATTACCC
-AAAGAATGCTTCCTGAAAGAGACAAGCAAGACCTTCTTGACTTTGAGTTC
-CAACGTGATAGAAATTGACACAATGTCCAACGGTGTGAAGAGTGGCCCAG
-AAAGCCGCAAAGAGCGCAACGATCTAGAAATGTTCAGTTATTATAGAGTT
-TTTGATACTGGCGGTCATAATAAACAATACTTTGTCCGAAATATTAGTTT
-TCCCATTGTTTATCATAGTTTATTTTTTTATTCAAAAATCTGCCCTCTCT
-ACAGAACACTTATATGTAAAGTAGACTTAAAAACATCTGAGTTTTTTGAG
-CAACAAGAGACCCACACTCGTTCTAAAAAGAAATATATCTGGAGCACAGG
-AAAATCTAAACTTAGGAGACACTTTTTTGTCAACAGAACACTACACACAA
-TGAAGCAACACTGATCTAATGTTACCTTATCCTCACTTCTATTCATCATT
-TATTCTTGCCTTTTATACATCGATATTTGTGTTTTTTGCTTCTTCTCCAA
-TGTAGCCATTATTTTTTTTCTCATCTCTTTTTATTTTTGTTCCATTTTTA
-TTTATGTAACCACTTGTGATGGTTTGTATCTATTAATGTGTGTTTTTTTT
-CTACCTCACGATATCTTACTATCGTAATAAATTTAAAAAAATTAAACACT
-TACAAGTTTAGGATAACATCGCTATATCATAAGTTCACATCTGGCTGAGA
-AACACCATGTTCGATGCAAAGATCTTTCCTTTCATGCTTGTATTCTATTT
-TAAAAAATCTTTTCAAAACATTGGGTATGCACAGTACAGTTATCCTACTT
-GCATTAAACCTCCGCATTACTGTACAGATAATAAAATAACAAGTTTTCCC
-TTATATCTGAACATGCTAAATATTTTTAAAAACAACTGATTTGACAAAAT
-TTACTAATGCAATAATAATATTTAAAAAATGTGTTACACGCTGCCCTAAC
-GTTTCTCACCTTGTGGAACGCAATAGCCGAGTCAAATGGAATATACTGCG
-CAATGACTGTCTCTCGAAGAAGTGTGATTATGTTTCTACAAACTGTCAGC
-AATATCAACGCCATGCAAAATGACAAGGCTCCCGCGGCACCACGAGTAAT
-AGCGATTCCAGCTCCCATTACTCGTCGGAGATCCCTGTTTTCCGCCATGT
-AACGATAATCTGAAAACTAAATTAACATGAGCTCCCAATTATATGAACTT
-ACGCCAAAACCGTTCGAAGAAAAGAACAAGATTGATGGCAACAAAGCAGA
-AGACAATGAAAACGTGTTGGCGATAGGTCTCCAAGAACGCTGAAACTTTG
-TGGATCAAAGTTAGCGGTGCTGAACTGTTGATGGATCGATCCACGACGGC
-AAATGAGTTCAGAGAAGATGTTCTAAAAGTTATAATTGTTATACAGTCAG
-AGTCCTCCTGAATACTCACTCTCCAATACTTGGCTGATAGTTCTTTCGAT
-TGAACGGCAGTCCAACTGGTTGCTTGTCAGGTATATCCGAGAACAGAGCA
-TTGAAATCGTCGTAAGTCAGGTACTTGGCATCATTGCTCACTCCTGCATA
-GTGCAACACTTCATTGAATAATCGAAGCTGCACACTTTCAGTAATGTGAA
-CTCCAGCGGTTTGATTGAGGGACTTGACGAGTTCCGCGAGATCCTTTCGG
-AGTACCTTGTTCTTTCCCTCCAAATCACACATTTTGAATAGAGTTTGCAG
-TTTTTGCTTTTGAGGAGCTGGAAATTAAAGTAGGTGGTGCATAACATTTT
-TTAAAGGCAGTGTTGGTTTTTCTACTGTTCAGTAAAAGAAAATCTACAAT
-TGACTAAATTCTCAATACTTTGATGCCATATTAGTTGTGACCTCCCTGTC
-ACACGAGAACTTTCTACAGTGCTCGCAAATTCTATAGGACTCCCCCGAAT
-AAATTCAGATTCAGAATAAATAACCTTTAGAACTTTTACTATCTCGAAAT
-ATTGCCGACCATAGGACACCGAGTTTCACCTCACGGCTAATGAACCTACA
-AAATGTTAATCGGTCGCTAATCCCGGCCTAGTTTAAATTCAGATCAGAAG
-AAATAAATTTCTTTTCGCAGGAGACTTCGGCTCTCTTGAACCAAAACCTT
-TTATATGTAGTTTTGTACGTACAAAATCAAAGACAGTTCAAAACAACTTT
-ACCGCTACTGCTGTTACACGTAATTAAGCTGCATTAAGAAATTATATTTA
-TTCAATTAGAACTTATGTTAATGGGAAACACGCCGGAACATTCTAGAACG
-TAGTCTTTGTATCACAACAAATTTATGCTGAAATACTCACCATTAACAAA
-CTCTCTCAAGACTGTCAAAAACTCATTGAAACTGAGCGAATCCTCATTAT
-GTTTTGCAGTCATCGCGAACATTCTCTTCACAAACTCATTATTCGCTTTC
-ATTCCCATTGCACTTGCCAGTTCCTCACGAGATATTGTCTCATTTAATAT
-ATCATCATTTGATGAGTCAAATGAAGTTTCCGAATCTTGAAGTTCACTAT
-CATTGAATGCTTTTGCGTAGGCTTCACGGAAGAACAGGTCCAGTCGGTCT
-TGACGGCGTTCTTTTGTGATTGCTTGGGATAAGAGAATCTGAAATAATTT
-CCAGATTCAACGTATTTCTTGAAGTAAACTCACAGAATTCTCCTCATCCT
-TTATGATAACCTCTGCATTGATTCCACTAGCCGCCTGTCTAATTTGATCC
-AAAAATTTAGATAAATCTCTATCAGACGACAATCTTATCACCAAATGATG
-ATTATTCTTTTGAGACAGAAGTACAAATGGTCCGTGCATTGCTGATGGAT
-TCGGCATAGAGTGGAATAACTCAATCTTCTGTCCAGTTTCAAAACGAATT
-TTTCGAAGGATTCCACCGCGTGGCTTCTTTACTGCCAACGTGGTGTTTTC
-TATTTCTATCCTGACCTGTCGTATGTACTCTTCTTGAAGCCATTCCAAAG
-CATTTACACCATAAATATCTCCCTTCGCGCCACAATCATCATTTGCAAAG
-TCAGTAGTTAGGCTGTCACAAGCACTGTTGTGGCCAATAGCAATGCGACG
-ATTAACCAAGTATCGGCCAATTCCATAGCAAACTGAAAGCATTTTGGTTT
-GTATGGAACTAGATGCAATAGCTCACTTAATGGCACACATGCTAATCCAA
-TTAGGGTGAAAACATAAGTGGTGTCATTATCAGTCCAATAAGTTGATTGC
-ATAAATGGAACACATGGTTCAAGTCCAGTTGTGTTCACTTGGAATGGTTG
-CGGGCACGGGTCACCTTCCTTGAAGAAGAATACCTGGAGTGATAAATACA
-TTGCAATGCGGAATTCAAAAGAACATAATAATAAACCATTAAATTTGGAA
-AGTAACTTACATCCTTCTGAAGCATTGTCTCATCGATATCGGTGGTTGCT
-TTGATAATATCTCGAAGTGTAATACTATGAATCATTTGAACTTCTTCATC
-AGTGAATAATCCATTCAATTTATTCTCAAACCAGAATCTATCTCCATCAC
-GAATACGGGTGAATTGATCCTTTATGATTTCTTTGAACAACTCTCCAGGC
-CCATTTTCACCTCCTTCCAGCATTCTAAAATAATAACGTTTGATTAACGT
-AATCCAATATATGTGCACTGAGAAAGAAACAAGTATGCGTAATTTATTCT
-GCCTAGATTTGCAAAAAAAACTACCTTGCATGGGTAACGTTTGAAATACC
-GAAGGAATTGCACTATAAAACTGAGGTGACATACAACTTCCAGAGTTTAT
-GCCTGCTACAAATTTTAGAGTTTGACCAAAAGAAGCCGTTAGAAGTTTAC
-TCGTGAGAACTTTTTAACCCTTGAGAAGATTTAGTGAATATTCAAAATTC
-CACACTTCTTAAACCAATCAGTTATGTTAAAACGAATTGATTTTCATTGT
-TTTTGCTTGAAACTCTTCGAATTCACCGCATTTTAAGTTAAGCATTCCAC
-TTTAAACCCAAAACTAACCCTCCTACATAAGCATCCAAATATAAAATATT
-GCCTCCATACAACTCTTTCAACTTCTCCACCTTTGCAGTATGCTTCTTGT
-AAAAGTCTTCATTCATTGTCTCCCATGTCTTTGGCGCAAGTCCGAATGTT
-CTTCTCAATTCATTATACGGTGGTACTCCATTGTCCCTTCCTCTCATTAT
-TGATGAAGCAACAACATCCAAACGAGAGAAATGCATTGGTCCGAAGATGT
-AATCACGAAGATCTTCAACTACTATGTTATCATCTCGTTCAGCTATCTGG
-CTTGCCATTCCTGAAATTACAACCTTTATTATATAACCACTCAAGCATGA
-ACTAACCAAGAATAATCTCATCCACACTGTACTCCTTTACAATATCCTGC
-GCATTCCACCAATTCTGGCACAATCTCAATGCAGGATATCCACCAACTTC
-CGTCCGGAATTCACATTTATTTCCTCGTTTTCTCAGAAGCATTGCTGGTG
-GCACAATTGAGTGAGGGAACCTGAAGGCGGCTGCTCCAAAAGCATGCGAG
-ATTCCAGGTGGAACATGTGGCATGTATTTGGTGTAGTTTGACAAACGAAC
-GTCTTCACCTTAAAAGAAACACTGAGTTTAAGGTATTATAATATAGTTGA
-TTAACCTAACAGCCCTGGAACAAAGTCATATGCAATAATCTTCTGCATAG
-ATGCAATCACCAAACGACGTGCTGCCTGGAAGATTTGTTCGTCTGTCCAG
-TCAGGATGTTCTCGATGGATTTGATTTGCATTGTAGTTATGCCAACGGAA
-GAGGATCAGACCAAATGAGAGAAGACCTGGATTCTCATTCACACGCGAGT
-CTCCCAACACTTCAAGTTTAAATATTTATACTTTTCTATAAAACTATGAA
-CTCACTAAATAATCTATCTGGACTCATCAATCGATGTACTTGTGGCGGAG
-CGGGGTTATTCAATGGAATATGTGGGTTGTTAAGTGGTGGATATCCAGGT
-ACACCTTCAGCCAACCGCCCTTGTTTGAAAGATCTTAATGAGGACACCCA
-TGGCTGGGTGGTACCATAGATGAATGATCCATCAATCCATGAAGTCCGTT
-CATTGATTTGTTCTCGAGGTGAGTTGAGCCCATTTCCAGTTGCTTTATCG
-TATTTGGCACGTGTAAATGGGATTTCTGTCTTTCCCTCACATTCTTTATC
-AAATACATTATCACATAGGGGTACTTGAATTTTAAGTGTCTCTAGTGGAC
-AGGATACTCCATTTGATTGCATTATTTCATAAGCAACTACTTGACCTATA
-ATTATTATTACTAATTTTTGAGGTAGAGGGCAATAAAAACGAACTGAAAA
-ATGCCAATAAAGTCGTGCATCCTCTTGTATTAGGTATACCGGACTCTCCT
-TTGAATAGTATATCGGAGAGTTCACGGGCGGACGGAAGTGAGTTATTCAC
-TGAATATACACCGTCTGAGTAGTAGGAACGTGCATCTCTATGCAGCCGAC
-TTCCTGAAGGAGTAGGTCAATGTAACGTCATTTCTCTTCCGAAAAAACCT
-ACCAGCAGAACCCCATTCACTATTCGCCAGATTGTTGTACCATCCGTCGT
-ATCTTTGAAATTCCTCATTTTGTTGGATTCCTGAAAAGATAAATGTTACG
-AGTTTTTGATTTCCAGGCCACCAAAATCTATATGATGGCCTAGGTTCCTT
-ATTGAAATTTCTAGGTCACACATGCTCCCTTCACTACATTTTCACACCGA
-TTCGTGCATTTTCTCACTGAACGCGCAAATTTCCGGTCAGTAGCGGAGCA
-GAGCAAACATTTGCCCCGCCACCCGAAACAATTATTTTCGTATCATTTTC
-GCACCTATATTTATTCTGTTTGTTTGCCTATTTTTTGTACATTTTATCCT
-TTTTCTTGTATTGGGCGACGATGGCAAGGTCAGTAAAACAGGAAATTGTT
-CCTGATAACTCGGGAATTTCAGGAATTTTTCCAAAATTGGTTGGGAAACC
-ACCACTTTGTTGAAATTCGAAAGATACACATTTTGTTATTTAGGTGTAAA
-CATGAACACTTTCTTAGGTAAACTATGTGATTTTTATGAAAAAGAACACA
-GACACCGGGTGGCACACAGAGCTTATCAGTAAACAGCTATCAGTGATTTT
-GAAATTTTGGAGGGGCAGAAATGTTGCGGACAAGGAAAATTTTTGTTTGG
-AATTTGAAGTTTTGAAATACGCAATTTGAGAATTTTTGAACATTTTTTTG
-TAATTTTTATCCCATTCATTTTTAACCTAACATTTTGAAAATCTAGCACA
-GAAAATAGTACAGACACGTTCAATTGAGCTATTCCAAAAATTATCAATAT
-AGCGCACTTGGTGTCCATCTTCCTTAACTGTTTGCAATTAGTCTCTCTTT
-ACAAGAAATCAGCTACTATTTGAACAGATCTTGAACACATTTTCAAAGAT
-CGGCTCAAGATCAAAAGCCTCTTAAACATTTAAGATAGCAGGTCCGCTCT
-GTTGACAAATTTTCCACCCGGTCCTCCGAAAGGAATTTTTTTGGTCATCC
-AACAACCTAGACCATGACGGCACCGATCATGCAATTTGCCTGCTTATAAA
-AAACGATATTTCTAGGCCACCCATTTTTAAATATTTTTTTGCCTAGTCTT
-AGCTATGTGGAATAAATTCTAGGTCAGGAGGTTTTCTAGGCCACGTAATT
-CCACTCACCTTTCCCTCCAAAAATTGAACTGAACAGTATAGCTATGTACA
-GCACATGTTTTGAGCGCATTGCTCGTGCGCCTTAGAGTTTTAGTTGACCT
-GAAAATATTTGAATATTTAGAAATTGAAATTTTGAAACGCAATGATTAAA
-ACGGTCAAAAAAGATGTTATTTATACATACGCAACATTTCAAAATTGATA
-ACAAATATTTACAGGAACACTTTTTTCCAATAATACGGTGACTAAGGGGG
-AGTTTACTGATAGTAACAAATTGGAACGGTACAGGAAGAAAATTTAAAAC
-CGGCTCTACCCATTTTAGTGCTACCAGCCGACAACCAAAAAAATCAATCA
-GCCGCACACCCTGCTTGGAATGTGACAATCACAGAGTTTTGGAATTTTCC
-TAATTTCTAAAATTTAATTTTCTAAAAACTGGGGATTTTTTCTGTAATTT
-TTTTTTAATTTTAAATTATTTTTTAGGAACATTTTTTTGAAAATAACTTT
-TGTTTGAAAAATTGTTCGCTAAAAGAGTATAAATAAGATCAGGCTTCCGA
-AAATGTTTCAAAAAATATTTTTTCACGATTCTTGCAACAAAAAAAAACAA
-ATACTGAAAAAAAAATTGTAAGAAATTTATTTTGTTGAACTTTTCAAATC
-TACATTTACAACAAAAACAGTTCTTTATAATATTTTAAAATCCAAATAGA
-TTCCCAGTAGATTTTGTTTAAATATTCGGAAAACGACCAAACTTTCATTT
-TTTGAGTTCTTAAATTAAAAAAAAAATTTTAAATTAAAATTTTTGATTTT
-CAGTCTAAAAATTTCAAAAAAGAGCTTTTAGTTCTGTAACTTTTGGAATA
-AAAATTCAAAAAAAAATTGGGGGAGCCAAAAACTAACGCCTGCTTGAAAC
-CTGCCCGCGAGAACTTGCAAATATTCAATTTTCTCATTTTTATTAATTTG
-ATGAGAAAAATTTAGAAATAAAAAAAAATTTGCATAAGGCATCGATTGAG
-GCGAAAGGCAGGCGGAGGTAATTTTAAGGCCAGGCTGGCGTTTTAACTTA
-GGCTTCCATAGACCTAATATTTTCATACTTGTTGAAATTTCAGAGGTTTG
-AAAATTGAACAATTTAGGCCCAAAACCTTTGTTCCTACAGTACTACAAAA
-ATTCTTTGAAAAATTCCGGTAATAATAATTGGAGGAGGAGGAAAAATATA
-AAATGATTCTTCGTCAGACAGAAATAAATTGGTGAAGAGAAAAAAATGAA
-TTGAGAGAAAAAGAGAAAGAAAGACGGAGAGCGTCTTCGAAAGAAGGAAT
-CCTCCTGCGCGGGATCGAAAAAATAAGCAGCAGCCGGGAGTGAGAGAGTA
-CACTGCACTAGAAAAGATGCAGAGAGATTCACAGAAAATCGGGAGAGACC
-CCCCGTATGTCGGTCGAGACTGAACACCTAAGACCTACTTCATATTTCGA
-ACCGGTTCATTTTCATTGGCATTCGTATTATTATTAGTTTTGACAGGGGC
-AGTCGTCGTAGATGCTATTGTTGTCAGTTTGACGTGATGGCCGTGTCATG
-GGAAAAATTCGGCCATCAAAAATCGGGGGGTTCCTGCCACCCTTTGTCTT
-CTATGGTCGGAGAGGCGTTTTCTAGGCTACTTATTTTGGTAGAGTAGCTG
-TTAATTAAAAATTTCATCAATTTGGTAATAATGTGGCTGCAAATCATATT
-TAAATTTTCTATACAGTCAGTGCCACCCAATTAAAAATTTTCTGGCAGTG
-CCACCCAGAAAAAAAAAATATCCTAGGCCACCAATTTTTAAGATCATTAA
-TTTTTTGGCTATCAAATTAAGTAGACCACTAAAATGTTTCGTCATTAAAA
-TTTTCTAGGCCACCAATTTTGCTTGACTACTAACCTTCTTGGCCATCACA
-ATTTCTAGGCCACTAATTTTTTTTCTAGGCCACTAATTTTCTAGGCCACT
-AACAAACTGTTCAGGCCATAAAGTTTTCTAGGTCCCTATTTTTAGGTCTT
-CAATTTTTTCAGGCCACCAAAATTCTATTCCAACATTTCTCCGTCACCAA
-AGTTTCTAAGGCCTTTAATTTTATAGACGACTTCTTAATTGTAAGTCAAA
-TTGTTTCAAAACGATTATTTTCAATACATATCAAAAACCCAAAATTTTTC
-AAAAACTTAGTAAACTAAACTAAATTTCCAATACGTGCTTCATTTTTATA
-TGTAGGCGTTTAGACACCCCAGTGGGCAGCAGTAATTGTTAATTCTTATG
-ATTATCTCATTGGTACACTTTTCTTGTTCAACTTTAATTATTTATTTTTG
-AAAAGGATTATCATTGGCATTGGCAAATAAATAAAATTGTTAGTGACGTG
-GTGATATTGGACATTTTTTGATTTTAGTTTGCTTTTTGAAATTTCAATTT
-TCGGCACTTTGAAATGTTCAAAATGTTCATTTGTATAGCAAATTATTTTA
-TTAAAATTTTTTTCAAATTTATTACATTTTCAGTGAAAATTGCACAATTT
-TTTAAAACTTTCTAAAAACTGCAAAAAAATAATTAGGTTTAAATAATCAA
-ATCAATAATTTTTTAAAGGATTAAAATAAAATTATAGTTATTACAAATTA
-TTTAAAAGATGTATACTTAAAAACTACTATTTATGTTTTGATTTTTACTC
-GAAAATCCAGAAATTTTAAGTTTTCGAGAAAACTTTTTAAATTTGTTTTT
-AAAAGAGGTTTATATAAATATAATGAACCCAAACTTGAAAGTGCGAAAAT
-GTACTTAAAAGAGTCCAAAATAAGCAAATATCATCACGAAAAGCTCCGAA
-CGTTTTTAAGTTTTTCGAAATGTTCAGTTATAGTTTTGGTAAACTGCCAA
-CTTTACGAAAAATTCGGGTTTAATTTTCAATGTTTTTATACAAATATTTA
-AAACAGAGTAATAGTATAAAATTTGTAAAAAAAAATTTTTTGGTCGGTAT
-TTAAAAATGGTGATAGGTGATAGGGCCATTTTTGACAGTAAAAAAAACTT
-TTATAATTGTTTTACATTTTACCAACATAGGAGCTGCCTTAAAAAATATC
-TAAAGGCTTGGGGTTTTGCCCTACAGTCCCAAACTACCAAATATAAATGT
-AAAATTTTTATAAAAATGTTCAAAATTTTTAATGATTAAAAAAATTTGCG
-AAACTTAATCAAAATGCCGAATAATTGTTTCATTCCCGCGATTTTTTAAT
-AATAATTTTTTTGTATAATTTTTGCATTTAGTGGCGTCATTTGTTTACAT
-GTTGTGTTTTTCGGCAATATTAATAGAGGTTTTCAGAGATTTTCTAGTTT
-TTGAAGCACATTTTGCCTTGTTCCCGTAAAGAAAACTTGATAATTGGAAA
-GAAATTTGGCAAAACGGCGAAATTGACCAAATTGACCAAAAAAGTTAACA
-AACTGTATTTAAAAATAAATTATTAAGCAAAGTAAAAACAAAGAAAACCC
-ACATAAATGTCAAAAATGACGTCACTCATTTGAGCTGAAATTCAAAAAAG
-AATTCGGTCCTTCTTTTTTTTTTTCAAAACAAATTTTTCTTAAATCATAA
-AAAACATATTATAATTTTATGACTTTTCTGACAGTTATATTTGGAATAGT
-GGGACATTTACAAGGGAAGTCGAAAAACTGAACTCCGGACTTTGACATGC
-TATAGTTATTTTTCGATAAAAGAGTGAAAATAATGATCCCTCCAAAAAAT
-TTTGCTGCCGCGGACCAGGTTCAGCAAAGTTATGACGTTTTGAAAGTGCC
-GAAAAAAATTCCTTGACCAACCCAAGCAAAAAAAAACTTTCAAATTTTCA
-AAAAAAAAATTCTGAAAGTTGATAAAAACTATTGTAACTTATTCAAAAAT
-GTGAAAAACGTATATCATGCACGTTTTTTCTCCCCACGGACAAAAAACCA
-CATTGCTTGATCAAAATATCTTGAGCAAAATTCTAAAAATTACTTTTTCT
-TGTAGATTCATTTATTGGTTTTCTTCAGAGTTATGAGCTAAAACTTGCAT
-GGCATATGTTTTTCACTGTTTTGAATAATTTACAAATATTTTTTCCTCTT
-TTCAGAATTTTTTTTTTGAAATTTTTGAAATTTTTTAAAAGGGTGTTTCA
-GCCACTTTCAAAACGTCATAACTTTGCTGAAGCTGGCCCGCGGCAGCTAA
-ATTTTTTTGGAGAGATCGTTATTTTCACTCTTTTATTGAAAAATTACTAT
-GACATGTCAAAGTCCGGAGTTCAGTTTTTCGACTTCCCTTGTTAGGGCAA
-AAAATACCCACAGACGGTACTCCGCCTAAAATCAAAAAAGTTCCAGCAAC
-TCGAGATCACTTTTTTACCATCTCAAATCGTTCGGTTTGTTGGGGGGGGG
-GGGGGGGGGGCTTAAAGAAAAACGAAAAAATGAGACACTTGTTAATTTGA
-TGGTAACAAGTGAAATGGAGAGAGAAAGAGAGTGTAAATACAAGAAGGGA
-ACAAACACTTGAAAATCAAAATTGTCGGAAGGAACTAGGGGGAGGATAAA
-ATATTGGAAATTAGGTTTAATAGGATATGTATCTAATCCCGAAGAATATT
-ATTAAAATAATCGGTTCAAAGAATCTGAAAAAATCGATAAATGCGTTGTG
-TTGTCCTACTTCCGTCCTCTACACAACGTCGTCTTCTTCTTCAGGGCGCA
-TTCTTTTGTGTAACAGTGCCCCTTTTCTCTCTTGATGCCACAAAACACTT
-TGGCAGTTACGCAATCGAAAGGCGAGGAAAGCAAAACGGGTATCAGATGA
-TGATTAAGTGAAACTGGAACTGATAAGTGAGATGGATTGAAATACAGATA
-GCCGTAAACTTTTAATAACCTAGAATTTTAGTTATTAAAGGTGTTATGTA
-TGTTTCGAAATTTGAAAAGATTTTCTCAATTTTTGAATGAATTATGTTTG
-AAGTAATTTAAAATGCCGAATGAAGGGTTTCAATTTTTGTTTTTTTAAAA
-AGATTTTTCGTCCGGCCGATTTTTCGCAAAATGTTTTTTAAAATTTGGGT
-TTATGTTCTTCTCTTTTTTCATGCCTAAGCCTAAGCTAGGCTTAGGTTTA
-GGCTTACTAATCCTAATCCGAAGCATAAGCTTAATCCTAAGCCTAAACCT
-CTCCTACTCTTTTAAGCTTAATGAATGCCCTAGCTTCATTTTTTTCATTT
-TTCGCAGGTTTTTTTCTCAAAAACTCAAAAGCGATGCTACGAACACCAAA
-AATTGGTGGTTCAAAATGTGTGTTTCTATTTTTTTCAAAATTTATTTGAC
-TATACAAACCAGCTGACAATTTTCTTCAAAATTCCGTTTTTCTTATCAAA
-AATAGTCAATTTTTCATCTAGAAACTTCAAAAAACCGTTACCGTTTCCCT
-AAGTTTTGCTATCAGTTCCGTAAATCTTGTACCTTATGTCACATGGCATT
-AGAAATATTTCAATTGAACCAATCTTGTTCGCGTGGAGTACAAGTTAAAC
-ATTTATGATATGTGGATGGGTGCAATTGCGCTCTATTGAACAAACTATGT
-ATCAACAGAACGCGTTAACATTATTTGTACAGGTGGGGAAAAACAGGAAA
-AACGACTAGGCAAAACAAAAAGTATATAAGTTTTCTTCTACACGTCTCAT
-AAAGGAAATTCAAATTTTTTAGAAAAAGAGCGGGGGGGCGCGATTGCAAA
-GGTTTAGACGGCGTTAAGATCTTTGTCGACGAGTGGTTCAGCCGCTGAGA
-ATGTGATTGCCGCCGGAATATTGTCCTTCTCGTTGATTGAGTCTTTCGAG
-AAGAGCGCCAGAATGACGGGCAGAATGAAGAGACCGTGGAGGAGACCTGG
-GAGAATTTTAAAATTTTTGAGTTTCTAGGCCACGAGTGACGTCACTATTA
-TGTCCAAGAAGATATTCTAAGGACAAATTTGATGATTGTTCACTACTTTT
-TCACTAAAAATCAGCTTGAATCGTAGAAAACAAAGAACTTTCAGAAAATT
-TCAGCGCTCACCAATAGCAACGACCAAAAAAACGGTCTTAGCAAAGCACA
-CGATTGCATAAGTTGGCACAAAAATCAACGGAAGCATGCATAGGAATGTC
-GACAGTCCGGCTTCACACATTGGCATTGCCATTTCTGCCAGACTACTGTA
-GACACGTTCTTGTGGAGTGCCACGTGCACGAAAAAAGTTGTAGGCCACGT
-GAGCGGTGTAGTCGACCGAGAATCCCGTGGCGAGAAGGACGTCCACTTGG
-ATTACCGGGTCCAGGTCGGCACCCCAAAGGGAGAGACCACCGACGAGAAC
-TGTAAAAACGATTTTAAAAAAAAGTAACTTTTTCAGATTAAATCCAAGAA
-AAAAACATAATTAAAATTTGTTTCAATGGTTTTTTAAAGTGACAATTACT
-CATTTTCAGGTTTTAAAAACTTTAACTTGAAAAAAAAAAACATTTTGAGC
-TACTTTTGAAAAAGGTTCTATTTTGAATTTCCCATCCAAACTTTTTGAAA
-AAATACAAATGATAAAAATAATTGCTTTCTTAAAAAAAAATTGTTAGCAA
-CCCTACCGTTCGCTAAAGATCGTTGTCGTTTTTTCTCAGAAAATTTAAAT
-ATCCCGCCATATATATTTTCGGAGAATTTCAATTTCTCGAAAAATTGTTT
-TCTCTGAAAATTTGAATTTTCCGCCAATAATTTTTCTCAGAAAATTTGAA
-AAAAAGGATTAAAAACATGAATTTTCCGCAAAAAATGTTTTCTCAGAGAA
-TATGAATGTCCCGCCAAATATATTTTCAGATAATTTTAAAGTCTCGCCAA
-AACGTTTTCTTCGAACATTTTAGGATTATGTGTTGAATTTGTAGAATTTT
-GATCTTGATTTAAATTTTTTCAGTTTTCAATTGAAAAAAAACTAACCATA
-ACAGATACTTGCAATAACAGATGTAATCACAGCAACTGCATTAAAATTTG
-CAATAAACACAAAACAAACGATTGCCATACAGACTACCGTAACCGCAATC
-GATCCAATTAAGTCAGTGCCAACAGTCAGGATGATACTGAGAATTGCAGA
-GTCACAGTCAAAGAGTGTAGCGTTGAATTGACTTTCTTCATGAAGAATTG
-TTCGGATATGTTGCATTGCACGTGCTCTTTCTGCCCATTCAGACATTCCT
-TTACCGAGAAGTGTCAGACGGAACGCTGTGACAATTGTTCTGAAAATTTG
-GAAATTATTCGGATTGAAATTGAAAAGTGTATAGGAATTAAGTTTGAACT
-ATTTGAGAAGTTTGTATTTTAAATTTTGCGCTAAGTTGCCTGAAAAAAAA
-CTAATTTCGAACTATATACCTACAAATATTTTTCAAAGAGCTCAATATTT
-GAATTTCGCGCCTAAAATATTTCGAAAACTTAAAATTTGCGACAAAACTA
-TTTAAACTATTTGAGAAATTTGAACTTTTAATTAACATTTGAACTTTGCG
-CCAATTTTTTTTTGGAAAATATTAAACTTTTGAAATTCTAGTTGAAAGGA
-AATTCAGAAAAATTGAGGATGTAATTTTTTTATATGAAAAACTTTTAGAT
-TCGATTTCGCGTCGAAAATTTTTGAATTGTCAAAATTTAAATTTTGACTT
-TTGCAAAAAAATGGCGGGAAAGTGAAGTTTCATTAGGAAATTCAAATTTG
-ATAGGCGTTTGACTAACTTATTATCATCTCCCATGTGATATTTTACAAGT
-GGAGGGTTCCCGATCGCATCCATCCACGTCGGAAGATTATCATAAGATGG
-GCGGTATTTTTCTCCAACCAGAGTGGATAAAATATTCATCGTCTTATCAA
-AATTCACATATTGCGGAAGAAAAATCAGACTTCGATTGTCTCCACGAATA
-CCTGGCACGTGCTCGAGCCGATCCATCATATTGTTGAAAGAGTCGTACTG
-AAAATTGAATGGCCTAGTAAGTAAAAATTAGATCATGAACTTACCTCTGC
-TTTGATCTCGATATTTGGAGGGTTGTTCACTATTACTGTAATAGGAAAGT
-AACGGTTGAAGACTGGCCTGAAAAATGATAAATGCTCAAAAAATACAACT
-TTTTTCTTTTAATAACGTAAAAAGTTTTTTAAATCGATAAAATCAATAAA
-TCGGCATTTCAACTGTAAACCAAAAATAACAATTATTGATTTTTCTTACA
-AAGACCTTAAAAATAAAAAAAAATCAATAAAAATAGCGATTATCTTTCCA
-AAAATCTGAAAATCAATTCAAATAATTTTCTTGATCTTTTATGTTAACCT
-ATAAATACCAATTATTGATTGTCTGGAAAATCAGTAAAGATTATTGATTT
-TTTTGAGAACCTAAAAATCAATAAAACCCAATAAAAAAGTAATGTTTTTT
-CAAACGCTTTTTCAAACAAATTCTTGATTTTACTTTCAAAAAACCAACTT
-AATATTCGACAACGAATCCACCAGCTTCGAATTTGATGGGAATGCCTTTG
-CAGGTTCAAAGGTCGTTTTCATGGTGACTACTCCATAAGTTGTCAACGCA
-TACATCCCAAGGAGCACCATAATGCACGCTACACGCCCCTTCACGGAGCA
-CACGAAGCTCGAGTACTTGGAGAGCCACGTGTCGGCTCGGGAAATTTTTG
-GCTCCGTCTCATTGGCGATGGATTTGTAATCTGGGTCGTTGCAGAGGAAT
-ACAATTGGAGCTAGGATCGTATAGGTGAAGATGTAGTCGAGGAGCAAGGC
-GAGCGAGGCAGTTAGGCAGAACAAGGACATCTGGAAGAAGAGTTTTATTC
-AAGCTAGCCCACGTTTTCAAAAACTGGGCTACGTGCCAAAAAAGGTTACC
-TGAGGCGTTGGCGTCAAGAATCCGATTCCAAAAGCAATAATATTGGTAAG
-TGAGGTGATTGTAATCGATGGTCCAACATCGACAATCACTTGTTCCAAAC
-GGCGAGGTCTGAAAATTGCAATTTCACGATGCTTTTACAATACCCCTACA
-GTACTTTTGCAGTTTCTCTACAGCACCCCTGTACAACTACGGTACTTTTA
-TTTATTTATATATTTGTTCATCAGGCAACAATCATAATGATACAATTACA
-ACAAGGCAGTGAACTTTTACAATACAATGCCCCACCCTCTTTTTCCGTGA
-AAACTTACGTGTCAGTAATTGCAATATGATGTTTCCATCTGTGAAGTAGA
-ATAAAAGCATCATCAACTCCAATTCCAAGTACCAAAAACGGCGTAACACA
-TTGAATAGAGAACGACGGGAAGCCCATCCAACAAATTGCTCCAAACGAGG
-CGACAGTTGCAGCCATCGGAGTGAGCAATGATGTGGCAACCAGATAGAAT
-GCCATTTTGACAGATGACAGGCGGACAATGACAATGATGACCTGAGTCAG
-AAGTAGGAAGAATCCGATTGTCATTAGAGTGGTAGCTTCAATGGCTCCTC
-GAATCATTTCACGATTTGCTACTTGGTCACTGAAGATGGTGAACTGAACG
-TGCTCGAAGGCAGAGGAGTTTTTGGAAAGTTGGAAGAGCTCGTCGATTGC
-GTCCTGGGAAAAGTATAATTAGGAAATGCCGAGTGCTTGCCAGTTTTTTT
-TATTATGTAAATTTGCTTCCCAGAATCGCGAAAATTTGATTTCCCGCAGA
-AAAGACTGAAATTTAAATTTCTACTAAAAATTGTTCAGATGTTTGTTTTT
-AGAAATTTTCTTTAAAGACAAAGATTTGAATTTCCTATTGAAAATAGGTG
-AAAATTCAAATTTACTACAAAAAAATTGAGTTTTGTTAAAAACACACTGA
-AAAATTGAACTTCCTGATTAAAATTGATTGAAAAATTAGAGGCTCCTAAA
-AAATATTGAAAACTCGAAATGTAAATTCAAATTTCCCGTCCAAAAATTGA
-CAAAAATATTTGAACTTTCTGCCAGAAACAAGTTAAAAAATCAAAGGTTC
-CTCTAATAGTAAAACTGACTCAAAATTAATTGAAAATTGATCAAAAAGCC
-GTATGAGTCTTCTAGGCTATTCTCACCTTAAACGCCAATTTTCCTTCTGG
-AGTATCAGACCTCGAAAAATACCACAGCACCAAGGATTTGGAGCTGATCC
-TCTCGGTCGGTGGTTCTGAAAGTTTCAATATTTTTTCACATTTTTCCAGA
-ACTTTTTATAGTTAAAAAAATGAAATTTTAACTGGAAAGTGGCTAAATCA
-TAAAAACTATTTTTCAACTTTTCATTTAACATTTCAAAAAAAATCTTACC
-AAAATCCGCATTACTCAAGTGAAGTCCCAGGAAAATATCCAGTCCGCTAT
-ATGGCATATCCGGATAGGTGAATACACTTGTGGTACCATTGTTTCTCCGC
-GTCAAATTCTGAAAATTGCCATGTGGTCGTTGAAGAGTTTTCTAGTCCAC
-CACCACCACCACCAAGGGTTTCGGTTTTTCGACTTTTTAGAAAATCGAAA
-AATCGAACAATTTTTGAGAAAAACTTACAAAAAGCTGATAATGTTTTTAT
-TTTAACTTTTTTCTCCATCATTCATTTTAAGAATATAGATAAATGGGATA
-AGACCGTCCAGGTTTCTGTTCAGTTTTCCCTGTTGTTAAATTCATTAAGA
-TGTTTGGTCCCCAAAAAACAATGTTTCTTTCATTTTTCGATTTTCAATTT
-TTAGATTTTTCGATTTTCACTAAAAACATCGAATAATTGAAAAAATCGAA
-AAATGACACCCTAGACCACCACCTACCGCTAACAAGTGAAAGGGGCTGTT
-CAAGTCGCAGAGTGGATCGCAATTTTTTCGTCCATCCCCATCTTGGTAGC
-CAACTGCCGCCGATAGTCGATTGTCCACAGTATAAATCTGAAATTTTTTA
-AATTCCCGCCAGAAAAGTGGGCGTGACGGAGAATCAACTTACGTCTGCCA
-GTGCGCCTTCCTGGAGAATACTGGAATTTTCGCGCTTGGCGGTAAAAATA
-CAGAATGCTCGTTCCGGATAGATGTCGAGTCCGTAGTATTCCAGCCAGAC
-ACGGGTTTCACTGAAAAATGTAAAAAAATTTATAGAAATTTCCGCAAAAA
-GCATATATTTAAAATAGGAGTTTTAAAAAAATTAACAAAATAGTTACGAA
-CGAAATTTTCATTTGCTTTAAAGTTTTCTTTTTTTTCTTATTTATTTTTG
-ATCAAATATTTATTTTGGGTTTTTTAACTTCAAGTGGAATTCCAAAAAAA
-TTCAATTTTCTTCCCAGTCAACCAAACATTGACCAAATCACAATAAGAAA
-GGGAGAAAGGGAAATCGAATTAGAAAAAGAAAAACATTGCGAAAAAACGT
-GTTATTTCTGACTGGTGGAGGAAGGAGGCTTCAAGGTCAGTAGTCACTTA
-CTATCCAGCATCTGAATCATCCGGTGAAAAGGCTTTGCGAATATCTGGCT
-CTAAACGAATGTGCACAAGTCCTGAACTGAGAACTAGGATGGATAAGATG
-CTCACTGAAAATTGTCCAACTTGAAAAATTTCGATTTTTTATGTTTATTA
-AATTTTTTCTGGTGTAAAATAGCAGAAAATGCCAAAAAAAAATGTATCAG
-ACACAACTTTTTTTCAATTTTTCAAACTTTTCGTTGCAAGACCAAACATA
-CAATAACAATTGTCGTTCGAGCGCGTTTTGCCCATGCACCCTTAACGGAG
-ATTTTCATCGACTACTCTATAGAGCGCGTTGGTGATTTTGAAAATGAATT
-TTTCTTGGAAATTTAAAACTTTTAGAAAGGGATTTTTCTATTTTTTCCAA
-AAAATTATATTGAAAAATCAATAAATTAATTATTGATTTTTCAAAACTAT
-AGTGATTCTGATTTGAAAAATGAAAAACATTGCTTTTAAAATTATCTGAA
-CTCAGTTTTCACGAAAAATCAATAAATCGGTAATCGAAAAACATTCATTT
-TTCTATTTTTCTCAATTTTTCGATGTATTTTCCAAGAAAATCGATTAATT
-TATCGATTTTTTTTCCAGAATATCTGATCGATTTTTTTATTCATCGGAAA
-AGTTCAATTATTTTATTTTTAGGAAATTGTTTTCCAAACTTATATTGGTG
-GCCAAGTTTTCCCATTTCGACGACCATAAAGTTACAAAAAACTCACAAAG
-TATCGAATAAACCGGATAGGCGGCTAACAGCCGTGCCACGACGGCACTAA
-TCACATCCCATCCCATGTGCTGAAAAACTTCGAAATTTTTTTAATATTTC
-AGAATTTAAAGCAGCATGCAAACGCGCTCCAACAAAGAAAAATGTTTTTA
-AAAAATTGAAATTCAAAACACAAGCACGTGAAGCAGAGAATGCAGAAAAC
-AAGACCACTGTCACAAAATTGTAGAAGTGAGGGAGGGAGGGCTATTGCAG
-AGGTGACCAACGGGTTTCGGTTTCCAATTTTTCGGACACGGCGCAGAGGA
-TTTGAGTCATTATTATTGTGTTTAGAGAGTGTAAGAGAATTAGAGAATTA
-GGGATAGATGGGAAACTGTACGTACTTCTGCGAAATGGTGCACTTTTAGG
-ATCGGCGGCCTAGAAATTTACATGGTGCTCTAGAAGTCTAATAGATAGCC
-TAGATCTTTTTAAGTCCAGAAAATTACTTGGTGGTCTAGAAGTTTTTTTT
-GTGACCTAGAAATGCAGTTGGTGGACTATAAATTCACTTGGTGGCCTAGA
-AATTCATTTGGTAGCCTAGAAATGTACTTGGTGGCCTAGAAATTAACCTT
-GAAGCTTAGAAGTTTGTTTGAAAGCCCAGAAATTCACTTGATTGCCTATG
-AATTCACTTGGTGGTCGAGAAATGTTCGTGAAAGCCCAGATATTTACTTG
-GTGGTCTAAAACATTTTTCAGTTCAGAAATACATTGGAAAAAATTTCGAT
-TGAGAATTATGGCGTGGGATTTCAAGTGGTGACCTAGAAATTTGTCAAGG
-GACTGAGGAATTCATTTGGCGTCTGGAAATTTTTTTGGTGACCTAGAAAT
-TTATTTGGTGACCTGAAAATTCATTTCATGACCAGTGAATTTACTTGGTG
-GTCTAAAAAGTCTCATGGTGCCGGTCTTAAAGTCTCATGTGTTGCAAAAA
-TTATACTACAATATTTAACTTTGAAATAAAAATTCAGCGGGTCTAGATTT
-GCAAGAAAAATCTGTATTTTCTCAATTTTTTTCAGGTTTTTGATTAGTTA
-AAAAAAATCGAAATGATTGTTTAGAACTGCAGAGAAAAAACAATTTTGTA
-TCTCCGGAATGCGCTATTCTGGGGAGTCAGATTTACTGGATTTTACTTTT
-TTTCCTGCAATTCCAATGCAAAATAAGGTAAAAAAATGAGAAAACTGGCG
-GAACACGGCGGTACACACAGGGGCAACTTGAATGTAAGGCAGGTGTTTAG
-TAAGTGGACCGAGGGGACGGCAAAAGCTGGTATTTTTCCTGTGTCGATGG
-GGGACAGTAGTAGCACACAAGAAACAAGTATTTTGATGATAATACGAATA
-AGAAAAAGAAAAAGGCAGCAAAAAAGTGTGTGGCAGACCACCACCGTCCA
-TCGGATTAGGGAGCGGAGGCAAACTCGCTCTACCGAACAGAGGGGTGTCC
-GTTTCCCCCAAAATCCTCTGAATGTGACGTCATTGTTGGGGCGGCGGGGC
-GGCGTCCAAAAATTAGTGATTTTTTTTTTGGTATTTTGGAAAAAAAGGAA
-AAAATCGAGAAACATTTTTTTGTGTTTTTGGGGAGTTTGTCATGTGAAAT
-TTGAAAATGTTGGGTACAATCAAAAAATTGTTTTGGTTTTTATAATTTTA
-ATAGGAATTTTTAAAAATCTGAATCGTTTTTCTTTGAAAAATCAAAAAAC
-AACAAAACATCCGCTTTTTTTAAAAATTGTTTGTTAAAAAAATAGAAATC
-GGAAAACAAAATTTTCCGATCTTCTCGAAATTCACAAACTCATAAAAAAA
-TCGAAATCCCCTTGTACCCCACCCTAGTTCACTGAAGCGCGTTTGCTTTC
-TGGCCAAAGGCATGGAGGGAGGCGGGCACCTCCCTTTTGCAAAATTGACC
-TAAATAAAGGTGATATGCCAGTGATAAGGAACGGTTTAATGATCCGAAAC
-CGCCAAAAGTGCATAGTTTCTGCGTTAAAAAAAGTGACAACTGACATCAC
-ACGGAGGCTACAAAAGGGGACTCACAAGTTTGCCGGAGAGGAATGAAAAT
-TGGAAATTTGTACGGGTAAGGGGATCAATGTTCAGTGGTGGTCGCGAGGG
-AGGACGGAGGGAAAAAGTGGAATTAGAATTGAATGGGAAATTGGTGGCAA
-AACGGTAAACACTTCTTATTATCCAAATGCATGAGGGATGGAGAAAACTG
-GAAACCTTTGCAGAATTTTGGAGGGGGTGATGAAAAGTATTGGCAACACC
-TTGGTGGCCGAGAATTTTAAATTGATGATCTGGACTAAAAATTCAGATGA
-TGGCCGAGTTTTTCATATTCGCACCAATACAAATGATGGCCTAGAAAGTT
-TGGAGCGACCTAATTTTTCAAATTTACAAATAGATCTTTAATGTTTCATC
-GACAAGGGATGTGAACTAGAAATTAAGATGGTGGCCTAGAATTATATTTA
-TGGTTCGTCAAGAGGTGGCCTAACTCTTCAAATTCACGAAATATTCTAAA
-GTTTAAATTTCCTTTAATTAGTATTGTGGACTAAAAGTCGAGATAATGAC
-CGAACTTTTCATAAGCTCTCCACATCAATTGGTGGCCTTGAAATTCCGAC
-ATGGCCGAATTTTCGTAAGTCGACCCCAGTGGTGGCCGAGCCAAAAAACA
-TAATTCCGCAAACTCTTACATTTTAATATATGAGGGAAGCCAGAAGTGCG
-TGCCACATTATTTTTACATTTTTGACTATCGTGCCAAAATTCCAAAATCC
-TCAAAAATTTGAATTTCGCGGCACAATTTCGGGTTTTGAATATCTTTTTT
-TTAGTGTGATGTAGGGCGTACTTTCCAATTTGCATAAAATAAAAAATCAA
-CAAAAAGCCATACATAATGTCAAATGGTCAGTTGCAAAGAAAACAAACCT
-GCGGTCAGGATGGCCGAACCAGAAAAATCAATTCAAGCTTTCGATTTCGC
-CCGAAAAAAATGAGGATCAGAATAAGAAGGTGTCGCCTATTAGAGATTGG
-AGGATGTTGAGAAAAAGAGAATAGTGGAGGAAAATGATGAGGTAGAACGG
-AATTGAACATGCAAATAAAATGAATGTATTGGGTAGGAGAGGGAAGGTAA
-CACTGTGTGTTCTGTGTTTGGAAAAGGATTGAAGTGGTGGACAAAAGGAC
-TCTTGGTTTAATACTACTTGCCTGTTCTGATCAGGTTCAGAGGTATTTCA
-GCAATAGCTTTTGTATTTTGCATTTTGTCTTTTTAAGTACTATTATTTAT
-CAAATCCTTTTTTGTAACTTTGAATCTGATGTCAAACTTGTGGAAAGTTT
-GAACTCGAAGAAATTGCTCAAAAAGTAAAATTTGCGCCCAATTTTTCGAA
-TTTTTTTCGTTGTTTCTTTTTAATTTCAAAACACAAATCTTCGCCAAAAC
-ATTGTTACAAAATTAACATTTTAATTTTTAAACAGCTGCTAAAGCACTAC
-AAATGTGAAATTGATGCCTAAAATTGGAGAAAAATGGAGTTTTTCAAAAA
-AAATTGAAATAAGAAAGTTTGGAAACTAAATGTCTATATATGGGGAAAAT
-GCTATTTCGAATCTCGCGTTTTTTTAAGTTGGGCATCTCCAAAATATGAA
-AAAAATACAAAAAAAAACTCCAAAAGATAATGTTGAATTTTTTCAAAACC
-CTCACCAAGAAGTATGTTTTAATAAACAAAAATTTGAATTTCTTTTCGAA
-TTTTTTTCAAAATTCGTAATATAAGATACCTGTCACACTTATTTTCAAGC
-TAACAGGAAAAAATAAATGTTGAACTTTATTTAATGATAAAAATAGTTTG
-TAGAAAATTCGTAAATTTAAAAAAATTCAAATTCTACCAAAATATATTAG
-TTTTTCACCTGGAACTAAAAACATTTGAAGAATTTTTTTTAGCTTATATA
-ACACTACAACCGCAACACATTTTTGTGAGAACATGTCTAGCCTCTGTCAA
-ACAGTTTTCCGGTATCTTCGTGTGTGTGTTTGCTAGTGTTCAATAGATCT
-TCCTGTAAAAAATCGAAAATTTCCGATTATATGCTTTTTATGTGTTTGAT
-TCTATAAGCGTTTAGATTGTTATCAGATGATTTGACATTATTCGCAACAA
-TTTTTTTAAATCCGAATGTTTTTCGAATTTCTATTTTTTATAATTTTCCA
-GACAGTTTAAGAGCAAAGTTGAAGTTATTTTTTCCTATCAAAAAATGCAG
-GAATAAATACTACCTCAATTTTTGCAAGAAAAAAAATTTACAGTAGTTTT
-TTTGCTGGAAACTAAATTCCGCAGAATTTGAAAAATACTGAAAGGGTTTT
-TTTCCTTTTTTAATTTGTACTCCCTACAGTACCCCTTATTTTTGAATTAC
-AATTTGATGTTCGTACCTAAAATTGACACTTTTTCTCTAGTATATTTCCG
-AATTCAATTCATAATTATCAGTTGAAACTAGACCCCACCAAAATCACAAA
-TTGATAAGAAAACGTAGAAAGGGGAAAGCACGTGTAGCCTACAACAATAT
-TAACTGTTTTCAATTTATTATTTTTATTTTCCAAGGGTTTTATTCTTAAT
-TCTATTCACAATTTTTCGAAAAATATTCAGCAAAAAAGTATGCTTTCTGA
-CTATATTATCAGTATAAAGTGAGTTTTTTGTGAGCATTAAAAAAATCAAT
-TTTTTGTGGCCTAGCTTTGCATTTAGTGGCCTAAAAAATTAAATGCATTT
-CTTCCACGTTTTCCGTAAAAAAGACAGTGGAAGAGTTTTTATCCGTACTT
-GGGCAGGCTTAATATTTTGTGGCCAAATTTTTCGCGTGGTGCCTAGAAAC
-TTTTTTTACGTTTTTTCTCGGAAACTTATTTTTTTCCATGGCCGTGAACG
-AGTTTTGTTTAAATTTCAGGTCGCTTTCAATATTTTGATGACTAGTTTTT
-TAAAAAATATTTTCCTGCTTTTAGTAATGCTTGGCCAAACGTCTTCACGT
-GGTCGAGCTTTTCATTTGATGCCCTAGGATTTTTAACCTGTCGTTCTCTA
-GACAATAACTACCGTGGACTCGAAAGTTCTACGCCACGTTTTAAATATTT
-GTAGCCTAGAAATCAAAGTCACTTCCCGAGTGGCCTACGTTTCCCTGAGC
-ATAACTAGTCCTCGAGAAGTCCAGTCGACCGTTACTGTCTACAAGATTAT
-CGGCAAGATAATCCGTTTCGATTTCGATGTCCACTCATTCACTAGTCGTT
-TTGTCGTCGTTGCAACAATGTGGAAATTACTAAATTTTGGCATTTTTAAA
-GATTTTTAAACACATTTTTTCTGTCGGAAACTGAGAACCGCAGTTTGTAG
-AGAAAAAAATTGCATTTACTTTCCTGATTGAAAAATCTTTGTTAGCGTTC
-TTCCCCGCTGATTTATGTACCGTTTAAGTTTCAGCTGAGAGACAGCGTGG
-GATTGGGGGAGACGCAGACAGCGAGTGAGTTTGCGTCTCCCTCTCCCTCC
-CACTCTCTCATTTGCAAGTTTTGAGTTTTCATAACTCGGAGAGTGGAGCT
-ATCGAAAAATTCAAAAAAAAAAACAAAAAATTAAAATAAAAAAATTCTAC
-AAATTTTTAGTTGCTAATTTTTTGATAGCGCTGCTAGGTTTTGAGATAAT
-GACGTTTTTAACTCTACCTCGACTTTTTGTGTGTTACCAAGTTAGTATTC
-CTCTGACAAACCGCATGACCTCACCTCATTGTAGCCTCTTTCGAAATCTG
-TAAACTTTACAACTCATGTTTCCTAGTGATATCCGCCTCCATCTCAGCTG
-TTCTCTTTCCATCTTCTCCTAACTGTTTTCGTCTATTTTAAAAATGAGAT
-TATTCGGATTTCTTACTAGTTCCGCTCAAAAACCAATAAATTTATTTTGT
-AGAGCGAAAAATTCTACACATTTTTGTAGTCAACAAGTTTTTCAATGCAC
-CTCTCCTCGCTGAGTTTTTAAGATCTATAATTTGATAGTAAAAATATTTT
-TGACAGTAGCTTTTGTTTTAGAGATAATCAGGATTTCGCAAGCCACGGAC
-TTCAGTCTAGCCTCATTTCGAAAGTTGTGAACTCTGCAAGTCATGTTGAC
-TAATAGTATCCCTCTCCAGCTGTTCTTTCTCCTCCTTCACTCAAGTGGTG
-ATCGTTTTCTCACTTCTCTCGCTTTTTCGCCCCTCTCTGTAGTGTCCAGA
-GAGTATCAGTTATGTCTCCAGGACGCCGTGTGACGTCATCGCTGACAAGC
-CGTAGCCTACAGCGCCCGGCAGAAGACCTGTTTTGACATGCCATTCGTGA
-AAAATTTAGATTAGCCCTCTCACACTCTACATGTCTCCATGTTTTTTCAC
-ACAAACTATTTTTTTGAAGAAATATCTTTAAAACTTTGCTTTGTCTATAA
-TTGATAGCATAAAAGGTCCAATTTTTTCCGTAGCTCAGCAAATGGCGTAA
-CTAAATGGTGTGAAATGTTTGATAGGGGACCGGTTTTTGGCTGAAATCTC
-AGAAAAAATGGAGCCCTGCCTGCATAGAGACCCCTTTCGACTGATGACGT
-CACAGAGTAAGGTGTCACATCACACCATTCTTATTTCTCTATTTGAGGTC
-CAATTAGACTAGGGGGTCAGCGTGCTCTCGATTCCTAGCCGATGACGTCA
-CATATTTGCCATTCACAACTTTCTAAACTTCAAACATTTTTTAATTTTTC
-CCAAATTTCAGCCGATTCCTAATGGGAGGATTCCTCTCCAAACATCACCA
-CCTCACTGCAGTCCACGATGCCACGTGTGGCCCAATAAAAGGTGTCGGAT
-ATGAGCAAGTAGGTCATAAATTGAGCTCTCACTAAGTTAAGATGAAAGAA
-AATTATTTAGGAAGACGGTTCAGTGGTGGAGGGGTTCCTTGGAATCCCGT
-ACGCCGAGCCACCAATTGGAGCCTTGCGCTTTAAGAAGCCAGTTGCTCAT
-CGGAAATGGACGGAGCCGCTGGATTGTGTTAGGTTCGGGCCAAGGAGTCC
-GCAAAATGATGAGCTACTAGGGCAGGTGAGGCGCCTAAATCAGAGCAAAA
-CTCTGTCATTTTTATAATGTTCAGTTTGTGAACACAGTCGGGAAAAGTGA
-GGAGCACTGTCTCAGCCTGAACGTATTCACTCCAAAGTGGGAGTCAAATG
-AATGGCCCGACGGCTTCCCAGTGATGGTCTTCATCCATGGCGGAGGCTTC
-GCTGTTCACTCATCCAGCAACTACGGCTGCGCTTCCATCGCACGAAACCT
-TTGCACCAAGGACGTCGTCGTCGTGACCATTAACTACCGCCTCGGCGTCC
-TTGGATTCTTCACCACCGGCGACGAAGTGTGCCGTGGAAACCTTGGACTT
-TGGGATCAGACTGCCGCACTCGAGTGGGTTCAGGAGAACATTCAAAGCTT
-CCGAGGCGACCCTGATAATGTTACAATCTTTGGCCAAAGTGCAGGTGGAG
-CATCTGTGGATCTGCTTTGCCTATCGCCGCACTCGAGGGGATTGTTCAAT
-CGGGCGATTCCGATGGCAGGGAATGGAGAATGTGATTTTGCGATGCGGAC
-TAGTGAGCAGCAGGCTCAGTTGTCGAGGGAGTTTGCGAGATACCTTGGAT
-GGGAAGGAGATGGTAAGTGATTGAAATGTCGCTTAGTCGTAAGATGTTAG
-AAATTGCATTGTCATCAGAGTTGGATTGAGTTTGTTTAAGCGTAATTTTT
-ACTAAAGCCCATCGAAGCAGTTCCGTTGGCTACTTGGCCTACCACACTCA
-GCCTGGGAGCCCGTCATAGCAAGGCTCAAGACATTTCCTATGTAGTTATT
-TCTATTGCAAATTTAATACGGTGAATTTTCCAAAAATCTTGACGTATCCG
-AATGAAAAACCAGTGCAAACTTGTTGAGTAATATCCCTAATTACTTCATT
-CCAGACAACGACAGTGAAGACCTTCTCCAATTCATCGACCAGCAACCCCT
-TTACAAGATCGAGATGGGCATAAACCCGAAAAGAGGATTCAAGCATTCCC
-AGGCTGGAAGCTTGTATTTTGTGCCAAACTTTGACGGCGACTTCTTCCCG
-AAACCACTTAACCAGCTTAGAAAAGAAGCTCCAAAGATGCAAATAATGAC
-AGGAACCACCAAGTACGAGGGTCTATTTTTCAGTGAGTTTAAACTTCTGA
-AAATTTTCTGAAAATTTTCTATTATAGTCGCCCTCGGTGCCTTATCGAAA
-AATCCGGAAGGAATTAAAAAGTTCATGGGAAGAATCTTTAAAGAATGCGA
-CTATGGAGAGCGTGCTGACGATGTGCTGCAGATGGTCTACGACTTTTATT
-TCAAGGGGGTACATCCCAAGGATCATGAGAAGAATATGCATCAGATTGTG
-AAGGTAGGTGGCATAGAGCCTACAGGGCCATCAGCCAGTGTTTCAGTTCA
-TTGGAGACTATTCTATCAACTATGGTACATACCGTCTGGCTAACATTATG
-ACGGATCTTCAACACGATGTATACTTCTATCAGTTTGACTATCATAACTC
-TGCAGGATTCGGAGTGTTCCGGTGGCTTCTTCCGTTTTTGGGTGAGTTTA
-GGCAGGATGGGTCAGATTTTCTAAGCTCTGGGCCACATGCTTTTTGGTAG
-ATCAGTTTTAGAAATTCTAAGCTAGAAATGTATGAGTATGGTAAAACTTT
-TAAATCAGATTGAAAAGAAATTTTCCAAATTATAGGACTTTGTAAAAACT
-CCGATTGCTTAGGCTACTTCATCCGTACGACCGTAACCTGTCACTAACGA
-TTCTAATAGTGTACCTTATCTGAACAGTATTGCCGAACTAATTGAAATTA
-ATCCTGAGACTCCGAGATTACCTAGCGGTCCCTATCGCTGTGGCCCAGTG
-CCCATTTGGCTCAATATCCAATTTTCAGGCTCCACACATTGCACGGAAAT
-GAGATATGTGCTCGGCAAAGGAATAATCTCGAAATTCCGACCAAATGATA
-ATGATAAGAAGATGCTTCACGTTATGACAACTTATTTTACAAATTTTGCA
-AAATATGGGTACTTTTTTTGTGAACACTTTCGAAAAAAATTAAGCTGCTT
-TCAGAAACCCTAATGGAGAAAACCAGGAGACTGGAGAATGGCAAAAGCAC
-GACTCGGCACACCCGTTCCGCCATTTCAAGATTGATCTGGACGATTCTGA
-AATGGTTGAGGACTATCAGGAACGGAGAGCCGAGCTATGGGATAAACTGA
-GAGCATTAAATGTTAGCAGGGCTCAGATGTGAAATTGCTGTTATTTTTAC
-TTGATTGATTTTACGGGTTTATAAATATTTTTGATTTGTTATATATTTAT
-TTTTTCTGAGTTACATACATACATCAAGAAACATTTCAATATCTTGCAAT
-CTAACTGAATTTTATTTTATAATCAGTTATTTTTATTAATCCTGTACTAT
-GCCAAAAAATCTAACTTGTTTGAATCAATAACTCAACTACCAATCCTTAA
-CACAAAAACCAACACGGTTCTACCCAAACGATGTATAAGCTGGCACCATT
-ATAAATTATCCGCATACTTTTTCAAACAAAGGAAAAAGTCGGAAGCTTTC
-CATACATTCAACTCTATTATACTTTCCCCTTTCCATGGATGTGCTTTTTG
-TGTGAAACCAAAACTTAACCGCCAGAAAGCTTTTTACATAATCTATAACA
-GAGGTGGGCGGCAATTGCCGTTCGGCGAACATTCTGATTTTTTGGAAATT
-TTCATTTTTGGCAAATTGCCGATCTGCCGTTTGCCGGATATCAATTTGCC
-GGAAGTGTTTAGAGGGTTCTTTTTACGACGGAAACACTTAAAACTGTGCC
-TTTTTGAAAATATTTAATTTTTATTCTTTTTTTCGGCAAATTTGCCGGTT
-TGCCCAATTTGGCAATTCGCCGGAAATTTCAATTTCGGCAGTCTGCCAAT
-TTGCCAATTTTCAGAAAAAAAATTTCGACGCCCATCCCTGATGCATACCG
-TTTTTGACTCAATTTAAATAGTACACAACCTTCCACATTAATGTAGTAAC
-GGTAAGGTTGCCTAATTTGTTTGAACTTTGAAAGCCGCGCACAGCACCTA
-CAGTAATCAATCTCCTTAAAGAGTGTTTTCGCAATACCAAACATAGGAGT
-TTGTAGAAACATGAAACCGAAGGACAACACATTTTGAAACAGGTGTCACA
-TTTATGTATCTGCACTTGATAGCTATGCAGTCAATGAAGCATAACGAGAG
-ACATGTGTTCATTCCCGAATGGAGTCAATGAGTCATAAGGTTCTTCGTTC
-TCATTTTATTATTACAGGCTTGGGTCCCACATTGATTCATATTATACTTA
-CTTTTCAATTCATTGTTTTTTTGTGATTTTTTTTCATTAGAATAGTATTA
-TAATAATATTCTTCTAATAATGACAATCGAAATAGTTGCAAGTAGAATAA
-CGATTTGTACAGTGATGCCCATAATTGTGCATGTTTATAATGTTCTAATA
-TTTCAACGCAATCATGACACAAGCTCTATAGCATCTCGTGAGTTCATTTT
-TGGTGAGGTTTCAAAAAAAAAATCCTCTTGCTCAAGAGCCATACGTTTTC
-AGTTAAAAATTTCTTTAATAAAATATAATGCTCATTTCTCGAACGTTACC
-TGTTAATGTTAACTGCGCCTACCATGTCCGTTCAATCCCACTAGTCAGTT
-ATTCTTTGCAATTAAATGATAAACTTTAATGTCTAAATCTCTTCATGGAT
-ATCTCCATCTCAACCATCCATCGTTTTTTATCAACCATCATCATTCTCGT
-GTTCTCGTTCTCGGGGTCGCCTCCGCTTCTTCATCATCATCACCACGACC
-ATTCAAATCGTTCATCTTCCTAATCGACATATTCCCGCATTAAATTTCTC
-TGTTGGGTATCAATGACTACCCAAAAACGGTCGCATTTTCTGAAAAAATG
-GGAAAATTGATTCCTAATTTATTGGTTTTGACCGGTTGTAACTAACCCCC
-ACACACTGTTTTTTGATACTACCTACGTCTATTTTCGGCTAATTTTAAGA
-AGTCAATGATTCCTAATTGTCTTTTTTGTTATTTTCTGTGAAGTGAAGTA
-TCAAGATAAAATCAGTTTGCGTCTCGCTTCGATTTTCTCATTTTTCGAAT
-GCTATTCCCCCGTAGCAATATGGTTTTGTTATTACACATTTGCACTTTTT
-TGCTACCCTCCCAATTCTGACTCACACTTGCATTCCGGAGACTGCCTGAG
-AGTTAAAACTAAACATAATTGTTATATAATAAATGTCAAAGTTTTTCGCA
-AGCTGAAAATTTTTGCCAGCTGAATTATTCCTCCTTCAAAGGAGCATAAG
-TCTAAAAATGCTAGAGTTATTGGAAAGTTGCTAATTACAAGTTATAGAGT
-TTAAAATTTTGAGTAGTTTCTCGATTTACAATTTTTGAAGCTTTATTCCT
-TGCTCAAACTCGAGCAATGAGAGGCAGTGGGGACTCCCCCACTGGGGAGG
-GGAGAACCTTGTCAACCCACTAGGGAGGGGAGAACCTTGTCAACTTTAAA
-GCCACGTCCCTCTGCAGGGAAAAGATCTATCAAAAGGTTATCAACTAACA
-AAATGTGCAAAATTATACGCTCTACATTTTTGTAGTTAACCGTTTTCTGT
-TATCACAGTTAGTTTTTGTGAAACCATCAAATCTGTAGTTTCTCCATTAT
-TATTATCACCTAACAGTATTATTATCAGCTGATAAGTATCCTTTCTTTTT
-GGATAATCCCCTTGTAAAGGAATATACCATTGTCTTCATCTCCTTTTTCT
-GTGTCTACCCTTATCTTTGGGTCGCCATCTGCCTCTCCTCCCCGCATATC
-CCCTCTTATATCTTCAGAAATTCAGGTTCCAAGGAATATTCCGAAAAATT
-TTGTTTGGAAGGTGACATGTCCGATCAATCGCTGGTCCAGAAGGTTCCAC
-TACTTGGCTCGTGTTCTCAGGTGAGTATGCGCCTTTAAACATTGAGGGTA
-CTGTATGCACCATAACGCAAAATTGCAGATTTTATAGTGGGGCAGGTTTG
-TTCTACAGATAACCGTAAAATTTTTATGTCCCTTTAAAAGAAACTCGTCC
-GAAAAATTGATAATTTACGAGGAAAACAACTTTTAAAAATGTTTTTTTAC
-TTCAAACGATGCTCTATTGTGCCGAATCGCTTGTTGTTTAGCGGCGTTTC
-TAAATATTTATTTACTTATCGAAAATCTTTTTTTTCATATTTATAACTGT
-TTAAACAAAATCGATAATATTTATTTTTTCTGAAACTATTCTGAAAATTT
-TGAATTTCCCGCCAAAAAAATTTCGGAAAATTTTGATTTTTTTTGGCATA
-TTATTTTCTGATAGAATTTGAATTTTTGGCCAAAGAAATTCTGAAAGTTT
-TGAATTTCCCGCAAAAATTGTATTTCTGAGAGAATTTGAATTTCTTGCAA
-TTTTTCTGTGAAAAAACAATTGAAAATAAACGTGGTCGCCAATACGAGAA
-AACTCGGCCACCGATTTTTTTTTCGCAAATTTTGCATTCGTTGCTGCATG
-ACTGCCAAAAATTGGCGGCCGAGTTTTTTTATTCTACAGGGTTAAATTTC
-ACAGATGGCCGAGTTTTCTCAGTTTCACGGTCACAGGCTTCTAGTTTATT
-ATATTCATCTCCGCGGCGCGCGCACCGTACTTTCTCCTTCTCTACTCTCT
-CGTTGTTCAATCCCTCTCTCGGATCCAACCAACGCCCTCTGCGATTGTGT
-CATCATCGATTTGTTATCTCAAATTCCGTTTGGCTTTTCAATAACCGTGC
-CTTATTGTCTCAGGAATTTCAAATTTCCGGTCAACAATTCGGATTATTAA
-CCATTTCGAAAAAAATCCTTTAAATTATTTTTATTATAATGAAAAACGTG
-CGATTTTTTCTCGCTGGTGGGTCCTGGCACGACTGAAACTTTTCAGCTAC
-TGTACCCAGCATTGCTTTAGAATTTAAATTTTTGCCGGCAAATTAGAACT
-GCAAGATTTTTTTGTTAGTTTTTAATTATAATTGTTTGGGAAAAATTACA
-AACTTTAAAAAAACCTACCGTACTCCCAAGTACTGCAGCCAAGAAATAAT
-TTGTTTCGTGCCAAGACCCATTTTTCCTTTAAGAACTAGAAACCTCCCTT
-GTTTACAACTGTACTTAAAATCGAATTAGTTTGTTCGCTAAACATGTTTT
-TCGCGCGAAATTTCGCTTTACTTTCGAAAAATGTTTTTCTTCATTTTCGT
-CGGCATGCGCCTTTAAACTACTGTTTTTGAAACTTTCGAATGATAGAAAA
-AATTAGAAAATATTTTTAATTTTCGCTTTCGCCGGAATATTCGAAAATTC
-GAAAAAAAAACTAAATTTCATGGATTCTCAGTTAAAATTCACGGAAATTA
-AAACTTGCGTAGCGAGACCTCAACGATCACATTACCTATGCGCCTTTAAA
-GCTACCGTAACCCTATTTTTAATTAAAAAAAAAAGAATTTCCTTTTAAAA
-TCGCCGGATTTTCTCCGTCTCTTTTCCCATCTTTTTTCATCTTCGGTACC
-AATCATATGTAGGTGAGAATATCTCTGCACCCTCCAACGAACCCAACACT
-ATATCGCTGCGCACCGTCCTTCAACGATGTCATCTTCCTCCTACTTCGAC
-CCCCTCAATTTATTTCCGATTTCCTCTGATTTATTGATCTTTTTTCCTCT
-TTTTCATCATTTCTACGTTCTATAAAGCGAGGTTTATAGCCAAATGGACT
-CATTCAAACGATTACAATCCAAAGTTTTCACGTCAGTGAGCTCACTGCGA
-AAATCTGAAGAGAATGTGAGTAAAAAGCGGCGGAAGACGTAAAACATCTG
-AAATATTTTTAAAAAAATTTGTTAAAAGCCCCACATTTTCGAGATAAATC
-TAAATTTTCAAGTTTGTAGCAGCAAATTAAGCAAAGATATATATTTCAGG
-CCGACGAGCAGACATACAACACAAAACGATGCTTCATCCACGTCAATCAC
-TTATCGATCGCGATCGCCGTCGTCGAGCTCTCGATTTTAATTTATCAGGT
-AATTTGTTTGCCTGCAACTCAGACCAACGCTTAGTCGTCTAATTAGATTT
-CAACCATATTTGATTAGAAACTGAGCAAATATAATGGGGACATAATTAAT
-AGGCTTATGGATTTTATTTGATTTGACAATATGGATTTTCTAACCAAATA
-TGGTTAAAATCTAATCCAATATGGAGCAAATCTAATCAAATATGGCTGAG
-ATCGTGCCATATTGGATTAGATTTCGACCATATTGGATTAGATTTGTTTT
-CTAATGAAATATGGAGAAAATCTAATCTAACATGGATTTCTAATCTAATA
-TGGAGCAAATATAATGCAATATGGATTTTCTAAAAAATATGGTTGAAATC
-TCGTTGAATATGGTTGAAATCTAATTAGACGACTAAGCGTTTATCTGAGA
-AACTGGAAAAACCTAAAAAAAATCTGAAAATTTTCAGTTTTGTGTGGAAA
-AAATCAATGAAAAACTCAATCCTACAGTAATTTAAAAATTCTTTTTCACT
-AAAAAAATCAGTTCCCATTGAAAAAACAAACTGAAAATCAATTATTTCAG
-CTCTCAAATGGCAGTTGGGGCAATTCGGAGCACTCGACCGTCTTCACAAT
-CGCCGCCTTGCTCTTTCTGCTCGTCATTTTTCTGCTTTTCGTCGCGATTT
-TCTACCAAATCGGAAATCTTCTCATCCCGCACATCGTCATGCAGATTCTG
-CTCGTTTTGTGCTTCCTGGGACTCACATGTGCGACGCTTTATGCGCTTTT
-CCACGGTGCCACGTTTCAGTTGCTCGTCGTGGTTACAAATCCGCAAATCG
-CCGCTGATTCCATGGTAAGTGTGGTAAAAAATGAAATTTGTTTCCTTGGG
-AAATTCCTTCTTTTTCCTCAATTTTTCCTCATTTTTTTGCTTCCAAAAAA
-AAGACCCATTTTGCGAAAAAAATTTTTTTTTTTCATTAATATATGTATTT
-TAAATTTTCCAGACAATTCTCCCGGCGCCAATGATCACAACAAACGTGGT
-TTCCGGATTCCTAGTGGGCCTTCTCGTCATTTTCGCAGTCTCCTACTTGC
-TCATCGCTGTGCTGAATGTGAGCTTTTCCCATGGCGAGACCCATGTAACT
-TTAATTTTTGCAGACCTGGTGCATGTACGTCGTCATCGATAGTTACCAGC
-TTTTGAAGAGCCAGAAACTTCAATCTCGTACTCCGTCGGTCGAGGAGTAT
-TGTGCGCCGAAGACGATTCAACTCTCACTATACCCCAATCAAATCGTTCA
-GGCCACCGATTTTTAGTCTATATTTTAGACCATTTGTTGAATTTTTCTCG
-AAAAAATCCGGTAAATTTTTGTGTATATATGTCCCGAAATTCTTCACTTT
-TATCACATGTGTCAGGCTTTAATTTTTTCATACTTTATTTTCGAATTCTG
-TACAAAAATCTTTGATATATTCTATTTATTCTTCTCAATTAATAATCACA
-CGATCCATCTTTCCACCCGTCTCGCCACCTTTGCATCACATCTCGACACT
-CGAACTTTGGTTTTCCGGTTTTTTCGTTGACTTTATTGTGTAGCTGGCAC
-ATCCATAGCGCAAACGCCTCGCGGCTTTCCACTTTTGGCGGCGATTCTTT
-CAGATCTTTTCGGAGATCTTTGGCGCAGAAATCGCAGGGATATGTCTGAA
-AAATTTAGGCGTTTTTGTGGGAATCTTGAGCTTATTAGCTAACTTTTCCT
-AGAATAGACATGAAACTTCTGGCTCGATCCTTATCCTCGTCGGTAGGCTT
-TTCCGGGTAGTAAACCGACATTGTGTGTAGCAAATTCCACGTGGATCTGC
-CTGAAATTTGAAATTTTTGGTGGAAATTTGAATTAAAAGCGAACCGAGCT
-CATCCTTGTCTACTGGACATCCGTGCAACTTCGCTCCTGTGCTCGTGCTC
-GGCGTCGTCTCGGATTCTGCAAAGAACTAAAATAATTGAGATTTTTTGCT
-CTGGAAATCTAGGGAAATCACCTTTTTTCTTTATTTTTTCAGCCATTTCT
-CTGCCTTTTTTCATCATATCCTCTACACTGACGCATGCACGACACGGCTT
-TCCATCTGGACCGATTTCCATTCTGAAATTAATTTTTAAACTTGGTTTTC
-GTTTCGTCAGTTTTAGAAGCCGTTTTAGGGCGTAAACTTATGAAACTATA
-CATAGTCTACGACAAATCTATAGAAATGCATTAAAAATAGGTCAAAAATG
-TGAGAAATTGCGCAAAAAATGATGCAAAAACGAAAAAAAATTAACTAAAA
-ACAAGAAATGCAAGTGCGCTCCACTGACACGCGTTAGAGAGCGTAGACGC
-AGAGAAATCTCGAGATGAGGGAAATCGTGGCGCGCGGGAATCAAGCTTTT
-TTGAATTGTCTTGATTTTTAAAGCCCAAAAAATAGATTTTTGGCGGATTT
-TTGGTGGATTTTCTTGCTTTGCAATGTAAAAATTAATTATTTGTTGCATC
-TAATCACTTTTAACAGAGATTTACAATTTTTTTAGTGGTCTGAACCTGGG
-AAAATCCTTCAAAAATCAATTTTCCCTACAAAAATTCGTTATTTACCGCA
-TTTTCCGCCCAGCTGATCAAAAATTCTTCTATTTTCTCAATTTATTGATA
-ACACTCGCCCACCTCAAGCATTTTATCACCTGAAACTCGTCACACTTTAC
-AATTTGTTTGCAGAAATATGCGAAAATGAGCGTTACTCAGCTAAAAAATC
-TGAAACACGCGATAGCTCAGCTTCTGGAGTGGGATGGAACGAAAACGGCG
-AGAAAGGCAAGTTTTTGGTGGAATTTATCGAAAAAACCTGATTTGTTTTT
-TTGCAGAAAATCGTCGACGAGGTGGTTCTTCTCTATCACGCTCTGGGAGC
-GGAGGCATTAAGTGAGGATAACCAGGAGATATATGATTTGTATGATTTAT
-CTGCACGTATATTCAACTTAGCTAAGAAAGTTAGTTTTTTTTTTGTTAAA
-AAGTCGTAAACAACAAGTAAATTTAAAAATAAGCATTAAAAAATATTGAG
-GCTTATGAGAGCAAAAAATTCCAGGAAATCGAAGAAGCCAACCAACAATT
-CGAAAAAGAACGAAAAAAGGGCACAAGACGAAGCGAAAAACCAGTCCCAA
-CTCCACTTTTCGAGCTATCAATACAACATTTAAAACGTTGCTGTCAGCAG
-GGAATCGATCACAATCAGGTGCCATGGATAGCATATTGTCTGAAACTACT
-GGAATTTCCAATCACAATCACCGAAAAATCGATCGAAAACGAGATTTCCA
-ACGTGCTCCTATTGAGCTCCAACGCCTCACAGCTCCATTGGGCCGAGCAT
-GCTCATTTGAGCAGCTTATGGAAATGGATTTGGAGCCGTGTCGAGACCGC
-CGATATTGGGGCACTCGCCATGAGAAATTATATGGAATTGGCGGCGAACT
-TGCTGGAAAACGTGGATTACGTGGTTTTCGAGAAGTCGCCTATTGACCTG
-ATGGCGAAAGTGATGGGAACACTGAAGAAAAGTGTGGAAATGGGAAATCC
-CAAAGAATAGTGCGTGGAAAACGAGTTCTTGAAATAATGTTCAAAAAATT
-CAAATTGGCTTGGACTTAGGCTTAAGCTTAAGCTTAGATTTAGGCTTAGG
-CATAGGCTTACAAGGGAAGTATTTCAACTTATTCCCGGACTTCAGAATGA
-AACCTATGTCATTTCGAAGAAGACTCTTTAAGTAGGTCCCTACAAAAAAT
-TTAGCGGCAGAGGAGCACTTTGACCTGGAAAAAAGTCGCTCTGAAAACTT
-TTCAGTGCATTTTTTCACGGCTTTCAAGGCCCGTAAAATGGCTCCAAATG
-CGAATTTTTGTAGATTTTTGAAGATTTCTAGGATGCTCAGGGGCCGGAGA
-GCACTCGGAATTTTTTTTGGAATTTTTTAAAATTTTCGAAAAAATCTGAA
-ATTTTTTGAATAAGTCCATGGCAAAATTTTTCAGTGAATATATATATATA
-TTTTTTTTAAATTTCAGAAAAGTTGTCAGTTATTTAAGATCAAAATTGGG
-TGTTTTTACACAATGAAAATTTTTTTGAGATTTTTCGGAACTGCAAAAAC
-CAATTTTGGAAAAAAATCGGCACCCGGAGTCGAACCCCAGTCTTAAAAAA
-TATTAATCAAACTCGCTAACCACTCGGTCATTCAACGACAATTTTTCTTG
-TAAATGAAATGGATGACAAAAAAACGTGACTCTTTGATATCTACTTAAAT
-ATATAGGGACGTGAGAAATAGCTTTGGAAAAGGAGAGGACGCAGAGAAAA
-ATTTTCAGAGCGACTTTTTTCCAGTTCAAAGTGCTCCTCTGCCGCTAAAT
-TTTTTTGTAGGGGCCTACTTAAAGGGTCTTCTTCGAAATGACATAGGTTT
-CATTCAGAAATCCGGGATTAAGTTGAAATACTTCCCTTGTTAGGCTCACT
-AGGGAATGACCAGAATAAATGGAGCGATATTCAAAAAAAATATATTGTAT
-CGGAAAGCTGGCATTCTCTACTATAAGAATATGACTGAAATTTTTGCCCG
-TTCGGGCTGGAAATCTGAAATTTTTACGTCTGAAATTCTACACTGAAATC
-AGTGCATTTCCTATGGTTAACAGTGGATTTTTGTCTCTGGCGCCAACAGA
-AGTCTCACCACAATGGTGGAAGGGCGAAAACATCGGTTCGGTGGTCGAGT
-GGTGAACGCGTTCGCCTCTTGAGCAGAAGTTTGTGGGTTCGGTTCCCATA
-CATGGTTTAACTTTTGGCCTTTTTTATACAAAATTTTCAGAACGGGAAAC
-AAGTATTTAGAACATTTTTTTGAGGGTTTTACATAATTTTTTTGCTTTTT
-AATTGAACCATAATTACCCTGGAAACTTTTCAGAAATTTTAATTTTTTTC
-GAAAATTGTCACTTTTTTCTCCACCAAACCCATGAGAAAATTTGATCGAA
-AAATTTTTTTTTGAAATTTTTTTAAAAATGCATGAAATATTTTAGAGTGT
-CACAAATAACCTATTTTTCATTATTTTCAATGACCGAATCATTGATTCTG
-ATGCCTTATCAAGACGTTTTACCAAATCGATATTGGCAAAACATCTTGTT
-TTTGAGGCTCCATATCTCTGCAGGAAAAAATCGCACTAAAAAGTGATCAA
-CTAGAAACTTGTTAAACACAATGTGATCTAAAACATTTCAGTTGAACACT
-TTTTTGTAAAAAATTTCGTTGCCGAGTTGGAACCAATTGATTTGAGCTTC
-ATTATTTTTGAATATTCTAAATAGTTAAAGATCTATATCTTGGCAACGAA
-ATTTTTTACAAAAAAGTGTTCAACTGAAAAGTTTCAGATTACATTGTGTT
-TAACAAGTTTTCAGTTAATCACTTTTTAGTGCGATTTTTTCCTGCAGAGA
-TATGGAGCCTCAAAAACAAGATGTTTTGCCAATATCGATTTGGTAAAACT
-TTATTTTAATTTTTTTTTTTCATATTATTGTTTTTATATTGGGTCAAAAC
-GTATTTGCTCTGCTAAATAGTTAGCTGGCGCTAATTTTTAATTTTATTAT
-TTTCGTATTTTGATAAATTTCACTGAAATTGTCACTTTAATAGTTTACAT
-TCTATTGGTTTTCTTTTATTCAATGTCTTTTGATATCGGAAACGTGATGT
-TTGCCTTGCATCGTCATTTTCCCAATCCCCTCCCATCAAATCCCTCGATT
-TCGAGACATGAGCAGAAGGTGGCAGATCATTTGGCAAGCATTATAAAGGA
-ATCTTATTATGGAGATACCAGTGTGGAAGAATCCGAATATTTGGTTCAAG
-AAGAATATGGCGATTGGGAGCCAGAAGTTTTTGAGGTATGTTGGTTTCGA
-CACTATTAATTGTCATTTAAAAAACCTTTCAGCCGTATGACTGTGTGTTG
-CCGGATCAAGATGATGTATTGTTCGGTGAGAAAGCTGTATCAAGGGAAGA
-GTTGGATAAAGCGATCACCTTCTACCGTAGCGGAAAAATTGGAAGTAGGC
-CGATAACGACTATGCACCATAGTTATCGCTGGATACGAACCGATGCTCAT
-ATGAACAAACTGCGCAAGTACGAGAAAGATAAAAAAGCGTTCCAAGAAAG
-CGTGCGGGTTCGTTTGGCACAGCTTACACAACGGCTTTATGAGGAGGTCA
-AGGAGAAACTTGATAATGGTAACGAACATTAATATAACAAGTTTTAATAT
-AAATATTTCAGGAGTCAATTTGCATGATTCTGATTTGATGGCTATGGCAC
-TGGAAATCAACACCCGCGAAATGAAGTTGCAAAAACAAAACGAAATGAAG
-TTGCAAAAAGCGTCACAATCCTGGATAACCCGATGGAAGCAAAGCCACAG
-GTATGTAATAAATTGCGGAGTATGTTAGATATATATATATATATATATAT
-AATTTCAGAATCGTGAGTCGGAGAGTCACCAAGTTTGTCACACGGAAGTG
-CCTGATCAATAAAGACGCTATCAAAAAAAACGCGGATGATTTTGTCAAGA
-ATGCCAGAACAGAGATCTCCAACTATCACCCGTCGATGGTCTTCAATTGT
-GACCAAACCGGAATTCAAAAGGAGCTGTATCCAGCCCGGTCTTTAGCCTT
-TATGGGCGAAAAAACAGTCGAGAGGTTGGCGCAATCGAAATCGTCGCTGA
-CCCACTCGTTTACGTTTCTCCCGATGATTTTCCTCGATGGCTCAATGGGA
-CCCAAGGCGTTTATGGTAATCGCTGAACCAAAAGGCCAGTTTCCTCCGTC
-TCGTCCAATTCCAAACTGCCCAAATTTGGAAGTGCGGGCTGGATACAAGA
-CACACATCATGACGAAGCAATTGATGTGCGATTTTTTCGAAAGTTGTGTC
-TTCATTCCGTCTGTACCGAAAAAACTGTACATCATGCTGGACAGTTGGCC
-AGCGTTCAAGGACCATACAACGATCAAGAACTTGGTTCCCAATGGTCATG
-ATGTCGTCATTCGCAACATTCCAGAGCACACAACTGGAATGATCCAACCG
-TTGGATGTCTATTGGAATGCGCCATGGAAGGTATGAATTTAAATCTTTAT
-AACTTTTTGATAGTATTTTCCAGAGCTTGATCAAGAAGTTCACAGCATAT
-GCCCTTCGAACCCAGACGGATTACGTCATCGCACAGAGGAACAACGCAAT
-TTGCATGGTATCTGTGTTGTATCACCAGATCTCGGCAGAGCACTTCCGAC
-CGTTTTTACAGCATTGTTGGAAGAAAGCTGGATACGTGGGTGCTGCGAAT
-ACTTCATCAACACCATTTTTGACTCCAGCTCAATATTGCATTGATCATGG
-TGACACAGTGATTTGCTATCACACTGGATGTAACCATCTCGGATTCATCC
-GATGCGCAAGATGCAAGATGTTTGTTTGTTTTAATCATTTTGTTGTGTCA
-AAACAACATCTTTGTTCATCTCCTTGAATAATTAATAAATTCATGATTGC
-ATTACATTCAAGTTTCGCTATGAATAAAATTGTTTATATGAGGGGATCCA
-TGGTTGTAGTGGTCCATGGTTAAGTTTAAATTTTAGGGGAAAAGATGTTG
-AATGAATCATTATGGTGTTGGTCGACACATTGATCATGCTGATATCGATC
-AGAAAAATTAAAATTTGGGCTTTTATATAGTTTCGAAAAAACACGTTTAA
-ATTTTTGAAAAACTTTACGTTAGGGTGGAATTGAACCCCAGAGTCCCACC
-ATGCTTGTCATCCACTCTATCCACTCGGCCATCTCGCTGTTGCAGGCAGT
-ACTAATTGGGGATGGTGATAAGTAAAGCACGTCAAAACGAATAATTTCAG
-ACGTAAAAATTTCAGATTTCCAGCCCGAACGGGCAAAAATTTCAGTCATA
-TTCTTATAGTAGAGAATGTCAGCTTTCCGATACAATATTTTTTTTTTGAA
-TATCGCTCCATTTATTCTGGTCATTCCCTAGTCAGGATCAGCCTCAGGCC
-TAGGCTAAGCTTAGGATTAAGGGTAGGCTTTGGCTTAGGCTTATGCTCAC
-GCTTAGGCTTCGGCTTGAGCTCAATCATACATCTTGCTTAAGCACGCAGC
-TTAACAGCAAAGCTTAAGCACACAGATTGGGCTTAGGCTCAGGCTCAGGC
-TTAGAAAAAGTCGAAAAGTTAACTAAGTCAAAAAATTTTATTGTTAAAAA
-ATTGTTTAAAAAGTATTATGATTTTAATAGAAAATTGGAAAAAAACCGAA
-AAAAAATGAACATAAATCAAAAAAAAAATTTTTTTTTAAAGAAAACTTCT
-TTTTTTTGAAAAAAATGCAATTTTAAGGTTTTTCTGAAAAAAACTGGAAA
-ATACTTTGATTTTACTGTAAAGAGAATTTTTTCTGTTTTTTTCCAAGATT
-TCAACTTATTTCTGCGAGTTTTTTTTTTCAAATTTCCTCTTATTACAGTT
-GGTGTCATTACCGAAAATTCTCGGTCGTCCACATTCTCTCATATATCGTA
-CATCGTTGGGGTCTCGAAGCGAGAGATTTCATTCTTCGTGAGATTTTCGA
-GCTCACTGGTAGTTTGTCCAACTTGATATCAGTGGCTCATAAGGATGGAG
-AACAGTCCAAGGTTTGAGTTTTTTTTTCTGAGTTTGCAAACGCGCCCTAA
-TTATAAAAATTTGGAAAATTCCACGTGGAAAATAGTTTGGCGAAAGTTTT
-TATACAAATTTTTCGTGGAAATTAATTTTTTTTCGAAATTCTCTTTTAAA
-AAATTTAAAAATGTTTTATTGGCGTATTATTTTTCTAAATTTCAGTTTTT
-CGCAGATTTCACCAATAAAATATTTTTTTGAAAAATATCGCTTCGAGACC
-CAAAAAAATAATTATGATTTCAATGAAAAATTGAAAAAAGCCAATGAAAT
-CGAGAAATTATCGAAAATAATTCGAAAATTGGAACTTTTTAAAAATTTTA
-AATTTTTTTCAAAACAAAAATAGTTTCTCAACTTTTTGCTAAACAAGAAA
-TATATTTCGTGGCGAGACCCATTTCTACTAATTTTCTTTTTCAGAAATGC
-ATAATGCGTTTGATTGATGATCTCGTGAAGCTCGCCATGATCGAAACCGT
-ACACGGCCACCGTACCATGAACGAAGTGACACGTGGAAATATTCAAAAAC
-TCGTGAAAACCGGAATCCAAGAGTCTCTGAAATCGGCGCACCGAAATTTC
-TCAAGGAGTTCGACATTTTCGATTTCCGAAGAATGCGTGAGATATCTGAC
-GAGATGGTTGTTGGCCGAACGAAGACTTGAACAGCCGTCTGCGGCTATGA
-ATGAATCGTTTGAATTGACCGGTGATAGCAGTAGTAAGAAGAAGGACGAT
-GCCACGTTTGATAGTGCGTAAATGGAATTCTACCAAAAGGAGATCTACAA
-AAAGAAAATCTACGAAAATAGGATTTGGCACGGTGCCAGATCGATCTTTT
-TTCGGCTCAAAATTGGAAAAACCTGCAATTTTTATACATTTTTGGCTTCG
-AAAATCAGGGAACTCTGCAATTTTTGGCATTTTTCGCTAAAAAATTGGAA
-AAATCTGCAATTTTTATACATTTTTGGCTCACAAACTGGAAAAACTTCCA
-ATTTTCATCTCAAAAAATCGGGAATATCCGCAATTTTCCTCACATTTTTA
-GCTTAAATAATTGAAAAAATCTGCAATATTTTACATTTTTGGCTCAAAAA
-ATCGGGGAATTTTGCAATTTTTTACATTTTAAGTTTAAAAGTGGAAAATT
-GCAAAAATCGGCATAATTTTGAACGTTTTCTTTTTTCCGGTTTTCCGTTT
-TGTTACGATTTTCGTTTTGCATGGAAAATGCTTCGATTGATACCCTTCTT
-TCGGAAACGAGTTTCTCCTGAAATAGGCGTAGTCTCAAACCATTTTATGG
-GCGTGGTCTTTCTCTTATCTTGTTTTTATAAATGTTGTTCATTAAAACAT
-TTTCAGGCCTTATCGATCTCTCCTTTGGCTCGACGATTTCCGGAAAACAT
-AAATTGAACGCGTGGAATGGTGTAATGCAAATCCTGAATGAGCTCCTAAA
-AAGTCGACGACTCGAACTTCAAGTCACTGAAAAAATCGTGACAATCCTCT
-GGGAAAAGCGAAAATCCTACACAACGGAGCCACTCCGTACTGTGTTCTGC
-TCCATTCTCTCCACAGTCGTCTGCCAGGCCGATGTTCGATTCGGTCATCG
-GAAAGTGCCGACAATCGACTCGATTCTCAAATATTCGCTGTCTCTAATGC
-CAAATGTCGCATCTCTTCCCAGTGCCGCTGCGTTGACCGAAACGATTGTC
-AGATTCAGGACAGTATCACGAGAGGGTCTCCGTAACACGTGGGATACCGT
-ATCCCGAACTAGCTCCGGCTCATTTGAAGTTGTTCGGCTGATTTCGGCGT
-TGATCTCCGTTACGGAATTTGATGAGAATTCGAGATTCGCCAACGATGAG
-AGAGTTCGGAGTTGGAGGTAAGTCACTATGCCACGTGGATGGATTTCCTT
-TAAAAAGAGTTTTTGGAAAACAAATCAGATTTTGTATATCACTTCACCTT
-TAAAGCGAAATTCTTGTTTTTTTGCAGTTTTCGAAAAGACATAATCGAAT
-GGGTATTGCTGGATCCGAATGCACATAGTCACAAATTACTCTATCAGTTG
-TGCCAGTATCATCCAACGTATTGTTATGAATCAGAAGCTTCTTCTAGTGG
-TTAGTTTATTCCGTAGGGCTTCCATGGTAGGCAGGCGCGATTTCAGGGCC
-TGACGCCTGCCTGAAACCTGCTGACCTTTCGCCTCTTTTCTCTCATTGCT
-ATCAATTTGTTGAAAATCAAATTAAGAAATTAAAAAAAAAGTTCACGTAT
-GTTTTGTCGTGGATTGAGGCGAGGGGCAGGTGGTGGTGGTCTTAAGGTCA
-GGTAGGCAGGTGTTTTCACGCCTACATTGAAGCCATAGTACCCCATATGC
-CGAAAACGCTGAAGTTTTCTCATTTTTCCAGACGACTCCCTGCTTCAAAC
-TCTGAAACTATGTAAATTAGCTTGCTCTCCAGCTCCCCCATCGGCTCCAA
-AAGCCCTCCGACCACTCGAAGCTTCAATTGAAGAGATTGTGAGATATGTG
-CATGATAAGCTCAAGAGCATTCTCGGTGAGCATCGGCTGTCGTTTTTTTG
-ATTTTTGAATTTTTAAAAACATTTTCAGCGACTGAAATCACTCTGCCTGC
-ATTTGTGCTCTGCCACGAATTTGCTCTGAAGTATCCGGATAGATCTTATG
-AGTTTAATGTTGGTTTTTTTTTCTAATTTTCGAAAAATTTAAGAAATTTT
-AGGATATAAATAGAAATTGAAGAGAATTTGAATTTTTAAAAAATTTCGAA
-TTTATGGAAATTCAGTAAAGTTTGTCGGAGTTTTTAAACGAATTTTCAGA
-ATTTGTAATAAAAACTAAATTTTCTAATTTTTTTTCCACAATTTACAACA
-TCTAAAAAACTTTTTAGAAATGAATTGTTAGAAGTTAGAATTCCTGGAAA
-TTAAAAAAAAATTTGGATTTTTTTAGAATTCTTAAAAGTTTGATATTTTC
-AAATGATATGAAGTTAACACATTTTTTAAAATATTCAAAATAAGAACATT
-TTAATTTTTTTGAAGAAATGTTCAAAAAATTAACATTTTTTGGGACTTTC
-AGAAGTTTCTTCTTTTTTTTTGCGTCTTTCAAGATTTTTTGCAATTTGCG
-TAATTTTTATTAAGGGGACAGAAAATTCTGAGAATGCGGATTGCACAACA
-TATTTGACGCGCAAAATATCTCGGAGCGAAAACTACAGTAATTCTTTAAA
-TGACTACTGCTAAAATTGAGCATAAAAATAAAAATATATCGATGTATCTT
-GGATCCCGTAAATCGACACTAGCGCGCTACAGTAGTCTTTTGAAGAATTA
-CTGTAGTTTTCGCTACGAGATATTTTGCTCGTAAAGTGTGCACGAATTCT
-TATAATATTTTGTTCTCACAAAAGTTGGTCAATTTATGGGATTCTCAAAT
-TTTCGATGTTTTTTTTTTTGAAATTTAAGATTTTTAAAACATTTTTCAAA
-AAACTGATTTTTCTCTTAAATTGAAAAGGTTTTTTTTTCAGAAAATGTAC
-AAAAAGCTCTACCAAATCATGGAAGATCAAGAAGAAGACGAGTTTCTCCA
-ATCAGCTCGCCATTTCTCAAAATGGCCTCAAAATCTGACACTACCAATAC
-AAAAACAGACAATAAATTGCATGGCTGTCTTTTTCGAAGCGAATCTTGAC
-AATCAGCTCGTCGATCTCTGTCAGTGGAGTGACCGACGAAAAGTGCTTGT
-CGAGATGCTCGCCGAGCTGGCCGCCACAAGATCTGAAATTCGAGATAAAC
-TTCAAAAATCGATGCCGTTCAACAAATTCGTCAAGGAGTGTATAATGGAG
-AATCGCGGTGATTTGTATGAAATGACAAAGAGATTTGAGAAATATTCGTT
-TTTGCTCTCGATTCGGAATTTAATTGTTACTAGGATGATTATAACGTGAG
-TGTTTGTTTTGGGGATTGCCACGAAAAACTGGAAAAACGTTTCGAAAATT
-CAAAAAATATTTCTTCAACATTAGAAAGAATTTCCATTTTTTATATAATT
-TTGGAAAGTTTTTAGATTATTTTAGATAAAAAATCATTTCGAATTTACAA
-AAAAAAATTATGAAATTTTAAAAACAAGTTTGAAAATGTATTTTTAAAAA
-ATTTAAATATTAATAAAAAATCTTGTTTGAATTATTTAAATGTTTGCTAT
-TGTGTTTTAAAAAAGCTTAAATTAAAAATTTTTTTCAACAAATGACTAAA
-TTAACAATATATAACAAAAATTCAAAAAAAATTGTTTTCGAGAAAATTTT
-TTGCTTTTTTTAAAAATAAAATTATAAAAAGAAACAGAATAAAAATCGAA
-AAAAAAACAATTATTTTGAAATTTTCAAAAAAACTAGAAAAATGTAAAAA
-TTTTGAGGAAAAAAATTCAAACATCCCAATTTTTGCAGAAACGAAGCCGC
-CCGACTCCTAGGAGATGGTGAAACAATCAGTGAAACCGATATCTTCATAA
-TCGAAAAGCGTACTCTTTCCACGTGTATTCGTAATGTGTCCGAAGGAAAA
-GAGTTGAGCGGCTACACACTGGACCCCTATACGGTAGCTGCCAACGTGCA
-CAATGTGCATTTCGATCACATAAACGTCGAAATCTATCTGGAATTGCTGA
-AAAAGTCGCCATTTTTCGCTCAGAACATTGTACGCCACTTGTTACGGCAG
-AATGGAAAAGAAGCAGAAGAAGAGACGTGGCACTTGCATGCCACTGTGCT
-GAAAATTGTGATGAAAGATGAAAAGTTGCTGGCGGTAAGGAATTTTTTTG
-GAAAAACTTGAAAAAAAAGAATTTCATCGTATTTTTAAATAATTTTTTGA
-ATGAAAAATTCGGTACTTTTCCTTTTCTACCCCGCATTAAAAAAATATTC
-AAACTATTGACTTATTCGAATTTAATTCTCACGTGAATGTTTGTATTAAT
-ACTATTTTCATTTTTAGGCTTAGAAAACAACAGTACTAAGCCTTGAAATA
-CAGAAAAAGAAAAAGAGTTCACGTTTTTATCAATGAAAATATTCCTGAAA
-AAATGCGGGGTAAAAAAGGAAAAGTACCAAAAATCAAACTTTCAAAGTTA
-ACAATACGCAAGTTTTCAAGTTAATTTTAATAATGGATTGTTTAAATCCG
-GAATTAAAAAAGTGGTTCAAATTTTATTTTATTTGACTCTATTGTGGCGA
-TTTTCATGACAATTGAAACGATTTTTGAAACTTGTATTTATTGAAAAAAA
-AGTTGAAGCAGGTCGTAATTTTAATTTGAATATTTAAAAAAAACTTATAT
-GGGTGCTTCAATTTTGCAAAACATTGCAATTAAAAAAAAAATTTTCAAAA
-TGTGGTCGGCAAATCAGAGTGTTTGAAAAAAATCCTTCTAATTGTGTTTC
-CGGAATTTTTGGGATTTTTTCTTCGAAAATAGGAATGGTTTAAATTGAGT
-TAGAAATTTTTGCAAATAAAAATCGGTTTTTTAAAATCAATTTCTTGCAA
-TCAAAAAATTGAAATTTTCAGCAAAATAATAAAGTTTTCTCTAATTTTTC
-AATTTTCAGGTATGCGTGGCCACAATTCCAAATATGGTTCGATATCTCAA
-AGTCTATCAGATTCATTTCAGTCCGAAATCCAACGCGGCGAAGTTCTTGT
-AGGTTTTGTAACTGCGAATTTCAAAATTTTGCTCGTCTAATTTGACGCCT
-GCTCTGTTTTTTTTTACGCGCAAATCTTAGAAATCGGTGACTTTTTCGTT
-TAAAAACACCATTTTTCAGTAAAATCTGAGCAATTTTCGGTTTTTGCGCG
-TCAAATATGACTAATTGAGTCAAACTTGACGCGCAAAATTTTCAAAAAAA
-AAATTCAATATTTTTCCAGACACCTCGACATGGAATCGATTTCCCACTGC
-CAATCATATTTGCGAAAACCAACAAAATCATCCAATCTGATCACGGCCGC
-CAACTTTTTGACACTTTTCGGATGTGAAAAGCGCACGTGGAAGCGCCCGA
-TTCTCAGATTTTGGAGCATTTTCAAGCAGCAACCGGCTATGTGTTGCGAG
-AAATTGCTCATTTTTGTAAGCAATGATTTTTTGATAAGAAATTTCCCAAA
-AATTTTGAATTTTTGAATTATTTTTGTTAACTTCTTATTTTTAACTCAGT
-ATTTTTGCAAACTGAAAATTTCCAATTTTTGGGCTTAAAAAATCTCCATT
-TTTCAGGCTGAAGAATGTGTCGAACTTGGCCTGAACCACCGAATCGCTTG
-TCTTTTACGCGCACTGACAACCAGTGAATTCTGCCGAAAAGCTCTATGTG
-ATGAATATCTGAAAATCGCGTTTCAGCTGACTTATCGATCGATTTTTCTG
-ATTTTAAGCAAAAATGAGTGCAGGTTGGTGGAGAAGGATATGTGGAAAAA
-CAATATTTGAAAAATAAAAAAAAAACTAATTGATTTGAATTTTCAAAAAT
-TCCAAAAAAATAAAGAATTGTATTCCAATTTTCATGAAAATGGCAACAAA
-AAACTCAAAGTTTCATTGGAAAATTTTTGAAATTACAAAAAAATTAATTT
-TTGAGTTTCAATAAAGTTTCAAAAGTTTAGTTTGAGTAGTGTTGTCAACA
-AAAATTGAATGCCTATTAGAAATAGTTGAAAAAATTGGAATTTACAAAAA
-AAAACAATTTTTAAACTAATTTCTCGAATTTCAAAAAAAAAATCTTCTAA
-TTTTTGAAATTGAACAATTTGGAAATTTTTTGAATTTTCAAGAAAAATTT
-TCAATTTTTCGAATATTCAACAGTTCCAAAAAAAAATTTGTTGGATTTTT
-TTCCAATTTTAAACAAAAAATTTTCAAATTTCCACAGATTTTTTTTTAAT
-TTTTTAAATTTCAGAAAAAAATTAATTTTCATAAAAAATTGAAAATTTCC
-ATTCTTCAAAAATAAGTTTTCACATTTTTCAGACCAGAAATTGTGGAGCT
-CTGCGATGACATGAATCTTCGGTACGATCTTCTCCAGCACCAGATCAAAC
-ATGTCGCGGCTCACCATTTGGAGCACTTTGAGCGTTTCGAAACGAAAATC
-GCATTTTCTGTTGAGAAATTTCTGAAATCTGGAATTGATGGAATCGATTT
-TGAAGATTTAGGATTAGTCGAGTTTTATAAGCAGTTGAACGAAAATTTGA
-CAGAAGACGCGATCAGGAGCAATGAGGCGAGAAGTAAGGCCGTGGAATAT
-AAATTGGTGGCCGAGTTTTTTGTAAACTATGCCACCAAACTTGGTTTCTC
-CGTTCGTGGCCACAAAAATTTTGAATTTTTTGAGCTTCTCTTATAATGTT
-TAAAAGTGATTTCCTGGCAAAAATTCATTTCTTTAATTAGAAAATTCCAA
-AAAATTTGAAAAAAAAATGTAAACTCAATAAAAAGTCTAATTGTTTCAGA
-TTTATTCTGGTTTTTATTGAATTTTCAGATTTTTTCTTCAATTTTCAGTT
-TTTTTCGACTTTTCTAATTAAAAAAAACCAATTTTTGCCAGAACAAAAAC
-CATTAAAAATCGACAGTAGTCATCCCATTGGAGTACAAAAATTTTAATGT
-CCAAATTTTCATGACGAACGAAGAAACCTAGTTTGGTGGCCTAGTTTCCG
-AAAAAACTCTGTCACCAATTTCTTTCAAAATTCAACAAAATTTTAGTAAA
-TTCCAAAAAAACGAACATATTCGGCGAAAATTATTTCAAAAGCTTCCGAA
-CAAAATCTAAAAACGTTCAGAAAGTTCTGGGTAATTTTTTAAATATTAAA
-AAAATTCAACAAAAAAAGGGGGGCAGATAGCTCAGTCGGTAGTGGTGGCC
-GCTAGCAGTCTGGAGGTCACGAGTTCAAGTCCGGCCTCACCCCCTAGGTT
-CACCCAGCCTCTATTGGGAAGTGGAGCAATCCACGACTGGATTATCGGCC
-ACAGTCCCCGGCTAGGACGTGGCTTAAATTACAGCCCAGAGGGATCACCA
-CCAGGCAGTGTACCTGAATCCCAGATCCGCAGTGCATAGCACTTGAAGAA
-CGGATCGTCCTTTAATTCTTTCAAAACTAATTTTTTACTAAAAAAAATTT
-CCAGACATCTACATCGTCGACATTCTCTCAACAATTTGGCTCCAGCTCCC
-CTCAATTCGTCCTCAAATTCTACCGATTCTCGCCCGCTTCAAGCACATTT
-CCCCAGCGTGGACTAATTTCCCACAGCCGCCTCATATTTCGACAAACGAG
-AAATCATTTCTTCAACATCTACGATTTCATCTTTATCTAAAAATGATGAA
-TATCTCGAAATCCATGACGCAAGGCGAGTATGCCACGTGTATTATGATGC
-TCCTGACGAGCTACGACTCGAGCCATTTCGTTGCGGATTTGATAGAGAAA
-AAGCAGCTGGGAAAGCTGAAATTGCAGCAGAGAAGGAATGTTTTGTGCAT
-TTTGAGCCGACTTTTGAAAGATCAAGCTGTGATGGGTGATGAAGATGAGA
-CGATTATCGATCCGATTCTTTTTAAGGCAATCACCAAAGCTTCCGCCGTT
-TTTGTACGTTTTTATACGACGGAAATCACTGAATTTCATGTTTCTATGCC
-GAAAAATTATGAGCAATTAAATATACATCACAAGAAAGAAAATAGTTGCC
-GGTTTTTGAATTTTTCTGTCATATCGGCAATTTTGGCAACTGCCACTTTT
-TGAAGTTTTTAAAAATTTGGTAAATTTGGCAATTGCCAAAATTATCTCTG
-TTTCGATTTTTTTCATCAGAATCATAATATTTTAAATTTCGCGCTAATTT
-TTTTAGCAAATGATCTTCGAAAATTTAATGTCTCGCAGTTAAAAATACAT
-CTTTGCAGGAAGACACCGCCGCGTGCATCGTACCATTTTTGTTCAAAATT
-TGTGTGGATTTCAAGGGAAAATACGATAAATGTGTGATAAATTTGCTGGG
-ATGTCTTAAGGGAGTTAATGCAGGTATGATTTTTCGTCAGAAATGACTGG
-AACGAGTTTTTCGCATCAATTCAAATTTAATGTAATGGCATTTGGCATAT
-GACATCGAATGTCGAATGCTGGGAATGCCGAATAATATATTTTGGTCGAG
-TAGGAGAATAAACTAGACAAAGTTCAAATATATTCCCAACAGGGATGGCT
-TCACCCGTGACCCGTTTCACCCGTTCACCCATTTTTACAAGGGAAGGTTC
-TGAACTCGTTATCGGACTTCGTTACGCCACTATATACATTCGATAGAGAA
-TGGTTACAGATGATCACTCCAAAAAATTTAGCTGCTTCAGAGCAGGTTCG
-ACCAAGTTACGACACTTTGAAGATGCCGAAAAAAAAAATCATTGATGCAC
-CCCCTTTGAAAAAAATTGAAAATTTTCACTGAAAATTTTTTTTTTCTGAA
-AGTTGATAAAAATAGTTGTAATCGATTTAAATAGTAAAAAACATATATTA
-TACAAGTTTTAGCCCATCACTCTCAAAAAAACCCTTAAATTAATGTACAT
-ATCTTGAGAAAAATTCCAAAAAGTAGATGTTCATGTAGATCAATTTAAGG
-GAGAATTATGAACTGAAACTTGTATGGTATGATTTTTCCATCATTTGCAA
-CTATTTGAAAACATTTTATATCAACTTTTAGAAAAAAAATTTTTTTTTGA
-ATTTTTTGGAATTTTTAAAAAGGGGTATTTTGGCACTTTCAAAATGTCGT
-AACTTGGTCGAACCTGCTCTGAAGCAGCTAAATTTTTTGGAGTGATCATC
-TGTAACTAATCTCTAACGAATGTATATAGTGGCGTAACGAAGTCCGATAA
-CGAGTTCAGGGCCTTCCCTTGTTAGGCGTTTTTACGGGTGACGGGTGACC
-CGCTCGCCCGTTTTTTTTTTCGTTTTAGTTGTTTTCACGGGTGACGGGTG
-GCTCGCTCACCTGTTTTTCACCCGTTTTTGGAAGTTTTCACGGGTTATGG
-GTGATCCTTGGTTCCCAAGAGGCAGCCAGTTTAGGTCAATAGGTCGTAAA
-TATCGTTTTGGGCCACGTTTACAACTGGGCTGTGTGCAACTAGAGGTGCA
-CTTGGGTCGAAAAGGGTCGACCCGCTCCAACTTTAGGTAGCATTTGTAGC
-GACCCCGATAAATAAAATGTCGACCCCGAATGAAAATTTTAGCAAGGAGG
-CCATGCTCGTTTAATTTCCATTTTCAAAATTATGATCGGACTATTGGTTG
-AGCTACTGTGAAATAAGCGGGTCGACCCTGCTCGACCCATGAGCACCCCT
-AGTGGCAACCATGATTTTCGGCAACTGGCAATTGCCAGAGTTGCCGAACC
-CAATAAGTTTCGGCAACCGGCAATTGCCGAAGTTGCCGAACTCTAAAAAG
-TGCAACCGGCAACTTTTGCGCAGCCCTGGTTTACAACTACCTAACGACTT
-TTGGTAGACTAGAAATAACACATGTATTCGAATTCGACATATGCCGAATG
-CCGAAAAAAGTATTGAACGACATTAGGCACAGGGATGGGCGGATACCTTT
-TCGGATAACTTCACTAAATCAATTTATCAATAAGTATTGATTTAGTTATT
-CTGGAGATACTATACTAGAATAAAGAGTACCTATTGAGCAACATTTTCAT
-ATGACAAAAACTTTTAAAATTGTACGCATTTTCCTCGACAAGACCCTGAA
-ACTCGTTATCCGATCAAAATCGGCTAACAGATAACGGACTTGCATACTTT
-TTATACGGGAAACGTGTAGAATTTTAAAAAGTTTTGTGCCATGAAAATGT
-TGCTCACCAGTTTCAATTTTGTTCTGATGCACTTTTTCCAGAATTACTAC
-ATCAGCACGTATTGATAACTTGATTTAATGAAGTTACCCGAAAAAGTATC
-CACACCCCATAATCAGCATATTTCATATGTCAAATATCAAATTTCCTGAA
-TTCCGCACACCTCTGCTCTCCATACTCCAACTAATTTTAATTGCAGAAGA
-CGAAATAGTAGTCCGCTGCCTTGCCGAATGCGTCGACTCCATTGGACTCA
-ACGTGATTGCTCGTTACGAACGCCTGAACATTGAGACTCATTCGGAATTC
-GGTGTGAAATGGTTCTTCAAATTATCCCGTCTCTTTCTGAAACATGGATT
-TACTACGCATTCCTTCGCGATTGCGAATATATTATTTGACCGACTTTCGG
-CGAGAAAACGAAATACAATGATGATAGATCGTACGAGTTTAGACCGAATT
-GACAGATCACAGGAACTTATCAATCTTTTGGTGGAGATCTATGTGGCCGA
-GGGTAACTCGGTAGCGTTGTCCTCTCTGCCACCTGCGGTACAAAATAGAC
-CGGATGTTCGGCAGGTTATGAATAAGAGTTCAAAGGAATGGTTGAAATTG
-CTGTCTTCGAATCAAATGGACTCGTGGGAGTTGACTATTGTGCAGTGGAT
-GTGGTAATTGTTTATTTTGAAATTTTTCATTAGAATAGAAAGCAGTTTTC
-TGGAAATTTTCAGGAAAACGCATTAATTTTTTACCTATTCTGCATTTCTA
-GGTTCTTCAATTTTTTGAGAAAATATATATTCCTTCGAAAAAATCACTAA
-CTTCTTTTCGGAAATTTAAAAAAGTTACAGTCGACGACTTTAAAAAATTC
-AGTTAATAAAATTAGATTTCAAAAACAAATCGAATTTTTTAATTTGTACC
-GAAATCTGGAAAATATTTTTAAATGACTCCAAATTTTTCCCTGATTCCAA
-ATATCTATGAGATAAAATTCAAAAAATAATCCCTTTTTGATCTTGAAATC
-GCCGAATTTCATTTGTGCACTCATGAGATTTCGAAGTTTCGCGCCAGAGA
-CCCCATGTGTTGATTTACGAGATTTGTGTATATTTACGAACCCCTTAACC
-TTTATCGGTTGCTGATTTCCGTTTTTCAACGAGTTTTCTTCAGTTTCGTC
-GGTTTTTGTTAAAGTTTTTGTTTAAAACATTTTCAAAAAAACTTTGACAA
-AAATGAAGGGAACTCGTTGAAAAACGGCAATCAGCATCCGATAAAGGTTA
-AGGGGTTCGTAAATATACACAAATCTCGTAAATCGACACATGGAGTCTCT
-GGCGCCAAAATTCGAAATCTCATGAGTGCACAAATGAAATTCGCGATTTT
-AAGCTGAAATAAAGAACCAGGGAAAAACATTTTTTCACATAGATGTTCGG
-AATCAGGGTCAAATTTAGAGTGAAAAACTTTTAAATTTTTAAATTTTTTC
-AGTGGCATCCAATTCAATGCAATCACCGGCGATAAATACCTGAATTCAAT
-TCTTCGTTGCAATTTCAACGAGTACACCAAAAAAATCGATTCCCCATTAA
-AATTCGTCTATTTTCAACTATTCCATCTTTCGACGAGCACTCTGGAAATC
-GAAGAAGCCATTTCTAGCATGCCGTTGGCTCCAACAATCGATCAAATGCG
-GCTTATGATTATAGCCAACGCGACGGCAAGCTTCGAGCCACAATCCGTTG
-AAGAGCACGTTGTTCGAGCTGTTCGAGAGCTCCGAGAGACGTCAAATCGG
-CGAAAATCCGGTGGAAATGTGAAGGGAATTAATGAAAAAACAACGAGAAT
-GGTGAAACTGGCCGAGATGCTCACCGAGAATAAAGCATACGATGTACGGA
-GCAAAAAATAATGGAAAATTTGAATTTATTCAATTGTCAAAAAAAAGGAA
-ATTTCCTTAATTTTTCGGTTTTTTTTTTCGGAAAAATCTGAATTTTTTCT
-ATTTTGAGCAAAAAATTTAATTGAAAATCCGGAGAAAATCGTATACTTTT
-TCTGCGAACCATTTTGTGGGCGGAGCCTAACTAGTAACACTTTTCAATTT
-CCAAACAGAAAAGTGAGAAAAAATTCCTCTTTTTCTCAAAAATCTAAAAG
-AAAAAAAAATCGGAAATTTTTGAATTTTTCGGTTTTTTCTGAATTTTTCA
-ATTTTCATTCAAAGAAGGTCGAAAACTTTTCGATTTTCCGGTTTCCTTTT
-TGAAAAAAAATATTTTAAAAATGTGTAGTTTGTAGTTTGTAGTTTTTGTA
-GTTAATGTCTTCCACATTTTTAGGCGGCAATAAACCTGCTCGACACGTGG
-GAGCACGAGTGTCTCCAATGGACATCTGTCGCTGCCGAATCAATCGATAT
-CGATTTAATTCGAATCTGCAAACAACACGTGACGTGTCGGTCGGGAGATC
-CAAGAATGGCGGACATAAATCTACGAACAATGCATCCACGTGTCCCGGTG
-ATGAGTGACCTGGCGATTGCCGAATGGTCACTCGCGTTGAGCAAGATTAC
-AATTGAATATCGGAATGATATGGAAGAGGGTATTCGGATTTTGGAATTTG
-GATGCAAACATTTACAGAATAAGGATTCTGTAGAGACGAGGTTAAAGGTA
-CATGCGGTCGGGTCTTGCAGCGAAATAATGCATTTTTAAAAATTCGAGAA
-AAAAATTGTGAATTTTGCGCGTAAAACGTGATTCAATCTCGAATTGTTCT
-ATAGATTTTTCCGACAATTCGGAAAAATGCCGGAATTGAAAATTTCCGGC
-AAATCAGCAATTTGCCGTAATTCAAAATTTCCGGTAAATCGGCACATAGC
-CAAAAATTAAAAATTTCGGCAAGTCGGCAAATTGCCGGAATTCAAAATTT
-CCGGCAAATCGCCAAATTGTCGAAATTCAAAATTTCCCGAAAATCGGCTA
-ATTGCCGGAAGTGAAAGTTTTATTGATAGAGATAAATTTAGAACTATCAC
-TAGAATTTAAATGTAAAACAACTAGGAGTTATCATGTAAAACTTGTCATT
-TGAATTTAACACTAGGAGTCCAATAGATTTTCAGATTTTAAAAAATTAAT
-ATAAATTCAGGAAATTTTTTTTGAATTTATCCACATTAATATTCGGTATC
-AGGAGCATAAATAGGATCTATTGAGATATTTTAACAAATTTCCGAACAAA
-GTTTCAAATATTTTTTTCCAATTGATAGAATGTTCCATGAAACATTACAA
-AAAAATTATTCATCAGGTTCTCCTAAAACTCCATTCCGTCTGTATTGGCC
-AACTGTCGAAACTCGAAGAATATCGCGAAACGCGTACCTACCGTATGAAG
-CAGCAGGCGGTCACCGCATTCGAACAACAAATTCAAAATTCGTGTCGAAC
-CAGTCTGGCACGTGGCAATTCGGGTGACGAATGGACGAAAAAAACGGTGC
-AACGGGTGAGAAAAGAGCATCAGTTTGAGAAGAATGATTTGGAAAAAGTG
-GATAATTCGTTGAATTCGGCGGCCCGGAAAGCTGTATCGTCGGGTTTTGA
-TGCACTTTGTGAGCAATTTTTGAAGTTTTTATTGAAAATTCAAAACTTGC
-ACAAAAGGATTTTAAATTCGATTTTTCGCGATGTTTTAGCAATAAAATTT
-TGAAAAATGACAAATTTTTGAAATAATTTCAGAAAGAGTGTAAAGTTTCA
-GAAAAAAAAATTAAAATTAAAATTTATTTTAAAACTTAAAAAAACCGACT
-TTTAGCGAATTTTTTTACGAAAAACAAAGTATTTAATTTCATAAATTAAT
-TCAAAAAAAATATCTAAAATTTTTGTGAAAAACTGTTTTATACAGTTTCA
-GAAAAATTTAAGAAAAAATTTTTTTTCAGAAAAAACCGGATTTTCTGTTA
-ATTTGAAATTATGGAAAAAAAAACCCCAAAGGGTATTACGGAACTACAAA
-ATTCTGAGAATGCGTACCGCGCAAAATTTCTCGTGGCGAAAACTACAGTA
-ATTCTTTAAATGACTACTGTAGTGTTGGTGTCGATTTACGGGCTCGATTT
-TAAAATTGAGCAAAAAATTATCACATAATACGAAGAAACGAAGGAAAATG
-AAACTAAGTTATAAAAAAATTCGAAAATCGAGATCCCGTAAATCGACACG
-AGCGCTACAGTAGTCAAAAATTAAATTAAAATTAAAGGATTACTGTAGTT
-TTCGCTACGAAATATTTTGCGCGTCAAATGTGTTGCGCAATACGCAGAGA
-TCTCAAAATTCTATGCTCCCGTAATAGATTTAGAAAAATTTTCCGAAAAT
-TTACGTCTCGAAAAAGAAAAAAAAACTGGTGTAAAAAATTACACCAGTTT
-TAATATTTACTGAAAAAAATTGGTAAAATCTAAAAATTAATCAGCTGAAA
-TTGATATGTTTTGGGATAAAAAATTTTGGCGGGAAACTCAAGTTAAAAAA
-AAAAATTTCAGTATGCATCAGCCAACTGGAAGACGACGACGAAGCGATCC
-GCGCTTCATCTCTCATAATATTTCCATTAATCGATGTGATCTACAAATAC
-GAAACGGACGTCGGAGTGATCGCCTTGCTCAAAGAGCACACCAAATCGAA
-GCTCCCGTCGAAGCTGTGGATAAGTGCCACCTCACACATTGCCTCTAAGT
-GCTTCTCCATCGAAAAATCGCAAATCACGAGACACTTATCACAGATTCTG
-TGTCATCTCATCTATGACTACCCGTATCACGTTTTGCACACAATTTTGAT
-GTATGATGACGAGAAGAACGCTTCCAAGGTGAAAGGCTTCTTGAAAACGA
-TATTTGACGCGCGAGCTGACCAACGGGATTCGTCGAAGCTTAAGGAGATT
-GTGATTACTATTCGTGAGGCTCACCAGGCTTATAGGTACATACGGCGGCT
-AAATTTTTTTTGAAATTTCGAAAAAGACGAGAAATTCGATTTCTTATCAA
-GTTTACAAAAATCTTCGCTTTTTTCTGACAATTTTAGTGTCGTGGTATCC
-AATCAACGAAAAAAATTAGGTTCTTCTGGTTATTTTTGAGCATATTCAAT
-AATTTAAGCAAATACTCTTTTACTTCTAAACTTTCATCGGCGATACGTGA
-ACAATTTCCAAAATTATATATTATCTAACGCTACAGCATATAATTTTTAC
-CAATTTTCATTCATTTTGATGGAAAAAAGCATCTAGAACATGTAATATGT
-TCAATTGTTCGATTTCAATAAAAACCGACGGCATCCTTGGTTTGAATCGA
-AAGTTTAGAACAGTTTTTTTCAGAGAAATTGCAATGCTTGACGTGAGAGG
-AAACGTTCGGATACAACGTGTTGAAATAAACGGAAAAACGATGTACCGAT
-GGCCACATGATTTGAAGATTTTCAAGTGCAAATTGCGTCAATTGCCGATT
-CCCACCATTTCGCAAAAGGTTTGTTTTTATTTTATTAAAATAATTTAATG
-AATATGTATTTGATCATACAAAAAAAAAATGTTTTCTTCTAAATTCCAGA
-TTGGTTGCCCGGGTGACTACTCGACGACTGACCTAATCACGTGGAAACGA
-TGGAAAGATGTATTCACAATTGCCGACGGAATTTCCACTCCAAAAATCTG
-GGAAATTGAGGGTAGCGATGGAAAATGGTATAAAACTGTGTGGAAGAAGG
-ACGACGTACGACAGGATGTGCTTGTTGAGCAAATGTTTGATGTTACGAAT
-AATATGTTGGAGAAGGCGATGCTTCGGACGTATAATGTTGTCCCGTTAGA
-CACTGAATGTGGAGTTATAGAGTTTTGTGGTGGAACTGTTAGCTTAAGTT
-CGTTTTTTTTTCGTTTTTGAAAAAAACCAAAATAGTATTACGATAACACA
-ATATGCTGAGAATGCGTATTGTACAACATATTTGACGAGCAAAATATCTC
-ATAGCGAAAACTACAGTAATTTTTTAAATTACTACCGTAGCGCTTGTGTC
-GATTTACGGGCTCGATTGTCGAATATTACGGGGCCATGAGATCATGAGTA
-TGCCTATTTACTGGCGCGAAAATATTGGCAGGCCGCGGCAGCGAGAGAGC
-GTGTGGCGAAGAGAGACGCAGGTCCCTTCGCTACGAGATATTTCCCGCCA
-GAAAAGTAGCATTCTCATGATCTCATGGTCCCGTAATAGTGACAGCGATA
-TTCCATTTATTTCACTTCAAAAATCGAGATGCCGTAAATCAACACAAGCG
-CTACTGTCATTTAAAGAATTACTTTAGTTTTCGCTACGAGATATTTTTCC
-CGTCAAATATGTTGTGCAATACGCATTCTCAGAAGAAAAAAGAGGGGGGC
-AGATAGCTCAGTCGGTAGTGGTGGCCGCTAGCAGTCTGGAGGTCACGAGT
-TCAAGTCCGGCCTCACCCCCTAGGTTCACCCAGCCTCTATTGGGAAGTGG
-AGCAATCCACGACTGGATTATCGGCCACAGTCCCCGGCTAGGACGTGGCT
-TAAATTACAGCCCAGAGGGATCACCACCAGGCAGTGTACCTGAATCCCAG
-ATCCGCAGTGCATAGCACTTGAAGAACGGATCGTCCTTTAATCCTTTAAT
-CCTTTAAAAATGTAAAAAAATTTCATTGCAAAAATATCAAACTATGAGAT
-TTTTTCTATTATTTTTCAGAAGAAGTTATGTGTGGTGTGACACGAGAAGG
-CGGTCTCCACCGGGAGTTCAATTCAGAAGAAGTTTCGGCGAGTAAAGTGT
-CGTCAATGATGAGACAAGTACAGACAGAGTCCACAGAGACACGACGACAA
-GTTTTTGTGGAGATTTGTCAGCAGTATTCTCCAGTTTTTAGGTAATTTTT
-CTGAAAGTTGTCGAAGTTTTTTTTTTTGAAATTCAAAAAAATTCCCAAAC
-AATTGGCCTTTTTTCAAATTTTTCCAAAAAATAAAATTACAGACACTTCT
-TCTACACCAACTTTTCGACGGCGCAGATTTGGCGGCAAAAAATCATAAAT
-TACAGGCAGAGCTTGGCCACGTGGAGTATTGGTAGGTTTCGAACTAAAAA
-TGCTAAAAAATTTTCGAAGAATTCGAACATCTCAGATTTTTTCCGAAAAA
-TAATAAAAACGTTATTTTCCAATTTTCTGAAAATAAGAATTTATTAGTTT
-CTTGCGAAATGAAGAGTCTCAAAAAATCATATTTTTTTTAAAAATCAGAT
-TTTTAAATTCTTTTTTTAAAAGTTTTATCGTGAAATTGAACGTTTATGAA
-AAATGGCGAGAAAAACTTTTTTTTCGCTTTTTCAAATAATTCTCAAAATA
-AAAATTCCAGTGTGCTACATCGTTGGCCTCGGCGATCGACACGCGTCGAA
-TATTCTATTCGATCAGAAATTGTGCACATTTGTGCATATCGATTTGGGAA
-TGATTTTGGAGTATAGTAAACGAACGTTGCCAGTTCCCGAACAAGTTCCA
-TTCCGTATAACTCGAGATGTGCTCGACCCGATTCTGATTGAAGGAATCGA
-GAATGGACAGTTGGCTGAGGAATGTACGCAGATTATGGAGAAATTGAAGG
-AAAATGGAAAGGTACGGCGGTCTGGGGAAATTTATACGAAAAGAAAATTT
-TGGACTGACAAAATTTTGGACTTGTAAAGCTATTTAAAAAATTCAAATTT
-CCCGCCAAAAATATTTTTTCAAAGAATTTGAATTTTAGCTAAATTTTTAA
-ACAAAATCTGAAGTTACCGCCAAAAGTTTTCCAAAAAAAATCGAATTTCC
-CGCCTAAAATGTTTTTCAATAAATTCAAATTCCCGCCAATTTTTTTTACA
-CAAAATTTGAATTTCGCGTCAAAAATTTTCCAAAAAATATTCAAAATTCC
-CTGAATAGTTCAATTTCCCACCAAATATCAATTTTTCTGAATAAAATTTT
-AGAATTTCTCGCCAAATTTCTTTTTCAATTTTTTCAATTTCCAAAATTTC
-CAGGTAATCCTCGGTGTCGCCTCTGCTCTACTCCGCGAAACGATGACAAA
-TTTCCGAGAAGCCGAACAGGCTGCCGGCCGCCCGTCCTACATTTCTGAAA
-TGGCCATCGGACGGCTTCGAGAAAAGCTACGGGGCACCGATGACGGTGTG
-ACGGCCCAATCGTCGAATCTTCAAATTCGGCGACTTTTACGAGAAGCTAC
-GAGTGCTGACAATTTATCGCGAATGTTCTGCGGATGGATGCCGTTTTTGT
-AGAGAAATCAGAGAAAATTTTTCTCGAAAATTAAAATTTTTACTGTATTA
-TTGTTTTCTCGTATCAATTTTTCAGAATTTGCTTTGTTATTTTATTTTAC
-GCGCAAAATAATCTTTCTAATTTAGAAATTTTAAAATTATGGAAACTTTC
-TGAAATTTCTGCAAAATTCTAGAAAATCAAAAAATTTAGTTTTCCATCCT
-AATTTTTTTTTTCGTTGATTTTCCCCAGAAAATTCAAACTTTTACTGTAT
-TATTATTTTTTCATATCATGTAATGTTTTTTGTTCAACATTTACATGTTT
-TTCCTACCTCTTCTATGATTTCCCCTTCCCCCAGGTCTCATTTTTCTTCA
-CAATTTTTAAAATTGATTCACTGTTGAATGTGTTGTCTTTTTTCTATGCG
-AATTTTATTAATTTTATGAAAAAAATTTGTAATATTTTTGTGTAAATTTT
-GAGTCTTCTTACACTACAAAGTTAACCATTTCAGAGGAGTTTCAAAATAA
-ATAGTGAATTTTTACAAAAATTAGATTTTCTGATTTCAGCGTACATGAAT
-TGCCCGTTTTCAACAAAATAAGACAACTTTTTATTTTTGCCCAATTTTTT
-TTCAGCCATCTAATGACTGTCCTTTTTTTTTGGGCAAAAATAATAAATTT
-TCTAAAAGCGTTTAAAACTATTATATTTTGAAAAAAGACCATTTTTTAGG
-GCTTGGCAATTTTAAGTTCTCTAGCTACAAATTGAACCAATTTAGAGGTT
-TCAAAATTGTGAGTTTTTGCAAAAATTGCCAAATTTTGCCACTTTTTAAT
-GGTTTTTGATGGGTTAAACCTAGATTTTCTGAATTCTGCATATATGAATT
-ACCCGTTTTTAACAAAATTAGACAACTTTTTATTTTTGCCCAATTTTTTT
-TCAATGACTGTCCTTTTTTTTTGGGCAAGAAAAATAATTTTTTGGAATTT
-TTTTCTGAAAATGTTCGAAATTTTTGAAGTTTCTCTTGAAGCACTCCGAA
-AAACCAAACGACCAGCACTACTTGCAAAGTCCGAAAATTTAAGTTTAGAA
-AAATTTTGAAGTTTTAAAAGCTCCCAAACCAGAAACTCACGATATAGAAA
-TTATTTCCAAACATTTCCGAAAATTCCAAAAAATGAAAAATCAGAACAAT
-TTCGAAATTTTTTTCAAAACACTTCTGAAAAAAACCGAAACTGCAAAAAT
-TTGAAAATGTGCTAAACTCCAAACTGTACGATTTTCCACATTTCAGAAAT
-TCCAAAATTCGTAAATCTGCCAAATCCCTTCGGCGCAATAATCCCCCGGG
-GTACCCCCCCCCCCCGCCCTAAAACCTTTTGCCTCTATTGTCTCTGGCGC
-AGAAAATTGAAATTAAAAAATGAATCGATATTTTAAACTGTTATTCGTAG
-CCATCTTCTCCGGATGTATAATCGCCTACACGAATCTATTCAATCGATCG
-TTTTTCAACGGGTACTGTAGTAATAATGCTACGTGGCAACAGTCACAAGG
-CGAAAGCGACAGTCACGTGGCAAATTCGTTGGATTTGTGTCGTGGCGATG
-GTGTGAAGCAGTGTATTCCGCCGTTGATGAGGTTCAAACAGTTGTATCGG
-GTGAGAAAGATTATCGATTTTTAACACCCGTCTCGCCAATTTTTTTCTCA
-GAAATTGGAATTCCCGTCACAAAACTTTTACAGAATGTGAATTTTCGAAG
-AAATTGGAATGACACCCAAAAATTTTCTCAGAAATCTAAATTCTCGGCAA
-AAGTTTTCTCAGAAATTTGAATTCTCGTCAAAAATTTTCTCAGAAATTTG
-AATTCCCGCCAAAATTTAAATCAGAAATTTGAGTTACCACCCTTCTCTTC
-AAGTAACAGTATTCAACAATATACAATTAAATAGCTTTTCAAATTCCTAA
-AAAGTTTGCTGGAGTTATCAATTTTTGATTCAAAACTCGCTAAACCACTT
-GCCCATGTAGAATACATAATCAATTCTGAATAGAACGCTATTTTATCCTA
-TTTTCAGACATCAAAACCGAATAGCCTAATCGCATGTGTCATTGAAAAAT
-CATTTTCGACATTTCTTACTGCTATTATGTGCTTTTTACACGATCCACAA
-ACATTTAAAGACAGCAATCGAACACTGGATTCTGATATTTTTGGAGACAG
-GTTTGCGGCAAACGAACTCCGCTGCCGACTCTCGAATTATCAATTTTGCA
-GGCTTTGTAAGGATAAAAACGAATTTACCGAGTTGAAGAAGATCGGAAGC
-TGGCAGAAAATGTCGATTTTCACTGTGGTTCGGAATCCGATCGATCGGTT
-TGTATCAGGCTTCACGGATAAATGTTTAAGAGAAAATGTCTGGAAAAAGT
-TCAAAAATCGATGCGCCGGATGTAAGACTGTGCGTTTTATTTGCTAAAAT
-CTTTTACTTAAACAATTTTTTTGGAATCTTTTATTTTCGGGAGTTTCGAA
-AGTATATTGGAGTTTTTTAGAGAAAAAAATATCAATTGAAAAAGGTTTTT
-TGAAAGGGGGTAACATTTTTCTAGGCCACTAGGCTTTGTAAGGTGGCCTA
-GAAAATAATGTAAAAATCTAGGCCATAAGGGTTTATTGCGTGATGGCCTA
-TGAAAAAGCTAGGTCGCCATAACTTTTATCAGGGTTTAGGAAAGTTAAAA
-CTTCGGGCAGCAAGTTTCGCATAATGACCTAAAACTTTCTGGAGAACTAG
-GCTATAAAAATGTTCATGATGGTTTCAAAAAGCGGAACATTCGGTGACCA
-TAATCTTCTAGAATTTTTAGGAAAACTAGGCCATTAAGGTTTCTTCCGTG
-GTCTAGAAATTCTGGAATACTAGGCTGCCAGGGTTTCTAGGCCACATAAG
-AAAGGCCTAGATACAAAAATTTCAGAACGGTCTAGAAAAGTGGATAACTA
-GGCCACCAATTTTCTCTTCGGAGTTTCAAAAATATATGATTCATGATTTA
-CTTTTTTAAGAGTTTTTTTTTTCAAAAATTCTAAACTTTTGACACTAAAA
-TGCTTCTGAATTTTTGAAAACTTTGAAAATTAAATGTTTAAAAATAATTT
-TTTGAAAATCTCTCAATTTTTTTTCTTCGAAAAGCTCAAAAAAACGATAA
-ATTTCCACATTTTGGCCAGAATTTAACATGTTTCGTCGATAAAATGTACG
-ATCGGATGCATAGATTCGCGCGGAATCCGTATAAAGGAATCGATTTCGAC
-GACAGTCACTTTTTCCCACAATCTTGGTATCGGTAAACGCGCTCTATAGA
-TAAAGTCTCAATGGAGCGCATTTGCATTTTGAAATTTGATATATTTGTCG
-TTTCAGGAGATGCGAGTTCTCGTCTCATCTTGTCAAATACCAAATTTTTC
-AATTAGACGGTGCAAATTTCACAAATCAACTTCTTGGACTGCTGTCCGAG
-CGGGGAGTTGATGAGAATGGAATTAACTTTATTAGTGAGTCTTAATCAAG
-TTTGGGTCTCACCGCGAAAACCGTAATTGATTGGGGACAATGGGACCCAA
-GAGAGCCCAATGGAGCGGAATTGCAACTCCTATGAATTTTCCAGACGGAA
-GTCTCCATCACCGGACCCCACACAGCACAATGGATTCCGTGGAACGGGCG
-GCCGTCGAGGAAACTGTTCTGAGCAGTCCGTATTTGTTGCGAAAAATAAT
-TCAAATGTATTATTTTGACTTTTTGCTATTCGGGTATAAGCTTCCTGATA
-TTCCAGTTGGAAATTAGGAAAGTTCTTTATATGTATTTAATTGTTGTTAA
-ATAGTAAAAATCGATAAATTGCTTGAATTTTGATAAATTACGGCCACGTC
-AATTTTTAGATAATTAACGGGCAAAAAAAATCTAAAATTCTTACAAATTG
-AAAAAAAAAATTTCACAAAAAATAATAACATTTAGTCTAAATGTGTTATA
-GCTTAGGCTGAGGTTTAGGCTTGGGCAGGTTATTTTTTAATTTTCAAGGT
-TTCTCATTACATACTTTATTTCCGAAATACAAAAAAGAAGTCTCACAACG
-AGTCATCAGTGCGTGTTGGTGGGTGGGGTGGGAGATTCTGGTGGCGACCT
-ACAACTCACAAACAAAGATGACAACAGGGAAAATGTACACGTGGCAATAT
-GGTGAAGCTATATGTATATATAATGAATAATGATATGTAAATTTGCATAA
-TACAGGAACAGTACGTGATTGCTGGGGCGAGTAGAAATGTGGGTTATTAT
-CTATCGATTACCATTACACATGAATTACGCTGGATTACGGTTAGAATTTT
-GTGAAAAAAAATGAGTAAAACGCTGGGGCTATAAATCTATAATTGTCGAA
-GATGCTCAACGAGCCAGGAACGAGGGGAACATTGCGTCAAACTGGGCGGT
-CAATTCCATTAATGATGGTGCAGCTTGTGCATTGATTGCTGCAGCAGTAG
-GGACTCCATGCCTCATCACCGAATCGATAATCTTCTTTCCAGATGAGAAA
-CGCTCGAGACGGGAGGCGTGTTGGAGCACACGCTGCTTCATTTTCTCGTA
-CCATCCAGAGTAGAGAAGCAGAATAGCTGGTGGAAGTTGACGTTCTCTGG
-AAAAAAACAAGATTTTCTCTAGTTGCCTTAACACTTGGATTTACAGAATT
-AGTGAATATTTAAATCAGGGTGGGCGGCAATTTTTTTTCCGGCAAATTCA
-GCAAATTGCCGATTTGCCGGAAGTTTTTAAAAGGATTTTTAAAAGACGGA
-AACACTTAAAACTGTGCCTTTTTGAAATTTTCTCCCGATTTCTTTACATA
-TTTTCATAGATTTTACTGACTTTTCAAAATAAATGTAGGAACATTTATAG
-GATGCGTACAATTTTGCCGATTAAAATTGAAACTGTGAAATTTTCAGAAA
-AAATGTGCCGAATCACAATTTGCCGAAAATTTTAGTTCCGACAATTTGCC
-GTTTGCCGGAAAAAACCGTTTTCCAAGCCACGTGGATCATTTTTTGAAGA
-AAAAAATACGGCAAATTTACAGAAACTTTAGTACCATGTGGATTTTTTAA
-GAACTATTGCCAAAGTACGTGGAATGTTCAGAAATTTTTTTGCCTTTGTG
-AAATTTTGGATTTTTCTGGATTTTCGGAAAAAAATTCAAATTTTTCTATG
-AAGACGAATTTCTGATTTTTTTAAAAATTTTTCACGAACTCAAATAATAC
-TCAGACGCGAAATTTTACGTTTTCCGATCAAAACACGGTACCCGGGGTCT
-CGAATCGACATGCAGTATTTTTCTCGCTTTGTCATAGTTTCTCGATAAAA
-ATGGATTTTTTTGAATTCAAAATCCTTAAGTTTCTACCCAGGGGAGAAAA
-AGAAGACTATAAAAATTTGAAGTTAAAGTACTCTTTAAAGGCGCCCTTTT
-TTCGAACTTAACCAAAAATTGTCGTGTCGAGGCCTGGTACCGTATTGTGG
-TGCGAAAATCATTTAAAAAATTGCGTCGATTTTTGGTTTTTTGTTATTTT
-AAAAAATGTTCAATTTTTCAAAAATAGCTTTTAGATAAAAATAATAGGTT
-TTTCCTTCTTTTTTTCCGGCTAAATAATTTTAAGAATCCATTTGCCACGT
-TTCATCACAGAAAAAAAACTAACTCTGTGCCAATCAAAGCGGCGGTGCAA
-ATCGAAATCATTTGCTGAACGACATAGTTGCCATACTGGTGGAACAGAAG
-AATATCCAACGCATCACGATTCGACTCGACATCCTTCACATATCCACTGA
-AAATCTCCTCCATCATCTCGTGAAGCAACGCGGGCGGTGCAAACAAGAAC
-GCTCCCTCGATGACGTGCGACGCATACTTGTCCTGTGACATTGAGAGCAA
-GTTACGGAGCAGGCATTTATCGATGATAGTGTCTCTGTACATTTCCATGA
-TACCCGACGATTTGATGACGTATTGGATGACGTAGTTGGCGAACTCGTTG
-GAAGACAGCCGGTAGCAATTACGGACGATACACGTCATCAGAGAATGCAA
-CAATTGAATACGGAATTTGAAACACGGGAGCTTGGGATTCTCGGCGAGTC
-TATCGATGACCTGTTGCACGAGACGACATCCATACTTGTCCTGGCACACG
-GCCATCAGTGAATCTCCTGACGAGAGGAAATGCACGAAAAAGGTCCACAT
-GTCGACTGGAAGTTGCTTGACGACACGTTGAATCACGTGGATCGAGATTT
-GATCATCCAAGAGCTCAGCACATTGCCGCCAGGTCGAATGTGCTGAGCTC
-TTGGATGAGCTGGAAGACGTTGGAATGGTCGAATTTCTGAAATTAACAAA
-TTATTGATTTATTACACCTGGAAAGGCCTAAAAAGACCAAAAATAGCCCT
-AAAAATTTCGAAGAAATGGATTAATTTTTAGCTAAAACGTAATTTTTTGC
-CAACTTTTCTGTGTCGCGATTTTTTTAAACCAAAATCGAAAAATTTCGTT
-TTTCGATATTTTGAACAAATTTCAATTTTTTCGGGAGAATATCTTAAAAC
-TTAATTATTTTCCTCTAGGAGCCATTTTGTATGTTTTTTTCATCGACAAA
-AAATTTTCGTTAATGTGTGCACCTTTAAGTAGTACTGTAACTTTAAACTT
-TCATTGCTGCGGAATTTTTTAAAATTGATTTTCAATGTTTTTCTACAGTT
-GTCGTCCAATTTCATGCAATTTAGAAAAAAACAGAAGGAAAAAGTGAAAC
-ATCGATTTTAAAAAAATTCCGGAGCAATGAAAGTTCGGAGTTACAGTACT
-CTTTGAAGGCGCACACCTTTTTTGTTTTAACAAAAATTTGTCGTGATGAG
-ACTGGGGACAGTTTTTCGGCGGAAAAATCGCAAAATTTCGGCTAATATCG
-AAGAAAAATCAATTTCCGACCGCTGCGACACTTTAGCAAAAAATTGTGAT
-TTTAGCCAAAATTCAGTTATTTTTCGGAATTCCCGTGGCGAGACGTATTT
-CTCCCACCTGCAGAGCCAACTGCACAACTCGACATGCGAATTTATCCTTG
-CACATGGCCAAAAGCCCTCCGTCGATCATTTGACGAAGCAATTCCCGCTG
-CTCGGCCGGTGTTGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCAC
-TTCGACTGTGGCAGAGCCCCACGAAGAGCGTCGTGGATTCGGTGAGCTTC
-TCGAAGACGGCTTTACGAATCTGATCTTCGGAATCCAGTGGGTAGTTGGC
-CTCCAAGAACTTTACGCCCGATGGATCGATTGCGAAATCGATGAGCTGCC
-CGTTGAACAGCACATCTTCGAGCGAAATGAAAATCGGAGCAACTGGTGGT
-GGGGTCTCATCGTCGGAAGATCCCGATCCACTGTTGAAGATGTAGCTGTC
-CGAGTCGGAGGAGGTGGTGTTGCTTCCGTGGCGGTAGGGAAGAAGCTTGA
-CCGGCGGCTTTGGATTCTGGAAATTCGAATTTTAAATTTTTATTATATTT
-TCTATTTAAATTAGAAGTTTTTATGCAATATTCTACCTTGTTCTTGTGAG
-TTTTGTTCGACAAAAGCGAGAAATCCGGGTCGAAATCGAACGACGCGCCG
-AGCATGTTGTACGAGTCTGTGCTTCTACGATTCGGGGTCATTTAGACAGA
-AATGAATGAATACAGGTTAGTAGACGCTGAAAAATTTTGGGAATTAGGAT
-TTTCAACGGAAAAAAGAGTGAAAATGAGAGGAAAACATGTAAATTTCAAC
-GAAAATCGCGAAATTACCGCGCATCAAAATTCAAAATTGAATTTTTCGCG
-GTGGCCCGGGTTACGGTGATTTTTAAAGGCGCATGGTTGTTTTGAGTAAG
-GTCTTGACGCGAAATTTAAAATTATTGAACATTTTTATTTTATTTTTACA
-TTTTTAAAGAAAAAAATGATTAAAATTCGATTTTTTAGGAGAAATTAAAC
-ATTTTCACAAAAATTGCAAGAAATCGCTCGCCAAAATTCGAAAATGAAGA
-GTTTGGCGGTGCTCATGGATTACGGTGGATTTAAAGGCACATGGCTTTTT
-TGTATTAGGTTTCACCACGAAACTTGGAGTTTTGATAGTTTGCTTCCCAT
-TTTGGGATTTATTTTTTTAATTTTCGCTCGATTTTCACACATTTTCACTC
-ATTTGCACTCAATTTTTTTGCAGAAAAATGTCAATGGATATTGTTATGAA
-GTCAGATGAGCAGCCGTTCATCTCTGCGCCTGTATGCTTTAAGTAAGCTC
-CAATTTTTGTTATTCTGGCCTAAAATTATTTTTTTGATTTCCAGAACGTT
-CGCATTTTTCGCCAAAGCATCCGCAGAGGAATGCAAACTTCTCTTCGGGC
-TCCAACGCTCGAGAAAGTTTCCAGCAGGCCACGGGGCTCTCGGAGAAGAT
-CACGGAAGACATTTACCGCCAAATTGAGTAGGTTTTTCGATTTTTTTACC
-CTTAAAAACTACTATTTTTCTATTTTCCAGCGTCTCCCACATTTCGTCGA
-TGGTCTTCAACAGAGAAATGGACGGTGGCATCGAGAGAAATCGGCTCGGC
-TCGCAAGCGATTCTGCTCGACGAGAACTCCAGGCGCCGCAATCCACAGTT
-CAAATCGATCGCGCTCCGCTCTCCGCTACGATCACATCGATCATAGAGCG
-TTGGCAAGGAAATCGCCTCATCTGATGCCTCCGACTTTTATCAAAGAGGA
-AATTATGGATGATGAGCTCGACGAGGTGAAGGAAGAAGTGGTTTCCGTTG
-GAGAAGCCGCCTTGCCCACGCCAAAAGTCGAACTGAACATGGACCATCCG
-GAAAAGGACCTGATCATCAGCATTTCCGTGTATCTCGGCTACACCCGTAC
-CCTTCAATACCACGAGATTCGCCTCGGACGTTTGATGAAGATCACGGATC
-GGCTCGAGCTCACCGGAGATCACACGCTTCGCGATCTGAAAAACGCGTTC
-TCGTGCCCCATCGATTTCTCGTTTTCCGACGATTTTAGCGAGAAAAAGCC
-GTCGTTCAAGGATATGGCGAAAAATAAGTGGCCGTCGACGATGTTCTTCA
-TTCATGACACGTTTTATATATAACTGGAAATAATTTAATATTTTTCGAAC
-AAATTTGAAAACTATAAAACCATCTTATTTTGATAAAACTCCGCCGCTGC
-TCTCTGAAGCAATGAACTGCAATCAGACATCGAAGGGATCAGCCGATCAC
-GGAACCAACCTGCCATTGAGCTTCTGAAAATTAATATATTTGATTCAATT
-TATTGTACGAAATCGTTTTTACCCATATCTGTGAGCTAGCAAGCTAGCTA
-ATCGTGATTAATTGTTGGGTATTCCTTCGCGTTCTTCAGCTTCTCCACAA
-GCAAAATTCTTGTCTGCTCATCACAAATGATGTCATCAGCATCGCTCTGA
-TCTTGAAAATCCTGAAATTATAACATTCTAGAGGGTTTCTGATGAGAATA
-GTTACCTTACAACCAACACCAAATACGTTCTTCATTATGGCATCCGGCAG
-CTTTCCATAATCGCAGAAGAAGTGCTCGGCATCACGATCGGATGCTCTAT
-TTGGGAAACGACCGATGTAGACACGAACCATGTTGAGTGGCCGAGAGAGG
-GATCATCTGAAACATTTAAATGTTAACTAAACAGGAGTTTAGAAACTTTA
-AAACAACCTAACCTCCGTGATAACGTAGTTAGCTTCTCGAGTGAGCTTCT
-TCTTCAAAATAAAACAGAATGAAACAAGAATCAAGTGGGTAAAATTGTAA
-AATGAAGTATTTCAGACATTTTCGCTAATTTTGGCAGTAAAAACCTATAA
-TTTTGGTAAAAATCGCTTGTATTCTGAAAAAAGAACTCAATATTTAATTT
-TTTATAACTGATTTTAAAGAGAAACAAACGAAATATATGAAAAAATCGAA
-AAAATCCCTGAAAAAGGCCTCCGCAATATTGATTGTTAAAGGGACACCGA
-CTGTTCATCGAATGGGTCCCGCCGCGATTGTCCATTTCGAGCGCTTTTCG
-CGATTTTTTACTACTGTAAAAAAGTGTAGGAAAATGTCGAAAAATGTCGA
-AAAATGACGTCACAAATGTATTTAAATACATGTTTTTATTGTTACTTGAA
-TAAGGCAAAATATGTATTTAAATACACTTTAATTTTCCGACATTACTTGA
-ATAACCCCATAAAAAACCCCGAAAAAATTTTTTTTTTGTGAAAATAACCA
-GAAAAATACATGTTAAAACAATTTTGTGAACAAAAAACTAAAAAATATTT
-TTTTTGCAGAGATGAATCCCACGTGAACGTCGAATTTCCACGCCGCCTCG
-TCGAACGGAATTTCAGAAGAATCGCATGTGACACGTGCAAGGAGGCGTCG
-GCTCAGTGAGTACAGAAAAATCCATGGGGATTTTTTAGAAATTCGGAATT
-GATTCGATTCAATAAAATCGATTTTTATATTAAAAAAAAGGATTTTATTG
-GTTTTTAAAAAATTTAAGAAAAAATTACAAAAAATCTATAAAATCGATTT
-TTTATTTAAAAAATTGAAACTCAATAAAAGTTCTTTCTAATTTTAGAAAA
-ATCGATTAAAAAATAATGTTTTAAAAATCAGTAAGAATCGATTAAAAATT
-CAATTTCATCGATTTTATTTATTTTAAAAAAACTTAATTTTTATGAAAAT
-CGATCATATCGGAGTCCAAAAAATAATTGGGAAAAAACTAAATTTTCAAG
-AAAATAATCGAAAAATTTTAATTTTGTTCAAATAATTGATAAAAACTCAT
-TTTTTAGGTTTTTTTTCAAAAAAAATTTGAACAAAAAACACATATTTCTC
-GAGCTTTTTTTCACAAATTGACCCGATTTAAATTAAAAATTCATAAGCTA
-AAAACCTTCTTTTTTTAACCAAAAAAAAAACGAAATTCCCAAAAATCATC
-AATTAAATCCAATTTTTTCAGCTGGATGATCGTCGACCACGACAATCTGC
-TTCCCAACTCGCCAGGCTATCTGTGCTCTTCGTGCTACAAGGAATTCTGT
-TTCGACGTGAACGGCAACAAAGTGTGCCAGTTTAAGGCCGTACCGTATTG
-CGATCGAAAGGACATTGGCGACGGACGCCAATTCTTCACCGAGCTCGATC
-TTTAGAGAGCGAAATTTAAAATTCTGTATCATTTTTTGTTGTTTTTTTTT
-ATGTTTTTCGATTTGATTGTTTAATTATCAATTTTTGGCCTGTAACTGTG
-TATTTGTTGAAATTCCAAATTTCGTTTTTTTTTTAAATAAAATTTCTGTG
-TGCAAAAAAATTTATCCAATAAATAAACGGAATATATCGATGATATGGCA
-AGTAGGGGGAAACGGACGGGAAAATGATTATTTACAGAAAGGGCGCGCAC
-CAGAGGTTTCTCGGGGGAGCCCCGAGGCGGGTGGCGGAGCTTGGCTCAAA
-ATCTGTCGGAAAAATGGGTGAAATGAGAGAAGAGGTAACCTAGAAAATGA
-GATGAGAAATTCGGAAGTTTTGGGAAAAAAAAATCAACTTTTGAACAATT
-CAATTGAAAAATCGATAATATTGATTTTTTTAAAATTCTCTAAGATCGAT
-AAATCTGGTTTGGAAAAATCAATAAAATCGAATCTTAAATATCTTTTTAA
-AAAACTATTTTCAAAAATCAATAATATCGATTTTTGAACAATTTGAAAAA
-TCGATAATGTTGATTTTTAAAATTAAATTTTATTGATTTTTTGAAAATCG
-ATTATATTGTTGATTATTGATTTAAAAATCACCAGAATCGATAAATCTGA
-TTTGGAAAAACCAATAAAATTGATTTTTACAAAAATCAGCCAATAAAATA
-GATTTTTTATAATCAAAAAAATCTATTTTTAAAACCGAAAAAATCGATAT
-TTCAAAAATTGAAAAAAATCGATAAATCAATAAATCAATACATAGGTGAG
-CTCGTCTCGTCGATTTGTGTTTTTGTGATTGGTCCCGGCTGCTTTTGAGA
-TGGCCTAGGCGTTGTTCCGTATGACATTCTGGAATTTTTTTTTGTTGGGA
-ATTTGGCACGCCCACAAAATGGACGGTGGCGGAAATTTAATTATTTTAAA
-TACCTTTCTGGATAAAAAAAATCGATTTTTCCACTTTTTCGAGTGAATCG
-AAAATTAAAAAAAACATTCAAAATTGTTTAGGGTCTCGCCACGAAAAACT
-CACAAATGCACGTTATGCGGAGTGTCGTCGGATTCCGGTGTGTTGCTACG
-GATCGTGTCGTCCATGCTCAGCTTCATCGTCGATTGACGTCGCCGTTTTG
-TGGTGATCTGAGCGAGATTTATTGATTTTTAAAGGCGCATGGCCTAGAAA
-ACACAACACTTCGGCCACGGACTTTGGCGGCCGAGTTTTCTAGGCCATGC
-TGCGGCATTTAAAGGCACATACCATGATAATGAAGATCGCCAATCCGAAA
-ATGATGACCAATGCGAAAGTGATAATTACAATCATCGATGATAAGGAATA
-TGATGAAGTTTGCGTGGAAATCGAATCGATGTACGCTTGTGACGTCATTC
-CTGGAAATTATTGATTTTTTTTTGGAAAAAAATTAATAATTACTTACCGT
-CAACAGTAACACTCAACGAGTCAATTTTGTAATCCGAAATCATAGAGTTA
-TTGCGTGAAAATGCGGCTTCCAACCTGAATGTTAAAAAAAAATCTATAAT
-ATCGATTTTTTGAAAGTTTTTCGAAAAATTGATAAAATTGACGATTGATT
-GTTTGCCCATAGAAACAGATAAAAATCGATATAACTTAATATCGATTTTT
-TTTTGTGCACCTTTAAAGAGTACTGTAACTTCAAACTTTCATTGCTGCGG
-AATTTTTTTATCGGTTTTTACAATTTTTTGTACAGTTTCCGTCCAATTTT
-ACAGAATTGAACAACAACAGAAGGAAAAGTGAAAAATCGTAAAAAATGTC
-CGCAGCAATGAAAGTTTGAAGTTACAGTACTCTTTAAAGGCGCACACCTT
-TTTTGTTTTAACAAAAATTTGTCGTGGTAAGACTGGGGACCGTTTTTTCG
-GCGGAGAAGTCGCAAAATTTCGGCTAATATCGAAGAAAAATCAATTTCCA
-ACAGCAGCGACACATAAAAATTAGCAAAAAATTGTGATTTTAGCCAAAAT
-TCAGTTATTTTTCGGAATTCCCGTGGCGAGACCCATTTCTCCCACCTGTA
-GAGCCAACTGCACAACTCGACATGCGAGTTTATCCTTGCAGATGGCCAAA
-AGCCCTCCGTCGATCATTTGACGAAGCAATTCCCGCTGCTCGGCCGGTGT
-TGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCATTTCGACTGTGGC
-AGAGCCCACGAAGAGCGTCGTGGATTCGGTGAGCTTCTCGAAGACGGCTT
-TACGAATCTGATCTTCGGAATCCAGTGGGTAGTTGGCCTCCAAGAACTTT
-ACGCCCGATGGATCGATTGCGAAATCGATGAGCTGCCCGTTGAGCAGCAC
-ATCTTGGAGCGAGATGGTGATCGGAGCCACTGGTGGTGCAGTCTCATCGT
-CGGAAGATCCAGATCCGAAGGTGTAGCTGTCAGAGTCGGAGGAGGTGGTG
-TTGCTCCCGTGGCGGTAGGGAAGAAGCTTGACCGGCGGCTTTGGGTTCTG
-GAAATTCTATATTTGAATTTGAAAATCAACAAAATTCAATATTTTACCCT
-GCTCTTGTGAGTTTTGTTCGACAAAAGCGAAAAATCCGGGTCGAAATCGA
-ATGAAACGCCGAACATGGGGGCCATTTGGACAGAAATGAATGAATACAGG
-TTAGTAGACGCTGAAAAATTGGGAATTTCAATTAATTTAGGATTTTTTAA
-CGGAAAAATAAGTGAAAATGAGAGGCAAACATGCAAATTAAAATCGCGAA
-ATTACCGCGCTTTGAAAGGGACTCCACCGATCGGAGAGACGAGGGAAGTG
-GAGAGACGCAAATCGAAGAGACGCCTTTTCAGACATTTTTTCGTGATAAT
-TTTGCATGAATTGGCAAGTAGAGCTTACACGTGATGCGAATCATTGATAA
-AAACATCAATTGTTGTTTTTAGTGTACTGAAATTCCGGCACAATAGCTCT
-CGTAAATCGACACAAAAGTCACTCCGTGGAAAAGTGGAATTTGGATAATT
-TTGTTCTTTTTTTTAAATATGATTAACGTTTTTGAAGGCTTTTGTCTCAT
-AATTCATCAAATTCAAAACCGGAATTATCCAAATTCCACTTTTCCACGGA
-GTGACTTTTGTGTCGATTTACGAGAGCTATTGTGCTGGAATTTCAGTACA
-GTAGAAACAGAAAATGTTGTTTTTATCAACGATTCGCATCATGTGTAAGC
-TCTACTTGCCAATTCATGCAAAATTATCACGAAAAATGTCTGAAAAGGCG
-TCTCTCCGATTCGCGTCTCTCCACTTCCCTCGTCTCTCCGATCGGTGGAG
-TCTCTTTTGAAATTCGAAAATAAAAAGTTTCGCAGTGCGCCCGGGTTACG
-GTGAATTTTAAAAGCGCATCACGGTTTTGAGTGAGGTCTCGACGCGAAAT
-TAGCCGTTTTTGAAGATTTGTCGTTTATTTTGGCATTTTTGAAGGAAACA
-TAAGTGAAAATAAACAATTTTAATCTTAATTGAGAGAAACTTGAACATTT
-TTACAAAAATTGCAAGAAATTGCGCGTTAAAATTCAAAAATTAGAAGTAT
-CGCGGCGCTCAAGCCGTTGATAACAAGCCGTTATAAACTTATATAACTAT
-ATAATGTAACTCGATGATTTGTTGATGTGATCTTTAAAAAGGTTGAAACT
-GCCCCAGTCGATGTCCGCGCCAGAGGCGCTGTCAGCGGCTGGTTACTTAT
-ATATAAAAAATATCGGGAAAAACGCACTTCCGTTCCATTTGTTTCTTTGT
-TTTTGTGACGTCACTGAGAATTATGGGCGGGCCCGTCTGCCTTCGTGGTA
-AGACCCATCGTGGCGAGACATATCGTGGTGATATCCTTCGTGGCGAGACC
-CATCGTGGTGAGACCCATCGTGGCGAGACCCATCGTGGTGAGACCCATCG
-TGGTAAGACCCATCGTGGCGAGACCTTTCGAAAATTTGGTGGGAATTCAA
-ATTTTCTTAGAAACATTTTTTGGTGGGAATTCAAAATTTTCAAAGAAAAA
-CTTTGGCGGGAATTCAATTTTTCAATAAATAATTTTGGCGGGAATTCAAA
-TTTTCTAAGAATAATTTTGACGGGAAATTCAAATTTGTTGAGAAACTCGA
-GTAAATGCTGGAATGTTCTAGAACCTTCCTGGAGATTGGGGAAAATTTTA
-GTATGTTCTAGAACCATCGGCGAACTTAAGAAAATTCTGGAAAGTTCTAA
-AACCTTCTAGAAAATTCGTGAAAATTCTGGATTGTTCTAGAAATTTCTAG
-AAAATTCGAGAAAACTCTGGAACGTTCTATAGAACCTTCTAGAAAATTCG
-GGAAAATTCTGGAATGTTCTAGAAAATCTTGTTTGCCAAAAGCTCTCGGA
-AGGAACCGGAAAAGTTTCTTATGATTTGAAGAACGTCTAGAAACGTTCAA
-GAAATTTAGAAGTAGTTCCAGGAAACCTGGTATTTTTAAGTTGTAACTCT
-TGAAAACTTAGTTATATAATATTCATGTTGCGTTAAAAACTTCTGGAAAA
-CTGAGAAAAACGTTCCAAGGCTTAGAAATTTTAGAATTTCATCTTAATTT
-CGAGTACGCCAGTCGGAGCACGCGCATTGTGCGAACGGCTGGTATACAAA
-CAATAGTCAGTCAATCCCATGGATCAAATTTTGAATTTTTCTAAGACTGA
-ACTGTTCCTTTGATATGCAAAATTTTATAAAATTGTCTGTTATTGAAAGA
-CATGAAACAAACTTGAATTACAGTAATTCTGTAAATTCTGAACTTACTAT
-TAGAATCCTTAGTGAGCACACTTGAAAACGAATGAAATAAGGTATGTGAG
-AATACCGTATCAATCAGATACGTCTGACACTTCCCCAAAAAAAACTATCA
-GAATATGAGTACGATATGTTATTACTAGTGTGCATCTTTCCGCGCGACCA
-TCATGGCTCAGCAGGTAAGACTTCGGCGACGCCTCGAGACGACGAGGTAG
-TTGACGACTTTTTTCATTTTTTAGGCAGCGCCCAACTCTTGTCCGAGGTC
-TACAGGCTACATGGTTTGGACGGACAGAGTATTTGCTTTATTAGTAGTAA
-CAGAAATACACATAAAATCAATTAATAAGATCCATGAAATGCAATAAAAA
-TCCAGTTTTCACCCATCTACTATGTCTCTCATTGAAGAACTTTTTCAGAT
-AGCTTTTGGTATAGAATATATTAAAATTCATTCTTCGATTTTCTGTGGAA
-TTTCTTATTTGAAAGCTTTTTCCATACCAGACAGTCACTTCTCCAAATCC
-ATCCTTGAAATTTTCTTTGGGGATATTTAAAATATCATCGAGATACCAAC
-AATCTACTGGTTTTTCACCTACAAGACGTGCTCTTGAATTGAAAATGTCT
-GGGATATCCTCTGGAATATGTTTTTCTCCTTTGTCATGCTGATAGTATAA
-GTTGAATGTGACACTTCCATTTCTCTGGCTGTTTTGTTCAGTCAATCGGA
-TTAGCTTTGCTGTGACTCTGTCCATATTGTCCGGAGTAATGAGGAGATAC
-GTTTTAGGAAGTAGAACAGTCATACTCTTGGCTGGGAAGTTTCGTTGAAC
-ATTTGCAATCACATTGTCCATTGGTGAATAATAGTCGTTTTCCAGTTGTT
-CGTTCATTTCGAGTAACATATCCTCAGAGTATTGTAAATCGATCTCCACT
-TTTTCCAGAAGAACCCTCGAAACGGGTTGGGTGTTGAATGGTACATTGAA
-TACGGCATTTGAAAAGTCTTTAGACGTTTCCAAAATGAAATCCATATTTG
-AACTAAACATAGTATTAAAATGACCACTGTAAGCTTCGAACCGGAACTCC
-AGTCTGAAATCCTTAACATTCCACTTTGAAATAAGCTGGTATAAAAAGTC
-TCTTGGGATTGAAAGGAACTCTTTTCCCAGTATTAAAACGGTGAATGTGT
-GGCATGTTACCAATGAATTGAGGAAATAATTTGCTCGAGCACCAACTACG
-TACCGCCCTAGTTGCTTTTCGTATATGGTCCGATAAAACAACCTGTAAAA
-TGTAATCTTTATAATGTTCCTGAGCATATCATGTCAAGAGTGTCTGAGTT
-TTTCATCAACAAAAACAAAATTTGATTTTTTTGTTAATTTTCTAAACAAT
-CCGATTTTTGGTTTTCCGGAAAATTGAAACATCGAAATTTTCCGTTTTTC
-AATATCCAATTATTCGATTTTCCGATTTCCTCTCAGAAGAACGAAAAAAA
-CGAGAATAAAGTTTCCATGACATTGATCGCAGTGGGCTGTTTGTTTTTGG
-GATAACTTTAAGTGAAGGAATGGAGAGACTATCTAAGTATGAAAAACACG
-AGAATTCACTCTTTTGAGAACCTGTTACAATACGTGTACTGTTATAATAG
-AAAAACTAAAGCAGTGATTCAAACATCTGTTCGACGGTGTTCATTACAAA
-TGTATCAATTTACACTCACCAGTCTTTCATTTCCAGCGCTTTGTAATGAC
-GTGGAGATATCCTGATTTGATTTATGATTTCTATTATTTTTAATTCTCCA
-AATAGCTCTTCTCCCAATATTCGCAACTCATCAATTCCAAAATTGCTCAA
-TCGAAGATATGCGAATTTCCCGAATAGTTCGTTTAATCTGTCCATAAATC
-GATCATGCTCATCAACTCCAAAATTTTCCAACATCAAATTCAAAAACTGC
-TGCGGTATCGAATTTCCACCAAAATATTGAAGTTGAATACTATGAACTAT
-ACAGTTTTTATTTCTATGAATGTCTCGACATATTTGACAACCACAGCAAA
-AATCATTTTTATATTCTTCAACGAGTCCATCTAAAAATCATGAATGTCAA
-ATCAGTAGTTCAAAAGCCATATATTTTACTCAGAATTCTGAAAAACAGGC
-GCTCATGTCAAAAATTGACTTACAATCTACTCCAATCAAGCAATCGTGTA
-TGAGATCATTGAGTATAATTCGAGCATCCACTCCGCACGAAATTTCGTTT
-TTCTTAATCGGTTCGACATAAAGCTTGTAGACTTTCACATTTACCGTATT
-TTTTAAAAATCTGAAAATAATGTTACAGCTGAGTACAAAACATTAAAAAT
-TGGTTTAATTGATTGAAATTTTCACCACTTCTCATATTGTTTCCACGATC
-ACAAAAAAGCATAAAAAACTTCAACAGACTCAGAAAACACTTTTTAAAGG
-CAAGTTTTGAACCACCTATTTTGATGAAAAATTGTCTGAAACACTTCTCA
-GATCGACTTTTCCCTAGCTCAAAGTGATCCTCTGCCGCTAGCTCTTTTTT
-AGAGTGGTCATTCGAAAGTCCGGGTTTAAGTTGAAATATTTCCCTTACCG
-GTCAAAATTCTATCAACATCAAAATAAAATTGAATTTTTTGGTAGTTAAC
-AGAGGAAGCGGCGAGCAAAAAAACCAGGTTTTGAACAATTGATTTCAACT
-TACACGAATAAGTGTTTCACCTTGTTTTTGTTTATCTCCAGTGCATTTAT
-AAGAAACGAGCAAGTGCATCGACGAAGCTGTTTTAGCGGAAGTTCAGGAT
-CTACTTGATTGTTAATGAATATTGATCTTTTTCTTCAATTTTTACAAGTT
-TTGAAACTGTGAATTTGTATTTTTCGATGCTCATTTCGAATTTTGTGCAA
-AACTTCTTCGCTGAACAATTTATTTATCAGCTGAAAAAAGAGCGAATTAA
-AGTAAAATTGAACACAATTTTGATACCTGTCTATAATTAGGGATATCAGT
-CCGCTGTATTGATTTTTTTGTTTGAAAAACTGAGTTTTTGTTTATTTGCA
-GCGGCAAATTTTTATTAATTTTTTTTGATAAAAGTTCATCAATGCCATCA
-GTGTTGTGGCACCACGGAGTGGCGGAAGACCGAACCCTTTAAGCCTCAAG
-AGGAACCGAGCAACGAAGACTATGTCAGAGGTGCAGCATGGCATCGTCTA
-TTTGTATATGTATTGGAAAGAACAGAACACAGTTTCAATAAATATGTTTA
-TTACTCCAAAGGGGAGATAATCAACAGAGGGGGAGTGGGTCGTACACAAG
-AGAGAGGGAATTGTCTGGTGTGAGAATATCACGTCCTGCCACGCGGGTCT
-TTAGTCTGAAAAGGTCGAGTGTATGAATAGTCGGGGTCTTTGCAGACTCG
-TAGAATAATGTCTTTGGTCAACTACACTTTCCAAATAAAGGGAGGGAAAG
-GTAGGAAACGTCGGCAATTAGTCTGACTGGGAGCTGTCAATAACGGGGGG
-GGGGGGGAAGAGACCAGCAAAACCGAACCAAGAGTGGGGAGGAGAGTTCC
-TTTCCTGGTGCCACCGACGCTGCAGCTCGCTCCGTATCGTCGCTCATTGA
-GTCGCCGCGCAGCCAATCGTTGCTACGGGGCGCGAGTGTAACTCTCGTTA
-GAGAGCGTGTGGGAGCAAGAGACGCAGAAATACAGTAAACTTCTGCGACT
-CCTAACTGTATGGTAAGCTTAAGAGCTGGTCTTAAAAGGTCGAATTGAAT
-GTACCCCTCGCTCGGAGAACTGCTGAAGCAGTCGAGAGCGAGACATTGTG
-AAATGGGCGATACAGCAGAGCCCAGTTCACAACTCTCCGGGGGGCGGGAC
-TTGTAGGCTGGTTCACGTAGTGAACTTAAGGTTTGAAGCCTTCCTTTGCC
-TTTCTTGGAAGAGATTGGCGGAGTGGAAGGTCGTCTGAGCTCCTGGCTTC
-TTTTCGTGAGCGTTCAGCTTCTTTTGAAGATCTAGTATTAGGTGAGCTCG
-GAGCTTCTTTTCTAAATCTTGCTTCGTCTGAGCTTAAAGCTTCTTTCCTG
-GATTTAATAAATTTTAAAGATGGAAGCATAGGTAGTGAGGGTTCAGGAAA
-GTCGGAGTCCGTCTCTTCGTCTTTTTGTGGAATTTTGTCTTTATTGTCTA
-TGTCTTCCGCTGTAACCTCAAGAGGATACAGTTGATTTAGTGATCGTTCC
-AACGTGGAGTTATTGAAACGAACTCGTGCCGATTCAATGTTTCCTTCTTT
-ACTCGGAATGAGCTCCACAATTTTGCCCAGAGGCCATGTGTGTCTTGGCA
-ACATTTCTTGTCCGACGAGAACAATGTCTCCTTGTTTAGGATCTCGAGGA
-GCATCCCTTGTATTAGTCTTTTGTCTTTCTCTCAGAAACAGGAGATATGA
-TGTCGACCAGATTTGCCACAACTTTGCAACTGTTGTTTCAACTCTGGCTA
-AGTGTCTTCTCGTGATTTGCTCTGTTGATCGAGCTGTCTTTGGAGAATAT
-TCCATCGGTTCGTCTAGATCAACTTCATTCGGTGCATCTAGCTGAACTTT
-TGGTAGTAGAAAGTCGATTGGGCGGAGAGCCGTCAGATCATTGGGATCTG
-TGTTGTCTGGTGTAAGTGGACGGTTGTTAATCATCCCTTGCACCTGTCTT
-AACGTGCTGGACAGCTCGAAGAAGGTTAACTTTTTTTTGCCAATAGTCTT
-GCGAAGTTGGTGCTTCGCAATTCCAACAATCCTCTCGTACACTCCACCTT
-GCCAAGGGGCGAATGGAGTGATGTTGTGTACCTGAATTTCGTATTTGGCT
-AAAAAGCAAATCATTGAGTTGCTTGGTGCGTAAAGTCTGATGTCTTGGTT
-GACCATTTGGTGGCCGAGTGTAAATGTTGGTGCATTGTCACAGTAGATAT
-GGGGCGGAACACCACATGCACTGGAGATTGCTCTGAGTGCGAGCAAGTAG
-TTGGCTGTAGTAGCGTCTGGAATGAGTTCTAGAATGGTAGCTCTAGTCTT
-CAGACAAGTGTAGATAAGAGCATAGGCTTTACCTAGCTTGTCATCGTCTG
-TCTTGTATTGTATTGGACCCAAATAGTCGAGTCCTACATGGTCGAATGGT
-GCAGAAGGTACAGTTCTGCAGTTTGGTAGTCGTGTGTCGTAATTGTATTT
-AAAGGGTCGTGCTTTCACCTTTTTACAGTTCACGCACTGAGCAATTGTAG
-TTCTTGCAATTTTGCGATCATTTCTGATCCAAAAGTGCAGTCTTACCGTA
-GTTGCCAAATAGTGTAATGGTAAGTGGGTATTTCGTCTGTGGACATCTTC
-CACAATTAGACACAATCAGATGTGGAACCGGATTGGGTCCCACTATCCAA
-TGATGTTTGTTTCCGTCCTCGTCTACTGGGTTACGCAATGTGTCTTGCAA
-AGTGATTAAGTAACCGTCTGTAACAACTGGAGAAGTTGTGTCAAAAAATG
-TCTGAATCAGTATGATTTTGTCTCTGTCTTTGAATTCGAGAATTCGTATT
-GTCTTGCATTGACTGAGCATAAGAACAGTTTCCTGTTATATGACTCGGTG
-ACGAGCAAATCGTGCATCTACCATTGTTGATGCAGAAGCGTTTGACTTCA
-ATCGCACCCATTGTGCACGTTTGAAGTGGATGGTCTTTTTTGCAGGGAGG
-GCACGGATCTCCATCGAGAAATTCTTGCCAATTCTCCACGAGTCTGGAGG
-TAGTATTACCCGTCTTTTGTTGAATATGCAGGTTCAGGAGGTTTTCCTTT
-AGTTTTCTGTCCCGTTGGACATCAACCAAAGTACGTCGCCAATCTTCCGC
-GCAGTTGTCTTCAAGATGTTTTTTGAGGCTTACGATTGGATCGTCAGCCC
-GTCTGGGTCGTATAAAGTTACGCGGAGTCAGCTCGGTATAGTCAGCTTGA
-TAGTCTTGCATATAGTCTTTGAGATCTTTAATTATCATGTCTTTGGATTT
-AATCGTTGAAGGTTTCTGTTTAACAGTTTCCAACAAGTCTTTAATCGTCG
-ATAGTCTATGTCTCAAGTCACCAGAAATAACAATCATTTTCTGTCTGGCC
-AGATTAGTCGTGGATCGTATGATATCTGTTAAATTCAAAATTGGCGTACC
-TGTATCCTTTGCCTTCTCGGCGACGTCCTTGAACATCTCCTCGATGATAT
-CCGGCAATGAATTGGCTTCGACCAAGTATTGAGTCAGGTCTTTGTACCAT
-TTGTGAAGATCCTTGATGTAGTCCATATGCTGCTGCTTGTCACAATCGAT
-ATTGGCGTTAAGCCAGTCGGATGAAGACTTATCTTTGTGCTTCAAGTCTT
-CAGTCTTAAGTGCGATACGCGTCAGCAACAATGCTATGGATGATGAAGTG
-GAGAATGGGGTCCTGGATTCCCTTCCCAAGCTGCCACCACCGGAGTCGGG
-ATCAAGACTTCCACCTCCAAGATGAAAAGTCATTCTTCTTTGAAAACCGA
-GAAACTTGTTATCTAAAATCAATAATTGGTTAAGAAGAAAGACAAAATGT
-TTTGAGATTAAGTAAAAGACTTAATAAGAGATTAGGAAAGAAAGATGGGG
-ATGAAGACTCAATTTGAGTGATAAGAAAAAAAGGTATTTTAATATAAGAT
-TCTACAATAGGGATTGGGAAAGGTGTGCCGTGGCCTAATATAGGTTTGGT
-GGTACAATAAATAGGGGAAGTAATGACCCAATATGGGTGGGGGGATTATT
-AAATGTTACCTAATATGGGTGAATTATTAATTATTCCTTTGGCAGAGGAA
-TGTCGGTGAGGGCTAAGAGTTCCCTGTATTGTAGGTTGATTAGTCATGTA
-GGGGACTGGTGTAGAGTAATTTGGTGTAGAGTAATTTGGTGTAGAGTAGG
-TATTTGGTGTAGAGTAGGTTTTGGTGTAGAGTAGGTTTTGGTGTAGAGTA
-ATTTGGTGTAGAGTAATTGGTGTAGAGTAGGGATGGAGGGAATTCAACAC
-CGACTGGTCGTGAATCAGATCGGCCCTGAATTGGGGTAGGGGACAATAGA
-AAGAAACTACCGTGTGGCCAACTGCCCCCAGCAGGGACCTAGTTGGGATT
-GTTTTCACTTGAACACGAAAACAATGGGGGTTGGGAAAGTTAATAGGGAC
-AAAGGAGCAAAACGAAACGTCCATTCCCGCATCGAATTGCCTCATAGGCA
-CCGCACCCAAACTCTCCTGCCGCTGCAGCAGTCAGGGAATCCGACGCTCC
-ACGCTCTCCATCGCGACTGGAGACCAAGTTCTTCTTTCTTCTTATAGTCT
-TTTTTTTCTAGTGGCGCCGGTTAATTACTCCATTGCCAACTAGCTGTCGG
-GAAGTCAGAAGTCAAATGTCCTTGCGGACGTGGAATATAACATGTTTGAA
-ATTAGGGTGGTTTAAGTTTTTTGTGAGATCCCTATGGATAAATTTTGGTT
-AATTTTTAAATTTGAAAGGTTTTAAAAGATGTACAAATAATTTTTAATGA
-TGTATAATTTTTGGAGAAGGTACTAGTTGAAAGATATAAAGAATTTTTAA
-ATTGAAAGTTAAATTAAAATTTTGAGGGGAATTGGTGTAGAAAATTAGTT
-AAAATATATTTTTGGAATTTTTGAAATTTTATAATTTTTAAGGATTTTTT
-AAATTTTTTAGGAAGTTATAAAAGGGGGTAAATAAACTAACTGTTCGATC
-GCCGCGTCCTCCAACGAGCAAATCCTCCATCCATCCAGAGTTCTTGTCTA
-CCCGTCTTGTCGTCTATTCCTCCTTTTCTTCTTGTCTCTAGCACACAGGA
-GACTGTGCACTATTGTCTTTCCGTTGCAGTCAGCGAGCTGCCAGCAACTA
-GTCGCATCGTTAATGGCACCTTTGCCACTGTATTGAATGCTGTGAGCTGT
-TTTAAGTGCTATTACACTATAGTCTGTAGAAAACAAGAAATTTTGTAATC
-GTCTTTCGTCTTTCGTCTTGAACCATATTAACAGCCGAGATTTATTAAAT
-CAAGGAACAAATAACAGCTTCAACAATGTGGTATCAGATACCGGTGAGGA
-GTGGTGAGGGGGGAATTTCAAAAAATTTAAAAGATAAAAATTTAGTGATC
-GAATATCGAGATATTCGATGGGGATTGTCCTCGTGCCAATTTCTTGGCGA
-TCCTTGGTTGGTATCGGCGTCTGACCGGCTGGTGTTGTTGCTGCTGTTGC
-TGGAGTTGTGGTGGCGGTGGTCCAAATAGTTGTGGAGCAGGAACGCGAAG
-TGGTGGTGGGAACTCCTGTGCGGCTGGTACGAGTTGTGGTGGAGGTTGCT
-CTTCGGATGGTGGTGGCGTGTGAGCATTGAATCCTCCAGAGACTTCCATC
-GCGAGGGAGATCCTGTTGATCGCTGCGTGCACCACATCTATCTTGTCGTA
-CAGAACGACGTGATCCGCGGATTGGATCCACACTTCCTGGGAGCCAGAGC
-CTTGTGGAGCCGTCGCAGTCGTCGGGCCATTTGGGTCGCGGCCGGTCTGG
-GGGGCTGGGCCCGTACTTCCTGGGAAGTTGAGAAACCAGTCTTCGAAGAA
-CTCGGATGGAGATGTGTCGTCGGTGAGCGTCGGGTCGAACGGTCTGAGAA
-GATTTTAGAAAATTAATAATAGTATATGGAAAAATTGGATAAATTTTTAG
-AATTTTGAAAGAATTGATTGAAAATGTGTATAAATTGAATTTTTTAGAGA
-AAAATGATAAAATTTTTTAGAGAAAATAATAATTTTTAGATAATTTTTAA
-ATAAAATCGAAACTTCCTTTAGTCTGGCGCTTCGTGGATGGGTAGGCTCC
-ACTCAGCTGTCAACTTACGTACTACCAATGAAGAATTGCAGGATAATGTG
-CATATTAGATGCAAAACGACGAGAAATAGCGAATAATAAGTCGGGGAAAG
-TCGAAATTGTGCTCTGGGAGCATGAGTTTGCCAAACTCACGTCCCTCGGC
-GTCTGTGGGCTCGCGAGCCGCCCTTGTGTACGATTTTAGGGGTTTTTTAA
-TTTTGAATTTTTAGAATTTTAATTATTTTTAAAGAAAGTTTGGTAGAATA
-AAGGGACGGGGGATGTTTAAATAGATGTGTACCTGTCGTCTATCAAGTCT
-TCGACTATCGAAAACGTCGAGTCGTCGAAGTTCATATTGAATCGTCTCTT
-CACGGCCCGGCGGGGGGTACATGGACGAGAATTCTCTACCGTATTCCAAT
-TTGGCTGACTGCGTGCTCAACGTTGAATACTCAGTTTAAAGTTTCGTACA
-CCGTTGCGTACTGCACAGCGCGCATTTTAATTGACGAAATTTCGCGAAAA
-TTAACAGAAGATTTTTTTCGGAATTATAGAGCTGAAATTGAAAAAAAAAC
-TATCAAATTTTCATCGAATTTGTGAAAAATCGTAAGTATGAAGATCTTTT
-CTTCACTATATTCAAGGAAAATCGATATTTCGCTTTTCACAGACGAATGA
-TGTCTCATTTTACTCGATGAAAGTTTCTGATGAGCTGTTTTTATCGATTT
-TTGAGCGATAAAAATGCGATTTGTTGATAAAATGGATCAATTATATAAAG
-AAACAACATATATTGCTCTGAGATTACTTTTTGAGAATCAATTCTTTATT
-TTTCGGTCATTTTAAATTAAGCATTAAAATAAAAATATTAGAAATCATAA
-TAAAAAAAACAGAAAATCGATATATTACTTTTTCTTCGGAATTTCACGAC
-TTTTTTGGACGAATTTTATTCTGTAAACTTTCTTCTTCGAATTTGTGTCC
-ACGTGGCTTTCAGTCGAAGAAGATTCTGCAGCACTCCTTCTTGCTTGCCC
-ACAACTTACTCGAATTTTCTAAAATTTTTAACTTATTGAAATTGTCATTT
-CACCTTTACACTCACTTCAGCTAAACTATTACTGCATTTCGGAAGTTGAT
-AGGATACTGGTGGAGCAACAAGTGGATGGCTTCTAGTGATTGGCTGGCTT
-GTCGAGCAAGTTTGTGTGATTGCCTGAAATAATTTTTGATTTCAATTTTG
-AGTTGATTTAAAGCAGTGAACCTACCACCGGGTTCGGACGAGAAAGAGCA
-TTACTCGGTAGACCACGGAATCCAATTTTCGTTGAATTGCCTCCAAATGC
-AATAGAAGTTTGTACGTTTTGTGAGAAGTCGGGCTGAAAATTTTCAAAAT
-TTGAAACTTTTCGAGAAAAATAAAAATCTCACCACAGCATTTCGAGATTT
-TGTCGATTGTGGAAGCCTTTTCCTGGAGCGAAAATTGATTTTTTTTTTCG
-CTAAATTTTTTCTTTTTTGGGCAGCCGTGACGTCCCGAATAACTGCTTTT
-GGGTCCCGAAGATCATTTTGCGAAGAAATTGGCAGAACTGTTGCATCTTT
-TGGTACGATGGAAAGACCGGGAATGGACGTGTTCTGAAATAGTTGTGTTT
-TTAAGAATGCAGAAATGTTTTTCTGTACCAAAATTACCATAGTCATGTCA
-TTCATGATGTTACGACACATGAGCTCTCTCAGAACATGGATGTAACGCCT
-TTTCTTGTCCCGGTAATTGCAAAATCTCCTCTCAAGTGCATTGAAAATCG
-CGTGGACAGATTCAACTCCTTGTTCTGTGATCCTTCCAATGTTTCTCACA
-TCTTTTGCCATTTGTGGTGCATGGTAGACCAACAAGTGCAGCTTTAAAAT
-AATTGTTTCTTCGGGAACCGCTACTTTCAAATCCTCCACAAATCCGCGAA
-TCGAATTTTGAAGTATTAAGACGTCGGAATCATTTAAAAACTTGTTTCCC
-GAAAGTGACATAATAGTTGAAAGCTTTCCCATTGCTGATTTCAATCCGAG
-CAACATTGGGCATAAATTTGGGCCAAAAATGTTGAAAGTCTCCTCTACAA
-CAGCCGGCGTTAGCAGCAATTTCAAATGGTTTCCGCAAAATGATTGGAAC
-CAAGCCTGCTTGTCCGCTCCAAACTTAGCCCAACACTGTCCCATTTTTTC
-AAGTGTTCCTTCGGGAGTACCATTCACAATTGTATCGAGCAACAATTTTT
-CCGATTGAAGTGCTTTCAGTTCAGCATGCGACTCCAATTTCATCTTTCCG
-GTGGCTCCTTGATACTTTTCTTCCGCACTTTTAATTAGGTTAACAGCGTT
-TTTTAGAGTTGCTTTTCGTGTTTTCAGGATAGGAAAAGAAGTAGTGTTAT
-CCAAAGTATCAGAATATTTCCAGAGGGGATTGAAGATATATTTGTCAAAA
-ATACCCATGATAATGTGCAGAAGAGGAATCAAATAGAACATGATCGCAAC
-GTGTGGCAGAAGTGGAGTACATCCTTTGCGAACACCCAAGTCGCCATTTT
-CACAACAAGCTTTGTAAAGATCGATTGTTCGTGGGTGGAATGTTTCATCA
-ACATTCATATCCTTGATTTTCATCCTCTCTTCAGCTCCCCGTGGATTCTG
-TGCAAAACATTTGAAGCAGAAATTGTGGGATGAATGTCCTTGGTGTCCAA
-GAATATCAGATTGAAACTTGCAATCTCCAGTTGCAATTTGCACAATTTTT
-GCGGTTTTTTGAACTCCTTTGTCCAAATATCAAATTTTCGTTAGCTTGCC
-AAGCTGCTCAAGAACGTCCGGAATGAATTTTTTCAGAGACGAATAATTGT
-CGGATCCGTCATATACTGCAATTACCATAACGTGTCTCGAAGAATTCGGT
-CGAGATACGTTTCCGATTACCAATGCCAACTTTGTGCTTCCACCTCCAGC
-GTCACCAACGACTCCAATCTTGATTACTCCTTTCGTGTATCCGTCGTCCA
-CAAATTGATTTGAATTGCATAGAAGCTCTATTCGATAGGCTAAAACTTCT
-GCAATTTTCATGCACTGCACAATGGTAATCACTTTTCCTTTATTGTCGAA
-CGAAGTGGAAACTTTGAAACTGGAGATCATTGATAACTGGATTGACAAAT
-CTCTTGTGTTCTTTACCGATGGAAGCAAATCATAGCCAATGGCATTAGTC
-AAATAGTTTTTGATTTTTTCCATCTGACTTAGAGATAATCCGCATTTTGA
-TAAAAAGTCAACGGCCTCAAAGTTTGAAAGCTTGTTTTTGTAGCTTTGAT
-TCTCTTCTGAATTCAGGAATTTTGTGAATTTTCGAATAAATTGTCCGACG
-TCATCCTCGAGGCAGATTTCGTGTTGAAGCAAGTGAAGAGCTTTGCGAAA
-TCGATTTTTGATACAACTTTTGCTTCTTAGATTCGAAATATTAACTTTAA
-AAGCTGATTTTTTAAGGTTTTCAACTTCTTCGGCGTGTCTTTGTAGACTC
-AGAACCATAGCTTTGCCACTTTTCTTCACATCTGCACAGCTTCTCACCAA
-TCGACCTTCTATACCACTGACGATCGTTCGTATATTGCATACTTCCATTT
-GCAGCGAAGAATTAGATGCTCTTATAGTGATATTTTCATGGCGGACTATT
-TGCATTTCTTCCGAAAACACCGCAAACTCATCAATCCGCTTTTGTATTTC
-TTCTGATATTTCATTTTTTTCATTTTTCAGTCGTTCGATCGTTAGTCGGA
-GCATTTTGATCTGCGGAATTTGCTCAACATTGGAGATTATTCGAACCCTC
-GGTGTACTGAACGAGTTTCGTAAAGGTGTCGGTGGAAATACGGGATTGGA
-GAATCTCAGCAAAATCATATAATATTAGTTTTGAAATATTGAAAAAAATT
-ACATTGTGAGAAAAAGTCGGAATTTCGTCACTAAAATCCATTTCCACGTC
-TCTCGTCAGAATTCCTTCATCCATATTGAAACAATTTGACGACCTGCATG
-TAGTTGCGGAGCTACTGGAAGCAATGTCGGGATGGTGGGAGTTTCGATCT
-TCTGAACTGATTTCCTGATTAGCCTGTGGCGACGAGCTGCACGTCTGAAA
-ATCACGTTTTTGAAGTTAGAACAAACTACTCCAACTTAATTAAAGTTGAC
-AAAATTGAGCTGAACGAACCTCCACTTTCGAATTGTTCAGTTCTTCCTCT
-TCAGTTTGATCTTTTGAAACTCCATTAGCACTGTTCCTTGCTCTCTGGGC
-ATTTGCTAAAAGAAGGCCTGCACAAGATTTTTCTTTTCTTTTTTGTTTGA
-AGTATACTTTTGTCATCTGGAAATATTGCATGAATATTATAAGGGAAACA
-ATTTTTAAATATCGATTTTCACGAAATTTGAAAAAATCAATAATTTGGGC
-GCATGATATTGAGCTGAATGTTTCGAATTTAGAATCAGCATGCTTTTATT
-CATATTTTAGGATCTTTTTAAAAAATCTGGACCAACAGTTTTTGAAAAAA
-AAATACTTTTCGTTCAGAAATGTACTGATTTTCCACTGATTTTCACGAAA
-TTTGAAAAAATCAATAATTTAGGCGCATGATATTGAGCTGAATGTTTTGA
-ATTTAGAATCAGCATGCTTTTATTCATATTTTAGGATCTTTTTAAAAAAT
-CTGGACCAACAGTTTTCGAAAAAATTCAATTTTTGTTCAGAAATGTGAAT
-ATTCACTAAATCGAAAAAAATAATTGCAAAATCCGTCGGCTGAACATTCA
-AAACTTATCAATTTGAAATCAGCATATTTCAGTGTATAATTAAAAAAGGT
-TTCAAAAATTCTGAGACCAATTTTTGTTGAGAAAAATAATTTTTCGTTCG
-AATTATCGATTTTTCACGAAATGCCAAAAACAGTAAACTTGGGCCCATGC
-TAAAAGCCTGAATCTTTCAAATTAAAAACCAGCATGATTTTTTCTATATT
-CTAAGACGTTTAAAAAAAATCTGGACCAACAGTTCTTGAGGAAAGTAATT
-TTTTATACAAAAATGTGCTGATTTTTCACTAAATTCAAAAAAATAATCAA
-GTTGGGCCCATGCTATACACCTAAATCATTAAAATTCAGAACCGCCATGT
-ATGTATTTTTTCATACCATAGGCTCTTTAAAAAAAATCTGGACCAACAGT
-TTTTGAGATATGTCAAAAAAAACAACTCACTTTTTGACGTTTTTCGCCTT
-TTCGCGGATGATGCGGTCGATTTTTGCGGCGATTTGTGGTCTTTCGCTGA
-AAATATTATTTTTATTTCAATTTTTAACGAAGAAAACAAGAAAAAACGAC
-GAGAAAACATCAAAAAACACGAAAAAAACGTCGAAAAACTCCCGCAACCT
-CATGAAAAAAAATAAAGCACTGCAGCCGCGGGACTAGTTTTCGCAACTTT
-CTAGGCCATGTCCCGTTCGCCGTGCCGTGTCTTGTCGTGGTGGTGTGAAG
-TGTGTTGGTGTGAAGCGTGTGAGTACGGTAGGCTGCTGCAGATGTGGTGT
-GAGCTGTAAAAAATCGAAATAATTCAAGAATTACGACGATTTTCGTATTT
-TGAGAAGAAGAAAATTTTAAATCACGAAAATTCGAGAGAAAAAATGATCA
-AATTCAGTCTCAGAAGCGAAAAATGAACTTCTTTGTCTGGAAAACAGCGG
-TTGCTCGTGAGAAAAAATGTTTAAAATTGAAGAAGATCAACAAAAACAAA
-AAAAGACACGTAAATGCAACTTGTTTTTAAAGGTCGTGGCCGCGTCGCGG
-TCGCGCCGCGTGCGCACTTTTGTAGAAGACTCCGCCCCCTTTTTTCTTGG
-CGCCGTGCCAATTTTTAGAAGGAAGAGCGTTTTTGGTTGAAATAATCGAT
-TTTCGACGAGAAAATAGACTAAATCAAGTATGGTGAATCTGATTAAAGGC
-ATATTAACTTTGTAAACTGCACAATTAACTAGAAATCGTACTATAACCGA
-ATATAGTCAAAGGGTCGCTCAGTTCCCCCGGTCTAGAGTCCCAGGTTCAT
-CTTTCGAGCTGTTTCCTGAGAAATTGTACAGGATTTGTCTGAGTCGTGAA
-CTGAACACGCTTTTCAGGTAAACGTCGTCTGGATGTCCTGGAAATCAAAT
-GTTAGTCTTTGTATCGATGGAAAACATGGTTTTCTCAAGGAAATAGTCGG
-AAAGTCGGTCGATGCACCATGTTGTGGCACCACGGAGTGGCGGAAGACCG
-AACCCTTTAAGCCTCAAGAGGAACCGAGCAACGAAGACTATGTCAGAGGT
-GCAGCATGGCATCGTCTATTTGTATATGTATTGGAAAGAACAGAACACAG
-TTTTAATAAATATGTTTATTACTCCAAAGGGGAGATAATCAACAGAGGGG
-AGTGGGTCGTACACAAGAGAGAGGGAATTGTCTGGTGTGAGAATATCACG
-TCCTGCCACGCGGGTCTTTAGTCTGAAAAGGTCGAGTGTATGAATAGTCG
-GGGTCTTTGCAGACTCGTAGAATAATGTCTTTGGTCAACTACACTTTCCA
-AATAAAGGGAGGGAAAGGTAGGAAACGTCGGCAATTAGTCTGACTGGGAG
-CTGTCAATAACGGGGGGGGGGGGGGGGGGGGAAGAGACCAGCAAAACCGA
-ACCAAGAGTGGGGAGGAGAGTTCCTTTCCTGGTGCCACCGACGCTGCAGC
-TCGCTCCGTATCGTCGCTCATTGAGTCGCCGCGCAGCCAATCGTTGCTAC
-GGGGCGCGAGTGTAACTCTCGTTAGAGAGCGTGTGGGAGCAAGAGACGCA
-GAAATACAGTAAACTTCTCCTAACTGTATGGTAAGCTTAAGAGCTGGTCT
-TAAAAGGTCGAATTGAATGTACCCCTCGCTCGGAGAACTGCTGAAGCAGT
-CGAGAGCGAGACATTGTGAAATGGGCGATACAGCAGAGCCCAGTTCACAA
-CAATCAGACTAACTGGCACTTACGTATAAATAATATTATGGGTTTCGTCG
-CTCCCCCTCCAAATGTTTTAAAAACGATTTAAAACATAATTTATACTGTT
-TTTTTTTACTACTGACCAATGAAAGTTCATGGTTGATAACATAAATCCCC
-ACATTTTCAGAAAAATGGATAAGCAGAAAAAAAGTTATTAATGAACTCAT
-AATTTTCATCGAAATTAGCCAGCTTTAGTTTCGGTGTATTACCAGAAAAC
-AAATTTAAGTGATCTTACTCTCAACTCCAACAGAGTATCTAATTGATTAG
-ACACATTTTTTACAATCTTGCTGACAATTGTGCGATTTTTGAAGATTTTG
-TCAATAAGCACGTGATCCTGAAAATAAAAAAGTGAGTAATTTTACGCTCG
-CGAAATTGTGAGCCAGTGGCTGCCTAGATTTTCAATTTGTTACATTATTT
-TGCAGCCATACGTGGACCATAATTCTGGCGACCACTTTACGGCATTATAA
-TTTTTTGAACTGCAAACAAAACATGTAAATATACATATATGTATACTAGG
-AATTCGCACTAAAGTAAATTATTGAAATTCGTCAACTTTTATTTTCATTT
-CTTATATTTTGTCTAATTTTCAACGAATTATTGAAAATGAAAATTTTTAA
-TTCACGTCAAAATTAGTGAACGCGGTGAACGGCGACGGCGAAGGCGGGCC
-GGCGTGAGGCCGGCGTGAGGCCCGCGTTTCGCGCCTCACTTAGCTGGAAA
-CCCTAAGTTTCTCCAATTAAATTACAGGTGATATACATTTTTCCTCTTTA
-GGATAAGAAAAGATCATTTCCTAAGCCTGACAATACAAAAATGTGGTTCA
-CGTTTTTATTTTTCATAACTTAAAAAAATACTATTAAAATGAGGGCATGT
-AATACACAAATACCGGCAAACGGTGTTTCAAATCAAATATTGAAGAAAAA
-ACAAACAAAATATGATGAATTCTCTTTGTTCTTACCAAAATCGAAACCAT
-CATTTAAAATTTAGCAATTTTTTACAGTTATATTTGGTAATTACGGCCCA
-TTTTCTATAATATAAAGAAACAATTGAAACTGATCCACCCTGTCCGCCGA
-CTATTGGGCATCGACAGATGGTGTTCTCAAAATACCAAAAATGGGTGGAA
-CTCTCTCACGAGCGCTCTGCAGGTGTCGTTTTCCTTTGCAAAGGACTGCC
-CTTCCATTCATTTGTGTCTCTATACAACATCTCATCTGTCATGCAAACCG
-ACATTCCCAACATACTCGAAATCCCAATTGATGTAAGTTCTTGTTTCTTA
-AACTAAAATTAGCCAACTATTTTCTAGAAATATCAATCTAGACCGAAATA
-CCTTTTACTCTTGAATGATATCAAAAGTTTAAAAATGTTTTATCTGGTAA
-ATATATTATTCAGTCAATAATAACAGAGCAATAATTTCCTATTTGTAAGA
-CGGTTTGCCAGCCCTACTGATGTAAGCTAAAGGTCCTACAAAAAATCCCT
-GAATTTTGGGTCTCCTTTGCTAACTACAAATGGTAGGCAAAAGAACATAT
-TTGTGTACAAAAAAGTATGCAAGCAAAAGAGACAGCGTAGGCAGGCAAAA
-GATTCATAAAAGAGAGATAGCCCCCGCGGTCAAATCATTCTACTAGTGGC
-TTGAAGCCTCTGTTGATGTGATAAAAGTAACATTTTATATAGCATTGTGT
-TCGATTTTTCTAACAAATAAAATGCATATCATTACTTATACAGTGCGTGC
-ATGTTCTTTATGCCACCCCCAAAGTTTTTAATCATGGCAGTTTCTGTGTA
-ATTTGGTGAGCAAAAAGTATTGAAAACCTATTCACAATGAAAAACCTAAA
-CTCAAGAAATGTTGTGATTATATCTCGAAAATTGTGAAAAATAAGACAAT
-AAATCAAAAATTGGCCGTGCAACTTCTATATGCCACCTCGGATTTTTTTA
-TGATTTCTTATGATTTTAGACTATTAACTTATTATTCAAATAAAATTCGA
-TTCAATTCGTATACATTTCAGTGCTAAATAACTATTCCTGTAACTTCTCC
-CAAAGACGATACGATGATCAAAATATGGGGATATGTTCTAGATACTAATT
-AAACATAGTATGTGAATATTGGTTCACATTGGTGGATTTTTAGCGTCGCC
-AGAGGGACATATTTGGTGTCCCCAGCCGTTTTTGGTGAAAACACTATTTC
-TCTTTTTTTTCTCGGTGCCAATCAAGTTGAGAAATTTCAGGCATGCTCTC
-GAACCTTCAGGAAAGATCGAATACTGCAGAAAACCTGTAGACTAGGAAAA
-CAACTTGGAAGTTTCTTAAAAGTTTGGAATTTTACTAGAATTTTCTGAAA
-AATTTCAGAAAAAAAGAGACTTTCAAGAAACTTCTGAAAACTTCGAGAAA
-GTTCTGGAATGTTCCAGATTTTTCTAAAAAGTAACAAATTCCGTTCAGAA
-CAATGTTTTGAATATATGCCAGAATCTTACTCAAGTAAAATAATTTTTTT
-TAAATTCTGATACTCCAAAAATATTATGAAATTTCAAAAAAAATTAAATT
-TAATAGACGTTTGCAATACTATTGAAGACCTGAAAAAATGTTAGAAATTT
-AGAAATTGTTCATTTTGAAGTATTCGAAATACTGTTCGATTATTCATGAG
-ACTGATAATGTTATCAGTTTTTTTTATTTGAAAGCTTTCTAAGAATTTCA
-TATGATTAGAACATCGAAATAGTTTTACTTTAAAGAAAAAATTGCTCCTG
-GAAAATTTTAACTGCTGAAAACTTGGTTACAGAAATTTTATGATGCTCAA
-ACACTTCCTGGAAACTGAAAAAAAAAAACGTTTCATCTGCAAAGAAAAAC
-TTAGAACAAATTTCAATAATTTACTTTAGTGCAAATTCCTAGTATACATA
-TATGTATATTTACATGTTTTGTTTGCAGTTCAAAAAATTATAATGCCGTA
-AAATGGTCGCCAGAATTATGGTCCACGTATGGCTGCAAAATAATGTAAAA
-AATTGAAAATCTAGGCAGCCACTGGCTCACAATTTCGCGAGCGTAAAATT
-ACTCACTTTTTTATTTTCAGGATCACGTGCTTATTGACAAAATCTTCAAA
-AATCGCACAATTGTCAGCAAGATTGTAAAAAATGTGTCTAATCAATTAAA
-TACTCTGTTGGAGTTGAGAGTAAGATCACTTAAATTTGTTTTCTGGTAAT
-ACACCGAAACTAAAGCTGGCTAATTTCGATGAAAATTATGAGTTCATTAA
-TAACTTTTTTTCTGCTTATCCATTTTTCTGAAAATGTGGGGATTTATGTT
-ATCAACCATGAACTTTCATTGGTCAGTAGTAAAAAAAACAGTATAAATTA
-TGTTTTAAATCGTTTTTAAAACATTTGGAGGGGGAGCGACGAAACCCATA
-ATATTATTTATACGTAAGTGCCAGTTAGTCTGATGGCATTGATGAACTTT
-TATCAAAAAAAATTAATAAAAATTTGCCGCTGCAAATAAACAAAAACTTA
-GTTTTTCAAACAAAAAAAATCAATACAGCGGACTGATATCCCTAATTATA
-GACAGGTATCAAAATTGTGTTCAATTTTACTTTAATTCGCTCTTTTTTCA
-GCTGATAAATAAATTGTTCAGCGAAGAAGTTTTGCACAAAATTCGAAATG
-AGCATCGAAAAATACAAATTCACAGTTTCAAGACTTGTAAAAATTGAAGA
-AAAAGATCAATATTCATTAACAATCAAGTAGATCCTGAACTTCCGCTAAA
-ACAGCCTCGTCGATGCACTTGCTCGTTTCTTATAAATGCACTGGAGATAA
-ACAAGAACAAGGTGAAACACTTATTCGTGTAAGTTGAAATCAATTGTTCA
-AAACCTGGTTTTTTTGCTCGCCGCTTCCTCTGTTAACTACCAAAAAATTC
-AATTTTATTTTGATGTTGATAGAATTTTGACCGGTAAGGGAAATATTTCA
-ACTTAAACCCGGACTTTCGAATGACCACTCTAAAAAAGAGCTAGCGGCAG
-AGGATCAATTTGAGCTAGGGAAAAGTCGATCTGAGAAGTGTTTCAGACAA
-TTTTTCATCAAAATAGGTGGTTCAGAACTTGCCTTTAAAAAGTGTTTTCT
-GAGTCTGTTGAAGTTTTTTATGCTTTTTTGTGATCGTGGAAACAATATGA
-GAAGTGGTGAAAATTTCAATCAATTAAACCAATTTTTAATGTTTTGTACT
-CAGCTGTAACATTATTTTCAGATTTTTAAAAAATACGGTAAATGTGAAAG
-TCTACAAGCTTTATGTCGAACCGATTAAGAAAAACGAAATTTCGTGCGGA
-GTGGATGCTCGAATTATACTCAATGATCTCATACACGATTGCTTGATTGG
-AGTAGATTGTAAGTCAATTTTTGACATGAGCGCCTGTTTTTCAGAATTCT
-GAGTAAAATATATGGCTTTTGAACTACTGATTTGACATTCATGATTTTTA
-GATGGACTCGTTGAAGAATATAAAAATGATTTTTGCTGTGGTTGTCAAAT
-ATGTCGAGACATTCATAGAAATAAAAACTGTATAGTTCATAGTATTCAAC
-TTCAATATTTTGGTGGAAATTCGATACCGCAGCAGTTTTTGAATTTGATG
-TTGGAAAATTTTGGAGTTGATGAGCATGATCGATTTATGGACAGATTAAA
-CGAACTATTCGGGAAATTCGCATATCTTCGATTGAGCAATTTTGGAATTG
-ATGAGTTGCGAATATCGGGAGAAGAGCTATTTGGAGAATTAAAAATAATA
-GAAATCATAAATCAAATCAGGATATCTCCACATCATTACAAAGCGCTGGA
-AATGAAAGACTGGTGAGTGTAAATTGATACATTTGTAATGAACACCGTCG
-AACAGATGTTTGAATCACTGCTTTAGTTTTTCTATTATAACAGTACACGT
-ATTGTAACAGGTTCTCAAAAGAGTGAATTCTCGTGTTTTTCATACTTAGA
-TAGTCTCTCCATTCCTTCACTTAAAGTTATCCCAAAAACAAACAGCCCAC
-TGCGATCAATGTCATGGAAACTTTATTCTCGTTTTTTTCGTTCTTCTGAG
-AGGAAATCGGAAAATCGAATAATTGGATATTGAAAAACGGAAAATTTCGG
-TGTTTCAATTTTCCGGAAAACCAAAAATCGGATTGTTTAGAAAATTAACA
-AAAAAATCAAATTTTGTTTTTGTTGATGAAAAACTCAGACACTCTTGACA
-TGATATGCTCAGGAACATTATAAAGATTACATTTTACAGGTTGTTTTATC
-GGACCATATACGAAAAGCAACTAGGGCGGTACGTAGTTGGTGCTCGAGCA
-AATTATTTCCTCAATTCATTGGTAACATGCCACACATTCACCGTTTTAAT
-ACTGGGAAAAGAGTTCCTTTCAATCCCAAGAGACTTTTTATACCAGCTTA
-TTTCAAAGTGGAATGTTAAGGATTTCAGACTGGAGTTCCGGTTCGAAGCT
-TACAGTGGTCATTTTAATACTATGTTTAGTTCAAATATGGATTTCATTTT
-GGAAACGTCTAAAGACTTTTCAAATGCCGTATTCAATGTACCATTCAACA
-CCCAACCCGTTTCGAGGGTTCTTCTGGAAAAAGTGGAGATCGATTTACAA
-TACTCTGAGGATATGTTACTCGAAATGAACGAACAACTGGAAAACGACTA
-TTATTCACCAATGGACAATGTGATTGCAAATGTTCAACGAAACTTCCCAG
-CCAAGAGTATGACTGTTCTACTTCCTAAAACGTATCTCCTCATTACTCCG
-GACAATATGGACAGAGTCACAGCAAAGCTAATCCGATTGACTGAACAAAA
-CAGCCAGAGAAATGGAAGTGTCACATTCAACTTATACTATCAGCATGACA
-AAGGAGAAAAACATATTCCAGAGGATATCCCAGACATTTTCAATTCAAGA
-GCACGTCTTGTAGGTGAAAAACCAGTAGATTGTTGGTATCTCGATGATAT
-TTTAAATATCCCCAAAGAAAATTTCAAGGATGGATTTGGAGAAGTGACTG
-TCTGGTATGGAAAAAGCTTTCAAATAAGAAATTCCACAGAAAATCGAAGA
-ATGAATTTTAATATATTCTATACCAAAAGCTATCTGAAAAAGTTCTTCAA
-TGAGAGACATAGTAGATGGGTGAAAACTGGATTTTTATTGCATTTCATGG
-ATCTTATTAATTGATTTTATGTGTATTTCTGTTACTACTAATAAAGCAAA
-TACTCTGTCCGTCCAAACCATGTAGCCTGTAGACCTCGGACAAGAGTTGG
-GCGCTGCCTAAAAAATGAAAAAAGTCGTCAACTACCTCGTCGTCTCGAGG
-CGTCGCCGAAGTCTTACCTGCTGAGCCATGATGGTCGCGCGGAAAGATGC
-ACACTAGTAATAACATATCGTACTCATATTCTGATAGTTTTTTTTGGGGA
-AGTGTCAGACGTATCTGATTGATACGGTATTCTCACATACCTTATTTCAT
-TCGTTTTCAAGTGTGCTCACTAAGGATTCTAATAGTAAGTTCAGAATTTA
-CAGAATTACTGTAATTCAAGTTTGTTTCATGTCTTTCAATAACAGACAAT
-TTTATAAAATTTTGCATTTCAAAGGAACAGTTCAGTCTTAGAAAAATTCA
-AAATTTGATCCATGGGATTGACTGACTATTGTTTGTATACCAGCCGTTCG
-CACAATGCGAGTGCTCCGACTGGCGTACTCGAAATTAAGATGAAATTCTA
-AAATTTCTAAGCCTTGGAACGTTTTTCTCAGTCTTCCAGAAGTTTTTAAA
-GCAACATGAATATTATATAACTAAGTTTTCAAAAGTTACAGATGTTTTCG
-GCCGAAATTAGACTATTTTGCAATATTTTGCGACTTTTTGCTGAAAAATG
-GTACCCATCAGAGATGTGCGGCATGTGCCGAACGGCATGTGCCGATGTGC
-CGAAAATTATTCCACTCGGCACATCGGCATGTGCCGACCTTTTTTGTCGG
-CACATTTCGGCACATTTCGGCATATTCGGCACTGTCTGGAATATGTACCA
-AAATTTATTTTTTAATTTTAAAAATGCAAAGAAACTTCAAAAAATTGATT
-AAAATTTTCGGAATTTATCATTTCAACTTATAGTTTACTAACTTCAATAT
-TAAGACAAATGCACTGCATTTTTTATGGGGTTATCCAACTGAATGTTCCC
-GCTTTTTCCTCCTGTTTCCCCCCTCTAGTCGCGATCCAACTGGGAGGAAA
-AATGCATTTTCCCCTCGTTTTCGCATTTTTTAGCTGCGAAATTTCAGAAC
-TGAGCTTAGGGTGGGCATTTATAGACTTTTTTTAATTTTTTTTGACCAGA
-AAAAGTTAAATTTTTATAGTTATTTTACCAATTGGACCTTAAATTTGAGC
-TATGATATCTTTGTGGTAAGCCAGAGTCATGGTGAGTGATCAACTACAGA
-GTTGTAGCAAATTTTCTGTTTAAAATTTTGTTAGTTGATCAATTCTTGGT
-ATCATAGATTTTCACAGACTAACATAGCTGTGAAACTGGACAATTTCTTA
-ATGTAAATTGCGTACACGAGATTTCTCTATTTTCCGCGTGGAGTACTAAT
-ACCAAAAATTGATCAACTAACAAAATTTTAAACAGAAACCTTGCTACAAC
-TCTGTAGTTGATCACTTACCATGACTGTGGCTCACCACAAAGATATCATA
-GCTCAAAGTTAAGGTCCAATTCATTTTAAAAAAAACTATAAAAATTTAAC
-TATTTCTGGTCAAAGAAAGCTGGAACCGCATTAAAAATTATGTTATTTTA
-GTATTTCAACAAATGTCTAACTGTGAAAATTAAAAGTAAGTTTGAAAAAA
-TTTCTTTAAAACATTTTTTGATAATTTTTTCATGTCCTGTGCAGATTTCA
-AATTTTGAAACAATACTTTTAATTCTCATATATCTCCGTTGAAAAATTTT
-TTATGACAAAGTGATCAATTACAAAGTTGTACTTTGGATTAAGAAAAAAA
-AACTTTGTAGTTGATCACTTTGTCATATAAATTTTTTCCACGGAGATATA
-CGCATCCGAAGTGAATGAGTTTTCACTATCAATTCTACTAAACCCTATGT
-TTTTGTCTGAAATCGTGTTCAGAACATCCAAACTGAAAAAAACAACAAAC
-ATTGCAAGTAATTTTTTGTTATTTATTTAAATTGATGAACTTTTTGTTTT
-TTTTAAGAAGCTATATAGTATCTTTGCAAATGTGCCGAATGTGCCGATTT
-TTTTAGGTTCGGCATGTACCGAGTGCCGAGAAAAAATTAATTCGGCACAT
-CGGCATGTGCCGATGTGCCGAAATTTCAACAAGTGCCGCACATCTCTGGT
-ACCCATCGTCTCGTCACGACAAATTTTTGTTAAATTCGAGTATGTGTGCG
-CCTTTAAAGAGTACTGTAATTTGAAACTTTCGTTCCTATGGAATTTTCTT
-TGACTTTTCACTTTTTCCTCTGGTTTTTATCCAATATTCATAGAAAAAAA
-GAGAAAATTTTTCTAAAAATCGAAAGTTTGAAGTTACAGTACTCCTTAAA
-GGCGCATAACGTTTCGGAATAAACAAAAATTTGTCGTGGCGAGACCTGAG
-TATTATTACAGGAACGCAAAATTCGGAGAATGCGTTTTACACAACATATT
-TGACGCGCAAAATATCTCGTAGCGAAAACTACAGTCATTTTTTAAATGAC
-TACTGTAGCACTGGTGTCGATTTACGGGCTAGATTTTTATTAATTTCTGA
-AAATTGAGCACCCGTAAATCGACACTACTGTAGTTATTTGAACAGGATTA
-CTGTAGTTTTTCGCTACGAGATAATTTGCGCGTCAGATATTTTGTGCAAT
-ACGCATTATAAGGGACAAGTTCTCCAGTGAATTCTTCCAATTACATTGAA
-ATCCTTCTATTTTGAATACAAATTACTCAAAAGACAAAGTGTCGATTTAG
-CCTAAACATTGCGCATGCGTAATTTCTGAATCTTGTTCGTTCTTTACATC
-TGCACACTTGGGTAAGAAGTTGGGCAGCCTATGTTTTAGAGGGAAGTCAA
-CAATGTTATTTTCGCACTTGTGGCAACAGAGTTGAAACTACGGTACTGTA
-TATGGGTACACCTTTTAAAATTTTAAACAAAAATTTGTCTTGTTGAGACC
-GGAGCACATAGATATTCTCAGTGTGTATTTGTCTAAAAACCTGCCAATAT
-TTGAAAATCTTTCAAAACTTCAATATTTTGCTCCAAAAATTAAATTTTTC
-AAATAATCTACAAAAAGAATCCAATTTGACTGAAAACCTGCTAATATTTA
-AAAATCTTTCAAATGTATAATTTTTTTGCTCCAAAAACTGATTTTTTTCA
-AATAATCACAATTTCAATTTTAATTTCGATAAAGATACACAAAAAAAAAG
-AATAGCATTTAAGGATTTCCTTGTTAAGCTTCAACAGCGTAAGGGAAGGC
-CTCGTTGGCAATCATCATGCGTGTAAGTTCGGCGGCGCTGAAAATAAATT
-TTTGATGTTTAGCTTGCATGGTATGTATTACTGATCCCTCAACTCCGCCA
-TGGTCCGACCCTGACGAAGTGGTATCTCTCCAGCATGGTGAACTCTGACG
-TGATTCCAGTGCACAAGCCTTGTTGCAGTATACGACAGCCCACAGATACC
-GCAGTAATACGGATAGGGAAGGGTATGCAGATGGTAGACGTGGCGAGCCC
-TGAATGTTGAAACTGACTTTTTGAAATGACTGGAAAAATAATTACAAGTC
-AACTTGCTGTCCGAAATTCATCATTACAAATGGAGCATTGGAATTGTTGA
-GCATCAGGAGATTCCGAATTCCGATGGGTATCTTGAGGCTCTTCCATTTC
-CTGAAAATTGTAATTTTAGACTTTTTAGATAATATTCACAAAATCTGTTT
-AGGAAAAATTAACTACTAAAGTTACAGTAAGAATTTTGCTCTGAATTTGC
-TCATAAAGGAAATTTTTTTAAGCTTGCACCCTGATTTGTTTAAATTCTTC
-AATCTTTGGATTCCTCGCAAAAAATTCAATTCAGTCTCCTGGGCGTCGAA
-TTGCGATGGAGCGCGCTTGCCGTGCGTTGGCGCAGCCACGGTGGTTCAGT
-TGTAAGATGGGTGCAAACGCGCTCCACAGAGTTTTCGATCCCCAGGAGAC
-TGTGTCCAAGTAAACTGAGTGGTAGCTTTTTTGTTCAAAAAATGTGCCCC
-GCCCATTGGAAAAGCATGACCTTGTAATCGAAAATCCTTCAAATACGATT
-TCTATTCAAATTTACGAAACTGAAAAAAAATTAATTTTACGAACACTTTG
-ACGTCCATTCGGTGAGATTCTTTCAGGTGTGAATCGTTTTCTCTTGTTAC
-GAGCATCATTTGGCTCCGGCACCGCCATCTGACCGGCCTAAAATAAGAAT
-GTTTAAAAAAATATGCATTTAGGAAGTTTAATATTCAAAACAGAAGAGAC
-ACATTCCATATGAAAACAACTTACATTCTGAACGTTTCCAACGTCCGCCG
-ATTCCTTTACACCGTATCGATCGATTAAAAAATCGATCAGCTGACCGTTG
-AGCAGTACATCCTGGAGCGAGATGGTGATCGGAGCCACCGGTGGTGCAGT
-CTCATCGTCTGAAGATCCAGATCCGAAGGCATAGCTGTCCGAGTGGATGG
-TGTTGGAGTGGTCGAATTTCTGAAAATTGACCAATTTTTGATTTTTTAGA
-CTTGAAAAGGCCTAAAAAGGACAAAACGAGCCCCAAAAATTTGAACAAAA
-GGGTTGAAATTTCATATTTTGTTAATTTTTCTGTGTCACAATTTTGATTT
-TCAATCTATCGATATTTTGAATAAATTTCAATTTTTTCGGGAAAATATTG
-CAAAATTTAGTCATTTTTCCTCAAAATAAACCAAAATTTGATTTTAAAAG
-TTTGGAGAATGAATTGTTGAACTTGGAAACACCAAAATTAGCTCTAAAAT
-TTCGAAAAAATGGGTAATTTCAACTTTCCGTATCTTTTCAGTTTGTCGGA
-ATTTTTAAAAAATTTTATTACAGAAAACCACCAATAATTAAAATCTTGAC
-TTTTTTTTTAACCCTAAAAGATTTTTTTCGAGAAAATATCTTAAAATTTA
-GTCATTTTTCTTCTTTTTAGGAGCTATTTTTATGTTTTTTACTTTTTGTT
-CCGTCAAAAACAATTTTAATTGTAAAGGTTTTTTTACGATTTTTCCAGAA
-AAACCGGTAAATGACACTATTACGGGAACAAAAAATTTGGAAAATGCGTA
-CTGCACAACATATCTGACGCACAAAATATCTTGTAGCGAAAACTACAGTA
-ATCCTTTTCAAATGGCTACTGTAGTGTCGAATTACGGGGCTCGATGTTCA
-GAAATTAATTTTTTAATCGAGCCCCGTAAATCGACACTACAGTAGCCATT
-TGAAAAGTATTACTGTAGTTTTCGCTACGAGACCCTATTTTGCGCGTCGA
-ATATGTTGTACAGTACGCATTTTCAGAATTTTGTGTTCCTGTAATAATAC
-TAAGATCTCGCCACGACAAAGCGAAAAATTTTTATCGATTTTTCAGCAAT
-TTTTCTCTTGTTTTCATAAAAATTGGGCAAAAACCGGAGGAAAAAAGTGA
-CGAATTAATAAAAATTCCATGGCAACGAAAGTTTGAAGCTACAGTACTCT
-TTAAAGAAGTGCACCTTTTTGGATTAACAAAATTTTGTCGTGACGAGACC
-CTGGATACCATTTTTCCGGCGGAAAAGTCGCAAAATTAGCGATTTTGGGA
-ATTTTTCGCGGCGAGACAACTGCACAACTCGACATGCGAGTTTATCCTTG
-CAGATGGCCAAAAGCCCTCCGTCGATCATTTGACGAAGCAATTCCCTGGT
-GTTGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCATTTCGACTGTG
-GCAGAGCCCCACGAAGAGCGTCGTGGATTTGGTGAGCTTCTCGAACACGG
-CTTTACGAATCTGATCTTCGGAATTTAGTGGATAGTTGGCCTCCAAGAAC
-CTTACCCCCGATGGATAGATTGCGAAATCGATGAGCTGCCCGTTGAGCAG
-CACATCTTCGAGCGAAATGAAAATCGGAGCCACTGGTGGTGGGGTCTCAT
-CGTCGGATGATCCCGATCCACTGTTGAGGATAAAGCTGTCCGAGTCGGAG
-GAGGTGGTGTTGCTTCCGTGGCGGTAGGGGAGAAGCTTGACCGGCGGCTT
-TGGATTCTGGAAATTCGAATTTTAAACTTTTATTATATTTTTATTTAAAT
-TAGAAATTTTTATGCAATATTTTACCTTGTTCTTGTGAGTTTTTTTCGAC
-AAAAGCGAGAAATCCGGGTCGAAATCGAACGACGCGCCGAGCATGTTGTA
-CGAATCCGTGCTTTTACGATTCGGAGTCATTTAGACAGAAAAATGAATGA
-ATATAGGTTAGTAGACGCTGAAAAATTGGGAATTTTGGATTTTTTAACGG
-AAAAACGAGTGAAAATGAGAGAAAAACATGTAAATTTCAACGAAAATCGC
-GAAATTACCGCGCATCGAAATTCAAAATTGAATTTTTCGCGGTGGCCCGG
-GTTACGGTGATTTTTAAAGGCGCATGGTTGTTTTGAGTGAGGTATTGACG
-CGAAATTTAAAATTATTGAATATTTTTTTCTTATTTTTACATTTTTGAAG
-AAAAAAATGATTAAAATTCGATTTTTTAGGGAAAATTAAACATTTTCACA
-AAAATTGCAGGAAATCACTCGCCAAAATTCAAAAATGAAGAGTTTCGTGG
-TGCGCCGGGTTACGGTGGATTTTAAAGGCGCATGGCTGTTTTGTATTAGG
-TCTCACCACGAAACTTGGAGTTTTTGATAGTTTACTTCCTATTAGGGATT
-TATTTTTTTAATTTTCGCTCGATTTTCACACATTTTCACTCATATTCACT
-CAATTTTTTGCAGAAAAAATGTCAATGGACATTGTTATGAAGTCAGATGA
-GCAGCCGTTCATCTCTGCGCCTGTATGCTTTAAGTAAGCTCCAATTTTTG
-TTATTCTGGCCTAAAATTATTTTTTTGATTTCCAGAACGTTCGCATTTTT
-CGCCAAAGCATCCGCAGAGGAATGCAAACTTCTAGCTTCGGGCTCCAACG
-CTCGAGAAAGTTTCCAGCAGGCCACGGGGCTATCGGAGAAGATCACGGAA
-GACATTTACCGCCAAATTGAGTAGGTTTTTCGATTTTTTTACCCTTAAAA
-ACTACTATTTTTCTATTTTCCAGCGTCTCCCACATTTCATCGATGGTCTT
-CAACAGAGAAATGGACGGTGGCATCGAGAGAAATCGGCTCGGCTCGCAAG
-CGATTCTGCTCGACGAGAACTCCAGGCGCCGCAATCCACAGTTCAAATCG
-ATCGCGCTCCGCTCTCTCCGCTACGATCACATCGATCATAGAGCGTTGGC
-AAGGAAATCGCCTCATCTGATGCCTCCGACTTATATCAAAGAGGAAATTA
-TGGATGATGAGCTCGACGAGGTGAAGGAAGAAGTGGTTTCCGTTGGAGAA
-GCCGCCTTGCCCACGCCAAAAGTTGAACTGAACATGGACCATCCGGAAAA
-GGACCTGATCATCAGCATTTCCGTGTATCTCGGCTACACCCGTACCCTTC
-AATACCACGAGATTCGTCTCGGACGTTTGATGAAGGTCACGGATCGGCTC
-GAGCTCACCGGAGATCACACGCTTCGCGATCTGAAAAACGCGTTCTCGTG
-CCCCATCGATTTCTCGTTTTCCGACGATTTTAGCGAGAAAAAGCCGTCGT
-TCAAGGATATGGCGAAAAATAAGTGGCCGTCGTCGATGTTCTTCATTCAT
-GACACGTTTTATATCGACTCGAACACTGGCGACAAGTTTGTGGATCCGTC
-GATGTGAGCAAGGGTGCCGGCTAAAAGTTTTTCAGTGTTTTTTGAGCGAA
-AAGGAACAATTTTTTTCTGAAAATTATTGATTTTTCGTTAGTCTTCAGAA
-AAAATGATTTTTTACGCCGCAAAATCGGGAAAAAACAAAAGAAAACTGAA
-AATTAAGACATTTTCGTTGATAAAAACGAATTTTTTGGTTTTTTTTTTCA
-GAAATATATTATTTTTTGCTTTATTTCAACAAAAAAAACCCAAATTTTCA
-GCACAATCCGAAGTTGGGCCAAAAAGTTCGACTACATCGGTCCGATGCAC
-GTGAAACAGATGTCGGAGACGAGGATCGGGGATCTCATTTGTCGGCTCGG
-TCAGCCATACGTCTACATTCATCAAGGCGTCTGCGAGCACCTCATCGTCT
-TCAATGACTTGTGCCTGAGGTACGGAAATTCTGGAAAAATCGAAAATTTT
-GATTTAAAAAAACTCAAATATTTATGTGTTCTTTTTTTTACTAAAAATTT
-TTTTCAAATTGTTTATGAAAAAAACACTAAAAAATAAGTTTTTATCAATT
-ATTTAAACAAAATTTATATTTTCCGATTATCAAAATTGTTTTTTTTTTTC
-AAATAAAATACCCCGAAAAATATATATTTTTTAATTTTTTTTTTCTATTT
-TTTGCAGAGATGAATCCCACACAAACGTCGAATTTCCACGCCGCCTCGTC
-GAACGGAATTTCAGAAGAATTGCATGTGACACGTGCAAGGAGGCGTCGGC
-GCAGTGAGTAGTAGCATTTAGAAATTCGGAATTTTTTGTGAAACCCCCGA
-AAAATATAGTTTTTATCGGAGTTCGAATTTTCGAAAAAAAAATCCAAAGA
-GAATCGATTAAGGCAAAAATCATCAATTGAATCCAATTTTTTCAGCTGGA
-TGATCGTCGACCACGACAATCTGCTTCCCAACTCGCCAGGCTATCTGTGC
-TCTTCGTGCTACAAGGAGTTCTGTTTCGACGTGAACGGCAAAAAAGTGTG
-CCAGTTTAAGGCCGTACCGTATTGCGATCGAAAGGACATTGGCGACGGAC
-GCCAGTTCTTCACCGAGCTCGATCTTTAGAGAACGAGATTTAAAAGTCTG
-TATCATTTTTTGTTGTTTTTTTTTAAATGTTTTTCGATTTGATTGTTTAA
-TTACCGATTTTTGGCCTGTAACTATATTTGTTGAAATTTCAAATTTCTTT
-TTTTTTAAATAAAATTTTTGTTTGCAAAAAAATTTATCCAATAAATAAAC
-GGAATATATCGATGATATGGCAAGTAGGGGGAAACGGACGGGAAAATGAT
-TATTTACAGAAAGGGCGCGCACCAGAGGTTTCTCGGGGGAGCCCCGAGGC
-GGGTGGCGGAGCTTGGCTCAAAATCTGTCGGAAAAATGGGTTAAATGAGA
-GAAGAGGTAACCTAGAAAATGAGATGAGAAATTCGGAAGAATTTTGAACA
-ATTTGAAAAATCGATAATGTTGAATTTTAAAATTAAATTTTATTGATTTT
-TTGAAAATCGATTATATTGTTGATTATTGATTAAAAATCACTAGAATCAA
-TAAATCTGATTTGGAAAAATCAAAAAAATCGATTTTTTATAATCATAAAA
-ATCAATTTTTAAAATCCAAAAAAATCGATATTTAAGAAATTGAAAAAAAA
-TCGATAAATCAATACATAGGTGAGCTCGTCTCGTCGATTTGTGTTTTTGT
-GATTGGTCCCGGCTGCTTTTGAGATGGTCTAGGCGTTGTTCCGTATGACA
-TTCTGGAAATTTTTTTGTGAGGCAATGACACGCCCACAAAATGGACGGTG
-GCAGAAATTTAATAATTTTAAATAATTTTCTGGATAAAAAAATCGATTTT
-TCCACTTTTTCGAGTGAATCGAAAATTTAAAAAAAACATTCAAAATTGTT
-CAGGGTCTCGCCACGAAAAACTCACAAATGCACGTTATGCGGAGCGTCGT
-CGGATTCCGGTGTGTTGCTACGGATCGTGTCGTCCATGCTCAGCTTCATC
-GTCGATTGACGTCGCCGTTTTGTGGTGATCTGAGCGAGATTTATTGATTT
-TTAAAGACGCATGGCCTAGAAAACACAACACTTCGGCCACGGACTTTGGC
-GGCCGAGTTTTCTAGGCCATGCTGCGGCATTTAAAGGCACATACCATGAT
-AATGAAGATCGCCAATCCGAAAATGATGACCAATGCGAAAGTGATGATTA
-CAATCATCAGCGATGATAAGGAATATGATGAAGTTTGCGTGGAAATAGAA
-TCGATGTACGCTTGTGACGTCATTCCTGGAAATTATTGATTTTTTTGGAA
-AAAATCAATAATTACTTACCGTCAACAGTAACACTCAACGAATCAATCTT
-GTAATCCGAAATCATAGAGTTATTGCGTGAAAATGCGGCTTCGAACCTGA
-AATGTTAAAAAAATCAATTATCGATTTTTTTGAAAGTTTTTGAAAGTTTT
-TGAAAAATTGATACAATTAACTTGATATTCCCCCGGAAAACCTATAAATC
-AATGAAAAAGTTAATATCTAAATTTTTTCCAAAAATTGAACTAAAGTCGA
-TTATCGATTATCGATTTTACTAATCATTTTTCAAAAATCTATCATATAGA
-CGATTCCTACGGAAACCCCGAACAAATCAAAAATCGATAAAATTGACTAT
-CGATATTTTTTTCTAAATTTTACTTTTTTCGATAAAAGTCGATAGCGTTG
-ATAATCGATTTTTTAGAGTTTTCCTCAAAAAATGGTAATAAAATATTTCT
-AATCGGTAAGAACTCACAAATTAACAGCCATTTGAGCATCACCAAGTGAT
-TTTTTGGTGAGCACGTCGGCTCCGACAACCACTGATCCTTTGGTCAGTGA
-CTTGATTTCAACATTCACAAAATTGTCGTCTCCCGAAATGGAATTGATGA
-ATTCTCCGATCTGGAAAAAAATCAATAATTGTTTAAAATTGATTTTTTTC
-AGATCATTTTTAAAATAACTAGTCTAAATCTATATTGAAGTCTAACTCAA
-AATTTTCCACAAAGGCTTACTATTAGGCTTAGGCTTAGGCTTAGGCTTAA
-GCTCAGGCTTAGGCTTAGGCCACGCGAGATGAAAACAAAAGAGAAAATTT
-AGTGAAAACAAGAAAAATTTCTTTTAAAAAAAAGAAAAAAAAAAAAAAAA
-AAGAGCAACAGCCATGCAATTCTTAAATATAACAGGTTCAACTACTATCT
-TCAAAAATCAGTTTAATATCGATTTTTCCCAAATGTCAATAATCCATTAT
-CCATTTTTGACTCACCGCTGGCACCAAATCTTTCGCTAATCTCTTCGCAG
-GGCCACTCTGAATATCGTTGAATTCCTCTACAAATTCCAGTGAAATAATA
-CGAAAAACTATTGGTGTTCGAATGGATTTAGCCGGAAGGAATACTTTCGA
-TGAGTTTTGAAGTGCCACCGGCACAGTTGAAATATCTTCAAAAGTCGTGG
-ATTCCTCTGATGAGGTGGAGGTGGTCTCTTCGGAGGAGGTAGTGACGTCA
-GTGGAGAGGGTTGATGGCTCGGTTTCGGCCATGGTTGTGTCCATTGTGGT
-TTCCATAGTTTTTGTAGTTTCCATTGTTGAAGAGGATTTCATTCTGAAAA
-TTTTGAAGTTTTGAATTTTTTCCTGCAATATATGAACACTTCCGAACCAG
-CAAAACTCACTAGGTAGTGTTTTAACTATACGGTGCGATCGAGTAAAAGT
-GTCATGCGATAGCTGGCATCTTAGGCTTTCAGAATCTGTAATTTGTTCCG
-GCGGAAGACCTCTGTGAGTCTGGAAATTTTCATCTGAAAATTTAGTACTG
-AAATCTGCATTTCCTATGGTTAACAGTGGATTTTTGTCTCTGGCGCCAAC
-AGAAGTCTCACCACAATGGTGGAAGGGCGAAAACATCGCTTCGAAGCTGT
-TAACCATAGGAAATGCACTGATTTCAGTACTAAATTTTCAGATGAAAATT
-TCCAGACTCACAGAGGTCTTCCGCCGGAACAAATTACAGATTCTGAAAGC
-CTAAGATGCCAGCTATCGCATGACACGTTTACTTTTACTCGATCGCACCG
-TATAGTTAAAACACTCCCTAGTCAGATATGTGCTCTACACTTTTAAATTT
-TGCAATCAAAATACTTGAATATAAAATTAAGAGATTTTTGAATTTACTAG
-GCCACCTCGAAAATTTCTAGGCCACGGCAGGTTGGTAGGGTGAAGCTGCA
-GACCCCATAAAGCTGTGAGAACGGTTTTTTTGCAAATTTTTTAAAACAAA
-CATTTGTGAAGAATCTGAATATTATCAGAACAAAAAATAATTTCGACAAA
-AAATAATAAATTTTTTTATCAATATTCAAAATTTTTAACTTCCGAAAAAA
-CTCAAAAAAAAACTCACCCAGTCGTAGTGCTCTCGACCATCTGCTTCGTA
-GTTTTCGGGATATTCGACAAAATCTTTGGCTCTTCCTCAGACATTTTCAG
-AATTGGGAATGCGGGGCTCTGATCTGTGCTCAATGAGCTATCAATAACAC
-TTCCATCCTGCTCAAAAAGTCCTTCCAGTGCACTTTGATCAAATGGTGTT
-TCTCCGTCATCTCCAGCTTCTGATGGGTCACTTACTGCGACGGTGGATTG
-GGTTGTGGTCACTGTAAAATTGGAAATTTGGAAGAGAAAAACCTCGGCCA
-TTGGTGACGTCATACTTTTCGCCACTTCTTCGACCAGCTATAATGCCACG
-CTTTTAGCAAGTTTTATTTTTGGTAAACCAAAGAGCAACCAATTTTAAAA
-CTGTGTCTCCAGGTTTACCGCCAACTTAAGGGCGTGTCCGTACAGGGTTT
-GCCCGTTTTATGGGCGTCGCTTAATAAATCATTTTTCAAGTTTTCAGTTT
-CGTGGAAAATTAGCATCCGGGAAATTGAGTCATAAGTATGACGTCAGCAG
-CCGCGCGGCTTCCCATGACGTCACTCCATGCGCTCCCCCGACGTCCCTCT
-AAGACGTCACCACCTCTCACCTGGTTTAGTGGGTCGTGTCATCTCCTTCT
-CTTTCAAAACTCGTCTATCAGCGACCTCGTCAACCTCAATCGGAAGGGAG
-CTGAACGTAATCACCTCCAAGGGAGTGGTTGGCATCATTTCAGTCGTATT
-TTCAGCGGCGAGAGTTGTTTTCTCAGTGGATTCATCCTGATCCTCCATAC
-TATCATCTTCGATTGTTGCCTGGGAGAAGTTGAACATACCGCCGTCAAGC
-GGAGTTATTGGGGAGAAGACGGACGTTTTCTGGATTGGGTTCACTTCTAG
-GGAGGTGTCGTTCGGCGAGAGTTCGATCATTTCTGTACTTGTCTCGAAGG
-TATCTGATCTGAAAGTTATGACATTTTTTTGGTGGTGGCCTGGGAGAAAA
-CTAGGCCTCCTGGCCTAGAAATCTCAAACCTCGGCCTCCAGCTCTCACTA
-GCTGACCTAGGTTTACTAAACATCGGCAAGACCTCTTTTCGACTACTCCC
-TTACAAATTTTTAACAGTTTTTCATCACACAATTTTCCGATTCTTACCCC
-TCATTCATCATTTCTTCTTTCGGAACAGCCATCATCGGCATATCATCATT
-ATCAGGCATTACGGGTGTCGTTGTGTCTTTTGCCAGCGGTTTGTCGAACA
-CATCTTCAGAATTTTCGTCTTGCGCGAAGGAAACTGAAAAAGTTAAATTA
-CATTTTTTCTAGGCCACCAGGTTTTGCATTTTGGCCTAGAAAATGAAATG
-AGAAGCTAGACCATGTGGGTTTATTGCGAGGAAAAGCTATCCCACGAAAA
-CTTTTATAAGCGTCTAGAAAAGTAGAAACCTCGGCCACCAAGTTTTGCAC
-TGTGACCTAAACAATTTTGGTAAAATAGGCCAGCAAAATTTCCATGATGG
-CCTCAGGAAAACTAGGCCATTAAGGTTTCTTCCGTTACCTAGAAATTTTG
-TAAACCTAGGTCACCAGGGTTTCTAGGCCACACAAGAAAAGCTAAAAACC
-AACATTTCAGATCGGTCTGGAAAAGTGCAAAATTAAGCCACCAGGATTTG
-CATGGTGGTAAAAAATTGGTAAACGTGAACTAGAAGTTTATCGGTCATCA
-ACTTACGTGTCGTTGAAAATGCAATGAATAGAATAAAACCAAATGGTATG
-CGCATCGCTGAAAAATTGCAAAAATTAATTTATGTTTTGGAAAATCAGAA
-ATCGGAGTGTTCATTTTTTATGGGACAAGATAAAAAGAGATGGAGAAAAT
-TTATATGATATATCAGGTCAAAATGACCTTCGGAAATTGGGAATGAAAAA
-TCAAAATTAATTCGCGTGGAACTGGTTAAGATGATCGAAGATTGAAAAAT
-TTGACAGAAATTGCAACAATACTAATGCAAAAAGTTGGTAAAATATTTTT
-TTCAGTTTTCAGAAAAATCGATAGCAAAAGTCTTTTTTTTTAAATAAAAA
-TTTCTGAAATATTTTCGCTGCGAGACCTAAGGTGACAAATTGGATTAAAA
-ATTTTATGTGCCCATTAAGAGTTTTTCTGGAAACTGAAGAGAAAGTCGAA
-AAATTAATATACCCTACTTAAATTTAAAGGCGCACGGATGAATTTCCAGA
-AAACTAAAAAAAAACATCACAAAATTTGATACTCCAAGTTTAAAGATGCA
-TGGGTAATCTTTGAATGAGAATTTTGTTTTAAATTTTTGAACTGCCATTT
-CAGATATTATGAGAACACAAAATTCTAATAATGCGTATTGCGCAACATAT
-TTTGCGCTCAAAATATCTCGTAGCGAAAACTACAGTAATTCTTTAAATAA
-CTACTGTAACGCTTGTGTCGATTTACGCGCATCAAAATGAATTAAGATCA
-TACATTTACCGACAAAATATTAAAATTAGGCAAAAAATAATACGAATAAT
-GCATTTCGTAAATCGAGCACGTAAATCGACACAAGCGCTACAGTAGTCAT
-CAAGAAAAATTACTGTACTTCTCGTTACGAGATATTTTGCGCATAAAATA
-TGCTGCGCATTACGCATTCTCAGAATTTTGTGCGCCCGTAATAACCATTT
-GTTAAATGCTTAAAAAATTCAGATTTTATTGAAAAAAATTTTTGAGCAAA
-ATTTTTCGAAAAATAAATTTCGGCAATAAAATATTATTTTTCCATCGAAA
-AAGTATCGTATGGTGTGCTTGACATAATCTTGGTAAAAAGTGGCATATTT
-TGAAAACAAAAGGGGTTACCCCCTTCCTTCAGCCCGCCCGCCCGGGAAGC
-CTGGGCATGCGCGCAAGTGATTGTTTTGTCTGTTGTTGCTTATGTATATG
-CTTATTATTTACACATTTGTGTGTGTGTGAGTGACTACACTGCACACCTC
-TTGAAACGGATTATCCGGCCGTGGTCGAGGAGGGCCGCCGAATTATGCAC
-ATTCCTATGCTATGTATTGTGAATACTTCATTTCAATAACTTTATATATA
-TACAGTTAGCACATACGATTTTTGAAAATTGGGGTTGTGGAAGAGTTTTC
-ACACAAGTGGCCTAAAGTTTTTGAGTTTACTTTAATACTTCTAAATCACG
-TGGTGTCAGGCGGTCTCAATACAATTTGATCTACAAAAAATGCCGGCATT
-TTTTCCCAGAAAAATTGTGACGTCCGCACGCTCTCAACCATAAAAAATCA
-GATGAGATCTGCGTCTCAACTCCCGCATTTTTTGAAGATCAAAGCGAAAT
-GGGACTTTCTGACTCCACGTGCTAAATGAAATGTACGTTAAAAAATTATC
-TCTGGAAATTTGGAATTGCTCGGTGGAGCGCGTTTGCCGCTTAGTAGCTG
-AACCGTGATAGCTGCGCCGTGAAGAGAAGGGAAAAGTAAGGAAGTTATCA
-AAACCAACGACGCACTAATGAAAAGGAACACAAGAAAAAGTGAAAGTGTT
-TTTTTTTGGGTTTTTGTGATTTAGTTCGTGTGTGATAAAAGTTCAAATGG
-TTCGGCAGGACAATAGGAAGGAAACTGGAATTTTATATTTCATCTCTTGT
-TAAATTTACTTTTGTAGGTGTATGATTAGGTAGTGTTAATAGAAATCGGG
-ACTCGTGGCCTATCATTTTTTTGTGGCCGAGTAAAAAAATCTTCCACATT
-CGTCAACCATACGTGTGAATTTAAAGGTAATCTATAGGATATGATATTGG
-TAAACTTTCACAGAAATCCTAAAGCTAGGTTTTGAACTATGGAGCTTTGA
-AGTTTCTAGGCCCCTTTGGGAAACATAGGCCACCAACCTGAGAAAGGTAA
-GGGGAGGGCAGGGTACATAAAATACAACTTTTTCTCTGAAGTTTTTTTTA
-ATTAAGCGAAAAAGCCGACATAAATGTTTCAGTCATGGCCTAACTTGACA
-TTGGTGGCCGATTTTTTCGAAAAACTCTTCCACGATTTAGAACATGAACT
-TGGCAAAACTTCAAACAAATCCTAGAGATAGTTTTTGAATTATGAAGCTT
-TGAAACTTCTAGACACGTTGAAAAAGTTAGACCTCTTCCACTGTCATAAA
-CTTATAAATTCACAATTCAAAAATTATAGATTTCTTTCATATGTAGAATT
-AGCCCAATTTTTAAATCCATTGCACGGCTAGATTTGAAATCATAGCAATT
-TGAAAATTCTAGGCCACGCAAAAGAAAATTCTAGTTCATGGGAGTTGAAA
-GAGAGTCTCGGAAGCTAATTTTAAAAGCACAAGATAGAGGAAAACCAAAA
-ATTTATAAATTCATAAAAATCCAGTTTTTTAGCAGCTATGTGAAAAGGAT
-TAGAATTTCAACACGGCCACCACCGCCGGAGATACAATCATTTTGGGAAT
-ATATGTCGTTTTCGCGTATTTCTCACCAAAAAAAGATTCAAATCTTTTAA
-TACGAAAAAAAGTTGGAAAAGAATTAGAAAAATGCTGAGAAATTTTTTTT
-ATGAAAGCTTAGGCTTACAATTAGGCTTAGGCTTAGGCTTAGTTATTTTT
-TCAGTGTTTTCCAAGTGCAGAAAGGAAGAAACCGACGCTTCCTGACTTTC
-TATCACACACTGAGGGGAATTTCACCCAACCCCCCCCCCCCCCTCACTTC
-CCGCTACTACTTTTACTGTACACTTTCACCGAAAAGTTATTGTGTCATCA
-CGTCATTCGCCAAAAACGAATCGAACAAGGAGAAAAAATTGATGAGAAAA
-CGCAAGTGTTTCTTCCTACACTACATAGTGTTCAACACCCCTTCATGATA
-TGGCCGCGTGAAAACTCTTCCACGACCATAAAAGAAATTTACGGAACAAT
-CTAGCAAATTTTCATAAAAATCGGTTGGAAACTATAAAAGTTACAGGGGT
-TTGAATTTTCTAGGTCATGCGGAAAAAAACTCGGCCACGCAGGTTTTTAG
-GGTTAGGGAGGCGGTGTCTTCAAAAAAAAAGAAACCTCGCACCTAATGAT
-CCATGAATCTTCAAACAGAAAATGAGGTATAATCTTAGGTGGCCGAACTT
-TTGTTTCTGAAGAAAACTCGGCCAAGACCACGAAAAACGTATTTTTTTGT
-ATCGTTAATTGAAAAACTGAAAACAAGAAGTTTCTAGGCCATGTTGATAA
-ACCTTCAGTAAAAATTTTTCCTAAGCCATTAAATTACTACTGAACTGAAA
-ACCTAGGCCACGGCTTCAAAACATAGGCCACCAAAAACTGAAAGGGGGTC
-GTAGGACCGGAACCTGCTATTATGAAGCAAAGTTTTGTGCAATAAAAGTT
-TCAGAATTTCCAAGTTTTTAAACTATTTTTTGTCTGGAAATTATAAACCT
-GAAATTTCGGGTGCGAGACAAGATGGTCAAAGAAAAATAACGAGAATTCG
-GAGGGCAAAAAAATGAGAAGAATTTCCAGGAAAACAAGTGAAAGTGAGTA
-TGACTTTGACCTATACGCGTATTGTCTTTTTTGTTTTCTTCTTCTCGAGA
-AAAGAGAAACTGTCACAGCAGTAGTAGTTCTTCGATCACCTAATTACCTT
-ATTGCCCCCTTCCAGGAAGTCACAGTTTTTTTTAGGAAATGTGTGAAAAA
-TACACATTCCGCTAGGAAAAATTGAAATTGCGGTTATTGAGTTCCCTTGC
-CACGACAACGTGGCCTAGGATACCGCCATGCTCTAGAAATCCCGCTTGTA
-GCCTAGAATTTCCCATTGTGGCCTGGAGAAGTTTAGCGGGGCCTAAGACT
-TTTAATTGTGATCTGAGAGTTTTTTCACATGGCCTAAAATGCTATACGTG
-GTCTAAAATTCCTCATTGTTGAAATTTTTAGCGCGGCTTAGGATTTTCTA
-TTATGGCACTGGATTCTCGCCGTGACCTAGAATTTCGTAATGTGGCCTGA
-AAAGTTTAAGCGTGAAAAGTTTAAGTATTTTCAATCATAGCCTGGAGATT
-TTTTACAAGAATTCCTCATTGTGGCCTTGAATTTTCTATTATGGCCTAGA
-ATTTCGCATCGTGGCCTAGAAGAAATTTGCAGAGTGGTTTTGAAATTCGG
-TTTGTGACCTAGGGTGCTATATTGTGGCCTAAATTCTTCCATCATAACGT
-ATGATTTCACATTTTGACCTGAAAATTCTTTGCGTGGTCTAAGATTTCTC
-ATTATATTCTCGAATTTAACTTCGACACGTGAGAACAATTTTGATGGCCT
-AGAAATTGCTCCCGTGACCTAGGAAGTTTCAAATTTTTAAAGTTCAAATA
-AATTTCACCAGAAATTCATCAAAATTTACAATTACGGAAAAAGAATCATA
-TTAACCACTGCAACTTTTTTCGAACGAAGGACGAGGCAAAAAGGTTTCTA
-GGCCATGGCCGAGTCCCCGACAAATTTCAGCGGCCATTTATTTTGCTTTG
-TTTTTTGCGTGTTTTCTTTCGTTTTTCACCGATTTTTTCCGTTTTTTCTT
-ATCAAAACTAATAAATAAATATTTTTTGCAGATGCTAAAACAATTTCCAA
-GTGAAAAAATTGTGAATTCAGTCGGCAAGTAGCGGTAAAAGTGGTCAATG
-TAATATGATGGATTACGGGAATAAAAAACCCAAACTTTTTCCCAAACATG
-ATACATATGCTGTTTAGAAACACGGGAAAAATCGGTGAAAAACACAAGAA
-AACAAAGCAAGTACAAAATGTCGTAAAATGCGGTGTATTGTGTGCAAACA
-CCGATTTTTCGCATTTTTTCTCGGCCCTCGTTCGAAAAAAGTTGCAGTGT
-TAACGGCGGTGGAAGAGCTTTACCTTTACAAAAGGTGGCCACAAAAAAAA
-TAGAAGAAAGGATCCAAAAAGAGCAGGGAAGAGTTTTCTCAATTTGACGG
-CCACGTGTTCTATAGAAAAAGATAAATACAATAAATACGTTTTTTGAACA
-ATTAAAAAAACAAAAAATTTCAAGAAAAATTTAGAATATTTTTTCAGTTT
-TTTTCCTGAAATTCAAATAGAATAAATGGAAGTTCAACAAAAAAAGGTGA
-CCTAAATACTTATTAATTCACCTTCTTGACCTCTCGATTCTTCAGAAAAA
-AGAATAGGCTTCTCCTCCTCCCACCTCCCAGACACTTATCTACACTTTAC
-ATCATTCCTCCCGGCCCCCGGTTTTTTCACATTTTTCAACCTTGAAAATG
-ACGAAATAAACAAGTGTTTTAGATAAATGTTTCTGTGTATGTTATCTGAA
-ATCTTGGAAGGGTGTTGCAACAGAGCCCCGCGTGTAGCGTGGCCTAGAAA
-TCCAAAAAGTCTTCTTTTAGATCTTCAGCTTTCTCAGCAAGTTAGGTCTT
-AAGTCAAAAGGACTCTCCATGACCAAGTTATAACGATTTGTAGTTTCTAG
-GCCATGGAGTACTCTCCGAAGGGGAGACATTGACCCCCTGACGCCGGATT
-TGTAGGAATTTTCACGTGTTTATGCTACTGTAAGCGAGCTATATACGTTC
-TTCAAAAATATCCGTCAAATTGTGACCACCGTTTCAGCACTTTAAAATTT
-CTAGGCCACGCTGTCGCCATAATGGAATATTTTTCTCACGAGGAATAGAA
-ATTAAAAAAAAAACTCTTCAACTGGTCGATATTTGGAAAACCAAACTAAA
-ATGTTTCAGAATTATTAAAAGCTTAATTAAAACAAACAGCCACAAAAGTT
-ACCTAAACTGATGAAATAAAGACATAGGCATACAGATTTATAAATCCTAT
-AAGCATGGGTGTGTCACAGGTAAAGATTATGGAAAGTGAGGGAAAGTAGG
-AAGATATTACTGGAAAGTTCTGGGGGAGAACGGCTGAAATCAAAATGGAT
-TCGGTTGAACGCGTCGAATCACGGAGACTCGTTTGTAGGGCTTCCAGGTA
-GATAAAAAATGTTCTGCCTGAATTGGGCCAAAACACATGAATCTTCAAAA
-ACAAATTGACACAAGAAAATACATACTACTCCAAATTTTCAAAAATCAAA
-AAATAGGCGATAGGTTTTTAGATACTAAAGTATATTGAGCAATTAAACAA
-TTCACCCCCTACAACTGGCGGGCCCGCAGGGCCTGCTAGTCAGGCAAAAA
-ATATATGGCCCACACTCCCAGCGACAAGAAAAATTAGGGGATATTAGAGA
-CATTTACTCAAAAGGAGCATTACACAAATTTTAAAAATCTCAAAGCGGGA
-AATTTTTTTAATGCGTACTGAATAAGAAATCGACGTTTAATGAAACTCAA
-TTGCTACAACCCCGTAAACCTCCTTCACGTCCAATCAATAGTGACATGAA
-TCCTTCCGACCAACGTCATAAAGATTGGAGATGACGAAATTTAAGATGTA
-CCAAGTATGCTGGTACATACAATTTCTACGTCACAACATCTTGACAGTTT
-TTTCCCTCAAAGAGAGGTGAGCCTGTAGAAGAGATACAAACGCTGCGTCC
-TATCGTGGGTTCAGTTGTGGGGAAAAATTGTAAAAACTGTATGTACCAAC
-TATGCTGATGTGCCAACTACCAACCAGCATAGTTGGTGCATCTTCAATTT
-TGCCATCTCCAATCTTTATGACGTTGGTCGGAAGGACTTTTGTCACTATT
-GATTGGAGGCTTACGGGGTTGAAACAATCGTTCATTAAAAGTCGTATTCT
-TATTCAGTACGCATTTCAAAATGTTTCCCACTTTTTTTCGGCTTGATCTA
-CGTAGATCTTTAAAAAATGCGGGAGAAGATATGCAGTGTTCTCAACTAAT
-TTCGCATAGTTAAGAACGTGCTGACGTCACTTTTTTTTTGAGCAAAACAT
-TCCGGCATTTTTTGTAGATCAATCCGTAATTGGACAGCCTGGCACCACGT
-GTAAGAACACGATGCCTCTATTTTTGCCCGGGAGTGTGGGCCTTGAAAAG
-TTGTGAGCTGTAGAAAAATGGACAACAAGCATGTTGTCAGTTAGCAGCAT
-TTTATAAGTCAAGGACAAGTACAACCGAGATAAGTGAAAAGTTTGAAAAA
-TGGAAAACTTTCAAAAAACAGCGAAGGTTCTTTGATCGATGCAAGGGCAG
-AAAGTGAATAATGCATGTTTTTGAACTTAAAACAAATTGGCTAGACTTTG
-ACTGAAACTACCTTTTATAAAAATGAAGAAAATGAACCATTACGAAAATG
-TTAAATACACCTGAAAATTGGTGTGTTTTTATTGTCGTTCTGTAATTAAA
-TTTTGAATGATCGCTCTTCTGCAAAGAACAACCACAAAAAATAATTCGAT
-ATACTCAAGTATCGACACTTATGATTTGAATGCAAACATATAACAAATTA
-AAATTAAAATACGGTCATTATATTTTAGGAAAATTATGGAAATTTTTTAG
-GCTTATGATGTTTCAAAAACTTTCAGAACTCTAGTAAAAAACATTTTATA
-TGTAATAAAACACTCAGCGACTTTAAACTTTGCAAGACAATTTGGGACAT
-AATTTTGGGACATTGTAAGAACAGTTAATTGGAAAATAAAATAGTTATTC
-GAATGATCGTTCTTCAAACAACCTTACAAACAACAACACACCTACTCTGC
-TATAATAAGAAAATTTAAAATACTACTCAAGTTGTCACTTCAAGACCGCA
-TAAGTTTATACCACTCGAACAAAAAACAGTCTTCGTTCTTTCTTTCTTGA
-AAAGAGACATAATTGAAAATGAACTAATCAGCCGCTGCCCGGGATGGAAA
-AAAGAAAAGAAATTCCTATCATCTTTTGACCTTGTTATTTTTGCAAATCA
-TGTCTGAATAATACACTTTTTGATACATATAAATCAGGCGTGGGCGACAA
-ACAATTTTTCCGGCAAATCGGCAAATTGCTGGAATTGAAATTTCCGGCAA
-ATCGGCAAATCAAAAATGTTTGAAAATAGGAGAGTAAAAAGGTGGAAGTC
-AAGTGATGGTAAGTACCTATTTTGTTTCAATCAAATTAAATTTTACACCA
-TCTCTCTTTTTTTTCCTTATTTAACAGTCTTTGGTCTGTGTTCTGATGTT
-GAAAGATAAGGGAACATGGACGAGTTGTTTTTGGGAAAAAACATTCTTTT
-TGGATTATTTTAGTAAAAGAAAAATTTAAATTTATAAGCATATTCACTAA
-ATATTTTTGTGGGAATTTGAAAAAAAAAGAAATTAAAGAAGAAACTGATA
-AAAACTAGAAAATGTATAACTGGGAGAAAAAAGTTTCCAATTTTCAGAAC
-TTTTGAAAAATTGTAGAAAATAGTTCATGCTTTCAAAGTTGTAGGAAAAA
-ATAATATGTGGCCAATTTCCGAAAGAAAAAACTCTGCCACGACCAAAACT
-CAGAACTAGACTGAAATTTCAGTTGTAGCTGACAAAACCATCCAAAAGAT
-ATTGTAGGTTACAATATCTAGGCCGTGAAAATTAGAAAACTCGAATCAGA
-TATCCTTGGCCGGAATGCGAAAAAACAAAAATTAGAGTTTTCTAGGCCAC
-AAAAACTCGTCCACGTGTGCATGAACTGTCAAGTGGTCAACGTAAAAGGT
-GTGAAACCCTTCAGAGAAAAACACTAGAAATGAGATAAAGTAGGTGAGAC
-CTCCTGTCTCTGAGAAGCAACGTTCGAAATTCTTTTCCAATTCCATCTAT
-TATTATTATTATTATTATTATTAGGACGGTATGGCGCCAGGAACTGGTTG
-TTTATACTGACCACTGCCTCTTCCCGATTAGGATTCTGAATTTCGGATTT
-CGGGAAATTGAGAATGGCAGATGGATGTAATTTCATTAATCATGTTCCTC
-AATAAGTTAAGAAACAAAAGAAGGAAGATATAGTGAATCAGTGAGGAACA
-AGAACATAGCATATATGGAATTGGCGGTGTAAGACTGGTTTACATGGTTA
-CACGGAGGGAAAAAGATTTGAAAGTATTCGTCATCTTATCTAGGTAGTTG
-AGACACTTGATTAGTCATAGTTGAAAGAACAAATGGAAGAAGTTCATATG
-CTGAAAGCATCGCTAATAACATAATATTGGTTTTAAAGGTGGAGTACGGT
-CTGTGGGTTTTTAACCTAAATGACAGAATACAGTCCCAATATACCGAATA
-TAACTGTTAAAGATTTATAAAATTTATCTAAATTTTTTATGATTTTTAAA
-AAAGTTTTTTTTTTTTTAATTTAAAAATTTATTCAAAATTCCAAAAAAAT
-ATTTTATTCAAAACTAAAAACCCAAATTTTCTGAAACTTTACCATTTTAC
-TTATTTATGTCTTAACAATAATATACACATATTAACGAAATACCCACCGT
-TCAAAATTTGACTTAATCTCCAGTTTTAACTGCCAATGAGAATTTGTTCA
-AAATTCCAATCTCACACCCAATGTTTTTCTTTGTTTTTCATTTTAAAACA
-GTTCTATCCAGTTTAAAAATTTACCAAATAAAAATGTGTCTATTCCTCTC
-ACCTCCAATCCCGTGCATGTGTTCATGTTTACCTATTGAAACGTGTGTAT
-TACTATATAATACAGAACAAATATAAAATGGCCACTCTTGCACCTCCAGC
-GGAAAGAAAGCTTTTGAGGTGTTACGAACACTGCAACACTTTCCTATTTT
-ACTAGTTTTGAGCAATTTTCTGGTCCTTTTATTTATTTTTGTTTTGTCTG
-GAACAGGAAGTTGTTTGTGTTCTGTTTGGAAAATTAATCAGTTCTACCGT
-GAGATTTTTAAGTTATTTTTTGAATGGAATTTCAATTATTATTTCATTTC
-ATTTGTTTTTTTTTCTCACCGAAATCCACTTTTTTTAGAAACAATTTTTT
-TTTCTACATTTTTTTCCGATTTTTGTCATTCAATTTTTCAACTTCTCCAT
-TTTTTCTACAAAACACCGAAAACTACAAAATACCTAAAAATTGCAAATTA
-AAAAAATTTTTAAACATTTTTGCCCAAAAAATTGTTTTTTTTTTCAGAAC
-ATCTAAAACTCACTAAAAAATATGCTCAAAAATTTTTTTGAGAACACTTA
-ATTTTTCGAAAATCTTATTTTTGCAATATTAAATCCAGAGAAATTAGAAA
-AAAAAAACGGTTTTCTACAGTACTCCTACCCTCCCTCTCCAGTACTCTTA
-AAATATTCCTACAGTGTTCTTACAGTACTCTTACACCACTCCTACACTGT
-TCTTACAGTGATCCGATACTACTTTTATAAGACTCCCACAGACTCCTACT
-ATACCTATACCTTATCACTACAGTATCCCTGCCGTACCCCCCCCCCCCCC
-CCAGTACCTATACTTGCCACTACAGTATCCTACAGTATTTCTACAGTGCT
-CCTACACTACCTCTACAGTACTCCTACAGTACCATTACCAAAAATTTGAA
-TAGAAAAGTGAAATTATGAACATTTTTTCCTGTATACCAATTTTTAAAGT
-TTTAGTTTTGTAGTTGTTTTTGACAACGAAATCAATTTCAAAGTATTTTT
-CTTTAAACAATCGTACTTTTTGCGTACTGTTCTTGCACTTTTTGGGATCT
-TTTGGACTAAAAGTGCCCCCCGAAAAAAGCGCGGAATTAAAAGAACAAAA
-ACCGGATAGACTGAGGAGGTGTCGAACGATGGAATGAAAAAAGAAACAGA
-AATTAGATTTGGTTCAGTGAATTCTGTTTCTTTTATTTGGATTTTGGTTT
-TTTGGAGTCTTGGAAAAATGTTTTATTTTTGTTCTTTCCAAGAGTCCAAA
-CGTTTTTTTCCACCAAAACTCCAAAATTTTTAAAATTTGGAAATTTGATT
-CACTGCCAAAACTTCCAGAGAAATTAAATGTTCAGTTTCCCGTAAATAAC
-AGGGTTTCGTATCAAAAACTGTGAATTTTCCCGCCACCTATGTTTTTTAA
-AAATGATTATACTCTAATTTCCCGTCAACATTTTTTTATTTTGCGAAAAA
-TGATTATTTGAACATCCCAGAAAATTTTAAAAACGTCATGAGTTTTTTGA
-AAATTCAATTTTTCGTGTTCCTGTAATAAAAACCATAGAAACTGTTGACC
-TATAACCTGCCAGACGTTCTTCCTGTCTGTTTATACCCCCATCTGCTCTG
-CACACCAGACACCCCTCCTCCTAACTACACTTTAAACTGTTACCCCCCCC
-CCCCCCGTTTACCCCTCATTTGTTTTTTTTTCTAGTGCATCCCTTCCGTG
-TAACCTGACACTTTTTCCAAGAAGCTCGCATTTCTTAGGAGGAGCAGCAA
-TTTTTCGTTACTTAATTTTCCACACAGTAGGAAAGACAAAAAGAAAACGT
-CATAGAAATTAAAAATTCTGCGTTTAATTTTTTGTTCAGTTTCTGAAACT
-CAATTTTGTGGAACCGTTTTTTTCGATCTTTGTAAAATTGAATTTTTTTG
-ATTTTTGGAAAATTTGGATTTTTGCTGGAAAGTCAATTTTTGTGAGAAAA
-GGTTTGGCGGGAAATTTAAATTTATTGAGAAAAATTTTAGCGGGAAATTA
-AATTTTTTGATAGTGAGAAAAATTCAATTGAATACCTTTTTTGTGCGAAT
-TTTTCATAATATCTGAAACTCAAAAAATCTGAAAATTAACTCGAAAAAAT
-TTTCAAATTTGATATTTTGGCAATTCAAAAATTGCTTAAAGAAAATAACG
-GAACCTCGTTTTTTTTCTTTAAAAAAAGGTTTTAGTAACTTTTCCGGTAA
-CCAAGGTTACTCTTTCCCCATCAATCTCCCAAAAGCATGCCAGAAAAAAA
-AGAGAGAGAGAGAGAGATGCGTGTATGATTGTGTCATTTGACAGTGCGCA
-ACAGACACACATAAAACAGCTGACATCTTCTCTTTTTATTTCAACTGATT
-TTTAATTTCCCTCCTTGTGTTCTCTGAGTCTCTCTCATTTATTCAGTTTC
-TCGATTTTCTTCCAAATTCATTAATATTTTAATCTATGCGTAAAGTGGAG
-GAAGATTTCTTCTACGTTTTGATTTGCAATTTCTCGGGTTTTTCAAATTA
-TGGATTTTGAAAAAAAAAATTTCTGAAATTTATTTTTGATTCATGTCAGA
-AAATGAGTCTCCTGAATTTTTTTTGGAAAATATAAAACAAATTCTGAATT
-TTTTTTACTTTTTGATGTGTAAAACAAAAAAATTGATTAGAAAAATCTTT
-ATCTATTTTTTGAACTTTTCAATTTTAAAATCAAAATTAACTTCTAAGAA
-ATAAGATTTTTTTCGGAATTTTGAAAAAAAATGTTGTTTTTTTGAGATTT
-TAGTACATTCAATTTTCGTAAAATTCGAATTCATTTTTTTATTGTGCAAA
-TGTTTTCTGACTGACTATGAGAAAAATTTCAACATTTTGAAGAACCCCCC
-CCCCCCCCCCCCCCATTATTTGGACGGAGCCTGAATACGAAATGTGAGTT
-CTCAGAGAAGGAGGTGAACAATTTGATTGATGTGCATATGGAGATGCTCA
-TTGTGCATATCAGTTTGGAGCATCTATCTCAGAGTGAGCATGACATTTAC
-TTTTACCCATTTGCGTAGGCTCCGCCATTTCACGATTTTTTTTTTCCAAT
-TTTTGAACTAGTATAAAAATTTCTGAAATTTCTGTAATTTCTGCCATCTC
-CTCATAAATTCCATTGTATTCTTTGCACTATTGTTCCACAAAAGTGCAAA
-ATTTTCGAATTCGTAATGTGTCTTTCATATATATATCCATGCACTTTTGT
-CCCTTTTCCTGAATACTAATTTGGTGTGCTCCAAGAGGAAATTTTTTTGT
-TTTGTTGAAATTACTGCTCCTTTTCGGAATTTTTTAATTTCTGAGAAAAA
-TTCAATTCCTAAATGTATAATACTAAAGTCAAAATACTAAAGTGTAATGG
-TTTGTTTTTTGTTACAGTCTTTAGTTTGTAGCTTTTGTTTTGTGTAGTTT
-TCCAACTTTTTTTTTGCCAAAATGAAGGCTGAGAAACCGAAAAAAAAAAT
-TCAAAACATAGATTGGGCTGAAGCGGTATTATTGGTTTACTGTAGCATTA
-CTGGGTTACTCTAGTTTGGCCCATGTTTGGTGTACGTTAGTAGTAACAAC
-ATTTCGTTCATTTGTTTTTTGATTTGGTAACTTCTGGTGATTAAACTTTT
-AATGTACCTAAATCTTCTGTTGCATTATTGATTTGTTGTTTTCTTCTTTT
-TAAGTTAAACATGCTCAAATTAAATTCAAATTGAGTTGAAAATGCAAAAT
-TATTATCAACTTGAATACCCAAAATTTTGGACGGTATTTCAAAAAAATTG
-ATTTCCAGCCGCTTCGACCTTCGACACAACAAACGAATGCTAACTTTCCC
-AGGATTACACAAAATAGGTCAAAATCCCCTTTTCTCAATTTTTTGCACAT
-ACATCCTCATCATCATCATTGTAATGATCGTGACCATCCGGTCTTCTATT
-ATTAAATGAGAGAAGGAAAGAGTATACATATGTGTCTTTTATATTAAACT
-AATTATATTTCGACACATTCTGCGCATATCACTACTGCACTAGAATTACA
-TTTTAAGAATAAAATGTAACCAAAAGACCAAAAAGTTGTTTGCATTTATT
-GTTATAAACAGAATAGAATGAATGTTAGGAAACGTTATTAAAACTTGCAA
-AGTGACACAATTCGGTATATCGATTTCTCTGAAATTACTTAACTTAGTAG
-GCAGAGTTTTGATACTGATACGGATTTTACTAAATTTAATTTTTGTAAAT
-CAGTATTGCTTTTATAACCTATTAAGATTTTTTTGTTCCAGCGTGCAATT
-ATTTTTAATTCTATTTAGGATTTTAATAAATAGAAAAATACGTTTTGAAT
-TATTTTTTACGTTATAATATTCAATAGTAAAGAAGCACACATCAATTCCC
-CTATTCAGTTTCCATACTTTGCCTGATAAACATGAATAGTAAAATAGACA
-CTTTCATTTATACAGACACCCCCCCCCCCTTGCTTCCGGATTAAATCCCA
-ATAAAGGGTGTGGCAATAAGGCATTGTTGCAGTTTCATTGAATTTATTAA
-TCATTTGACAGCATGAAATTACAAAACTGGAGAATTTCTAGTTTAAACTT
-TTATACAATGAAGAAATCTTCCATAGAATCAATATTAAATTATCAATAAA
-TGAGTATTTACGTTTTTCAGCAACGGTATTATTTTTATACTTACTAGTTA
-TTAAGTTAGTAGTTAGTTACATTTTTAAATGCGATGCAGTCGAAATTTTT
-TTATAGACTAGAAATTGTCTTAGTTTCCAGCCACTGACAAGTCGGCCAAA
-TTTCAAACTTTCAGTAATTTTGCGTCATTTGTTGAGCCGCCATAACTCTT
-TTTTTGAGACGTTTTCAAGAAGTTGAAATTTGGTATTTTCAGACATTTGT
-ATCTTATTTAAAATATGAGTATTCACTCCTTTTACCTGCCAGTCGGCTGC
-CTCCTTATCTCCTATTTTTCTCTAATGAGCACACACCACTATCATCATTA
-TTATTACCACCTGTTCTTAATAATAAACATTTCCCGCACTTTATTTCCAT
-TTCGATGCATTTTATAGAAAATGTTCCCCCTTTTCGAGCTTTCCAATTAG
-ATTCACCCTTTGATTGCTCTTTCTTGGACGGAAGTGTTCCCCAATTCCCC
-TTCATCTTATTACATTTTTATGCAGATTTTATTGCATTTTAGTGCGCTAG
-ATTTTTCATGGGATTTTGCTAAATAATGCAATCACGCTCTAAATAAAATT
-CTCAGTTTATATTTTAATGTTAAAACTGTGTGTAAAATTTACAAACATAG
-TGAATACATTTTTCGAATAAAAGTATGAACATTTTTCGAGGGATCTATAG
-AAAATTGCCGGCTGTTCCTAAATGCCCTTTCACTGGTCACCAAGTTCCTG
-TTCATGCAATTCAAAAGAAATGTTCAGCCCCCCGCTCAATAGTCGCCCGC
-ACCACAAAATTGAAAAGCGAACATTTTACTAGTCGAACTTTTGAATTGAA
-CATTTTTGGAGTATTTTAAAGAAATGTTTTCAAGTCCACCAAAACATATG
-CCAGGCCACAAAAATTTCAATTTTCCGCCAATTTTTTTCTCACAAAAGTT
-GAATTTTCTCGAATTTCCGATAATTTTCGATTTATTTGAAAGTTATTGAA
-ATTTATATTTTCTAAAACACTTCCACAATAACAAATTAATAGATATAATA
-AAATTTGAAATTCCCATGCCACACCTCAAAAAGTGGCTCCCTTAACTCCT
-GAGTGCTCGCGGAGCCCTACCAAACTTGGAACATTCTTTTCCCAACGGAG
-TCATGAACATATGAGCATTAAATGAGTAGACGACATGTGTATACATAGGA
-CCACCACAGCTGTTCCTTCCTTTTTATGAGAAGACATGTCATACACACAA
-TGTCTCTTCTCCTTTCCGATTGGAAAATTAAAATTATAGGAGGGGGGGGG
-GGGGGGGGCGATTCTTGACATTTCAATTACCCCCCCCCCCCCCCCACATC
-CGTTATGTTGCATTTTGGTAGGCTTGGGGCCGAATAAGTCTCCCATGCAG
-GCGTCAAAACGTCTGCGGACCTACGCCTGCCTCACGCCGCGCCTGCTGTA
-CAGGAACCCGAAAAGTGTCGAACGCGGCTAAAGAACCACTTTTCGCACTA
-TGCGGTGTAAACACAAGGTTTTGATTTGTAGTCATAGTGCATATATGATG
-CGGGAGGCTGACAGGTAGGAGGCAAGCGTTCAACCGCGCATGCCCACCAT
-GGAAGCCCTAGAGCCTAGTTTTAGATGAGTTTCAGCATTTTTGATCTACA
-AGATTTTGAAAGTTTTACAAAAAAACCAAGATTTTTTGTAATTTATGAAG
-TGATTTTTCTACATTTCATCTAGAAACCAGCAGAGTTATTTTTTGGGTAA
-TTTATCAATAGAGCGCGTTCGCGTCATGAAAACAAAATGGCGGCCGAACT
-TTGAAAATCGATGGCTGAATTTTTCGGAACAAAAGTCCGTAGCTATAAAG
-CACAGGCCTACGTTTTTTTTGCTTTTAAATGACATAGTTTTCTAAAAAAA
-AGTCTGTGGCCGAATTTTTAAATTTTGAATAGGGGCTTATTTCAAAAAAA
-ATTTGAGGCCAACCTACTCTTCTCAATTATAACTTGCCATGGCAGAACTT
-TTGAACAACTATTACAACGTTTTCAAAAAACAAGTTAAAGCATTTTTTCG
-AATAAAGGTTAAATTGGTAGCCTAGTTTTCTCAAAACAAAATACTAAAAA
-AAATATCGATGACCGAAGTTTATATTTGAAAAAATATGTGACCTAGAACT
-TTTAACTACTCTTCCAATGTCTTCTAGCTTCTGAGAAAAAGTTCGTGGCC
-TAAGTGTACCACGATGGTCTAGTTATCTCGGAAATAGCCATAGCCTAGTT
-TTCTCAAAAAAATCGGTGGTCGAGTTTCCTGTATGTAGGCATGTAGGTAT
-GTAATTTTTATCTTCCAGGTATCTATTTGTACTTCCCGGTAGCCAGGAGC
-AATACTTTTGAATTCCTTTGCTCTCCCTATTCAGCTTCTCCCCTCACACT
-CGTTTTTGGTATTCTATTGTTCTCCTCCTCTTCCCATTCTACCCCCATTT
-CATTTTCCTCTTGGAGACCCCTGTCTCTCTCTCTTTGTATTGGCTCTTTT
-ACGTCTTCTAGTAGGCTTTTCCTTAATGAACTTGTGTGTGTGTGCTTGAA
-TCATCATCGCGTTCTCTCGTTCCATTTCCCTTTTGCAATTTTCTTTTCTT
-GGAGAAATTTGGAAAGTTTTGCTCAAAATTCCTACGTACACATGCCTCAA
-AATCTGGTTGTATATGGCCTAACATTCAATTTCTAGTGCACACAATAAAA
-TTTTCCGGGAAATTCAAATTTTCTGATAATGAGGAAGGACTTTGGCGGAA
-AATTCAAATTTTAAAAAAGTAGGCGGGAAATTCGAATTTCGAATTTTCTA
-AACTTTTTGGCCGGAATTTCAAATGTTCTGAAAAATAATTTTGGAGCGAA
-ATTCATATTTTCTCAGAAAAATCTCAGAAAATTTGAATCTCCCACTAATA
-TTCTTCTCAAAAAACTGTTACGTGACCTATTTATATCTTATTTATTGGTC
-CATTTATTACGTGGCCTAAAACATTTTTTCTTTTCCCCCGTTTACAGCGA
-TCATTTGAGATGGCCTAGAAAACGCACGTTAGGCCATCAGGTTTACGGGG
-TATAGTACAACCTCTTGCAGGGGACTGAGGTTCAGAAAACTACAAATTTA
-GCTAATTCCCTACCTACTCTTGCAAATCCAATAACTAACCCAATTTCCCG
-GGGAAATTTTTATTCTTAGAAAACAACTTGTATATCTCCGCAACTACATA
-TCCCTCCTTCAAAATAATAATAATGGGAAGCTTCTGCTTCTCTACACCTT
-CTTTTGACCAAAAACTTGTTGCCAGTGCCCTATTATGTACGGTCCGTTGA
-GTTTTGTTGTTGTTCACAATAATATGTGTAATTCGCGCATCTGAAGAGGG
-GAGGTGTAAATGTTGTGTCTAACCGTTATGTTGCTGTCACCTCCAAGTGG
-TACAGGTGGCCTAGAAATTTGCGAAAACTCTTCCACGATTATATTTCTCA
-AAAAATTACTTTTCTCAGAAAATTTGATTTTCTCACCAAAATATTTCTCA
-GATAATTTGAATTCCCGCCAAAATTGTTTAAAAAAATAGAATATCTCGTC
-AAAATTTTTATCAGAAAATTTGAATTCCCCACTAAAATTTTGCCAAAACA
-TTTTATTTTCCCACTTAAAAAAGTTTTTTTTTTAATTTGAAAGTGGAAAA
-GTTTTCTAGGTCACTTATACATTACCGGTGACCGAGGTCGAATTATTCCT
-AGGCCACAAATCTCCCAAAGGGGTATTCCCACACCTAATTGACACCTCCC
-CGGGCACCTTTGAGCACTAAGTAAGGACACCCACCCCTCTCAGCTTAATA
-GCTTTTAAAGGAGCACACCAGCCATATGTTTTCTCTAATTCTCTCACTCT
-CTCTCTCGGCTTCTAAATTCAATTTCCCCCCGTCACGCCTCTCGTTACGT
-GAGGAGTGTTCAACATGTTCCCATTCCCTTATCCGATAAGTTTTTGGTAG
-GCAGGAGCTTGTACTAGTAGAGGACATTTGTCGCTTCTTGGTCTTTCGCC
-TCCATTTTCCGTAATTTATACGTGACTTAGAAAATTAGAAAAAAACGCAT
-TCCACGAGTTTGTTGGACAACTTTTTTTACGTGGCCTAGAAAAAAATGAA
-ACTCGGCCACCGACTTTTCTTTCACTTTTGTGAAGATATGATCTCATTCT
-ATAATTCTGTCGAACCGATTAGGAGGGTGGCTGAGTTTGCACTTTTGCGT
-GTTCTATACCATTTACAGAAGCTAGTCCCCCCGTCATTCTTTTTCCTGCA
-AAATGTTTTTTTTTGCCCCCGGTGTCTCATCATACAGTACAGCAGCCAAT
-ATTATTTGTTTTTTGTTTCGTCTTTTCGTCTTTTCGGAGAAAAAACGCTC
-TATTCTATGACAAGGTGACGTCATTGGACTCGTGGCCTAGAAAGTTTGGC
-AAACTCTTCCACCATTCGATTTTACAGGAGCCTCAAAGCCCCACATGGGG
-CCTAGAAATCTTGACATTTCTAAAAAACATCCATTTTGAAATTTTTCGAA
-ATTGGTGCAACCTAGCAACCTCTAGAACTTCACGTGACCTAGAAAAAACA
-AAACCTCAAAATTTCATGTGGACTAGAAACTTTTAAAAACTCTTCCATCG
-ATTTTGTTTTGTGGCGGGGACTTTTTCCAGTTTCTTTTTCACATAAAAAC
-CAAAAAAAAACAAGACGTCAAGCTGTGAAAATGATTAGTCACAAAAAGAA
-GAAAAACAGTAGTGTCGTTCCTGCCAATTTCAGAGATTCCTTCTTCGCTT
-CTCACGACACGAGGGGGGGAGGGTCTAATTGGCACCCCCCCCCCCCCCTA
-CTGAGGTGAGAAGCTTGAGTTGACTCACACGTCGCTCTTGTTTTATTCAT
-TTTTGGCACAAAGTGAAGTGTGCGAAAATTGTAGTAGTCTGTGTGTGTGT
-GTGTGTATGAGCATTTCGAATTTTAAAATACTTTTTTAATGTACCGCAGG
-CCACGTGGTAAGTTTTTTTTCATAAATATAGGATTTGTTTTCTTGTAGAA
-AAGTTTTTCGAATTTTGAAATGAAAAGGATAACTGGGAACGGAGAAAAAT
-TAAGTTTTAATTTCTAGGCCACGTACCAATGAGGATGAGAAGTCGGTTTT
-CTAGATCACAAGGTCATCTAAACTTTTAGGAAATTTAAAAAGTTTGGTGA
-TTACGAGAATTTCTAGGCCACGTCGCAATACACCGGCGCGTTGGCGTTTT
-TACACTTTCTAGACTACTAAGATTTTCCTAGGCCACGTCCCAATCAGGGC
-TGTTGCAAAAAAAAATTTTCGACCAAAAAACAAAAAACAAAAAATTTTTT
-GGTCTAACTATGGACCAAAAAACAAAAAACAAAAAAACAAAAAACAAAAA
-AAAATTCAATGTTTGATATTGAACGGGACAAAACGGAATTTTTTCATGAA
-ATATTCTGGTGATTTTTTATAAAATATTGAAAATTGAACGAACAGAAGGT
-TTTTTGTTAGCTTTTTTGCTGAATCAGTGCTGTAATTTATTTTTTGGTTG
-TTTTTGGTTTTTTTTTTGGTCTCAAAAAACCAAAAAAACCAAAAAATCAA
-TTTTTCCCAAAAATACCAAAAAAAACCAAAAAAAAACAGCCCTGGTCCCA
-ATGTACAGGTGTTGTGGTGCTTTTTGTGAGCTCTTAGGCCAGCTGGAGTT
-TTCTAGGCCACTTGTAAATCAATGGTTTTTTTTCGGTGTTCTAGGCCACC
-TGTCACGCCTAGACCATTGACCTAGAAGTTTAATGTTTTTGAATAATAAG
-TACACGTACTCTCACATACCCGCAAATGCACATATCTATCTTCATTTCGT
-GATTCTCTTCATCTCATCTTATTTTCCATTTCGGTTTACCCTTTTTTTCT
-CTATGAATATATTTTCATGTACTTGCTCTTCTTCCCTGAAAAAGATTCTT
-TTACACTTTTTTCATTTCCTTAGGCAGTTGTAAAGAACTTGTCATTAGAA
-CTTTCAGAATGACATCAGAGTAGATGGCCGAACTTTTTCTAGGCCACGGC
-TTGGGAGCCAAACATGGCTAAACATTCTAACTTCCTGGGTCATCTAGAAG
-TTTCTAGGTCTTATGGGTGAAAATTGTCAAATGACAGAATTTTCTTAAGT
-TATAGTTGAATTTCCCGCCAAACCGATTTTTTTTTGAAAAATTTAAATTT
-CCCGCCAAAAATTTTTTGAAACGTTTAAATTTTATGCCAAACTTTTTCTG
-AGAGAATTTGGTTTCGCTCCCAATTTTATTCTCTGAAAATTTTAAATTCG
-CACCAAATTTTTCGAGAGCTTTTTGAAGTTCCCGGCAAAATTTGTTTTCG
-AAAAATTAGATCCCCGTCAACTATGATAGAGAAGTTACGTCATCTGGCTA
-CCCTGGCCGAATTTTCAATATATTTCTAGGCCACATATTGACCGCTAAAT
-CATGTTGTGGAAGAGTAGTGACGTCACTTGGCGACCGCGACCATCGAGCA
-GCGTGAGGGGCGAAGTATCCCCCTTCCCAACCCTAAAGACGTCGTTCATC
-GCTCCTTTTTTGTTGTTGTAGGAGTTCCGTTTTTTTGTGTCTCGATTCGT
-TTCCTCCTGTTTGTTGTCATTTCTGAACTCATCTCTACACTTCTCTCGTC
-TTCTCTGCGTCTCTCCATCCTGCACACTATTTTTGTTTACCTCGATGATC
-TTTCTTTTTGCGTGTGTGTCACTGACGAACGAACGGCTGACACAGACTAT
-TGTTTTAGTTTTGTTGTTTAGAAGTAGTTGTAGTATTCCAATAGTTTTTC
-ACACTTTGCATTATTTCAGATGGCTCAGGACGGAGACCGCCATCACATTT
-TTGTCAGTGCTCCGCCGCCGCCGCCACCTTCCTCGTCGATTCCAGCTCCA
-TCGCAGGTAAATTTAAGGTTGCAAGCGCGCTCTAATGACCTTTTTTGTGC
-CTCCGGCTCCTCTTTGGGTTATTGCCAACGCGCTCCAATTCGAATTATTC
-TTACTTTCAGCCAAATAGACTGGAAAAGGAGCCGCTCATCGATGAGGAAA
-CTGACATGATTGACGAATCCCGAGCCACGTATTGGAAGGGATGTGAATTC
-TTGAAAGCCTCTGGGTTGTACTCGAGTAAATGTGAGTTGGTCTAGAAAAT
-TTGTAAAGCTCTTCCACGAAGTAATTAATAAGGGATACTATTGCCGACAC
-CCAGGAACACGTATACCACGGAATTCAAATTTTAATTTTTTGAAAATATT
-TTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATT
-TAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAAT
-TTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAAATAT
-TTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGACGGGAAT
-TTAAAATTTTAATTTTCTGAAAATATTTTGGCGGGAATTCAAATTTTAAT
-TTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAAATAT
-TTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAAT
-TTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAA
-TTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAAT
-ATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGA
-ATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTCAAATTTTA
-ATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAA
-TATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGG
-AATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTT
-TAATTTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAA
-ATATTTTGGCGGGAATTTAAAATTTTAATTTTCTGAAAATATTTTGGCGG
-GAATTCAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTT
-TAATTTTTTGAAAATATTTTGGCTGGAATTTAAAATTTCTGAGAAAAAGA
-ACCTTCGTGTCGAGACCCATCGTGGTGAGACCCTTCGTGGTGAGACCCAT
-CGTGGTGACACCCATCGTGGTGAGACCCTTCGTAGTGAGACCCTTCGTGG
-TGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGACCCATCGTGGTGAGA
-CTCATCGTGGTGAGACCCTTCGTGGTGATACCCATCGTGGTGAGACCTTT
-CGTGGTGAGACCCACCGTGGTGAGACCCATCGTGGTGAGACTCATCGTGG
-TGAGACCCTTCGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGA
-CCTTTCGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCTTT
-CGTGGTGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGACCCTTCGTGG
-TGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGA
-CCCATCGTGGTGAGACCCATCGTGGTGAGACCCATCGTGGTGAGACCCTT
-CATGGTTAGACCCATCGTGGTGAGACCCTTCGTGCTGAGACCATTCATGG
-AGAGACCCATCGTGGTGAGACCCTTCGTGGTTAGACCCATCGTGGTGAGA
-TCTTTCGTGGTGAGACCCATCGTGGTGAGACTCATCGTGGTGAGACCCTT
-CGTGGGGAGACTCTTCGTGGTGAGACCCTTCGTGGTTAGACCCATCGTGG
-TTAGACCCATCGTGGTGAGATCTTTCGTGGTGAGCCCCATCGTGGTGAGA
-CCCATCGTGGTGAGACTTTTCGTGGTGAGACCCATCGTGGTGAGACTTTT
-CGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCCTTCGTGG
-GGAGACTCTTCGTGTTTGATATTATATTGGCGGGAGCTAAGGAGTTGGTG
-TGGGATAATGTCAAGGTACTCTAGGGGTATTGTGGATTTGCTGTAGGGTT
-ACTGTAGTTCAGAAAAATTGACTTTGTGCTTTTGAAGAGGTATTGGCTCG
-AGAGTTAGAGAGGCGGAAGCTTCTGTGATATTTTTTACATTCCAGAATGT
-TTGAAAAAGTAAAAGTTTCCACCTGTTTTCATGTGACATTGTTAAAAGAT
-TATATGGTGTTTTATGTGTCGAACAATTTAAATTTCGCCAGTCGTTGGCC
-GCGCCGTAGGCGCGGTCAGCGGCTGGTTTTTCCAGAAAAGGAATAAGAAA
-TAAATTATTTGGAAGTTACTAGGACCCTGAATAGAATTCTAGGCCATATC
-GAAAAAGGGGATGGGTGCACGTGGGAACCTTTTTTTGGATATTTTGGAAA
-GAAGTAAGAAGTAAGAAGTAAGAAGTTGACTTAAGAAGTTGACTTTTCTA
-GAGTAAGAAGTTGACTTTTCTAGAGATCATCTCCCCTCTATTATTCTCAG
-CGTGACCTAGTTATCCGGAAAACTCTTCCACCAAAAAATGAGTGTCTCCA
-ACTGAAAAATGCGTCATAAAACACACGGAAAAGGTACTTGTGTATTACAT
-GCCCTCATTTTAATAGTAGTTTTTTAAGCCATGAAAAATAAAAACGTGAA
-CCACAATTTGTATTTTTAGGCTTAGGAAATAACATTTTCTAAGCCTAAAG
-AGGAAAATGTGTAATACACAAGTACCACGGAAAATTTTTTGAAACCTTCC
-GAATTTGAAATAATTTAACTAAAAGTTTCTAGGCCACGATGAAAATAGAA
-ACAATGATGTCCCGATTTTGCTGAAAATTTCTGTCCATAGTTATTTAGAG
-TTCTGAAAAAAAAGATTTTCGAGAAATGATTTTCTAGGCCACCAGAAAAG
-TTTCTAGGCCATTATCCCTTCTTGATCCTTTATCATTATGATTATGATAT
-TTTTTAAACGATTTTTTAGGCCACCAGAGGGAATTCTAGTCCGTGTCAAA
-AAAAAAAGAAAGGGGGTATTCTTTCCACATAAAAATCCCGTTGGCCTTTT
-CAATCAAATTTCTTCAATTTTTCGCATAAAACTTACCTCCCGCTGTGACA
-AGCCTCCTCCCGTCTCCCAGTATTCTCAATTCATTAATCATCACCCCCAA
-TGCCCTCATCAACTACAGTATCCCTGCAATCCGCGTCTGCAAATATGTGC
-CGAATATGTCATACTTCTACGTCAACGCGGTCAAATCCGCTCATCTCACC
-GTGTCGATGCTCTGGAACACTGCTCTTTGTGCATAAGGCGTGTGTTGTGG
-TGAGCTCTTTTTTTGTAAAATTCAAAATAATAATTAAAAAATTTAAAAAA
-AAACCTTTTGTGGAATTTGCAATTTTTATAAAATCGTTAAAAACCAAATT
-CAATTTATACAAATTTCCACATTTTCCAAAATAAAAAGAAATAGCCATGC
-CCACAAAATGGGCGGCGCTTTCATAGCCACGTCCATTTTGTGGGCGGAGC
-CTCGGATCAAAGTTTTTTCAAAAACTTACTATAAGTTGAACACGGATTTC
-TGGCTTCCTTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGGCCATTT
-TGGGTCGGAGAGATTTTGTGTAGATTTACGGCGTGTTGCGTGTCGCGTCG
-CGGCTCGTTTTTAGTTGTAAAACTGCTGTATTTGTCCGTGTGGAGTACAC
-GATTTTTTCCACGCGCTGTCCGGCAGGCGATTGTCAATGAGGAGCGAAAA
-TTCAATGCGAAAGGCCAGAAGCCCGTGGTTGAAGTGTGGTTTCAATATTA
-CAGAAATTTTAAAGAGGAATAAACATGCCTGCCTACAAAATGGGCGGAGC
-GTTGGAGGCGTGGTCTAAGAAGTCACGCCCTTTTTTTTAAATACTTGTTC
-TGATGTACAATAGAGCGCATTTACATCAAATTAATAATTTGTTTTTCAAT
-TTTTCCAGAGATGGCTGGAAATGTCGACTCGAAAAATGGTCCCATCACCA
-CGTTGCGAACTATGCGGCTACGATTATCGACGTGGAAATATATTTCAAAT
-GAAATCTTTACATGTTCCACACGTGGATCGATCATCTTGTCTGCTCAATG
-TGCTCTTTTTGATTACCGTATTAATTATGATATTTTGTGGATATTTTACG
-ATTCAATTCATTCAGGAGAATGCACTCTTAAAACGAAGGTGGGCGAAGTT
-TTCTGGTGATGACCTAGGAAATTAGAAAACTAGGCCACCCCGCAAATGTG
-GTGGCCTAGAATACCGAAATTTGACTAAGCTATGGCCTGCGGCCTAGAAA
-AATAAAAGTAGACTGTATAAAATTCTCATCAAGCCTTTTGGAGATGAACT
-GGAAACCCAAATTTTTTGGAAGAAAATATTGACCTCCTTTAAAACGGTGG
-CCTACTTTTTCTGATGGCCTAGGATTTTAGACAAAGAAGCCACACAGCTA
-CTATCCACATAGTTTCAGGAAAAAAAATAAGAAAAATAGGCTCCGCCCAC
-ATATTCTTTTGAATTAGAATATACACGAGCCATTTATTTTGCTAAGTTTT
-GAATGTTAGCTCCGCCCACATAATGATTTGAATTTCCCGCCCATTTTTCT
-CTCAAAAATTTGAATTCCCTGCCAAATTTTTTTTTGCGAAAAACTCAATA
-CTTTCAGGCTCTTCGCGCACAGTTCGACAAACACAGCGTACACGTGGAAA
-CGGCGTGGCTATTTCAGCGGAAACGGGAATGGAGACGGGGACGGTAGTTC
-GGATGGATATTTCTCGCGTACACCTGTCTCATCACTTTTTGACATAAAAG
-TGGTCTTGTGTGCCAGCATGTTCTTGGTCTCGTTCATTTTGGCCCTTTTT
-ACACAGTATAAGTGAGTTTTTTGACACGTGGCCTGGAAAATGAGAAAACT
-CGGCCACCGATTTTTTCAGCCGAATTTTTTTAGTTTAGCGGTCACACGGG
-CTTCTGGCCATTCTCTCTGCATTTTTCGCGCTCCATTGGCATTGGCTTGC
-CGGACAACGCGTGGGAAAGTCGTGTACTCCACACGGATAAATTTGTTCAG
-TTTTACATTGAAAACCGAGCCGTGACACGCCGTAAATCTACCCCGGCCGT
-GGCCGAGTCAAAATGGCATAGTTCGGCAAATTCTTGAATTTCAAAATATG
-ATGGAAGCCTGAAGCACGTGCGGTCATAAAAATCAATAAATTATCTTTTT
-TTTCCAGAGCCGAGTCCACGATATTCCGATGTATTTTCCGATTTTTTGTG
-ATCAATAAGAATTGGATGATCAAAAACTACGATATCAAGTGAGTGGGCGG
-AGTGTAATTTCGGCGGGAAATTCAAAATTTTTCAAATTTTTCAGAAAAAT
-TTCGCGCAAAGTTCAAAAACTCAAAACTTTCGGTAAATTTCGGCGCGAAA
-TTCAAAATGTTAAAAATTTTGGGGAAATTTTGGAGGGAAAATCAATTTTA
-AAAAACGTTTGTTTGAAATTTTTTTAATTTTCAGAAATGATCCCGAAATG
-GCTCACCGCCGCGGTCTCCAGAAGTCTTCACCTGTTCCGTTAACCTTATC
-AGCTTCTGATATGTGTATCCACGTGTCATCCTAGTCAACAATTCAACGAA
-AAAAACCATTCCAGTTACAATTTCTCATTTCTTTTCACCACTTTCGGGTT
-TTTTGCAAATTAAAAAAATTTCGATTTTTTTTTTGAAATTTTAATTTTCC
-AATTTTTATTTTTATTCCACAACTCAGGTTGCTCAACAGTGCCTAAAATA
-AATTTTATTTCTTTGATTTTTTATAAATTTACAAAAAAAATACAACAAAA
-AAATAATATTACACATTCGTGAAAAACGGAAAAAAAATTCAGCCTATTTA
-CATTAAAACACGTGGAATTTGAAATTTTAGCGATATATCGATTACCCTTT
-CTCGGAAAACTCGTAATAAATGTGAAAAAGGCGAGGAAATTGGAAGAAAT
-AAATGCGGGGGTTTCTAGAAAAAAAAATTGGGAGAAAGTTTAAAGAAAAA
-TTCAAAATAATGCTCCGGTGTCATCGTGTTCCACAGTGGTTAGATTCTGG
-TATTTTGTGCATGGTGTGCTCTGAAATTTAAAAAAAAAGTAAAAAATTGA
-AAAAAAAATTTCTTAAAAATTAAAAAAAATGAACTTTTTTTTAAAATTTA
-TATTCAAAAATAAAAATGTTTGGTATACCTAATTATTCATACTTTTATCA
-ATTTTCGAGAAACTTCAATTTTTCAACTGCTAACGTATACAACTCGCGTT
-ACTCGAAAAAGACCTGGGGACTAGTTTCCCACTTGGTGGCCTAGAAATCT
-CCAGTAAAAACATCGACGACCGAGATATGAGTTTCTAGGCCTCCATATGA
-AAAAAAAACTCGGTCGGGGACTAGGTTTCCACATGATGGCCTTGATAACT
-TCAAATTTTTTGGTGACCTAGATTTTTCAAAACTTGGATTACTAGGCCAC
-TAAAAGCTTTTCGGTGGCCTAGAAACCAAAATTGCGTGAATTTTTCATAA
-TTCTATATCAAAATTGACTAAACCGAAAAGAATGCGATGCTTTTGCAATA
-TTTCAGCAGTTGGTGTATCCCACGTGGCGACGGGATTTCGGGCGACCGTG
-CCATTGATTAGAGCCAACGGAAGATATTTTGAGCATTCGGCGGTGCTCTG
-CAAAAATTTTTTTTTTGCAAAAGTTAAAGACGCATGGTGGGTCTTGATCT
-ATGAAATTTCGTGATTATTCGAAAATTTTTTGTCCTTATTGACAATTTTT
-TTATCCACAAAAAAGGCGGATGTCCTAATTGCCAAAAATGTGGGTTTCTA
-GGCCACGAAAAATAATTTTTTGCTTCAAACATCCTGCTTTTTTTCCAAAA
-TTTAGCTTTAAAAAGTCGGTGGCCGAACTTTATTAAAAGTTCAATTTCTC
-GGCCACAGAAACTTTGTTTAAGTTTTCACATTTGGATTTCTAGCCCACCA
-ATAACGTTTTTATTTCATATTTTTATAAAAATCGAATTAAAAGTAGATGA
-TGACCTAGTTTTTTTTCAATAATTTGGGTTTCTAGGCCACCAACTTTTTT
-TAAAAATTTTCTTAATTTTCCATAACCAAAAAAAAAAAACAAAATCGATG
-GCCTAACTTTTTGGCTTCCTAGGCCACCAATAACTCTTTTATTACTAATT
-TTCCTCACTCTCTGATGTCGATAAACACTTTCTTGTCTCGAATATCGCTT
-CCCACACCCATCACACTCAAATGCTCCATTCGTCTCATGAGTGAGCAAGT
-GTTGATTGAGCCCATGCTTTTGCCGGAAAGTTTTCTCGCAGTCTCGACAT
-TTATAAGGTCCATTGTTGGGCTGGGCCTCGTGAGCCGACGACGGGGCCGC
-CCGTTTTTTCGCCCTTTTCCCCGATTTTTCCGGTGAAAAAGTGTCGAAAT
-ACGCGTTATTGTCATCTAATTTTGGTACATTCGCCAACATTGCTAGATTC
-TCCTGAGCCACCTGTTGTGACGTGTGAGGAATGTGATGGTGCTGATAGAG
-GTCTGGTGGTGGCTGAAAATGGGGAATATTCCCGGCGCCGAACATTTTCA
-GAAGTTCCAGGTCGAATCGTTGTTGAGCATCCGCGTCGACTACTTGATTG
-AGGGAGACGGTGAAGTCAGTTGAGGAGGTGGATGGCAGTTTTATAGAGAA
-ATCCTGCAAAAACTCAGGTTTTTGCTAAATTTTTCAATTTATCATTGTAA
-TTTCCGAAAAATTATAGCTTAATTTTTAGATTTTTCGCTTGATTCTCAAG
-TTTTTATGCGAAAATTTAGTTTTTTGTCAATTTTTTTTTGTTTTAAATGT
-AAAACTACGGTATTTAAAGGGAGGAGCACTAATTTATGCCGATGGGTCTC
-GCAGCGAAAACATTAAATGCCTTAATTTAGCCATGCGCCTGGAAGGTTAC
-TGTAGTTTTTATTGATTGATTTTTCATTCAATTTGTGGTTTTTGAAGGTT
-TTCAACTCATTTTGAAAGGCTTTTATAGATTTTTTTTTCTGAAAATCAAA
-TTTAAATGTTAAAATAATTTTTTTTTTTTTTCACACAAAAATAACAGAAA
-TTCCGAAAAATTGCAATTTAAACAGCTCTAAAATATGAAAATTAACGCGA
-TTTTTATCATTTTTTGCTTCAAATCGCTGACTTCTGGCAAAAAAAAGGAA
-AATTCAGCAAAAATCAATTTTTCAGAAAAATTTGATTGATTTTTGGAATT
-TTTCTTACCAATCCGTCGTCTTGCCGTAAATCCTGTAGCTTCATCTCCTT
-AGCCAGCAGATTTCTTACATCTAATTGCACGTGGCAATTGCAGTTCTGAA
-AAAAAAATGTTTTTGAGATTTTTAGAAAACTTATTTTGTAAATGTTCTAG
-GTGGGTTTTCAAATTTTTTTTTAAATTTAATTAAATCAAATTCTTCTCAC
-CGTCAGTTTCTCTTTGACAAAATCGCTCAAATTCTTCTGATTTTCCTGAA
-CTTTCTCCACTTTCACGGCCAAATCCTGCTGCTCACGCAAAAATTGTTTG
-ACAAGACACGTTAGCTGGTTCACATTTGATAGATTGTCCGGGATTTTTAT
-AATCTGAAATTTGAAATTAAGGATTTTAGCGGTTTTTTCGGCAAAACGTA
-AACTTTTAACGCTGAAAACTCACATTTTTCGAACTCCGCTCCAATAATCG
-TCTAGTGAATTCTTGAATAAATCCGGTTGCTTTCATAAAATTCTGAAATT
-CCTCATTTCCAATGAATTCGCCCATTTTCCGATGGAAGAAAAACCAATGG
-AAATACGGCAATATTTGCGCACAAAATCGATGCTGAAGTGTCGTCGGACG
-CAGTGTTTCGTGTGCAGTACACGCCTACGACAAATTGCGGACTTTTTTGT
-TATGGAGAGAGTAGAATAGAGAAGAAAAAAGAAGATAAAATGGATAAAAA
-TTGCGCGTTTTTCTCGTTTTTTCTCTGAATCTCTCAATTTTTAGGTTTTC
-GATCCATATACGTCCCGAGTGGAGATGAAGCCATAAATTTTTCTCTAAAA
-ATTGTTTCTTGCCCCTCCAAATCGCTTATTCGTTTTTAAAATTATGAAAA
-AAAAATGCTAAAAATGCTTACCAAACCGCAAATTTTTAATTGGAAAATAC
-CCAATATTTTGCAATTTATAGTTTAAATTCAAGAAGGTGCCAAAATTTCT
-GCAAAATTGCATATCTTCATATAAATTGTTACATTTTTTGTAAAAACTTG
-AAAACCCTGCTTTTCACATAATAGTACTGGAATTTTTCAATTTTCAACAA
-TTTCATAATTTTTGACCAATTTTTTATTGAAATTTTCAATAAAATATTTA
-AAAGATGTGGCTTTCCAAGCAGATTTTCCAATTTTTCCGAGTTTGAGTAA
-CTAAGTTTCAACCAAAATGATGTCACAAGTCAGAAAATTTCCCTAAATTT
-CAAAACACAGGTGAATAACTATAGGATTAGAATCTGCAAAGATTGAGTCT
-GGAGATAATTTCGGACATTTTTTCGGATAGTTTACGTTTCCTGTAGTTTC
-AAATAGGCAATTTTACTTTAAAGGTTGCTAATAAAATTAAGAAAAATCCT
-TATATAGTCTCCACCCACAGATTGGCTTTTTAGATATTTTCAAAATATCT
-TGTAACGAAAACTACAGTAATCTTTAAAATTAAAATTATTACTGTATTGC
-TTTTGTCCATTTACGGGCTCGATTTACGAAATTAAATTTAATAATCTTTA
-ATCTATAGAATATTAAAATTAAGCAAAAAATGAGAAAATAATACGAAGAA
-ATGAAGGAAAATGGAATATCGGTGTAACTATCCGAAAATAAATTCATTTA
-GAAAATCGAGCCCGTAAATCGACGTTACGAAGAATTACTGTAGTTTTCGC
-TACGAGATATTTTGCGCGTCAAATATGTTGAGCAATACGCATTTTAAGAA
-TTTACTGTTATCGTAATAGTTCAAATTTTTCGAGATAATAGTCTTCCAAA
-AAACTATTGTTTAAGGTTTTATTTTTTCCGTAATCTAAATTGATTATCAC
-TAGACACTGTTCATTAATCATTCAGAACTTGTATAATCCATCTCGGTTAA
-ATTGTTGGTGAGACAAAGTGTAATCTGTTCTAGTTGGGTCACACGATCCC
-TTTTCCACTCAATCGCTTACCCACTCAACACTATAGACTAGACACTCACA
-CAGGAAATAGTATTGTTTACCTGTTTTCTTTTGGACACTGTTTATAACTT
-TTCCCTCTCCGTTTCTCTACGTTTAAATTTGTCAAAAATTAATAATTTTC
-TTACTTCCACATTCAATACTCATTTAATGACCGGTATTTGAAAATATTTT
-AATTTTTTAATCTTTAGTTATTACAGGAACAGTAAACTCTGGGAATTCGT
-ATTGCACAACATATTTGACGCGCAAAATATCACGTTAGCTGGCATAATAT
-TAGGCATATATTGTTTCTACAATCTTGTAATGTATAACTGACTAACATCT
-TTGAAATAAGTTTGTAAAACTTGTGAGTTGGAAAACATTGTGCATGGATG
-TCGTGTTTCGCGCACGCGCTAGAGTAGTCATAAAAAGATTACTGTAGTTT
-TCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAGTATGCATTCTC
-AGAATTTTGTGTTCACGTAATAAATTAAATTGTTAAAAGATATAATAAAA
-GTTAAAAGATATAACAGATTTTTTCTCACTTCCCTAATATGTTTAATAAT
-CAATCATTTTAAATTGTGCCGAAAATTTTCCGTTTTCCAATTGTTCGGAA
-TTTTTTCGGTTTTGCTCGAAAAAACCAAAAAGCAAATTTTTATAAATTTC
-CCTGGTGTTCAAAATTTTCCCGCAATTTTTACCTATTTTATTTTCAAAAT
-ATTTATTTATTTCAGTTCCCCCAAGTCAAACCGTTCGATGTTGTAGAAAT
-GGAGATAATTCCGCTGCATTACGGAGCACAAGTTGGGATTTATGACGAGG
-ATCATGAGGTTGGTAGATTTTAATTTGTTTTTTAAATCGTGGCCTAGCAC
-ATTCTAGGCCACAGGTAGTGACGTCACTCTGAACATTTTCAATATATGTA
-AATTTTAAATTCAAACTACTTAAAACTCGGAAATCACTTTTTCCGTCAGA
-TACACAGAAATAAACTAGTTTTACCTTTTAAAAAACTAAAACCATTGAAC
-TTTTCACAAATGTTCTTTGAAACTTGAGATAATCTGCAAATCCCAAACTA
-TTAAAAACTGAAAAAGGTAGCCTAGAAAATGAAAATTTTCAATAGTTTTT
-TCAAGTTCAAAGAAAAAAAATTGAATTTTTAAATTGTTTTTTTTCGCTAC
-AAGTCAAAATTATATTATATTTATTAGTTTTTTTCAATTTAAGAACATTA
-CTAAAATTAGTGCATATTTAAAAAAAATGTTTGTTTCGGAGAAAACAACT
-ATTAGTAATTGCACTGCAATCATCAGATTAGTGAGGAATTTAGTTCTATT
-TTTTTCTTTTTTTTCTGTTTCAAAGTCGTTTTTTCATGAAAAATAGACCT
-TCGAGCTACTGGTTTTTTGAGAAATATTATTTCAATTTTCAATTTCATGA
-TGAACAACATTTTTGGTAACACATTTAATTCTAGTAGAATATTATCCACT
-TTTTCTCTAATTTTTCAAAATTTATTCCTAAGTTTTTCTGATCAATGAAG
-AACTACCTTTTTACGACAATATTGCCTTCAATTTTTTCTCTCTGAAAATT
-CGAAATTTATCTGAATCAATGGTGCCGGTTTTCTTATTTCTGAATAACGA
-AATAGATTTTTTATTTATTTTTCAACAATTCCCGGAAATTTCTCTATTGT
-TAAAAACAAATGAAGTGAAAATCGATTTTTTTACTTCGAAAGTTTAACAT
-GAAATTCGATAAATTTAATCTATGATCTTTCAAGCTCCGCGAGTTTGAGG
-CGGGATGTTGATAATTAGAGATATGCCGGGGGAGAACACTACTCTCCAAT
-TATATTTCGGTTGCTCGAGAAATATTTTTAATGATAAATACTGGATACTA
-GATTCTATAGAAAACTAATTTATTTCAATAAATTTATTATTATTCAGGAG
-AATTATATTTTCTTGCTCGAAAGAAAATAAATAATCAAAAACCGACGCAT
-TTTCCTGAATTTATAGTTATTCAGAAGAATATAGATTTTTATTTTCAAAT
-TCTGAGAATTCAGAAAACATGGCTATTTGCCGGCCTAGAAAATAGAACAA
-CTAGGCCACCGATCATTTTTGTTTTGCCGTTGTCAGGCTTCTGGCCTAAC
-TTTCTCTATCTTAAAAGATTCCCAAATTCAAACTACTGGCTTTCCAAAAC
-CTTCAAATTGTGGAATGAACTTGTGATTCCAAAGATCTGATGTCAAGAAT
-TCAGTCCATAGTTCATATACTCCAACAACACTTTTGGAATTTTAAATCTT
-CATGGTTTTCAAAAAGAATCCACCAAATTATTTAGCAACGGGGTTTTCCC
-TTCTAAACAATTGTGTGACACAAATCATAATCTCCGTCACTTTGTACAAT
-TTTTCTAGTTTTGGTGATTTCCCCTCATGAGCTCAACGCGGCGGAGTAGA
-TCTTCCATGCAGGCGTTAAAACGCCTGCCTGCCTGACTTTAAGGCGGCCT
-CCGCCTGCCTAACGCTTCAGTCCTAGTCTTGTGCTAAACCATACATGAAC
-TATTTTTCTAATTCTTAATTTGGTTCTCATAAAATTGATAAAAATTAGGA
-AAATTTGAAATCTGAAATTTCAAGTAAAAATGGGCGGCAAACTTTGTATA
-AAAAAAAAAAGAAAGCTCGGCCACCAATTTTTCAAAGTTTCTTACCGCTC
-TCTGTCTTGCCTCGGGCAAGCCCTAAAACTTTAGAAAACATCCCCGAACA
-AAAAAGTAATAAATCCTTCAAATGTGGGAGATGCCCCGTGTATATGTCAC
-CTGTCGACTCGTCGAAAACGTTTGTGCCACCCGGCTCTTTACCTCGTCTC
-CTCTTACTCATCATTTTACTGCCCCCGTTGCTTTCCGGCTAATGAGGTTC
-TTAGGGCGTAGGACGCCATTGATTTGTGCTCTTTTCAGGCAAAATTTTAG
-ATTTTATTTCTCTGATTTCACTCAATTATCAGACAATCTAAGTTTTTTGA
-CATGTTCAATGCTGGAAGCAATTTTCGATTTTTTTATCGACCATGGCCTA
-AAATTACGGGTCAATTTCCTGAAACGGACGAACATTTTTGAAAGCAAAAC
-AGTTTGTAGAGTTTCGCTAAAATTTCTGATTTTTATCGAAAAAATCGGGC
-ACACCAAACAAAAGTTCGTTTGTGTCAGGACCTTGACGGTACGCAATTTT
-CGGACAAACCACGTGTGGCTGATTCAAAAATGTCAACTAAATTGACATCT
-TGAAAACATTTTTTTCACCTGAAAACCACTAACAGTGTCAGGTTAATCCG
-ATTCAAGCGCTATTTTTATGAACTTTCCTGAAAGTTTAATTCCACACGTT
-GTGAGGGAATTTGACACATTTTTAGAAAACCTGATCTCACGGTTAATTTT
-TAAACACTTCGAGGGCCCAGAAATCCTAGTTTTTTTTCTGGTTATTCATA
-GTTTTTCTAGAATTTAATTTCACATCTACATTTCTAAACAAAACTTTTGA
-AGGTCCTTGTAATTCTTCTCTAGTTTTTTATTGTCAAATTAAGTTTTCTC
-CAAATTAGGAAGAAGCGATAATTGCGGGTTTTGTGAGGGAAGTTTGTCGT
-CGGTCCATTTGTTTTGAAATGAGAATCGGAACGATTTCCTGTCTCCCGTA
-GAAACCAATTAAACGAAAACTTTTTTTTTTCATTTCGTTCATTTTGCATG
-CTTGCTAGCCTCGTCTATTGGAATTCTTTTGTACTATGATTCTATTCTAG
-TTGTGTCTGCATTAAAAAAATCGATTTTTTTGTTGAGTATATTTATTTTT
-CAAACAAGCCGAAAAAATAGATCAAAACTGAAAATTTTATAAGAAAAATT
-TCAGTTTAAATCTAGTTTTTTTTTCAATTGGCCAACTTATAATTTATATA
-TACTCTCAAAATCAAAAAAAAATGCACATTCTATATTACCCACAAACATC
-GAAAATCCGCTATTCCCTCAATTATAAAAAATGTGAGAAAATCCTCGATT
-CTTGGTTGCTATGAGACAGATTTCAGATTTTTCACCGGATAAACAAGACG
-TTATCATTACTTTTCAGTAATGCGCGTTTATTTTTCTATTCCATTTTTCG
-AATTTTGAGATGTTGTATTATTTAGAGAGCACGAAATTCTAAGAATGCGT
-ATTGCGCAACATATTTGAGGCACAAAATATCTCACAGCGAAAACTACAGT
-AATCCTTTAAATGGCTACTGTAGCGCTTGTGTCGATTTATGTAAATCATA
-TATTCGTCGATATAATATTGAGCGAAAATTAAGAAAATAATACGAAAAGC
-GAAAAATTAATATCGAAAATCGAGATTCCGTAAATCGACACAAGCGCTAC
-AGTAGTCATGTAAAGAATTACTGTAGTTTTTGCTACGAGATATTTTGCGC
-GTCTAATATGTTGTGCAATACGCATTCTTAGAGTTTTGTGCCTCCCGTAA
-TATTATGTACAATGCGTATTTCCTCTGCATGCAAGACTAATTTCCGATTG
-GTCTGTAGAGGTGCAGTTGGCTGGCTGACTTTTAATACTTATGTTCCTTT
-AAATTTTCAAGTACGATTAGGAACCCTTTCTCTCAGAATTTCACTAGTGT
-ACCTTAATGTTTGTCTTTTGCTACCTGAGACGATCATCAAGTCTTTTCTT
-TTGTTTGTATTAGATTTCGCAGTAAAATTGTGAAAAAAATTGCAAAAAAT
-TGAGAGCAAGAGCAGAAATGTGCACTTCTCGTTGTACCACGATTTTTCGT
-TTTCCCACTAAATACCTATACGTATAGGATTATCCAAAGATGATCCCGGG
-GATCACCAGTTCTTAGTTTCCTTATCAATTTTATATTACTCGTATGCCTT
-CCTCGTTTTTTTTTCTAAAGCCATGAAAATCATAGGTATCGCCTCAGCGG
-GTCGTAGAAGGAGCACAATGTACTCGAGCTCGTCACGAAGACCGTTTCGA
-CGGCTGGTTCCGCTTAAAATGGTTAGAGAACTGGGTCTTGATGCGATCCT
-AACAAATTTTTTGAATCTCTAAATAGTCCCTATAGATCATGTAATAATAT
-AGGTTGAACGTTTTACAGAATAAAGTTTTACAATAAACTTTATAGCATGG
-GTGTGTGGCAAATTTGCCGGACTTGCCGTTTTCCGAGATCGGCAAATTTG
-CCGAGTTTGCTGCACACATGAAAAATTTTTAATTAAGATTTTGTGCAAAA
-ACTAATGTAGCCCCTGGTTTACACCTTTTTACGATATTCTGAGTACATTC
-GAAAAGGATGTTTTAAATAGATTGAATATCAAATCAAAAAAGAAAGTTGC
-ATGAGTATTATATCTAAAAACTTTTAAAGAACACATTTTCAGGCACAAGG
-CCGAACGGCAACCGACTACGCGGGTCAGGACTACGATGAATGTTATGATA
-GGTTAGTTTCTTTTTCTATTATTTCATTCAGAATATTACGAATTAATGCT
-TAAAAAATTTTCAAATTAATTTTCAAATCAACCGCCTTAGCTCCACCCAG
-CTCTCTAGATCGCAACCCGCAATAAAGCCCATAAATCAGTGGGCAGCTGC
-TGCTGCTCCGTAGTGGATCAGTCTGTCGTCTCTCCGATCAGTGCGCTCTC
-GATGATACTCTCACATTTGACCTTTCTCGCTTTTTGTAAACTATGTGCTG
-GACACGTTGAAAGTAGTATCAATTGCACTTTTCTGGGTAGTTACCGATAA
-AATTGCCCAGATGGAAGAGTTTTCCATAACAATTTCTCTTCCATTTTCAT
-CTATCAGCTCTGTGGCCCCGCTCATTAGTGTTTCTCTAGCCGATGCTGTT
-CCAGGTTCCCATGGCAATGTGTACATGTGTGCCTAAAGTGAGCCAAAATG
-CTCTTTGAATTATTCATTCATCCTATGTTTTTTATTCGTCCTCACGTGAC
-CTGCACCACACTGCGCATTAAATATTAATTGGCACTGAAGAGAGCCGCCG
-CTCGGGCAAATGTTTAAATTTTAAATTTAATTGATTTATACATATTTGAA
-AAATGAGACACTATGTTATTTTCGCCGAATTCGTTCTCTGAGCATTGCGT
-TCATATCTTTGCACCTATATGAACAATTAAAATAATTTGTGTGTCCGGTA
-ACGAAAAACCCGAAATAAGTCTTGCCTATACAGGAGTTTGTGGAAAGTTT
-TCAAAATTTTTAATGCAAACAACGAAGGAAATTGGAGACGTAATACGATC
-ACTAGCAATCTGAATTTCTACTTTCAAAACGTTTTTTTCATAAGAAACTC
-CATTATCCAAAATCCGGCCACCTTGCTAATCCTGAGTCCATAATAGGCAT
-TGCTAAGGCAAATCTAGGGCTTTTGGCCGATAAAAGACTTTTTGATAATA
-ATTTCCAAGCTTAAACCTTATTCATATTACTTTTAGTAATCCTATAAGTT
-TTGTTTGCAGTGGTTCAGAATTGCCGAACATTCCAAGTTTTTTGATAAAG
-GTTTTACATATATGTTGAGCTTAAAAAATAAACTCAAAAAAATTAACAAT
-TAGTTCATACGTTATTAATTTCAACGAGTTTTAGTGTAAATATATATGTG
-GTCCTCTATATATTTTCCGTATTATTATTATTATTGATTCGCTCCAAAGC
-TTTAATTTCAGTCTCAAGACTATACTGCTCAACTGTGTTTATAGTAGTAT
-TTTCAAACGAACAAAAAGTGACAATACAGTATACTTTAAACTAAAAAAAA
-CTTTGTCGATGAAAGTCTATCGATCAAACTAGCGAAATCCGCCCGTTTAA
-TCCGTTTTCCCGCCACCATCACTTATTGTGTTTTCATAGAGCTTTATTTG
-ACGGAATTTCCTTTCTTCTGATTTTTCATATTTAACCAAAACTTACTTGA
-AAGAATCTTAAAAGGGATTTTTACAACTCTCTGGATCAGATTTTTCGAAT
-TGTTTCATTCGCAAAAGAAGAGCGACTCACTGCTATAAATGCAACATTCA
-CCACACTATCTCCACAATTTCATCTATTAATTCATACAATGACACTACAA
-TAATCCCCACTTGCTCAGAATTTGTCTCTCCCGCGGGGGACAAATTGGAA
-TCAATCATTCTGTCGGTCGACCATTGAACCACCACCACACAATATGGTTC
-AGCGGGGGGAGGTCCAGTTTTATTGTTATTACGTATACTGCTAGGGGAAC
-CCAATTTTCGGACCCCGCGCGGAATATTCAAATTGGAAAGAGTGTGTGTG
-CAAAAACTTTGTCCATCTTGTGTCCAGCAGACCAGCCAGCAGCTTCTCAA
-TTTCCGCTTCAACTTTCTCCACTTTCCCATGGGACAAACCTTTTGTCTTT
-CTTCTGGCTTCTCCTCTTACTTCTTATTCTTCTTCGTTGCCCAAATTGTG
-CTGGAAGAACTAGAGATGCTGAAAAGAAATAGGAAAAGAGCACGAAGACA
-ATATTTATGTTTTGTTTTCCATGGTTCGCCTCGAGTATTTGATTAGGCTT
-CTCCTTGTTGTCTTCACTCGACGTCGTGTTCTCTATTTTATGTCCACTCT
-TGAATTCCTGGAGTTTTCAGTGCACGCATTTGTTGAGCTGTAAGAAAGCT
-GCAGGAGTTTCCCAGAATTTGATCGATTTACGGAGCGGAGTGTCGTACTA
-CTTATTTCCGGATTATAAAATTCTGAGAATGCGTATTGCACACCATATTT
-GACGCGCAAATTATCTCATAGCGAAAACTACAGTAATTTTTACGTTTCGA
-GAATCGAGCCCCCCTAAATCTACACAAGAGCTACAGTAGTAATTTAAAGA
-ATTACATTTCCGAACCTTTCTCATTTTTCAACAATTTTTTAACTTGCCTA
-GCGTAGCCGAAAATTAGCGGTAATCGCTTCAAGACCCAAAACAAGCCAAT
-TTCATCAAATTTCAAGTAGAATTTTGTGAAAACAACCGTCACTACCATTC
-TGATGACCCTTTACTTCGACCGCCCAGTTCGTTAAACATTTTTGAATTTT
-GTTCACCTGTCTGCCACCACATATCTTTCTTCATCAAAATTCAACGTGCT
-GCGATCATCATCTTCATCTCTGTCTCTTCATCTCGCCCAAATTCATTTCC
-GTCACTGCGTCTCGTACTGATTTTTTTTCATTTGTCTCCAATCATTTAGA
-GGCCAAAAGACCTCCTCTCAATTTTTTTCTGTCTGTCATTGACCCCTCAG
-TTGCGAACCGATTCAGAGTTTACATAAACAAGCTCGCTTTGTATATAATG
-TTGAGTGAGCGAGAGAGTGAAAGAGAGAAGACGCAGGAAGCTAAGCGTTT
-CCTTTGTTTCAAGCTCTGTCAAATTGTCAATTTTCTAGCTAGAAGATTCT
-TATGAAGTTTTGAACATTCTAGATTTAGTTTGTTACCTACAACAGGTGAA
-TTTGTCTTTCTTGTCCAGAGATAAAACTTATCGTGGCCTTTTCCGAAATA
-GTATCAGATTTCCTTTGTACAAGGGCTTTCGTGAGGCGGTAAATCGCCTG
-CCTGACTTTAAGGTGACCTCCGCCTGCCTCTCGCCTCAATACGTTATGCT
-AAAACAAACGTGAACTTTTAAAAAAATTTAATTTTCAACAAATTGATAAA
-AATTTAAAAAATTTGAAATTTACCTGCCTACCATAGAAGCCCTACCTTGT
-TCCACTATTGATGCGATTCATTCTATTACAAATCAATGTAACGAACTCCG
-AAGTTTGATAGCCCGAGGCGTTTTCCTTGTTAATTTGATATCGATTATCA
-GTTTGACCAACCAAACACCATCGATTTGGCTTGATTTTCAAGGAATTTAT
-AGAATTTCGTAGAGTTTTGGACTATGTTTTGCATTTACGTTGAATGGAGA
-GAATTATATTTGAATAATTGAATAACTTGTTAATGGTTCAAGGATTACCC
-GTTCCGAAGTCTAGAAATGCCCTGGCGATGCTCCCGTCGAGAACTGTAAC
-CGATAATCAATCAATATTGCGGGTATTAATTGGCTAATATTCATAATCCT
-GAAAAGTTATTTGAATAACGGCAAACTCCCAAGAAACATACCATTTCCGA
-GGTGTATGAGAATTTTAACAAGACCTTAGGGTACATAAGCCTATCAGTTT
-GAAAAACAATGTCGGAATTTGTGCTTCCATGGTAGACAGGCGCGGTTTCA
-GGGTCTGAAGCTTGCCTGAAGGCCAGGCAGACAGGCGTTTTAATTCCTAC
-ATGGAAGCCCTAGAATACAGCATATACGGTACCTAAGCCAATTATCAAAT
-TTTACTTTTAAAAATTCATTCCACAGGTGTTCCTGTTCTGCTGCATCATC
-GTCACACAGACACTTACACGCGCCTTTTCACTTCTCATTTCCCACTTTTT
-CTTCGTTTTTCTCGCTTTTTCTTCTTCTCGACACGAAGAAGTAGGATAGA
-TCTAGAGACGTCGAAAGCCATAATTGTTTCCGTCGGCGTCTCCACGCGCA
-CTCGTACTGTCTACAAGTGCCACACACACACTTGAAGAAAATAGAGAGAG
-GTGCAGGAGGAAAAGGAGGGGACGACTTCTGAAAGTGTCGATAACTACCT
-CCTATTTGAGTAAAGAGTGCAAGAAATATATGTGCGTGTGTGTCTAATGA
-GAGGGTCTTGGAGCGATTTTTAAGCATGTACAGGCATGAATCAGGCGGCA
-GGTTCCAGCCAGGCTCTGAAACCGCGCCTGCATACCAGGGAAACCCAACG
-ATGGTTTTTCTTTGCCCGGTTGATCCCTTTCTTGGATAGTTTTAGTCTTC
-GTCCGTTTTTCATTCATACTCTTTTTGTAACTGTTCAAAAGTCTAGTTTC
-ATATAATCAGAAATTCGAGAAAAAGGATTTTTCGAGGCTCTGAAAAAAGA
-TCCCAGAAGATTGTGTCTAATTCTAATTCTCTACAGAAAATGCCCAAATC
-GAAAATTTTTCGACAGATCCTCGTATTTCGAAATTCTGGAACATTCGGCA
-AAGCTGAAAATGTCACAACTTGCCAAAATGAACATTTTCGGCAAATCGGC
-CAATAGCTGTATTTTTCAAACTTTCGGTAAACCGGCAGTTCGCCAAAAAA
-AATTCGGCCATGGTCTAGACTCTAGAGTTGGGCGGCAGACAATTATTTCG
-GGCAAACGCAAAAATTAAAAATGGAAATTGGTGTTCGGCAAATCGACAAT
-TCGCCGGAATTGAGAGTTTCCTGCAAATTCGGCAAACCGGCAATTTGCCG
-AAGGGCAACTTCTCCGAACTGACACCCCTTCCAAAAATCCGAAATTTTTT
-TAGCTTCACCCCCTTCCCTCCCTTCTCGTTTTCTAAAAACCGGACACACC
-TCTTACAATTATTACAAACACCACTACGTACGTATTAAACGTCTCTCGTA
-ATAAGTGGGGCGCCAAAATATAATGGTTTTTGTTGTGTTTAGTTAGCCTC
-CTCCTCTCTACTTCTCCACCATCATCAAATCTACCACCACAATAACATTA
-ATTCGATCATCAACTGACTACTTTTGTCTTTCAATGTGGATTTGTAGTTG
-TTGGTTATTTGAATTCTTAACTATATATCCATCCCTATGTTGAAAATTTG
-AAATTTTTGGTAAATTTGAAAGATACCAAGTTTATGTATATTATAATATA
-TTATAAAAATTTCCGGTAAATTGATATCCTGCAAACGGCAAACCGACAAT
-TTGCCGGAATTGAAAATTTCCGGCAAACCGCAATTTGCCGATAATAAATT
-TGCCTTTATTGATTCTAGGTTTCGAAAAATTACGTGTTCCGTTTTTTTTT
-TGAATATTAAAATAGGAATATCAGAATTTTTTATTTTTTATTCTGCAACT
-TTTCAAATTATGTTCAAATTTATTATAAAACTATCGTAAGTGTGAATTTG
-CAATTAATTTTCTTATTGCTAGGTATCAGTTTTACTAGGGCTGTCATGTA
-TGTACCAAAACGCCTACCGCGCCTTCTGTCTAGTGCGGTGCGGAACCCGA
-AAAGTGTCGGAATCATCTTTCGCAGTATGTGGTGCTGAAACCAAGCCTTT
-GAGTTCTCGCCATAGTGCGGCGAGAGGCCGGCATGAGGCGGGCAGGTAGG
-AGGCAGGCTTCAGGAACTGTGTCGCGTCTGCCTCCCAATCCCAGAATACT
-TTTTTTTTCAAAAAGTTGCAATGGAAATCAGATTTTCAAACGCAACCTGT
-CTTCCTCTTGTACTCAACTTTTACTTGATGATAGTCGATAAAGGTGTGAA
-CGCGGTGAGGTGTAACCGTGTGACAATACATCATTGTATTATTCTTTTTC
-GCAAAAAAAAAACATTCTTTTGGGTATTATATTCTACCAATGTATCTTTC
-ATTTTCTCGATTGATTTTTTCTCCGGCGAAAAGAAAACAAATTGAAAAAA
-AACGTCAAAACATAAACATTTGGAAAATATAAAGGTGGATATAAAAACGG
-TTTCTTTCTTCTGGAACATTCATTTTTAACCATTTTCCTACATATTTTCA
-CGCTAAGCCGGAGCAAAACAGAGACAGTCGAGACTGTCAAAACATGTAAA
-ATATACGTTTTTTGGTATACCTATTTATTAACAGGTGCTCCCTTTTCTCT
-AAAAGTTTAAATTTGTCGCGAAAAAATGCAAGAAATGTTTTTTTTCTAAA
-AACTAAAAACTCGATCAAAAATAATAATTGGGTATTTAAATATTCCGGAA
-TCTCCATTTTCTTCCCGTTCCTGCCCTTCCATTTTTTTCTTCCTGCACTT
-ACTCGAGTATTCATCCTCTTCTACTGCTGCCATAAAAGGTCTTCCGCTTC
-ACTGAAGCCTTCTGCACAGCAGCGTATCCTCCCGCTTCATATCTCGTTGC
-TGAACTCCATATAGCTTGTTATAGCTCAGTTTTAGACGGATTTAGGTTCG
-AATTTCTGTAGGGTCTCTAGGAGTACTGTAATAAGTGATGTGTCAAAAAT
-TTGGCCTAAACTGTCATTGCTATAGATTACGGTGATAGAAATTTGAATAT
-GTATGAAATAGTGAAAAATCAGTAGACTGAGCCTTACTCAAATTCACATC
-CGTTCGAGATATTTCTGAGTTCTGAATTTCTGTTGATTGCAATTGCCGTA
-ACTTATAGCAAGGAAAGAACAATTTGAAGCCGAATTTACGGCACAAAATT
-AGTTTTGGTGCTTCTAGAGCCTATTTTATAAAATATATACTTGACACGTG
-GCTTTTCAATATCACCATCTCAAGAAATTACCACAATCGTTTCAGGTGCG
-AACAAGAGTGTGGCGAGGAGGCGTGGCGAATCGCGTGCTGCTCACGAGTC
-GGGAAGATCGCCATCCTTGTCATGTCAATCATTGTATTATATCTTATCAT
-ATCAGGTTGGTTTAAATACATATTATTCAAATTTATCTGAGTTTACACAA
-TGAATTTTCAGCATTAACGCCCTCCGAAAGCACACACAAGACGGACCTCA
-ACGAGCCGCGGCCTGGTATTAATTTAACAAGGTGAGAATGTTGGGAACAT
-ATTACTATTGTAGGAAATTGCTCGATAATTCCACACTTATTGAGTTCACA
-ATTAATTTCTACTATATTAACTGTGTTTTTGGTAAAGAAGTATCACTTTT
-TCCCCTCCCAACTCCGATAATTCGGCATTCCTAGAGTTTTAACACAATGT
-TTTACGACATACTTATGAAGAGTTGATGCAAATCGCAAAAAAAAAACAGA
-AAAATAACTATTTTATGAATAGTATCATTATCGTATGGTGTCGTCAAAAT
-GTTTTGTTGTTTTAGTTTTTTTTTACTCGAAATTTTCTGAAAACACCGAA
-TTTCATATTGAATCAAATTTCTTGATAATTTATTAGACATTTCGATTTTA
-CAGAGCCAATCAAGTACTCACCGGATTATGTGATGCCTATGAGCGAGGAG
-ACGTTTCCGGAGACTCTTGTAATCGACTTTGCTATGATCGAAACTGGCTT
-GTCACTGACTTTTACGAAGGGCACAAGACTGTGGTCATAGTGAAAGATGG
-CGGACAGATTGCTGTCTATAAAAGCACAAAACCGTTTATGGATCAATTCG
-ACGAGCCGAAAGACCATCTGACGGATGCAGAGTTCTCGGATCGAGTAGTC
-GATATGGTGAATGATGAGCTGAGACTCGGATGGCCGAAACACTATCGACG
-GCATTTAATGGAGACTGTGTGGCCGACACTGTTACGGACCAAGGGAGAAG
-CCATGTCGAAAGCGGATCGACGATCCTTGTGGGCTTTGTTAAAGCAGCCT
-GAATTCATCCTGTTCCGAGTGTTACCGTTGACACGTGTCACGCCGAAGCT
-CATTGGGACGTGTGGACATATGTATCAGACTGAGTCACTGGTGGCGTTCA
-AGATGAAAGGGTATTATACGAATTTGAAGGTGGGGATTTTTTTTTAACTT
-GATTTTAAAAAAAAAATTTTCTCAATCCAAATTTACAGGCAAAAATCTTG
-GTGCATGTCATGGGAACCCTGAAGCTCTTATACGAATTTCTCGACGAACC
-CCTTCAATGGTGTGATGTTCGATTTGATAATCTCGGGTTATCAGCAGATT
-ATCCGAAAAGGTAGGTCTGCCTGTTTTTTTATTTGATTTTTTTTTCCGAA
-AAAATCTACATTTTCAATTATTCGAAACGTAATTCGAATAAAAGTTATTA
-ATGATTTTTTAAACAAAAAAATTGATGATAATCCAACCGGAAACTCAAAT
-TTTGAAAACCCCTAAAAATCCAAATTTCTCAATTTTTCTGCAGATTCGCT
-CTAATGGACGGTGACATGGTGTACACGAAATCGAAATTGGATTCTCTCCT
-AAAAGGACGTCCGTGTGAAAGTGATAATGATTGTAAAATTGGAGACTGTG
-AGGCGAGATGCACTTCTAATATGGTGTGCTCGTCGAGGAGTAACGGGAAT
-TTGGAGGTAAGCTTGAAAGTTGAAAAAGTTTGGAAAAATTGTGAAAAATC
-AATAAAATCGGCAAAAAACGAGCTTTTTTCCAGATGGCCGAATTTTTCAT
-AGTTTGCAAAAGTTCGTCCACCTGTGAAAAATTGCTAAAAAAGCAACAGC
-ATTGATGAATATTCATAAAAAACCAATAAATTCGACAAAAACCTTTTTGA
-TTTTTCCAAAAATCGAAAATCACATTCTGATGTTCAAATTGAATTTTCAA
-AAAAAATATAGAAATTTCCTAAAAGTTTTAATTCTCAAAAAACGAACGAC
-TGACAAAAAATTTTTAAAAAAGTGAATTTTCCGAATTTTTTCTAAAGAAA
-AACTGAAAATTTGAGAATTTTCAGTCAGAAATGTGATTTTTTTTTTGATT
-GAAAGGAGTTTATTTTGTAGAATTTAACTTCCACTATCAGAAAAAAATTT
-ACCTATTTACTTTGTAATAGGAAAAAAGTTGTGAAATTGTTAGGAAAATT
-TTTTTCAACTTTACAATTTCCCGGACAGGCCTGTAGTTCCTTTTTTTCAA
-AACGTAAAAGAAAAAATTAATTAAAAAGTTCAAACTCCTAGAATTTATAC
-ATTTATTTTGCATTCTAAAAAACAAAGTTTTTCTTGATTTTTTTGTGTAA
-AAATTGAAAAAAAATCCAAATTTTGTAGGTCTTCTGCGATAAACTGGTCA
-ACAAACTGTTCGCAAATCAATGGTCCAAAAATAATAAATATTTGGTCGCA
-TGCCGGGATACAGGACGAAATATCACAACTCGACTCAACGAATTACGGTT
-AACATGGTCATGGAATCTGCCGGATGTTTAAAGGAATCTAGCTCAATTCT
-TTCTTTTTTTTTCTTCTACTCCATGTGTCAAAAAATCCCCGTGTCTTATA
-ATTTTCTGGTGCTTTTTTCCATATTTTCCTTTTTTTGTGTTCTGGCTCAT
-TTTTCCATGGCTCACAGAGCCCGAAAGCTTAGGATTTTGAAATTTTATTC
-GTTTTTTTCTCATAATTCTGTCATCATTTTTTGCTCTGCATCATCATCAT
-CATCGTCAACATCATCGCGTTTTATTATGGGTTCATGTATTATTACACTT
-TCCTCGAAAAAAAATTTTGACGAACGTGTAATATGTTTCACCTTGTCTCA
-TTTGTACCTCGTTCATTGTTACGGGTTTGAAGTTTTAAAACTCTGAATTT
-ATATGAAGAATTTTAATTTAAAAAAAAACTTTGTTTCCTTTTTTGAATTT
-TTACAGACAAATTTTTGGCTTGAAAACTGAAAAACCCTGACTAAACTTAC
-TATTTATGTGTTGGGTATCAACGTGTATTGACCCACGACGTGGCTAAGAA
-GATCGTACAACGTGAACTCTATGAACTAACTTATTTATTCCTTAGTTTAG
-TAATGTAATAAACTACTCGTCTTCTCCTCCTCGTCTCGCCTTCGAATACA
-CAACATTATGAAAAGAGTTTTTCTTAAGATAAAAAATGTTCTAAAAAATC
-GATGGCCGAGTTTCCTATTTACGCGGCCACAAGACCAGTAAAAAAGTGTT
-AACACAAGTGCGAAAACTAGAACATTTATTTTCAAATTTCACCCGATTTC
-TACAAAAAATCAACAAAAAAGTCACAAAATTTAAAATATGAACATAATAA
-TCAATATCCCGCTGGCGCTGACTCCTCCCCTTTTCGGAAATCACTGTTCG
-CATAGATTTGGCCGTCGGAAAGTCGTTCGGCGGCGGTGACAACTGTCAAA
-TTGTTCACTGCCTTCATTACGTGACCACGATCGATCAGGGATTTCACGTA
-GGCTTTCGGGAAGTTTGGCTCGTACCACGTGTAATTTGGCTAAAAAATAA
-GGAAATTGGGAAAGGTTTTGATTTTATTGATTGAAAAATATTTCATGTGA
-AAGTCGAAAATTGATTGAAAATTAAATTCAGAAGTTTTTTTTCTGAAAAT
-TATTGATTTTTATTTTTAAAAAATCAACTTTTTGACAATTATCGATTTTT
-CCAACAAAAAAAAAATCAAATTTCGCGTGTAATTCTCTACCTGTAACTGA
-TTGTGCATCCTTGGAGCATCAACAGCTTGTTTAACATCTGCTTTCAGCCA
-TAACGCATGCAGTGCAACTCCAGCAACACCCGAAATAATGGTGGATCCAC
-CGGCTCCGCCGACCGCCATAAGCTCCGCCCCTTTTGTGTTAAAGATCACT
-AATGGACTTTGACTACTCATGGGGCGTTTTCCAGGGCGAATGAAATTGGC
-GGGAGACGGTGGGAAACCGAAGAAATTCGGATGACCGGGAGTGGAAAAGT
-CGTCCATTTCGTTATTCCAGAGAATTCCCGTCGATTCGGAGGATACTAGG
-GCACCCAGGCTGGAAGAATTTGAGATGGTGGAAGAGTTTTTTTGGCGGTG
-GCCTAGAAAATGTCTTCATATCCGAAAAAGTCAAAGTGATGGCCTAGAAA
-TTTAAGTTTGTGGCCTATAAACTTGAACTGATGGCCTAAAAATTGAACGT
-CGTCCTAAAAATGTTTTTAACTGATGGCCTAGAATTGAAAGGTGATGGCC
-TCCAAATTTCAGGTGGGCGTATATAAACTTTGGTTGATGGTCTAGAAATT
-ATACACGTGGCCCAGATTATGAAATCACTTCGGTATAAAATCCAGGTGGT
-AAACAATTTACTATTAAGACTGCCTAAAATCATCCCCTGGCCTAATTAGT
-TTAAAATTTTTGGTGACGACCTCGAACTTGTTCATTTTTATCAACTGCAG
-TTGCTTGTCGACTGAGGACTAACTTCTCACTTGCTGGCCGAGTTTTCGAA
-GTTCGGCCACCAAAAATTTCCTTTAAAAAAGCCAAACTCACTATAAGTTA
-ATGGTAGACGTAACCGAAACTGCATTGCCGTCTGCATCGATAATCGATAC
-ATGAGTTGTTCCATGATCCTGCGGTGGTGCTTCAAACGATCCTCCATAGT
-AATCATCAGGATGCGTCGTGTCTGTGATCTTCGACCTAACCCAATCCGCC
-CACTCTTTTGACGTAATATTTTTGGCGATTTCCGTGGCGTTTGCCACGAA
-TTGCGGGTCGCCAAGCCAGCTTCTAGCCGCATAACTAAATTTGCTAGATT
-CCAGAAAATGATGGTATAACGTTGCGATTTCGTTGAACGACTTCATGTTA
-TATTCGAAGCCATCCATCACGTTAAGTATTGCCTGAGCCACCGCTGAGCC
-CGAGGGAGGCGGCGGGCCGCAGACTCCGCGCCCGTTTTTCAGCTTTGTGT
-AGATCACATTTTTTGAGTCGTGGACTATTGATTTGTAATTTTTAAAGTCC
-TGAAGCCGGATGATCCCACCGTTGGCTTCGAACTCTTTGGCGAGTTGCTC
-GGCGAGCCGACCTGTATAAAAGTCGGCGATGGGATCTGTGGAGTTTGCGA
-GTAGCCGGAATGTTTCTAGAAGGTTTTGGCGGGTTTTTATCTGCTCTCCT
-GGTTGGAAGACACGCTGAGTTTCGGGGTTGATGAAGTTTTTCATGGTGGG
-CTCCGCGCGGATTTGGTGCTCGTTTTGGTTGAGAGCTTTTGCAAGGGCAT
-GGGACGTTGGGTAGCCTGGAATTTTTTAGGATGGCCTAGAAACATGAACC
-GATAACATAGTTACTTATTTTGTGACCTCGAAATTTTCATGATGGCTTAG
-AAATTTTTATGATGGCCTAGAATTTTTATGGTGACCTAGAAATTTTTTGA
-TGGTCTAGAAATTTTTAGTAATGTAATAAACTACTCGTCTTCTCCTCCTG
-AAAAAATTTGGGCCCGTCTCCCTTCGTGGTGAGACCCATCGTGGCGAGAC
-CCATCGTGGCGAGACCCATCGTGACGAGACCCATCGTGACGAGGCCTATC
-GTGGTGAGACCCATCGTGGCGAGACCCTCCGTTGAGAGACCCATCGTGAT
-GAGACCCATCGTGGTGAGACACGCCGTGGTGAGACTTATTGTGATACCCA
-TCTTAACGTACACAGTAATTGGAGAAACTTTTAAACTGATTTTTACAAAA
-AGTTCAACATTTAACTTACCAAGAGCTCAATATTCCGTTGCCTCGCTTTT
-TGTTGCCCTCAGGGATTATTGTTCTGTTGCCTCCATTTCCGTTACCCCTG
-TTGTGTTGCCTTCGAGCAGCGTTGAATCCGTTGCCCCCCCCCTTTTTCGT
-TGTCCCCGGGGAATATTAAATCCGTTGCCCCCGTTATCCGTTACCCCTAG
-GGATTGTTGGCCGGTCTAAAAACGGCCACCAGAAAAGTTTTTGAGCATCA
-AAAATGTTCTACGCCGTTAGGAGTTTTTTAGGCCAACAGAAATATTCTAG
-GCTCGCAGAAAAAGTGCCCACCTTCAGCCAACAAATCAATAGTTGGTTTC
-AACAACTGTCTCCACTCGACTTTTCCACTTCCGAATCTCTCGAATTCAGT
-CCGGAGGCCGTGAAGCTCTCCGGGCACCGCAATCGCCTTCCATCCGATTC
-TCGACTGATTCCATTTGTCACGGTACATTTCCTCTGTTGCGGCGAGCGGA
-GCAATCTCCCGAGCATCGATTACCGTACACTCTTTTGTCGTTCTGGAAGA
-ATTTTAGAGGTTTCTAAGTCATTGAAAATATTTTTAGGCCACGGCAGAAG
-TTTAAAGGCCACACGCGCTTCTGGCTTTCCTCATATTTTGAAATGGAAGA
-GTTTGCCGAGTTAGCCCGTTTGGACTAGGCCACGACCGGGGTAAATTTAC
-GGAGCGTCGTGTAGACGATTGTCAATGGAGCGCGAGAAAAACGCTTTGAC
-GAAGGCCAGAAACCAGTGAGGCCACAATGTGATGTTTGCAAAAATGTTTT
-TAATGGCCTAGGAAAATCATTCTTTCTTCCAAAATTTTTCTTCTTTGTTT
-TCCTTTTCGATTATTGATTTTTAGTTGAAAAATCAATATTAATAATTATC
-TTTTTTTTTAATTATTGATGTTCCGCTCCAATTCGTGGCGAGACCAACAA
-CTCACGCATTATAAATAGTCATAAAATGTCCGCCGCCAATTCCGGCCGAA
-TGTGTATCCATTACACCGATACAGAAAAGTGCGGCGATTGCCGAATCCAC
-CGCATTTCCGCCTTTCAGCAAAATATTCCGACCGATTTCTGAGCAAATTT
-CGTTGTCGGCGGCGACGGCGGCTTTCGAATATTTTCCGAGTGGAGAAAGT
-GATGGTCCAGGCCAACGGGGTAGGCGGGCATTGTTCTGGAAACCTTGCCG
-AGTTTTATTTTTATCGGCCACGTAGCAAATCGGCCAGCCATGAACCGACT
-GCGGACTAGTTTTCACCCTCGTGGCCTAGCTTTCTAACAAACCTGCATTA
-GTAAATGAAAATACAATGAAGCGAATGCGACCGTTGAGATTAACAACGTG
-AATACGAGAACCGTTAAGCCGACCGCCGCGACTAAAGTACGGATTTTCAT
-GGGTTGCTCGGCCTCGATAAGCGGCTCAACTTCATCAAATGGTCCATATT
-CTGGCGGTAAATTATCATCGTCCGGAAACGTGTTATAGTATTGAACAGGA
-GGTGGGTTACTGCTGAAAAGTCGAGTTTTGCGCGTCAAATTTGATGTATT
-GAGTGGCATGATCACTATTATTACAAGACCGCGAAATTTTGAGAATGCGT
-ATTGCACAACATTTTTGACGCGCAGAATATCTCGTAGCGAAAACTACAGT
-AACTCTTTAAATCACTACGGTAAAGCTTGTGTCGATTTACGGGGTTTCGG
-TTTTTTCATTTTTTTTGTGTTTTTTAAAAAACAATTTATCGACTAATGAA
-TGATTTCCGTAAATCGACACAAACACTACAGTAGTCATTTAAAGAATTAT
-TGTAGTTTTTGCTACGAGATATTTTGCGCGTCGAATATGTTGCGCAATAC
-GCATTCTCAGAATTTTGTGTTGCCGTAATAATTCTGATTTAAAAATGGAA
-TTTTCAAAAATCAGAGGTTTCCCAAAAATTTGAATATTCCACAAAAAAGA
-TGAATCTGAAGAGTATTTTCAATTTTTTGAGAAAATAATCGATTTTCTGG
-ATTAAAAAATTTGAATTTATAGATTTCTAGATTCTAAAATTTGAATTTGT
-GCAATTTCAAACAAAAATGTATCGATTTTTATCGACTTTTCATAAAATTT
-AATTTAATTTTCGAAATTCCGAAAATATTGCCCGTTTTTCATATACCAAA
-AAAGTTGTATCAATTTTTTCAAAAAATTAAATTTTCATCGATAGTTGTTT
-TCAAAGCATCATGATTTTTTTGAAAGAATTTGCAAATGTGAGAACTACAG
-TACTCCCTTAAAGGCGCACGCTTGTTTTTATTTTTAAAAAATTGGTCGTT
-TCGAGACCTGGTACCGTATTTTCGCATTTGGGTAATATTTCCAGCATTAT
-AAATTTAAAAACAATGCACTTTTTAAATCTTGAATCCATATATATATTTT
-TTTCAGAAACTCATGCCGCCTCGTTTGGGTCTCGATTCGAATTTTTTTCA
-CAAACGTATAATATTTTCTCGAAAAACCCGCGAATTTTTAACATTATCGA
-TTTTTCTCTCACCTCGTCGATTGCCCTTCAGGAGTCATTATTCAGAATTG
-AGTATGAATTAAAAAATCATAGAAAAAGTCAAAGCGCTGTCAATTGGAAA
-TTTAGGACGAGAATGTCAAAATTGCAACTTTTCACGATAACGGAATTCTA
-TCGCAAAACTAGATAAGAGCTACAGTTTGCTGCGTGTAAGCGCGCTCCAA
-TGACAAACGAGAAGAGAAGAGAAGAGGGGGTAACCGCCAATAGCTCTCTT
-TATCGAGGATAGTCTTCAAGTGACAGAAGAGATATTCTGTGGTGGGAGAG
-AGTTGGGTGGAAGGGGGAACAATGAGGACTACGGAAGAATGACTTTTAGA
-TTTGGAGTATAGGAGAAAGTGGAGGTTTTGGCTGAAATTATTTTCAAAAA
-CTTTAACTGTAACAACTAACGAGTAGATTTGAAAATGAGGATAATATTCA
-ACACAACAGAAAAAAAGTCGATAGGTAACTAATAAAAATTAGAGAAAATG
-TGGCATCGGGGAGAAGTGGTGGAACAAAAGAAGAAACTGATGATGATGAT
-AGGAGGATAGCCGCGAAACAAGCGATTAACAGTGAACAAGATTCATTTCG
-GTGAAGATGGAGAAGATAACAGCAAAAAAAAAAACACAACAAAAGTCCTT
-ATTATTGCCCATTGAGAGTTTGTTGAAGGACACTGGTAAGGTGCTCGTCG
-ATTCCATCTTGCTGCGCGAATTGTGGGAACGATGCGTAGATTTGCTTCAG
-GATTGTGACAATTCTTTGCTTGGTTTGGTTGCCGCTATCGTCGTCGTTGA
-AAGCATCGTTGGCGATTGAGAGCAAGCCTGAAAAATACAAATAAAAATAA
-AATAAGTTACGGATTTTTTTAGATTAGAACTTACAAACAAGGAAGATTCT
-CGGAAGATTCTGATTTTCTGGTCCAAAAAGTGCGGCGTCTTGTTTATCAA
-ACAATTCGGCGAGACACGTGTAAATGTAGGGGCTTTCCTCGGTGTCTGAA
-TATGTTGGCAACCAGCTCAGGAACATCTCGACGACCTGGAAATAATATGG
-AACTTTTTTCTTGAAAAACTGAATTCTAAAACCAACCTTTCCGTAGGCTT
-CAGCAGGAAGTGGCACATTGCCGATGATTTTGGCAAATGCAGAAATCGCG
-TTTTCCGTGGCAACAGTGCTCTCCTCGGTGGCTCGGGCGTCCTCTCGTTG
-AATCATGGCGGCCAGTGGCTCCAAACAGCTCAAAATCTCGTTTCGGTAGT
-CGCTGATCTGGTGGTAGTTGATGGCCATAACTCCGAAACCGTAGCTCGCT
-GCTTGTCTCACTTCAGGATACTCATCTCCCAACAACTTGTACATTATTGG
-AATAAGCTTCGGGAAGCGAGTTGGCATATGTCCGACACCGAACTCGATGG
-CGTCATCGAGAAGGCACATTCCCCATTGTCTCTCGAAGTATTGTTTGGAT
-CCCTCGATGAGTTGAATGGCACAGTTGAACACGTTGATCATTCCCTCGAA
-GATAGTTCCCTTGAACTCCTTCATAAGAGAGTGAGTCAAATCAGAGATGG
-CTCCAAGGCATGAGGCCTCCAATTCCATGAAATAATCGAGCTCCTCCTTA
-GCTTCAGCATCATCGTCATCTTCATCTTCAACTGGACGATCGCTCATTCT
-CTTTCCGTAGTTTTCAAGTTGCTTGAGAAGCACCGAAATGATGAGTTGAA
-CCTCTTCCTCGGCGATTCCCTCGGTTTTCATAACCTCAATGCACGATCCG
-ATGGTCGTCATGAACGAGGCGAGAATCTCGACATCGTCCTCCTCCTCCAT
-AGAGGTCGTCAATGCCTTCAAGAACTCGCACCACAAACGACGCTTGTCAG
-CCAATCCTTGCTTCTCAACACAGGTCAACAAGCATGGCATGATTTCAGCG
-GAAGCCGTACGAACTCCGTCGTGAAGTCCGAAATCGAGATTCTTGATGGC
-GAGCTCGTAGACGTCGACGACGTATGGCATGAAAGCCTCCTTCATCTCCT
-TGGCGAACGCGACAAGCATATCGCAAGCAGTTGCCTTCTCCTCAAGACCG
-CTGGTGCGGATTCCGACAGTCTTTTCTCCTCCGATTCCGTGGTATTCAAC
-TCCTTCCTCGTTTTCGTGAACATCTTCGTCTGAAATTTATATATTTTTTT
-AACACGTAAAACTAAAAAACACTCACTGTTGAAGATATTGAAGTCTGGGC
-GGTAACGAGCGGCACGAAGAACTGGATCCATGACAACTGGGAGGAATGGT
-GCGAAATCGGCTCCAAGAATAGAGCAGAAACGAGTCCATGAGCTGATCAT
-GTAGCTGTATTGTGGATCATCGATAGCCAAATCCTTCATTCCGTCTCCGA
-GAAGGTTCAGGATCTCGATTGCAGTAGCGTGGAATTGTTCCTTTCCGACA
-GCATATCCGATGAGAGAGATGCATTCGATGGTCTTTCCTCTCAACTCCTT
-GAGCTCTCCGACGTTTTGAAGAATGTGAACGAGGTTCGGGATGAGGCGAG
-CATGATGTTCCTTGAAGAGCTCCTCGGCGGCTTCAGCGACGGAGGCGATG
-GCGGTGACGATGTTCTCAACGACAACCTGGTATCTCTTGTCTCCGAGACG
-ATTGAACACAGCGGAAAGCACATTTTCGAGTTTCTGAAGAATGAATGGAA
-GATATTGTCCAATGATGCTCTTTGGGCACTCCTCGGCAAAGTTGACAAGA
-GCCGAAGCGGCATGAGCACAGACACGTGGAACATCGGTTCTGTCAAGAGA
-CTCGAGAAGAGCTGGTATGACGGCGGCGTGGCACTTCTTCTGAAGAGTTG
-GAGCGAAGTCAGAAGACATTTGTCCGATGGCGTTGCAAGCCGCGTATTGA
-ACTCTTGGATGAGCATCATTGACGTAATTGGTGATATGAGCCATAATTTG
-CTCTATGTGTGGTTCCATAGATCTTTGGCACCCTTCACCGACGGCGGAGA
-ACGCGCGAAGAGCCGCGTGCTTCATCTTCCAGTCTTCGCTGGTCAAAAGC
-TTCTCGACAAGTGGAAGGAACACTGGGAGCATCACTTTTCCGTTGATGCA
-GCAAGCAACACGGTCGATGGCGCTTTCGGCGATGATTGGGATACTGAAAA
-ATAATTTAATTGAAGAAAAACTAAAAATTTATCCTTACTCTTCATAGTCT
-TCTTCCTCTTCGATCTCGTTGAGCCACTCATTGAGCACATCGTCATCCAT
-TTCGGTCATGCATGAAAGAAGAGTCTCGAGAATTGGTCCAAGAGCTCCTG
-GTGCGTATTTCTTGAGTCCTTTTGGTGCGGATTCCATGTACGAGCAAATA
-ACTTCGATGGCGTTCTGACGGACCATCTCGTTCTTTTCCTTGTTTCCAGC
-AATCTGAAATTTGAAAAAATGAAATTTTTAAATTGGGCCATTTAAATTAC
-TTACAGCAAGAGTGACTTGAAGAACCTGAGACATATGAGTGTTAAGGCAT
-TTTGGCAGAGAAGAGGCGAGCTCGGCGAACTCTCCGAGTGGTCCATCTGA
-ATCATCCTCGTCGCTGGTTTCATTGCAAACTTGAAGAACATTTGGAACAA
-GAGAGGTCATAAGCCTGACAACATCCTTCTCCTCATCATTATCAACAGCG
-AAAGCGATAACAGCACGGACGGCGGTGGCCTTGATTTGCAAATCCGGTGT
-AGCCATGCACTTTTCCAAGACAACTTTGAGGGTTGGAAGGAAGTGGGCCA
-GCCTGTTTCCAAAAATTATTGGGCATCCGCGAAGAATAAGCAGGGCTATG
-TAGTTTCCGGTAAGATCCTCGCTCTTCAAACAATGATCCATCAGCTCGAG
-GACTCCTCCCCATGTCATATCTCCAGAATCGTCGATGAGGTTTGAAGCGA
-TTTCAGAGATCAAATCAGCAATCTTCTTCTTAATCGAGAGTTCGGTCTCG
-TGAACTATCATCTCGAGAACTTTGGCGAGAATGCGCTGTTTGTTCTCCTC
-GTTCAGCGTTTCCCAAATCGCATCCCAGTCTCTGGCGAGAACTCGTCGCA
-GAAACACCAAAACTGTGGATCTGGCCTGAAAATCGAAAATTCATGGAATA
-TATAGGAATTTGAGTGAACTAACATCAGAATTATTCGTGTGGTGTGTGTA
-GGCCTCGAAAAGTGCAGCTACTTTGGTTGGTCCTTCAATCTTTTCATAGA
-CTTCTTCAGCTTGTTTTCGGATATCATTGTCTGCTGACTGCAGTTTTGTG
-ATGAGCTCAGTGAATTGATTGACGTCCATTGTAGGGAACCCTGAAAATCA
-GAATATGTGCTAAAAATTTCAAAATTGAGAAGGAAAAAGATGAAAGCGAG
-TCGGTTTTGCAGATAAACGCCTGGGGAATACGCGGAATCGCTGAGGAAAA
-TAGATTTTTAGTATAAAAATTGGCATTTTCAACAAAAAACCTATCGGAAA
-ATGTGAAAAATAGGCCAACAAATATTGAATTTTGGGACAAAAACGCCTCG
-AGTGCACGATTCTCAACGGAGCGCACTTGCTGCGTCACACGCACTTTAAA
-CTGTACACGGCGGGAAGTTCAAATTTTAAAAGGATTCACGTGATTTTCAC
-GACATTTACTGGTTTTTTCAGCGAGTTTTCGCAACTTTTCGGCGACAACC
-GATGATGATTTATGTTTGGAATATGATGATGGTAGCGTGTTGCGAAATAA
-AAAATCGATGGAATGAGTCAGCGAGAAACTAATATTTGCATAGAGAACTG
-TTTGCAATTTTGGCATTACATTGGCCAGTGCACTGACAAAAAAAGAAAAA
-AATAAACGGCAAAATCTCTAATACCTATTCCAGGCAACCAGTGTCTGGCG
-ACGATGGAGAGTAATTCTGAAAGAGACGCAGTTGAAAAGAGTGTGTTTTT
-CGCTTTTTTTTTCAGACAGAAGAGTAAAAAGAGTAAATACGTATCAGTAG
-TAAAAACAATGTGCGAGCTGGGAAATCAGTAATAATTAACTACTTGTGAT
-ACAAATTCCTCAAGGAATGAAGGAGAAAGTGTACTTTTTTTGAGACCCGA
-AGAACTCGGGGGATGTCCAATTGGGGGGATTACCAACTCGGGGGATTGGC
-CCCGCCCACAGAACCGTGGCTTGCAATACGCCCATTTCTGCAACTGCCGC
-ACGGTTTTAAAACTGTATTTTTCTCAATAGAGCGAGAATTAACAAGAAAA
-AATAATTTTAAAACCGTGCGGCAGTTGCAGAAATGGGCGTATTGCAAGCC
-ACGGTTCTGTGGGCGGGGCCAAACTCCCGAGTTGGTAATCCCCCCAATTG
-GACATCCCCCGAGTTCTTCGGGTCTCCTTTTTTTTAATTTTGAATTGAAA
-AATTGTCCGAAAAGTGCAAACGTAGAACATCAAAACCAGTGGAGGGGCGA
-AATTTGATAGATCGCATGTTGCAAGAATGAGCATTCTACGAGTTTCGCGC
-CATTTCTGCGTAGCGCGCACAATATTGTGCAATAAATCTCGGTATTTGCG
-TACATGCATCATATCTTACGCGCAAATCATATTGGAAATTTCCCCGAAAC
-ACGGGGAGGCAAAGCTAACGTGGCTGAAGAAATTTCTACAGTAGTCCCAT
-TTGGCTGACTGAATATTCAACGCGAATAAGTTTTGTACACTATTGCGTAC
-TTTGCGTACGCGCATTTTATTTGACGACAATTCGTCAATATCAGCTCTGG
-CTAAAAGCGCTTTTCTCATTATTTAAGCGAATAAAAGTCGAAAAAAAATG
-TTTTGTGATAGAGAATAGTAATTTAAAAAATAAAAAAGTGCATATTTTAT
-GTTTCTCATTATGTTTCCACTGATTTTCTGAGAAAAACCGAAAATTTCCT
-CTTTTTTCGATGAATTTCAGCTGAATAGTTTGTTTTTATCTAGTTTTTCT
-TCCGATTGACTGAATAACACATTTAATAACATCAATATAACGTTTAAAAC
-ATTCATTGTCTCGAAAACCAATATAAAACTCGTCAGAGAGGGATACTTAG
-TAGATATGCTGAACAAGGAAAAGAGAGAGAAGAACATTAACCGAATGGGG
-AGGGGGGAATAAGAAATCTGAACAGGAACGAAATATAAAGAACATTATTA
-GAAAGAACAAGCATGGCTTGATCTTCTTGGCAGTCGTCTCCTTATCCTAT
-CACTTCTTCTCGGCGTCCTTCTGATCATGCTACCGAGCAACGTGGCACGA
-TCGAAGAGTTTCACAACGGTTTGATACTTTCGCTCCACGAGGGGGCTCCC
-AATTCAGCGAGGGTCCTCTCACGAAGTTTAATTTTTTAAAATTAAAAAAT
-AAGTAACACCTCAAGAATTCCATCGAAGTTGTGCTCCTTTGCAATAAGAC
-GAAATTTTTTTTTACGGAATTGAACAGGATCATTGAGGTACGGCATGAAA
-ACGGCTTCCTCGTTGAACGATGTTGAAGCTCCTTCACCATTGCACCTGAA
-AATCAACTTCTAAATTTTCCAATTTAAAGAAAATCCACATACTTATCCTC
-GGAAACGAATCCAATATTCTGGTTGCTGAGTGGAATTGCTTCAAAGATTT
-TGATCAGATTTTTTTTTGAAATTTTCGATCACACATCTTGTATCCACCAA
-ATCGCCGAGTGCTTCATGAACTTCAGACTCGTGCTTTCCAACCTCTTCCA
-TGAGCTTCACTTCTTCTGCTTGGAACTTTTGATTGCCTTCGGACCGATCT
-GACTTGTAGTTTCTTCTTAAATAGTGGCTGATTGAGCAGTCGACCTTGCA
-GTCCTACCTTCTTTGGCTTCTTCTGCGGCACTTGAGCCCTTGTAAGAGCA
-CTTATTGCTGCTTAACCTTCCTTATTAATACTTCGAACAGCTTCTTCTTG
-TTCGCATCTATTTCGAATTTTGTCTTGAAATCTTCCAATGCAGCGACAAC
-GTAATATCTGGAAATTATAAAAACATTAAGAGAAAATATTTTGAAAAAAA
-ATCGAAAATTGCACTGAATTCCTAAATTTTTTATTAAAATCGAAAAAAAA
-AAATGAAATACGTGAGATTGAGTTTCGAGACTTTTTTATTCAGAATCAGC
-ATATATTTCTCCATATTTGAGTAGGTTTTCAGAAATATTGTACCATAATT
-TTTGGAAAAATGTAATTTTTAATTCGAAATTGCACTGAATTTCTCGAATT
-TTTCACTAAAATCGAGAAAATAAATATGAAATACGCGAGATTGAGGTTCA
-AGACTTTTTAATTCGGAATCAGCATATATTTTTCCATATTTGAGTAGATT
-TTCAGAAATATTGTACCATAATTTTTCGAGATATTTTGAATAATAACTTA
-CTTTTCGACGTTTTTTGCCTTTGTCCGGTTTAATCCATCGAATTTCGAAG
-CGGTTTGCGTAGATTAGCTGAAAACATTATGCTTATTCCACGTAGTAACA
-AGAAAAAACAAGAAAAAATAAGAAAAAACGAAGAAAAATAAGCATATAAG
-TCAAATTAAAAATGTTTATTCGATCAAAATTCTTAACCATAGGAGGCGGT
-GGCTAGCCGGCGCACTCTCGCGGCCACGTTAGCTTTGCCTCCCCGTGGAA
-AGGAGCCATGATATTACGGAAACACTATTTGAATTCTGAGAACGCGAAAT
-ATCTCGTAGCGAAAACTACAGTAACCCTTTAAATGACTACTGTAGCGCTG
-GTGTCGATTTACGGGTTCGATTTTTAAAATTATTTTTTTTGTTTTTTGTG
-TGCGTCATCGATTACTAAATTATAAATTATTTCCGTAAATCGACATACAA
-TCGCTACAGTATTCATTTAAAGAATTACTGTAGTTTTCGCTACGAGATAT
-TTTGCGCGTCACTCCTTCAGGCACCACATCTTACACTCAAAATCGAGGTG
-AATTTCTGTGTATTTGACAGCAAAAATGTCGTGAAAAACAATTAAATAAG
-GCAATTTGAAGAGGAAAAAACTGGGGCAGATGTGAGATAAGAAGAAGAAG
-AAGCGGGGCTTCGACAACCGTAAACTAATCAGAGATGGAAAGTGAGAAAT
-TTGAAATTTAAGACAAAAAAGTTAACAACGGGGGATTTTTTTTAGAGAGA
-AAGAGCGAGTAATCGGGCAGCAGCAGAGAAAAAAAAAGATAATAAACAAT
-TGAAAAAATATAAATATCGGGGAAATTATTGCTGAATAGACTGCAAATAG
-GTGACAATCTCGGGCGGTACAGAACGAAGTGTCTCTGGACAATTTCCGGG
-TCCACGGACAAGAACGGCCTGCGCAAAGTAGGCCTTGTGGTTGGCGATGT
-TGGCGGCGACGGGCGGTTGCTTGGGAGCGTAACTCAGACGACAGAATGGG
-TTCACAAATTCTCCCTCGGCGTTGTACATTGAAGCTTGCTCTTCTTCTGG
-TGATAGGACGGCTCGATCGGAGGCTGAAGCAGCTTCCAGCAGCATTGCCA
-CCTCGTATGACAGAATTCCGTATTGACCACTGCAAAAAAAATTTATATGA
-GAAATTGAATTTAAAATGATTTTATTTGTAATTTTGTTTTTGTTAATTGT
-CGTTAATTGTTTTTTTTTTGAGAAAAAACCGAAAAAAAAATTAAAATCTT
-CATTTTTGATTTAATTTTTTTGTTGAAAAATCGGCAGTTTTCGATTTTGT
-TTTTTTGAAAAAATAGGGAAAAGTCGGTAATTGTCGATTTTTCAAAAAAC
-TGAAAATTCCAGATTTTGTCAGGAAAAAAAACGAAGAAATCGACAAAATT
-TCAATTTTATTTTTTTAAATTTGTGTTTTTCAAATTTTTTTTTGATATGT
-GATTTTTAACTTTTCTCTGGAAAAAAACCGAAAATTTGCAATTTTTCAAT
-TTTTTCCAAAAAAATCTTTAAAAAATAGAAAATTTTCGTTTTTTTTTCTG
-AAATATTTAAAAATTGTAACTTTCTATTTTTTTTAAACCCGTATTAAAGT
-TTAAAAAAAAAATCGGAGAAAAAAAAACTGAATCGAAAATATGTGATTTT
-CAATTTCCTTTGAAAAAAATATAAAAAATCGAAAATTTTCGTTTTTCGAT
-ATTTTTTCTGGAAAAAAGCCTAAATTTTCATTACTAACACAAGCTGCTGC
-GTGACATCGGCTAGCAAATTGCCCATTCCAATGGCAATAATCCGTTTCTC
-AGGCCCCGTTGTCGTTTGTTTCAGACCTGGCAAATCAATGCATACGACCT
-TCTCGATGAGCATTCCGAACATGCCAGTCTGAATATTCTCACACGATTGA
-ACAAGATCCTGTGCACTCCGGGCGATCGTAAATCGACACAAGAACACGAT
-GAATAGCTTCATAAACTTGGGTGTCTTCGACGATTGAACTCTTCGAAACA
-TTGTATTGAGCACAAATGTCATCGCGGAACCCTCGAAGTGCTCAATCGAC
-GGAAGAATCGTCGCCGCCAACTGGAAACCGTATTGATCCAAGGTTTTCGA
-GCCCAAAAGCCGCGCCAAATGGCTCAAGATCAACCCAGAATTCTCCGAGA
-CGACTCGCTGAGCATTCACGGAAAGGATCACTTCGAGAACCGAAAGTGCC
-GCTGGAACATTCGCTGATCTCGCCCAAAGACGTTCGGATAGCAGAAACGG
-AAGGAACGGTGAGAATTGATCGATCGATGAGTTTCTAGCGATACATGAGG
-AGACGAGAACTCCCGTGATTTGGAGAGCATATGGGATGAGATCTTCCAAA
-TCCTCGCGGAAGATCACTTCGATCAGTGGAAGGAGTTGAGCATCCAGTGA
-GGCGCCGATTGTTCGGGTCTGGAACAGGAAATTCGTTAAAAAATATAAAA
-TGTTCTTAAAATTGCTATCACTTTTTTTTTGAATAAGAAAAAAAATCACA
-AAAAGGAAAACACGAAAAAGCAGACAAATGTTTCGATTTTGCAATTTTTA
-ATTTTTTTTTTTCAGAAAAAAATTATCGATTTCTTCTTTAAAAAAAGAAG
-ATTCTTTTCGATTTTTTCGGAAAAAAACATCGAAAAATTGAAAAACAAAA
-AGTTTTGATTTTTTTTTCAGTGAAAATCGTTCAATTTTTCGGGGTTTGTT
-TCGACAAAAATAATTAAAAACTAAAATTTTTCAGTTTTTAGGTTTCTTAT
-CAGAAAAATTGAATTTTTTCGATTTTCCGAAAAATTAAAAAAAGGTATAT
-TTTTTGAAAACACGAAAACGGAAAAGTGTTGGTTTTTTGTAAATTTTTGC
-GTTTTCCAGCAAAATTGCCAATTTTTCCGAAAATTTTCAGATCGAAAGTT
-AAATTATCGATGTCTATTCCAATTTCCGAGTTTCAGCGAATTTTTTTTTG
-CAGAAAAATTTCAGAAAATTTGACAAGTTATGTTCCAATTTATGAAAAAA
-AATTTGAGACCAAAGTGCGGCACGGAAAAATGGGCGGAGTTTAGAGTGGT
-ATTTTTCTCTCAAACTACTCCTTACCTTGGTGATCAACACACAAATCGTC
-TCAAACAAAAAGTGCGTGTGCACCGAATCCGCCGGATTTTTCGTCGCCGA
-CTCGACCAACTGTGCGAGCTTGACCGCAATCGCGTCCGCATGCCGAATCG
-TGTCGTCATCGAGAATCACAATGATCCTCAAAATCGCCTTGATCAGATAC
-GGCGAGTTTTGCGCTTTGGCATCCTTGTCGAACGCGGTGACAAGGTTCTG
-AAGGATCGAGGAGACTGGAAGATTTTGAGCCGAGAAGATTTTGTTGGAAT
-CAGCGAGAAGGATCTTTTCAATAGCGTAAGCTGCGTACTTGTGCAGAATC
-GGAGTATTCGAGCTGAGAAGAGCGTCCGCCGACTTGATCGCAGTCATAAG
-GTGCTCTGGAGCCAGCTGTTTCCTGAAAGTGACCGCAAACTTCAGTGCAT
-CAGCTTTAAGGATCGGAGTTTGATTGACATCGGCGTTGAGATGTGTGGCC
-ACTTGTGTGATGAAGAAGTCGTTGATGTCCACCAGCGGGTTCGTCGCCGT
-TACTCCACTCTTAGCAGTCTCCGTCTTCACCGCGATCGCCGTGATCAGCG
-AGTAGACAATGTCGATCTTGATCCAATCACCACTTCCCAGCAGGTTCTGC
-ACGATCTCCCCCAGACATGGAAGCATTTGCGCCTCGAATCTTCGGCAGAG
-ACCTCGCGCAAGATCGATGGCTCCACGGCGTCGAGTTCCTACATCGGTAC
-CCTCGATGTCTCGCTTCATATAATCCAGTGGCTCATCCTCGAACAGTTCC
-ATATCCTGTTGACGAAGCAGAAGGTTCTGAACGCACACGTTCTCGGCGAG
-AGTCTTCAGAACGCCTTCACCAGTGAAGTGTCCCTCGTAGTACTGTCGCT
-GGCTGACCATCGACAGAAATTCCAGCGCGGCGCACACCATCGTATCGTAT
-CGAGTGTCGGGGCCGGTAGACTTGAGCAGATTCCAGACGGCAAGGATGAT
-GTCGGGCACGAACTCGGAGATCTCCTCCTCGTAGCGTTGCGAGTAGAGCG
-TGAAGATCTCACAGATCTCGTGCTTAAGCTCGTCCAGAGTTGTAGGTTCT
-CCCGAGTTGGAGGTCTGCGTCGGCGCGTCGATTTGCACGAGATGCAAGAA
-GTGTGGCATCCAGTCCTTGAGATGATCCTCGAAGTATTCCGGAATCTCCT
-GTGAGCACAGAGAATGGTAGACTTTTGCAATGAGAAGTAAGACTCGGAGC
-CATTGGGCGATCTCGTCGGCTCCGAGTTGATCCTTCCGCTGTCCCACCTC
-CATCATGTTCCGTAGCAACAGAGTTAGAGGCTCTTGGGTCTGAAAAATCG
-GTTCTTTTTATTTGTAACTGAAAAATCTGGGGAGAAAACAGTTTTTCGGT
-CCAAATTCGAGACTGACATTCAGATTTCTTCAATTTTTTGGCTCAAAAAT
-TTTGAAAATTTGTCCATTTTTATAGGAAAATTATCAATTTTCGCCAAAAA
-TTCCTCATTTTTGCTTTAGTTAAAATTTTTGACTAAAAAATCATAAAATG
-TTGAATTTTTCACGATTTTTCGGAAAACAAGGCCAGCTTTAGCTAGCTTA
-AATGTCTAATTTTGGTCATTTTTTAGGGTCAAAGCGGACAAAAATTCAAC
-TTCCGACGGCTGCGACGTAAAAAAGTGGCCAAAATTGGGGATTTTAGCTG
-AAATTAGCCAAATTTTGAGCCAAAACGCAACTCACGCTCAGTAGACACTT
-CTTCAGCTCTTTCCAAAGCTCTGCTGACTTGGATTCGAATCGGAATTTGC
-GGAAAATCTGCTCCATCGACGCCAGCGAGGCCACCAGGTGATTGAGATCC
-GCTCCGTTCAGGAATTTCGACAAATATGGAACCAAATCTGGCCATTTTTC
-GGGAAAATCTCTCTGAGCGATGAGATACAGAGCATTGGACAGGATTTCCT
-GAACATTTGATTTTGTATTGAACATCGCTTCGAGAAGCATGCTTCTGAAC
-TGCTCCTCGTCTTCCTGGCCCATTTCTACCTCTGGTGCCGGGCCCTGAAA
-CAATTTAAATATAAAATTCACGCATTTATTCAAATTTTCCAACCCAATTT
-CTCTTCACAAAATTTTTCAAAGCGACAGCCGCGGCGATTCGGATCTGCGG
-AGCAATTTGTTGCTGTTCGTTGACCACCAGTTGAAGAATTTGAATGATAT
-AGCCTGGATTTGATTGCAGCGAGCGGAGCGCTTCTTCTCCACGCTTGCGA
-ATCGCAGCATCCGGCTCCAGAGTCTGCTGGAGAGCTGCTCCGATTTGCTC
-CATCTGAAAATAGGGAAAAATAGCTGTTTTGGGGGTGAAATAGGGAAGAA
-TTAGGTGAAAGGACAAAGATAGTTTAGCTTAAAACTTGAAATCTAAAATT
-TCCGGTCAAAATATTAAAGTTTTACGCAATTTTTCGCAGGCCCGCGGGGA
-ATAAACTCGCAAAAATTCGCAAAAATAAAAAAAAAATTTCAAAAGTGTGA
-AGTGTTTGCGTACAGCGCACCCGACCCGACGCGCAAATTTTTTTCATTAT
-GTTCTCTGTTTTCACTGATTTTTACTGATTTTTCCTAGTTTTCCCTTGAT
-TTTCTTCAAATTTTCCACTTTTTCAGCAAAACGTGCATAAAAAAATAAAT
-TAAAACATTTCAATTTTCAAAACTTTGCAAAATAAAGGCGTCGTTGCGTA
-CAATGCGCACGACTTGACGCGCAAACTTCCCAATTTTTATTCTTAAATTT
-TCCTGGATACCCCTGGTTTTTTCTCTGTTTCCCCCCTAATTTTTCGCATT
-TTCAGCAAACATGGGTGTTGATAAAAAGCAAAAGCAACGAAAAACCAATC
-CATTCGAGCTAAAATTCAACAAATCCAAGCATGACGTGAGTTTTTCAGAG
-TTTTGAAGAAAAAATCGATTTTCTCGCAGATTCTCGGCCGGAAAAAGGGC
-GCACAAGTTGGAGCACCGACTGCGTCACGAAAACGAGCTCACGAGCAACG
-TGAACAGACGCTAGGCGTAGAATATGACCGGAAAAATAAGATTAGCAAAA
-TTGTCGACAAACGGCTCGGCGAAAAGGACGGAAAAAGCGAGGAGGAGAAG
-GGCGCGATGAGATTCACAGAGGAAAGAGTCAAAAATTATAAAAGAGCATC
-GAAATTCAACTTGACAGATGATGGAGATGAGGAGGAAGAAGGTTTATTCC
-GAAATAAATTGAGAAAAATTTTAATAAAGTAAATTTCAGTACTTACTCAC
-AAGGGAAAAGCGCTCTCGGACATTGAAAAATACGACAAATCGATGATTTC
-CGACTCGGATGACGATGAAGAGCCGGGAAATTTGGGCTCAAATATGGTAA
-AAGTGGCTCATTTCGGTGGTGGAGAGAAGACCGCCGAGGAGCACGTCCGC
-GAAAAAATCAGCCGAGAGGATATGATTTCGAATTTGATTGCGAAAACGAA
-GCTGGCGCGTCACGAGAAGCAACAGCAGAAGGATGAGCTCGAGCTGATGA
-CAGAGTCGTTGGATTCCAAGTATCAGGCTTTGATGGGCAAAATGAAGGCT
-TCATTTAGGCCGACCGGGCGCCAGCCGCTGGAAAAAGATGATTACGACAA
-ATTGGTACGGGAAACATCCCGGTTTTCTCCAAATTTTTAAGATAAAAGAT
-AATTATAAATTTAGAGTGAAAATCGATTTTTTTCACAATTTTTTAGTGGA
-AAACCTAAAACCCAAAAAACTTGATCTGAAAATGCTAATTTTTAACCATT
-TTTGCTATGGAAATTGGAAATTTTCATTAATTTTGCTGTAAAAGTTGAAG
-AAATCCAAGTTTTAGCTTTGTAATCAGAGAAAACACTGTAAAATTATTTC
-GGAATTTGTGCAATTTGAAGTGAAAAATAAAACATTTAACTTCTTATCGC
-GAAAGAAATTGAGCTGAACTGAGAATTTTTTTGACGAAAAATCATTAAAA
-AGTCAATTTTTTTGACAAAAATTCGAGAAAAGTCGGTTTTTCTTTTGACA
-AAAATGACGAAAAAGGCAATTTTTAATTTAAAAAAATAAATTTTTCGCCG
-AAAAATAACTTTAAAAAAGTCGTTTTTTTACAAAATAAAACAATTTAAAA
-TAACTATTTTTCGACAAAAAAATTAAGAAAAAGCCAATTTTTTTGTTTAA
-AAAATGATAGAAAAAGGCTTTTTTTTTGTTTCTTCGCCTAAAAAATCAAG
-AAAAATAGGTTTTATTCCATTTTTTATCCAAAAATTATTATTTTTCCAGA
-CAATCACCTTGAAAACCGAAGCCGACGCTCGTGCCACCCCAGCAGATCGT
-AAGCTATCCGAAGAAGAAGAAGCTCTGAAAGAAAAAGAACGTCTGGAAAC
-TCTCGAGGCCGCCCGTATCTCGAAAAATAATGCATTTTTCAACGCAAAAT
-CTCATTTATCAGCCGATGCCGACGTTGATATCGATGCTGGATCGAAGGCC
-GACGCCAGAAAAGTTCAGGCGAAAAATTCGAGATTTGAGGTCAAATTTGA
-CGATGAAGGTGGCCTGATCGATGAGGATACGGTGGAAAAATCCAGGATTT
-TAAAGAAAAATCTGGATGGTTCTGATGAATCTGACGATGACGAGGATCTA
-GAAGATGAGGAAGAGGATCTGGATGATCTACTGGAAGATGAGGATGAGCT
-GGAAGAAGATTCCGATGATGAGGAAGCTCAGGAAGCCCAAAAAGTCGTCA
-AAAAAGCGAAAAAATCTGCTCCAGAACCCGCTGAAACTCTGCCATTCGTA
-TTCGAAATGCCGAAAAACTATAAAAAATTCTGTGCTCTTCTGGAAAAACA
-CTCGGAATCGATGGATTTAGTGCTGGAACGACTCGTGAAATGTCATCATC
-CGAGCCTTAAAGAAGGAAATAAGAAGCGTCTGAATAAGCTTTTCCTCTTG
-TGTTTAAGATGGTTTGATGATATGTCGAAGGAGGAATTGACAGCGGAAAG
-TGTGAAGGAAATGAATTTAGCGCAGGAAACTATGCATGCGTTGATGAAGG
-TAGCGATTGGATGGAAAAGCTGAAAAATTACCGCACTTTTTAATCTGAAA
-ATTGAAAAAATTCGAGAATTTTTGACCTAAAATTTTGAAAAATTCCCGAT
-TTTTATACCCCAAAAATTGCAAAAAAGTCCCGATTTTTTACCAAAAAATG
-TTTTAAAATCCCCGAATTTTTTACCTAAAAATTGCAAAAAAGTTTCGATA
-TTTAGACCCAAAAATTGCAAAAAAGTCCCGATATTTTTACCAAAAAATGT
-TTTATAATCCCCGAATTTTTGACCTAAAAATTGCAAAAAAGTCTCGATTT
-TTAGACCCAAAAATTGCAAAAAAGTCCCGAATTTTTTACCAAAAAATGTT
-TTAAAATCCCCGAATTTTTGACCTAAAAATTGCAAAAAAGCCGGTTTTTT
-TACAAAAAAATGTTTTAAAATCCCCGAATTTTTGACCGAAAAATTGCAAA
-AAAGTCTCGATTTTTAGACCCAAAAATTGCAAAAAAGTCCCGAATTTTTT
-ACCAAAAAATGTTTTAAAATCCCCGAATTTTTTGACCTAAAAATTGCAAT
-AAATTCCAAAAACTTTGGCCAAAAAATTAAAAAAAATACCCGAATGTTTG
-ACCCAAAAATTGCAAAAAAGCCCCGATTTTTTGAGAAAAATCATGTGAAA
-TTAAAACCTTTTTTTTTTGAAAATCAGTCTCGAAAAAAAAAAGAAAAACC
-AGGAAAATCATGAAAATTTAAGAAAAAAATCATTAAAAATAGGAAACGAT
-CATGGAAATATTTTTAAAGAAACATTATATAAAAAATCATTAAAATTTCA
-GAAAAAAAATATGGAAAATCCTGAAAATAAAGAAAATAATATTAAAAATT
-CAGATTAAAAAACGCAAAAAATTCAACAATTGAAAAAAATTTCAAATTGT
-TTTTTGCAGTTCGACATTCAATACGGAGTCCGATGTGTGCGTGCTCTAAT
-CCGTCAACACTGGAAAGGCCGCCAGGATAAACAGAAGAGTAGCCCAGTGT
-CATTTGGATTAATCTCTGCAATTCGTCTTGTTTCCGGCCTCTTCCCAGTT
-GCCGATTCCTGGCATCCTGTAGTGGTTCCGGCTCTTTTTTTGGCAACTGA
-AGCACTTTGCTCGGCGAAATGTGCCAATTTGAATGCGTTGGCTAAACAAA
-TTCAATTGGCTAATGCTATTGTTGAATATGTGTCTGAATCCAAGAGGTAA
-TACTTGGAAACGAACATTTAAATAGGCAAATTTTGAAAAAAATACTGAAA
-GCTTTGATATAAAATAGGAAAAGTAACGAAAAAAAAAGCCAAAACCACCA
-AAAATATTATTTTCAAAAGCTAACTCAAAAAATTTAAAATTCAGAATTGT
-CGCTTAAAAAAATCTATTTTTTTCGATATCGAAAAAAGATTACTATAAAA
-ATTCAAAAAAGCAATTTTTTAAAATATAACTTGATTTTTTTTTCTGAAGT
-TCATTTTTTAACAAATAATTGCATTAATTTTCCATTTTAATGTTAAAAAA
-AAGCGAATTTTTCAAAAATTGATATAAATTTTGTTTTGGCAATTTTTAGA
-TCAGAAAACATTGAAAAAATACAAAAATCCCGTTTTTTTTTAAATTAATT
-TTTTAGAAAAAATTGCAATTTTTCAAAAATCTTCCGGTCATTTCTCTATT
-TTTAAAAAATCTCTCGTCTCTTTTAAAAAAATTTAAAAAACCGAATTATC
-GAAGCGTATCAAAATTTTGAAATTAAAAAAAAAACCGAACTCCATTTTTA
-CGAAAAATCCGAAAGTTGAAAATTGTTTTCAATAAAATAAATTTCAGATA
-CGTCCCCGAGCTGGTCGCATTTGCTCGAAGTGCTCTTCTGCTTGCAGTTA
-CAGAGAAAAGTGAGAAATTCGCGACAAATGGATTCCCGATTTCCAAGCCA
-CACACGGAAATGTTATGCTTTGAGGAGAAGGTAAATTTATAAAATTTGTT
-TTTTTGAGCAAAAAATTGGTTTTTTTTTTTGGTTTTCTCTTTAAAAAAAT
-TTGCTTAAAAACGCTCAATATTTAAAAAAAAAACTGGCAAAATCGAATTT
-TATAATATAAATTAAAAATTTTGTTCAAATAAAAATGATTTTTTTTTGAA
-AATTTAGTTTTGAAAAATTTAAAATTAAATTTTAAATTTTCACAAAATTG
-CCAATGATAAAATGTTCACTTTTTCTTGTATAAAACTGCTTGAAATTTTT
-TAAAAGCAATTTTCCGAAAAATAATTTTTTAATAGATTTCTGAAAAACCG
-AAAAACCACCGATTGAAAAACGAAAATCAAGTTTTTTTCCGAATTTTCTA
-TTTTTAACAAATTAAATATCAATTTTGCACATACAAAACGGTTAAAAAAA
-AACAAAAAAAATTGCCGAGAGCCAAAAAAATTTAAGTTTCAGCGATTTTG
-AAATTTTTTTTTTAGGAAACACGGTCTCCTCGGGTGGAAACGAAGGGGGA
-GGGAGATTGCTTGCGCGTTTCACCGATGCGCCTTTCGCGTGCTGGCGCAC
-TTCTGAATATTGAATTATTTTTGCGGAAAAAATTCATTTCTTCTATGAAA
-TTTTCTTGAGAAAGCAAAGGAAAGATGATGAAATGAATTTTTAAAATAGT
-TTTCTCAGTTAAAAAGAGAATACCTTGCTGCAAAAGGTTAAATTTATTGA
-AAAATTGAGAAAATAAGAAGTTTATCTTTGTTTTCACTACATAAAGTGGG
-GAAATCTCAAAAAAATTTGAAGACAATTAAGAAATATAATTAAATATATA
-GCCTGAAAGTCAAATAAGAAATGAAGGTTTGGTCACAAACAATTTTATTT
-TTGAATTGAAGTTTTGAGAAATGATCATGTGCCAGAATCACTAAATCTGA
-GACATTCAGCCCAATTTCTTTAATTTTCTGTGATTTTATCATGGAAGTGT
-GGCTTTTTCTGTGATCTTGCCAGTTTTAACAAGTTGAAATTGGAAAATCG
-TGAAGTGGGAAACTAGCAGTGAAGCTTCCAAAAATTTCAAGCCTTACTGA
-AAGGAAAGTATTGGAAACTAAAAACGAAAGCTTAAGAAGATACCGTTTTT
-ATATATTTGAGTTTTGAAAAGCCTTAATAGGTTTTAAATACAGTTTTCTC
-AAGAATTCAAACTTGTAACGATTAAGTTGAGGCACAGAATAAGATGGTAA
-TACTAAGTTATGTTGAAAAAAGCCAAGAAAGACTGAAAACATTGCTTTCA
-ATCTGATTTTTTGTAAGTAATGTAATGTTGAAACATTATTCTTCATAGTT
-CAGCACTTTGTATGGCTTATTTGAGCCCAAACGTACAGTAGTATGTGGCA
-AGAAATAAAATATTGTGCCAACAAAATTGGAGCCGAAAAACCCATGATAA
-AATGTTTAATACGTGTATTGCTCTAATAAAATACCAAATATTAATTAGAT
-TCACTGTCTCGACTCTTTTTAATTCAGATTAATAACTTTTAGCTCCTCTT
-TTTAACGAAAAATTATAACTGGATTTCACAAAAAGAGTTCGATCTGAGTT
-CTTTCAACAGGTACATAGACGAATTATATCTTAAAATGACGAGAAAAGTT
-TGCTCTATAAACGTTATCATTGCAGGTTATGAGAAAAACAAATAAAAATT
-TAATTTTAAAAAATCCGAAAATTCAGTTGTTATTTTCAAACAGTTCGTTA
-TGCATTTCCACCGAACGGTTTCCGATAATTTTTGTTTCTCCACTTTCGGT
-TCAGTCTACTTTATAATTGTTATCATTTTGAAATAGAAAAATCGACGAAA
-AACTAATAAAAATCGAGGGAAATCACTCTTCAACGGTGAAATCTCGGTGG
-ACGCAATGAAGCTGCAGCATTTCAAAAAAATTTTAGAAGCAATTTTGGTC
-ATTTCAGCTTCAAAAAGCTTTAAAACTTAAAAAAATTAAAATTCATTTCA
-AAAAATTTGAAATTAGTCATTTAAAATATAAAAATTAGAAAAATTCTAAT
-TTTCAGCGAATTTTCAAATTTATTTTTATTTCAGAAAAATTCAAATTTTG
-GCTTTCAAAAAAGCTTACAAAATATTAATTTTTAAAAAATCTAACTTTCC
-CAATTTTTCAGTACACTGGCCCCGCACTCCAGCCAATCTCCCTGACCACA
-ATCTTCAACAATTCCCCATCCGATCCATCTCTAAAGCTTCACGTTCTTCG
-TGCTCTGCTCTCCCTCATCCAACATCTCCGTGTAATCTACTCCAACCAAA
-ATGAGACCTATTCTATCGTTTTCAAGCCATTCCTCCGGATTTTGGAATCA
-ATTCAAGCCAAAAATCTTCCAGCCGAGGTCCAGGAAGAGCTGGAGACTCT
-GTGCGCCTCAATGAAGGCTGAAATTGGAGCCAAGTGCCGTCTGGTGCACC
-TGTCGCTGGTGAAAACCGAAAAGAGCATGCTGAAAATGCTGGAACCCCGT
-TTCGAGTGGGATTTCGATCCGGAACGCCCACATCACGGACCCAAAGACGA
-GAAGAAGAAGCTGACGAAGAATCTGAGGAACGAAAGACGCGGAGCCATCA
-AGGAGCTCAGAAAGGATACGGCATTCTTGGCCAGGAAGCAATTGTCGAGT
-GTCAAGACGAAGGATCGTGCGAGAATTGCGGCCACGAAACGTGTCATGGG
-CGGTCTTATGCAGCAGCAGGGTGAATGGAATAAGGAGAAGCGTACGGCGG
-ATGTTGAGAAGAAGAAGGACAAGAAATAATTTAAATTTTCCTATTTTTTG
-TTTGTTGAAAATGACTTTATTTGGCAAAAAAAACCCCTAAATTTCAGTTT
-TTCTCGATTTGTTGAAAAATAGTCAAAAAACTGATTTCTATGTTATTTTT
-GGTCAAAATTTGCCTTTTTCAAACATTTTTTTTGCCATTTTTCCTCCATT
-TTTTGTTATTTTTTTTTTTCGTTTTGTTATGAGATATGTTTCTGTTTTGT
-TGACATTTTTTATTATTGAAAATTAAACGAGTTTTCTGAATTTTTTTGTT
-CAATTTTTTTGAAATTTTCCGTTTCACATACGTTTGTCAATATCTCGATT
-AATTTTTGAAGTTTTCCAATTGACTCGCGCATTTTCTAAAAAGTTTTTAA
-ACTTTACATTGAAAATACCCCTCTAACTCGAATATCTGATTTTATTGGAA
-TTTTGAGTTTTTTTAGGTTAAAAAATTCTTGTGCTAAAATCATCCATTAT
-AGTTCGTAAGTCAGCAAATTTTGGCTCAAACTTAGAGCGATTTCCAATTT
-ATGGAGTTTTTTGTTCAGAATTCTCGAAATTTTCTCATTTCTGGAAATTT
-TGAGTCTACGAGTCACACAGTTGTTCCGTAATTAGCTTCACTTACATCTC
-CTCAACTCTGCAAACTCTCAAACTTTCGGGAAAGGGTCTCGCCACGAAAT
-CACGGGTGGGCGGCAATTGCAGTTCGGCAAATTGCCGGTTTGCCGGAAAT
-TTTCAATCCCGGCAAAATTCCGTTTGCCGGAAGTTTTTAAACGGGATCTT
-TTATAAGACGGAAACACTTAAAACTGCCATTTTTAATTTTTTGCCCGTTT
-TCTCTAAATATTTTCATAGAATTTACTGACTTTTTAGGATAGATGTTTTC
-ATGGGATGTGCACATGTTGTTCCGGCAAATCGGTAATTGCCGAAAATTTG
-AAAAACGACAATTTGCCAAAAAAATCGTTTGCCGTTCACCCCTGTATTGT
-ACCATTTTTGGCGAAAATGCGCGTAAATTAATATGCTTGCGTGTGTAATA
-TTTCGTTCATATATTCTAAATATACGCACCTTTTGAAATATTCATAATAT
-ATGCATTTACGTACGTTCGAGAATATTTTGGGAATACACATTTATCATCA
-TTCCCACCCGTTGCCATAGTATCCTCATCCCCGCCCCGCCCCGCCCCTTT
-CTCTCATTTCCTCTTCCAAATCCTTAATGGCTCATCCGGTCATTGGAGAG
-ATATGGCAGATGTGGCGGTTTTGACGAATGTTCTGGAGAACTCGAATTTT
-ATATAACTATTAGACAATTTCGATATTAAAAACATTTATATGTAAAATTT
-TCAATTTTTTGAATTTGCTCGCCGAATTTTGACTTTCTGACAATTGTGTG
-TCGATTTACGAGGGTTATGTATATTTACGATATGTTTTTAATCATTATCG
-AATGCTGATTTCCGTTTTTCTACGAGTTGTCTTCATTTTCGTTGGTTTTT
-TTTTGTTTTTTTTTTTTGAAAGTGTATTTTTTAAGGTCAAAAAACTAGAA
-AAATATTCAGTTTTCAGTCAGGAAAACCATTTATTTGGTTTTTTCAATAT
-TAAAAAAATTATTGGGAAAAATGAATGAAACTCGTCGAAAAACGAAAATC
-ATCATTCGATAAAGATTAAATATTTCGTAAATCGACACACATGTCTCCGC
-CGCGAAAAATCGAAATTTCATAGAGGCATAAAAATTCACAATATTTTAGT
-TTTTTTATTTTTTATTTTAATCCAAATCCCTATTCATGCTTAGATTTTTA
-GGTGTTTTTCTGTAAAAAATCAAAAAATTGTATATTACTCATAAATTTTT
-CCAATTTTCTCAAACCTTGGATCTCGCCACGACATTATTAAAAAATTCCC
-GTTTTCTGCAGAAATGACGACAACGGAAGAAGCTCCCAAATCGCCGCTTT
-TCGAGGCAATCGACAAAAATGACACTGAAGCAGCGCTGGCACTGCTGAAA
-ACGAAGGAACAAGCCGCTCAACGGGATCCCAGTGGAATGAGTGTGCTGGC
-AGCTGCCGCGTATAGGTATGCACCTTTAAAGCGGCGACGGTTACTGTATC
-CTCGCAGATTGTTTAAAGGTACATACCGTAATCCGTTGAATTTCAGAGGA
-AATCTTACGTTGGTCGAGAAAGCGATTGAGCTGAAATGTGATGTGAATGA
-TAAAACCGATGGAACTCTGTACACTCCACTCATGTTTGCCGCCTTATCAG
-GTAGGGCAAAAATTTTTTAAAAAAATTTTTTGCGTCAAATTTGATGCAAA
-TTCTGGTTTTTTACCGTTGAAAAGTAAAAAAAAATTCCGAAAAAATCGAT
-TTTTATGCTAACAACAAACTTTTAAGTGAAAAATCGTGGAAAATTAGACC
-CAAATCACGTATTTTTGATCTGAAATTCAATTTAGCGAAAAGTCATCGAA
-ATTTTATGGTTTTCGCGGTGAGACCCAATATTCGCAATTTTTTTTTGCAC
-CAAATACAACACATTTGACGCGCAAATTCAAATTTTTGAAACTTTTTTCC
-GTTTTTACAATATTTTTAGGCTGAACCCCAATATTTGAAAAAAAAAAAAC
-CAATACACTATATTTTACGCGCAAATGTTAAATTTTTATTTAAAATCCTC
-GTAAAGTTCTATTTTCTTTTTTTGATCGTTTTCAAGCTCAAAAATTCAAA
-TTTCAATTCGAAATATTACCGGAACACAAAATTCTGAAAATGCGTACTGG
-TCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATTC
-ATTAAATGACTACGGTAACGCTTGTGTCGATTTACGGGCTCGTTATTAAA
-AATCATTAATTTCAAAAAAATCGAGCCCGTAAATCACCACAAGCGCTACC
-GTAGTCATTTAATGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCG
-TCAAATATGCTCAATACACATTCTCAGAATTTTGCGTTAACGTATTACTA
-CTTTCTTAGTTTTTCCAAAAAAAAAATTCGAATACACCATATTTGACGCG
-CAAACTTTTTTTTTCAAAGCAAAATTGTCAAACGTTTGCAGGAAAACAGG
-ACGTATGCCGCCTGCTAATGGACTCCGGAGCCCGTATGTATTTGGTGAAT
-GGAATCGGAAAAACCGCCTCTGAACTGGCGGCATTTGTGGGTCATCACGA
-GTGTGTGGCAATTATCAATAATCATATAACAATTGATGTGATCGAAGATC
-TTTTGCGGCCAAAAGTGAATGGAAAATATGAAGGAGCTGAGGAATATCCG
-GATGAGCTGGCTGTATTTATTCATTCATTGTGTGGATCACATGAGATTCA
-TCCTGTTAAGATTATTTTTCGATTCAGTAAATATCCCGATTCGTTGAAGT
-ATAAGAAAAAGGTACATAGCTGTGTAGTTTGGAAAAAAAACGAAAAATCT
-GAAAATTTGAGAAATTTCCTTAAGCTTTTTCAAGATGCGCATTTTTGTTC
-ATTCTTATTTTCAAAAAAATCCAAAAAGTTTTTTAAAAAATTTAATAAAG
-CATTCTTTTTAATTTCAAAACAAAAAAGTTATACCAAATAAAAACTTTTA
-GTAATCAAAATTTTTCACTTTTTCTCGGTTTTTCTCATCGTTTTTCAAAT
-TTGAGATCTCTTCCTGAATTTTGCCTAAAAATTGATTTTTTCAAAATATT
-TTCAGAAATGATTCTTTCTGTGAAAAAATGTTTGAAAATGCGAAAATATT
-CGAAACTAAAAAAACTTTTATTAAAATAAATTTTTGAAATTTTTCAGAAT
-TTAAAAATTGAATCGAATTAGGTATCAGTAGTTTTCAGATCGATTTTTTC
-GAATTTCTGAATTTGTTAAAAACTAGAAATTAAAAAAAAAACTTTTGATG
-TTAAATGTTTTTCGAGATTAAAATAAACCGAAAACCCAAAAAAAATGTAA
-AAATTGTGTTCTTTTTGTTATAATAAACCAGAATTTTCTCGAAATTTTCA
-GAAGGTTCTAGAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTA
-GAACATTTCAGAATTTTCTCGAAATTTTCAGAAGGTTCTAGAACATTCCA
-GAATTTTCTCGAAATTTTCAGAAGGTTCTAGAATAGTTCAGAATTTTCTC
-GAAATTTCCAAAAGGTTCTAGAACATTACATAATTTTCTCGAAATTTCCA
-GAAGGTTCTAGAACATTCCAGAATTTTCTCGAAATTTTCAGAAGGTTCTA
-GAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTAGAACATTTCA
-GAATTTTCTCGAAATTTTCAGAAGGTTCTAGAATATTTCAGAATTTTCTC
-GAAATTTCCAAAAGGTTCTAGAACATTACAGAATTTTCTCGAAATTTCCA
-AAAGGTTCTAGAACATTACAGAATTTTCTCGAAATTTTCAGAAGGTTCTA
-GAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTAGAACAATCCA
-GAATAATGTTTTCAAAAAATTCAAATTTGAATTCCCGCCAAAATGTTTTC
-AAAAAATTAAAATTCGAATTTCCCGCCAAAATATGTACAGTACTCCTACA
-GTACCTCTACAGTACTACTACAGTACCCCGACCATATCCCACTACTAACC
-CCAAACCTATATCTCTTCAAAAGACTAAAACACAATTTTTCCTAAACTAC
-AGTAATCCTACCGTACTCCTACAGTACTACTACAGTACCCCCACCATATC
-CCACTACTAACCCCAAACCTATATCTCTTCAAAAGACTAAAACACAATTT
-TTCCTAAACTACAGTAATCCTACCGTACTCCTACAGTACTCCTACAGTAC
-TACTACAGTACCCCGACCATATCCCACTACTAAGCCCAAACTAATATCCC
-TCCATCAGCCGAAAACGCCTTGCCTTTGTAAACTATGACGTCACTACTTA
-ACAAACGGACACTATTTTTTTATATTTTTTTTTCAAAGCAAAAACCACCC
-ATTTTCCAGATCCTCTACGTCATCGATCGTGTCTTCGAGAAACAGCTTCG
-ATGTAAGGAAAGCAATGAAATAATGTCGCTCAAGCTTTGGCTAATTCTAT
-TTTCAATGCGTGAAACCTCGAAATTCGTGGAGTCGAACAAGGAAAAGTCG
-CCAGAAGAAGCGTCTCTACAGTACGCAAAACTGATTTCCACGTGGCAAGA
-GGGCGATGAAACTAGGCGAGCACTTGACGTGATGCTGAGAAATGCGGTTG
-CTTCGTTCCCGTATAAACATTCATTACTTCATGATACTCTACAAAAAGCA
-CTGCAAAAAAGTCAAATTGGTGAACGACCAAGTGCCTATGAATACATTGT
-TCAGGCACTTTTCGGACAACGAATCGCTGCGGTCTGCCAGTTTTGCTCGG
-TTTGCGGACATCCTGGAGCCAAGAAACGGTGCACACAGTGCAAAGTATGG
-AGTTTTTAGGGTTAAAAATAATTATTTAATAATTTAATAAAGCTCGAATT
-TGGGAAATAATCAATTCCAAATTTTAAAAATATGGAAAAAATTTTATTCC
-GTTACATTTTATGAATTTTCCCACAAACTCGGCATTTGGCTCTAGCTTCT
-TGCCCAAGTTTAGCCCAAAAAATATTAACTTGAAGCTGTCTAAACTTGGG
-CAAAAGTTAGACAAAACTTTGGCAAAACTTGGATTCAAGCTTTACCAAGG
-TCTAACCCAAGTTTCACCCAACTCTTGCCAAACTTTGGCCCAAACTTTTC
-TTATTTCGTTTCAAATTTGGGCCAAAGTTTGGCAAGAGTTGGGTGAAACT
-TGGGTTAGACTTTGGTAAAGCTTGAATCCAAGTTTTGCCAAAGTCTTGCC
-TAACTTTTGCCCAAGTTTAGACAGCTTCTGATCCAAGTTAACATTTTTTG
-GGCTAAACTTGGGCAAGAAGCAAGAGCCAAATGCCGAGAAACTCGAATAA
-AAATTGAAAGTTTTCAAAATTTCAGTTCGTTTTTAATTTACAAAATTTGG
-CAGCTCTAACAATTCTTTAAAGATTCTTTAAATTAAAAAAAAGAATTATT
-AAAACTTTTTAAAAAAATTCATTCTGTAGAAAATTCCCGTAAAATACTCT
-TTGAAAATCCGGGAAAAAACTTCAAAAAACAAAAATAAATTCTAGACATT
-CTGTAAATATCGAAAAAAGAACATTTTGTCTGTAAATGTATTAGTCAAAA
-TTAATTTCTGATACTTTTTCCAATTTTTCAAAATTTTAAGTGTCGAGGTT
-CAATTTTTTTGAATTTCCTGTTTTTCCTTTATTAAAAAAAGTTTTCTATA
-ATATGCTGTATTTGAAAATTAAAAACTATATCTGAAAATATCGAGGCACA
-ACGTTTTCAAGATCTGGTGAAATTCCGGATCTACGTTTTCCGGATCTACC
-ATTTCCGGATCTACGTTTTCCGGATCTGGCACCGTGCCAACGCACAAAAC
-GCTTTTTTGTTCACTCGACGCACGTTGTTTTTTGAAAATTTCTTCTAGAA
-GAAACGCTTAACAACACGCGACGCGTAACAACGGAGCATCGTTATCACGT
-TTTTCTCCGAGAAAAATAGCGTTTTAAGAGTTGGCACGGTGCCAGATCCG
-GAAATGGTAGATCCGGAAAACGGAGATCCGGAATTCCGCCAGATCTTGAA
-AATGTGGTGCCTCAAAATATCGATTAAAGAATTTTTTCTGAAAAATATCC
-AATTTTTCAACAACAGAATAGCTAAAAAGTGAAAAAAAACTCAATTCTCA
-TTATAAATTGCAAACAATTTCCAAATTTTGATAAAATGGAAAAGAGTTTA
-AAAATTTCAGGCAACACATTTTTTAACTCTAGTAAACGTTTTTTAAATTC
-CAACAATTTTTACAGCTCGCCTACTGTTCCCAAGAATGCCAAAAATTCGA
-CTGGCCAATTCACAAAAAAGTGTGCTCATTTCTGAAAACGCGACAAGAAG
-TGTCGCCCACCGACGAGACCGCCATGTCGCTGGACGATATTCAGGCTCAA
-ATCGCCAAAATCGACGTGTAGAAGTGCCGATATTTCGATCTCAATATACT
-TTTTTTCTGGAATTTATTTATTTTTAATGTATATTTCGGCTTCATCTCAT
-TGCACGAACTTTTAATTTCATTTTCATAAATTCATTTTTGAAGTCATTCC
-TTGAACAAAAATTCACTAAAACATGCATTAAGAAATATGGAATCCAAAAA
-TTAATCTAAAAACCTTTTCAAAAAACCACTTCGTCAAAAACTGATGATGG
-AAAACTCGTTGAAAAACGGAAAGAGTATCCAATAAAGATTAAAAATTTCG
-ACATTTCGTAAATCGACACAAATCTCGTAAATCGACAAAAATGAAAAAAT
-CAGGAACCCAAGAAATTCAATATTCTCATTTGTAAAGACAACTGGTAAAA
-CATTTTCAAATCAAAAAATTATTTTTTTTGCCCTCAAAATTGATCTCCGA
-ATACTATAAAAAAGAAAACTATAAAAAGTGGCGAAAATTCGAAATTTTTT
-AACCCCTCTAAAATGGTTCATTTTAGTTGTCTAATGATACAACAAAGTAG
-ACATAGTTCTACAATATCTGATAAATACTTGAAAAGTCTAAAAACAAAAG
-TTTTTTCGTTTTTTTAACGGATTTTTAAAATCCAGAAGAACGAAAAAAAA
-TTTTTTTAAGAGAATAGAGTAAACTAATCATGTTCGAGCAAAAAAATCCG
-ACTTAGAATATGAACGGACCCAAGTGTATCATAATTATTTTAATTTCTGT
-GTATCAGAATTATTTTAGTTTCCTTAGTGTGATTCCCAAACTGCTTAAAT
-TCTAGGAAATATTTCTTTACTGGAACACTCTTAGCCACTGTACGCTGCCG
-AACGAATAATAAGAGAATACAGAACACCAATTATGCCCGAGAAAAAGATC
-CTACTCAGAATATAAACATAGTCAAATTTATCGGATGTATAAAGATTCCC
-GAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATCAAATTCTC
-TTACTAGAACGCTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGA
-ATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAA
-CATAGTCAAATTTATCGGATGTATAAAGATTCCCGAAGACACTTTCCAAT
-TACCCAAATTGTTCATATTCTAAATGAAATTCTTTTACTAGAACACTCTT
-GGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACCAATT
-ATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTTAAATTTATT
-GGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCAT
-ATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGC
-CGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGA
-TCCTACTCAGAATATAAACATAGTCGAATTTATCGGATGTATAAAGATTC
-CCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTC
-TCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGT
-GAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATA
-AACATAGTTAAATTTATTGGATGTATAAAGATTCCCGAAGACACTTTCCA
-ATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAACACTC
-TTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACCAA
-TTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTCGAATTTA
-TCGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTC
-ATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCA
-GCCGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAA
-GATCCTACTCAGAATATAAACATATTCGAATTTAACGGATGTATAAAGAT
-TCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAAT
-TCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAA
-GTGAATACAGAACACCAATTATGCCCGGGAAAAAGATCCTACTCAGAATA
-TAAACATATTCGAATTTATCGGATGTATAAAGATTCCCGAAGACACTTTC
-CAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAACAC
-TCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACC
-AATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTCAAATT
-TATCGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGT
-TCATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACG
-CAGCCTAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAA
-AAGATCCAACTCAGAATAAAAACATATTCGAATTTACCGGATGTATAAAG
-ATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTGAATGAA
-ATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCAT
-AAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAA
-TATAAACATAGTCGAATTTATCGAATGTATAAAGATTCCCGAAGACACTT
-TCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAAC
-ACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACA
-CCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATATTCGAA
-TTTAACGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATT
-GTTCATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTA
-CGCAGCCGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGGGA
-AAAAGATCCTACTCAGAATATAAACATATTCGAATTTATCGGATGTATAA
-AGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATG
-AAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATC
-ATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCAACTCAG
-AATATAAACATATTCGAATTTATCGGATGTATAAAGATTCCCGAAGACAC
-TTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGA
-ACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAA
-CACCAATCATGATCGAGCAAAAAGATCCGATTCAGAATATAAACATATTC
-GAATTTATCGGATGTATAAAGATTCCCTATTGGGAAGTGGAGCAATCCAC
-GACTGGTTTATCGGCCACAGTCCCCGGCTAGGACATGGCTTATATTATTG
-GGCCAAGGGGAGCACCACCAGGCAGTGTACCTGACTCCCAGATCAGCAGT
-ACATAGCACTTGAAGAATGGATCGTCCTTTAATCTTTTAATCTTTTAAAA
-AGAATCGAAGGAACTCTCATCGGGTCATGTGGTTGTGGGGACAAAGAGGG
-AGGCTTACATCAATACCAAATACCTGTGGTAGATCACAATACCTGTGGTA
-GATCACACCCTATCCACAAAGAAAATCTGTGGACGTCCTCAAAGGAGGCC
-GCCCGCGCCCTTGAGCTGGCCAACAAACCCTTCGAGCTGGGTGGAGGAAT
-ACTCCAGCCGAGCGACTGAAAACGGCGGTAACGCCACGTTGTCGCACAAT
-AACAACAAAAAAGCCCGCGGGCCCCAAGAAGCTCAAGAAGCCCACGGCTT
-AATTTTCAAATCAATTACCTTACTATGAATCTCCTTTTTGCTCTACGAGT
-CGTCGTTGATGTCATCCTTCCGTCCAACCTCCGTCAAACAGTCCATCTGA
-CCATCCGTCCAACCAACATGTGGTGGAGTGTCCAACGCATCTGAAATTGA
-AAAATATTTATATCTGATTTTTTAAATGGAACCATTTACAAAAAACATAA
-ACGGAAAACGCTTAGCAAAAAAACAAACAATTAGTATTTAGAAAAACGGA
-GACAAATGCTCTCGCGATCTTATTTATATTAATTTTCCAGTCGATTGCAA
-GGCATCTGCTCCCACGGGTTTATATAAAATTGTGTAACTAATTTTAAACT
-TCTCTTGAAACCTTTCAACCAGTACTTTTCAAGAGTTTTTGGTAATTTTT
-CGATTTTTCAGAAATTTCAAAAAAACGGCGAAATTCCACTCAGAACCCTC
-ATTAATATTTCACTAGTCCAGCACACTAACCCAAAAAATTATTTTTTTTT
-TGAACTACAGTAATCCTACAAAATTGCTACAGTACTATTACGGGACCATA
-ACAAAATTTTGATAATGCGTATTGCGCAACATATATGACGCGCAGAATAT
-CTTGTAACGAAAACTACAGTAATAATTTGAATGACTACTGTAGCGTTTGT
-GTCGATTTACGGGCTCAATTTTCGTAATGTTACACGACACATTTTTTTGA
-CAAATGCAAAAAAGTGTGCGCCTTCAAATTAAAAAAAAATTTGATTTTTG
-TTGCCGGCTTTTAACACATCGAAAAAATAAAAGAAACGAAAGTTTGTAAT
-TACAGTACTCCTCTTAAACGCGAACACCTTTTCGCTTTTCAGAAAAACTT
-GCGCCGTTTCGAAACCGGGTACTATACTTTTATATTAAAATCGATTAAAA
-ATCGCGAAATTTTGCGGTGGAGCATATGTCAAATTGCAACTCGAAAAGAA
-AAAATCTGAAAATGCATGCTGTGAAAAAAAAAGCAGCAGTACTCCAAGTC
-ACCCATTGGAAAGAATGACTGAAAATTGAAAACAATTCTTCACTTTGAGC
-GAAAAAATGCCGCGTTGAATGAGAGAGGGACGAATCGAAATTTAAAAGGA
-GAAGATCAAAAAAAAATGTTTGTGGTAGGTCTGGAATCTTGCAAATTATC
-GTTTTAAAATCAATTTTTAACACTTTTATATCATAAAAATAGTTTTTCAT
-CAATCAATCGATTAAAATACCAACTCTCGAAAATTAACAGCTTTAACAGC
-GCCGTCTACTGATTTGAAATTGCAGTCGCTGCCGCTCAATTAAATGTTTT
-GCGCGTCAATTAAAATGCCTTGTACGCAGATGCGCGTCTCCTAAAAAATA
-AAAAGTTGTCCAATTTTATTGAAAACGGGTATTTAATTCATGTAAATATG
-CTGAATTTAGAAAATCTAGGTTTAACCTATCAAAAACTATAAAAAAGTGG
-CAAAAATGGGCAATTTATGGCAAAAATTCACAATTTTGAAACTCCTCTAA
-AATGGTTCATTTTATTGGTAGAAGAGGACTAAAAATTGATATCCGAACCC
-TAAAAAAATTGTCCTTTTTCAATATTCAGAAGAAAATTATGAAGTTATTT
-ACTTCCATTTTTCGATTGTACGGTAAATCAAAACTAAAGGTGGGCACGGT
-ATCTGATAAAGTTACGATCGTTCCAGGATCACGAAAATCGAATAATTACA
-CAGCCAGAGTTACATGAAACAGTGTTTGGGAAATTTAAAAATCAGTACAA
-GAAAACCTCAAAAAAAAAACAAAATTACAGGAAAAAACGGAAATTTTCAG
-TAAAAAATTATAGGGTATGTAAAATCGATAAAATATTTAAAATTCAATCG
-TATTCTCCGTTTTCGGCGTTCGGATCGTTCACTGGAAGTACGGGATGTCG
-AAGTTTGAAATTGAAGAATTCGCACCAACCGGCTGGAAGTAGATCGTGGG
-AGCTGCAAAAAATGTTCGTGGCCGCGAAAAAAATCGGTGGCCGATTTTTG
-TTTTTTCGCGGCCACGTTGTGACTAGACGGCGAAATAAAAATTTGTTTTT
-TGGTTTTTAGTGTTCAAAACTGTTGTTCTTGTTGAAAAACAATTTTTTCG
-AATTTTTTTTGTTTTTTCAACTAATTTTTTTTTCTGAAAATGCTTTTAGA
-ACAGTTCATTTTGTTTTTTTTTCAATTTTTTTCAGACACCCCTTACTCCA
-TATCATAAAGCTCGGAAAATTCGGAATCCCATCCCTGAAACTCGATGAGC
-ACCGTTCTACCGTGTACTTCTTCGACGGAGGCCGGTGATATCCAGTAGGT
-CTCGTTTTGGCCGACGGCTTCAAGGACACGACCGAACTGAAAAATATTGT
-TTTTTTTTTCAAAACCATTTTTTTTAGGAAAAAATTTTTATTGAAACGTT
-TTTTTTTTAATTTTAAAATTCCAAAAAAACGCAAAAGTGCAAAAAAACTT
-GAAAAAAATGTTCTCAATATTTTTTCCGACTCACAATCAAAGAAAATTTG
-AATCGAAAAAAATTAATTGTTTTCTTTTAAAATTTAAGGAAATTATTTTT
-CTAATTATTTCTTCCAAAAAAAAGTTTAAAAATAATAATTTTTCAAGTGT
-TTTTCAAGAGAAAATTAAAAAATTTCAAATTTCAAATTTTAATATACTTT
-TTATTTTAAAAACTTGTATAAATCTCCGAATTATATGGATTTTTTTGAAA
-AATAAAAAATTTTTTTATTGGAAAAAGAAATCTGATTTTTATAGTTTTTT
-TTTTTAATTTGAAAAATACGAATTCTATCACGGCAACTCAAAATTCTGAG
-AATGCGTACTGCCCAATATATTTGACGCGCAAAATATCTCGTAGCGAAAC
-TACAGTAATTCTTTAGATGACTACTGTAGCGCTTGTGTCGATTTACGGGT
-TCAGTTATTTAAATGACTTTATTTTTCGTATTATTTTCTTCATTTCAATT
-AATTTTAAAAATTGAGCCCATAAATCGACGGTACCGTAGTCATTTCAGGA
-ATTACTGTAGTTTTCGCTACGAGATACTTTGCGCGTCAAATATGTTGTGT
-AGTACGCATTTTCAGAATTTTGAGCTGCCGTGATAGAATTCGTATTTTTC
-AAATTAAAAAAAAACTATAAAAATCAGATTTATTTTTCCAATAAAATTCG
-TCTAATTTATAAAAAAAAATAAAAATAAAAATTGAACAACGCTGAAAAAT
-CCCAGATTTTTTTTTCTTATTTTTTGAAAAAAAAAACTTTTTTTGGAATT
-TTAAATTACATAATTTTTTTGGTTCAATCAATTTTTTGGTTAAAAAGCGT
-TTTTTTTTCCTTCAAAAAAGCACCTCAAACATGTGCCTTCTCTCCTTGCT
-CGGCAACGGCCTAAGCATCTCATCAGGAATTTTTTCCGCCTGCTTCTCCT
-TCAAATACCCTTCCCACTTGAATTTCCCGGGCTCAGTGCCTGCAAGCCGA
-TCCAGCTTGATTCCGAACTTCTCAGCATAGCCGACAGGATGCATAAAATG
-ATTATCAATATGAATTGGGAAGGATTCATCGTCCGATTCTGTCTCATCAG
-GTGAAATAATTAAAAATCCAGGCGTTTTGCATATTTTTCGAATTGTTGCG
-ACGCAAAATGACTGGCGTAGGTCGCTGAGTGGATCCAAAAGTTCAAATTT
-TTGGCCGACTTTTAATAAATTTAATTTTTCAGCTGAAATGTCAGGTTTCC
-CAGCAAAAAGTTGCTCGAAAGTGACGTCATCTTTATGATAACTTCCAGAA
-CCTTCTGCGATCCGTCTGGAATGTTCCAAATAACCTTCCGTAGCCTTAGT
-CCGTAATCCATTAATCATTGCAAATCCGACTGGAAACAGGAAGAAGCTCG
-ACTCATCCACCCAAAACTCGACGTTTTCATGCTGAACCTGCCGATCTTTG
-GCCTCTACGGAAGGAAGATCTTCGGGATAATCCTGAGCGGTGACCATGAC
-CATCAGACGGCGGCCAAGGATCCTGAGGATCCGTGCGACACGGATTTCTG
-TTGGCTCCAAGTAGTTGAGTAGCTCGACGCGTTGATTCAGCCGGAAACGA
-GATGGGCGGTGGGCAAGGTGGCGGAGTTGGTCGAAGATTTTTGGCTCAGA
-GATTCGATTTTCGTGCAGCTCGGCTTGAAATTCCTGCAGGAAAATTTTTT
-TAGGAAATGGGAAAATCAGAAGGGTTTTTTGGAGTTTTTTTTCAGTATTA
-TTTTTTTTGTTGTTTTTTTGAGGCTTTGTTAAAGTTTTTAGGTGAATTTT
-TTTTGTTGATATTTTTGGTTTGTTTAAGAATAAATCATTTTTTGAAAAAA
-ATTCGTTTTTATATTTTCGGTTTTTTGCTGGTTTAGTTAAAAGTTTTTTT
-TTCGGATTTTCAGGTTTTTTGACAAAAATTGATTTTTTTTTTGGTGTATT
-TCTTAGGTTTTCGGGTTTTTTTTTTGGTTTTTGACGAAAAATTTATTTTA
-AAAAAAACGGACTTTTTTGCAAAAAATATGGGGTTTCTTAAAAAAAAAAA
-TTTCAATTTTTTTTGTTGGATAAAATTAAAGTTTCTTTTATGGTTGATTT
-TTCGCCTTTTTTCACATTCTCCACCAGAAAAAACATGAAAAAAACCAGAA
-ATGAGTAGTTTTGAGCAATTTTCAGGCAGTTTTTCCGCTCAGAAAATAAT
-TTTGGCCGGATTTTCATGGTTTCTCACATCCAGAATCTCCTCTGTTGGCC
-GTGGTACGGGCGGTGCAGGCGTAGATCCACGTCGCCAAAATTTCGGGCAT
-TGCATCGGTTTCAGCAAGCTCAGTGGCCTGTATTGAAGCCATTTCATCGC
-TGGATCCTGCTTGAGACCGCTGAAATTTCGCGTTTTTTTTTGGAAATTTT
-GTTGAAAAATAACCTTCCAATATCGAAAATATCCTCTGAAAGCATATGAA
-ACCAGCAGGGTCTTCTATTAAGTTCCCCCACAAATTTAATTGCCACGTAG
-AAGCCGCAGACAGCAGTCACCTCGCCGAACCAGCGGATTTCTGGAGATTT
-AGTGGTTATAGAAGGATCCAGAGACGGTCGGACGACTACTTCTAGCTGAA
-AACATTAAGATTATGGCTTTAAAGTTTTTTAAAAGAAAAACCAACTCGAA
-ATCCAGGTTTTAGGTGCTGATTTAGCTTTTCCAGCGGCAAACAACCCTCC
-AGCGCCTCGACAGGTAAAAATTGAGTATTTCCATCATAATTACATCGGAG
-TTCATCTGACCATGTGAATGTTCCTTCAATTTGTGGCTTTGGAATCCGCT
-GGGCGATTTTCTCAACTGGATTTCTTCGACGATAGAATAGCCGTTCTTCG
-GTGAAATATCGGTATTCTGCTTCTTCAAGTTTGTAATTATATTGACGCTG
-AAAGTAATAAATTATGTTTTTCGATAAAAATGCTTTTAAAATTACCTTTT
-TATTCGAAAAATTCATTGATTTTAATTAAAAATCTATTTAAATTGTTTAA
-ATTAAAAAGTTCCAAGCTTCTGTAGTTATCGCGTCGAGACCCAACACACT
-AATTACCACATGCGCCTTTATATAAATTTTAAGAAAATCAACATTTTAAA
-AGATTTTTACAGTTTTTTTGTCGTTAAATTTTTCGAAAAAATGATTTAAA
-CTCACAGTAAACTTGTTTGAAACTTGAATATTAAAATTTCACAGTCAATG
-GGTTAAATTTCAAGACTTTCCCACTGATGATACGGTAGGCGCGAAGTACG
-GTAGTTTGTTTTGTTTTTTTTTATTTTGCCGCCGAGTGATTCAAATTTGA
-ATTTATATCATCCGATTTTTTGATTTTTTCCTCAATATTTCTCGATTTTT
-CAGCTTTCAGTGTGATTTTCCAAGAGCCGTAGCTCGACCAGACGACGGAG
-AGCCTGAGGCTGGTCGCCAGAAGCACTATGAAGTGTGGGTTTTTTTTAAA
-GCATAATTTGCATTAATCTTCTAATATTTTAGCCACCCCACACCGTCCAC
-GAACAAACTCCGAATCGAAGCTCGGGGCTCGCGAGCAGCTTCTCCGGGAC
-TCTATACGAGTGGGTTTAAGTTCTTAATTTCAAATTTCACTCATTTAAAA
-ATTTTATTTTTTAGCTTCAAGTAGCTTCGGAGCCGTACGTCCACATGACA
-AAGGAATCCACGTGGGACGAGGCGAAAAAACTGGCGATCAGTCTTGAAAA
-GAAGCCGGACATTGTCCGTAAAGCGATATACAATCGTCGTCGCTTCGTCA
-ATGAAAAGATAAAAAGTGCGCTGGTCAAGCGCGAAATCATCGACCCAAGA
-AGCCCGGCAATCCATGAAATAGCAGTGGCGGCGGAGGTATTTTAAAAGAA
-AATCAGACAAATTTAATATCTAATTATTCCCCATTTTCTTGCAGACAATC
-GCCATAAACGTTGTGCACTTCTTGGAGACTCATCACGCAAAAATACTCGC
-TGAAATCAAAGCGGCCGCCGCTGGAGCCGGCGCCCAGCTCCGAACTGCAT
-GAATTAATTCAAATTAATATTTTTAAACTCATTTTTCACACAAATAATCA
-TTCATGTGTCCATTTTTCACTCTCGAAACCCATATACCCTCACTCTAAAT
-ATCAATATAATGCACATTTCTCATAGTTTTAATCTGCCCTTACCAATTAA
-ATCTTACCAATTTTCCGCCATGATCCCTTTTTCCATTTTGAATAAAATTC
-GACGACGATTTTTCCATTAAAACAAGAAATATATAAATAGATTCAAAAGT
-GGCGCTTGTGTCGCTCAGCGGTCTCCTCCACTTGCACACTATCTCACCGC
-GGCCTTCCAATTACTCGTCCATTTTCCAGCTGTAAAAAGTTTATAAAAAC
-TGAAATAAATGCAATTTTCAGCAGAAAATCGCTGAAAATGCGGCAAATCG
-TCGAGCTAAAGTCACTTTTGACTTCGGAGCCAATTAAAGCCATCGAGCTC
-TTCGATAGGCTCGTTGGACAAGGTTTGAGCCGAAAATCTAAACTTTTAAG
-CTGAGATTTCTTTTAAAAATCCCTTCCAGATGCCGACACAATCACCCAAG
-AAGCCTGTGGAACCCTCGCCAACTATATCCGGCATTCCAGTGTTTTTAAG
-CGACGGCTTCTGTTCACGGAGCTCCAAAAATGCTCGTTTTTTGCGAAATT
-GTGCATTTCGTTTCAATTTCACAGCTTTGAAGACACAGTTTTTCCGCGAA
-AATTGATTTTCGAACGATTCAGCGTGTTTTGCGGTGAACTGGAAAAGGAC
-AAGCCACGTGGGTTTTCATTTATTGAAAATTGAAAAGATTTTTGCAAAAA
-ATCATAAAATTTAATGTAAAACTGAACAAAACTCGATTTTTAACCGAACC
-TTTTTGTTTTTTCCGTGAAAAAATCGGTTTTCCAAGTTTTTCGAACATTT
-TCCGAAAAAAAATTACGCAAAAAAAACGATTTTCAAGTAACAAATCCGGA
-AAAATCAAACTTAAATATTTTCGGAAAATTTCATAATTTTCTTCAAATCT
-CTGTAAAAAGTAGATTCGATTTCTGGGAAATTTGAATTTATGTCATTTCT
-TTAAAAGCGCATGCTCTTTTGTAGGGTCTCGCAACGAATTATTCAATTTA
-AACTTTGAAATTCGCGCCGAAATTTGGGTCTCGGCGCGATTTTTCGAAAA
-ATAAATGAAAAATATGTACTATTAATTTTTTCTTGAAAATTATTGATTTT
-TCAGATCACCGGCACCACGTCACCGCTGTCGGATCGAATCGTTTCTTCAA
-TTTGGGACTACTTTCCGATGGAAGCCCCGTCTCAGAACCCCGACTGGTCC
-CCGTGCCACGTGTAATTCAAATCGAGATGACAAATACACACACAATATTT
-TTGACTGCTGAAAATCAGATTTACGGCTGCGGAAAAGCTTCATCTTTTTT
-GCCGGATAAAACGGAGGAGACGGACGGTGGTTATGTGGCACTGCCCACTT
-TGGTAGAAATTCCAAAAGTTACTGGATACGTGGCAGCTGTGAAGGTGTTC
-GATGGAGGATCACAGTTTTTGATTGGCGGCAAAGTACGGTTCTAGAAAAT
-TGGTGGCCGAGTATTTTTTCGCGGCCACATGGCGATTTTCTACACGAAAA
-GTTGTGTAAAAGACAAAAAGGTGTGCGCCTTCAGGGATTACTGTAGCTGA
-AGTTTTTCATAGATTTTTTTTTTGGCTTTAAAAAAATCCTTAAAGGTGCA
-TTTTCGTGTCGAGACCTTGTTGTATTATTTTGCTAATTTTGCTTAAAAAG
-TACAGTACCAGGTCTCGACACGAATAGTTTTGATAAATGCAAAAATGTGT
-GCGCCTTTAAGGATTACTGTAGTAAAAAATAAGAATCCCTTTTGGAAAAT
-TTGATAATTTTGTGAAGAAAAATAGATAATTCTTTGAAAATGAATAATTT
-TTTGGAAAAATCTTTTTTTCTTATTTTTCTAGACGTACACCTTTATTTCA
-TTAAAAAATTGTCGCGCCGAGACCTGATACCGTATTTTTGAGCGCAAAAT
-CGTGCCGAGACCCAAATTCGTGAATTCAAATTTTCAGTGGTATTGTGTTG
-GAAAATGTTCGATTTCCGGAGAAACGCGACGAATTTCGTCGAATTGTTTT
-GTTCTGGTAGAGGAGGAAAACGAGGAGAAATTGGAGAAAATGACGAAAAA
-TATCGATTTTTACGTGGCAAATGTGCCGATTGAGGAAAGGATTGTGAAGG
-TGGATTTTTTTTTTCAAAAATTTGAAAACAAAAAAACTAAAAAAAAAAAT
-TTTAATCTTAGTTTCTAGAATTCAAGCCAGTTATAATAATTTTTAAACTA
-AAAATTGCATCTTCCGAATTTTCAAGATTTTTTTTTCTGAAAATCGTTTA
-AAAAAATATCTTGAAAAATCAAAATTTCAAAAAAAACAAAACTTGAAAAA
-AAAAACGTCTTTAGCGGTATTTTTTCTATAATTTTTCAATTTTTTTCAGC
-TTAAAAATCATAGAAAATCGTAATTTTTTGACATTTCTTCCAGGTATATC
-TAAAAATGGACCAAAACGAGATTCTGTGGGATAGAACGAGCGATTTCTCA
-GCGGAAAAGCCGATTTCCTTCATAATCAATGGATTTCCACAAATGGCAAT
-TTTCGAATCATTTCAACTTTTAAATGATGGAACTATTTATGCTGCGAGAA
-ATTCACTTTTCAAAGGAAAATTGGAGCTATGGAAGAACAAAGATGACGGG
-TTTAAAGTGAAAAGCGGGACTGTTTTGGAGCATTTTGACACGAAATATAC
-ACTTATTGCACTGATGGAAGAGGTTCCCGGTACTATTGGAACAGAGTTTT
-TCAAAGTTTCACCAGATGGGCAGAATTTGATTATGAAGGTTCATTTTGTT
-TGGAATTTGAAGGAATTCGACCTTAAAAATATAAAAAATTGCACTGATGA
-TGTTATGGATTTTTTTTTCAGAAAAAAAAAAACGAAAAATTGAATGCTAA
-ATGACAGAAAATATGCCCCTGTAACATTTTTTTTTTGAATTTTCTAAATT
-TTAAATTATTTTTTTCAGTTTTGCGCAAATCAAAGAAACGGCCGAATTAA
-ATTTGAATTCCCGCGCAAAAGAGTGACGTCATTTTTTTTTTCCCGTTTTC
-CGGATGTATTATTAGGTTTTTATTTTAAACACAGTTTGTCAATTTTTCAG
-ACATTTTTTTTTAAACTTGATAACCCGAAAAAAGTGGCCTAGAAATCGGC
-TTTACAATTTTTTTTTTAAATCGACAAACTGTGTTTCAAATTATGAAACA
-AGGAAAAAACGAAGAAAAACTTATAGCCGGAAAACGCGAAAATGTCGAAA
-ATGACGTCACTAAATTGCGCGGGAAAAAATATAGAATTTTTTTTTAATTA
-ACAGCTATATTGAATCATTAGGGCTTGTTCTCCGTCAAAAAATTTCTCGA
-AAAAATTGATTTTTCGTTTTTTTTTGGAAAATCGAAAAATTTTGTTTCTC
-AAAAAAAACAAAATTGGAATTTTTATTAAAAAATTATTTTAATCCAACAA
-AAAAAACTAAAATTTTTTGCAAAATTTAAAAATTCATAAAACATTTAAAA
-AAATTTTTTAAAAGTTATATTGGGACTGTATTCTAATACTTGGACTAAAA
-AAACCCACATTTGACAAAAAATTCAATTTAAAATGAATATTTTCAGATGG
-GCTACCAAAACGAACAGAAAACCGAGAAATTCGAATTCGAGTCTCCCAAA
-ATTCACAAAATCATCAAAAATCGTGAAGTACAATGTGATCCAGTTGATAT
-TCCGTTAGACTCGACTATTCATTTTCATCAAAATTATAATCAAGAAGTAT
-TGAAATTTCAATCGAATCGATTATTATTTCAATGGATTTATCCGAATTAT
-TTGTTTCAAAACGATGGAGATGTACATTTTTCAATTGAACAATTGGAGAC
-TGTATTTGCTGTGGATTTGGAGAATTTGGAATTGTGAGGGTTTCTTTTAT
-TAATTAAAATTTTTTTAAGTGGAAAAATTTTGGTTTTCTTTTCAGAAATT
-ATTGTAATGTTGTAACTAAATATTACGGGAACACGAAATTCTAAGAATGC
-GTATTGCACAACACATTTGACGCGCAAAATATCTCGTAGCGAAAACTACA
-GTACTTCCTTTAATGACTACTGTAGCGCTCGTGTCGTTTTACAAGCTCAA
-TTTTTTAATACTTTAAATTAAAACTTTTACTTTAAATTTTAAAAAAATTC
-GTCTTATTTTTTAATTTTTGCTTTATTCCAATATTCTGTCGATAAATAAA
-TCATTTTAATAAATTTAGAAAATTGAGCCCGTAAATCGACATGCGCTACA
-GTATCCATTTAAAGAATTACTGTAGTTTTCGCTACGAGATACTTTGCGCG
-TCAAATATGTTGCGCCGTACGCATTCTCAGAGTTTTGTGTTCCCGTAATA
-TAGAAAATTAGAAGTATGTTAAAATTTTTAAAAAGTATTTTTTTTGGACT
-TTTACCCAAAGATTTTTTTTTGCAAATTTTTAGTGAAAATTATTATTTTT
-TTCAATTCACGCTAAAATTTATTAAAAATTTAAATAATTTTAGACTGTAT
-TCTATACAATCAAAAAACAACAAACATCAATAAAATTTTCAATGAGTTTA
-AAATTTTTTTGAATTTTTTAAAACTTTTCTTCGTTGACAAAACGTTCACA
-AAACTTGAAAAAATATATTTCAAATTAATACTTAAAAATTCAAACAAAAA
-ATTTTTAAAATTTTTCAGCCCGAAATACCAACCTATATCACCAGAAGAAT
-TCGTTCCCACCGACACTTCTCCCTCCGATATCTGGTATTTAAAATCCAGT
-GAAAAATTGAAAATCCCTTGTCACAAGTACCTTCTCCTACTACATTCACG
-TCAAATTGGCGCGATGCAGAGATTTCATTCAAATTATGGGAATTTCGGCG
-ATTTTAAGGATGGTAAATCTGAAAATGAAGTGGAAATTGAAGCGAATGCT
-AGTGTTGAAACTGTGAAAAATGCGCTGAGAGGGATGATCAATATTCGAAC
-TCTTTTCAAAATTAAGACTATTGAGGTAATTGGATTTTTGGTGAAATTTG
-AAATGAAAAAATATTTATAAAAATTGAATTTTTTTTCAAATTTTTTTTTC
-AGTCACCATAAGTCAATTTTCCATTAGATAAAAATCGATACTTTTTCTAA
-ATGCGATAAAAATTGGAAATTCTATAAATTCCGGAAAAATCGATTGATTT
-CAAAAAATCGATAATTTCCGGAAAATTGATAAATTCCAGAAAATCGGTAA
-TTTCCGGAAAAATCGATAATTACCGGGAAAACCAATTAATTTCCAGAAAA
-ATCGGTAATTTCCGGAAAAATCGATTGATTAAAAAAGTCAATAATTTCCG
-GAAAATTGATAATATCTAGAAAAATCATTAAATTCAGGAAAAATCGATAA
-ATTCCAAAAAAAAATCGATAATATCCTGAAAAGTGAATAAATTCCTAAAA
-ATCGATGAATTTCATCAATTCCGGGAATATTTTTTAAATTTAAACTTTAA
-AAAATATTTTTTTAAATCTTTAATCCTTATCTATTTTATTCAAAAAAAAA
-CTGATCAAAAAAATTTTTTTTTTTCAAAAATTCAATATTTTTGCAGTTAA
-TCGAATGCATCAACTTCTACGATTATCATTTAATGGATGAAATGTTCAAT
-GATTCAATGCATATTCTAATGGAAACAATCACTGAATTCACACTTCCATT
-TCTCTACGAATTATTCTATTCGTTTGAGGAAAAAGTGTTGGAGGGACTTT
-TGCAGAGGAAATATTTGATTTCTAACTCAATTTCCAGTGTTTTACCGCCA
-AAGGAGCTTCTTGTACGGTAAGTGAGTTAAGAAATGGAAAAAAACACATT
-TTTGCTACTGTTGGAATTTTTTTTATTTCACAAATATATTTTTTTTCATT
-TTAAAGTTAAGTAGGAGTTTATCAACTTTTCTGGATTTCATCAATTTTTC
-CGAAATATTTTGATTTTCCCGGAATTTCTGTGTTTTTCAGGAAAAAAACC
-CCAGAAAACTAACAAAAAGAATTAGCAAAAATGACCTAAAAACCGTAAAA
-CTATGTATCCCAACTTGTCCACGTGTAGTACAAAAAACCGATGTGCACCA
-ACAAGAATTTTTGCAAAAGCTATTTTTCCATTCAAAACTGCGCCCCAAAC
-AGTTGAAATTTTATAGAAAATTTTCGAAATTCGCTTCTCCGAAAATAAAA
-ATCTCAGATCCGCCCATTTCTTGGCTCTTCCAGATTCGCTGAAAAACTGG
-ACACCGATTGCCGCCGACACCACACATTAAAAGTTCCGTCGAAATTCAAA
-AATCTAGAAAATCTGAGCACCTATGAGCCCGAGTACATTGTCAAATATTT
-TCTGAATCTCGACCAAGATTCGGAGGATGTGACGTGGCGATCGATACGTC
-ACGAATTCCACGACACACTTGACACGTGGCACGCGGAAGCTGTGAAGAAG
-AGAGATGAGAGACGTATGCACGGAGCAACACGGAGCAGAACGAGTAGTAT
-TCGGAAGGAGAGCTTTACGAAAATTCAAAATGTTTCGATGACGTCATCGC
-CGGTAGGAATATCGATTTTTATGTATCGAATTTACTGGAAAACTATCAAA
-AGTTTAGGAAAAATATCGATTTTCCTGAAATTTATCGATTTTCCTGAAAT
-TTATCGATTTTCCTGAAATTTATCGATTTTCCTGAAATTTATCGATTTTT
-CTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTCCTGAAATTTATC
-AATTTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGA
-ATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTT
-TTCTGGAATATATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATTTA
-TCGATTTTTCTGGAATTTATCGATTTTTCTGGAATATATCGATTTTCCTG
-AAATTTATCGATTTTTCTGGAATTTATCGATTTTCCTGAAATTTATCAAT
-TTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATT
-TATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATATATCGATTTTTC
-TGGAATTCATCGATTTTTCTGGAATTCATCGAGTTTTCCGAGATTTATCG
-ATTTTTCTGGAAATTTTACTCCCCAAAAATTTAACAATATATCGTGCCGA
-GACACGAAAAACTCTAAAAATTACAGATTCCAATCGGAGGCGGCCGCTCG
-AAACCCGAAAGTTTCTCAAAATCAATCAATAGTCCTGTCATTCAATCGCC
-ACTCTCTCCCTCACCAATCAAAGGAATGCCAAAGGTAATCGTGTCGAGAC
-CCACCACGCCACCTGCGCCTTTAAATTCCACGTTTTGTAGTCCCGCCACG
-ATAGTATTTCCAATTCACTGGACGATTTTCCTGAAATGAGCATTTCACCG
-TCCCCCTCGACACCGAAATCCTCTTCCGGTGGCGGTCGCTTCGCACCAAA
-AGGAACTCGATTTAAAAAGGATTTCGAAATTCTCGTGAAACCTTCCCAGT
-CACCACAGAATCCGTGGAAAATGGGCGGAGCTTCCGCGTCGATTCGCGAA
-GAAATTGATCCGCAGGAGATCCGATTCGACGAAGTTGTGAAGAAGGAACA
-GAAATTGCAGACTAATATACGTGCGTCACTTGAAATTTTGGAAAAATCGA
-TAATTTTCAAAAAAATCGACCTTTTTTTGGAAATTATCGATTATTCTTGA
-AAATTATCGATTATTTTAAAAAATTATCGAATTTTCTGAAAAGGATCGAT
-TTTTTCGGAAAAAGTTTCGATTTTCTCGAAAAATAACGACTTTTTTTTTG
-AAAATTATCGATTTTTAAAGAAATTATCTATTTTTTTGGAATTTATCGAT
-TTTTTTTAGGAAATTATCGATTTTTTTAAGGAAATTATCGATTTTTTTAA
-GGAAATTATCGATTTTTTTGGAATTTATCGATTTTTTTTAGGAAAAAGTT
-TCGATTTTTCTCGAAAAATAACGACTTTTTAAAAAAAATTATCGATTTTT
-AAAGAAATTATCTATTTTTTTGGAAATTATCGATTTTTTTTGAAAATCAT
-CGATTTTTAAGGAAATTATCGATTTTTTTGGAATTTATCGATTTTTTTAG
-GAAATTATCGATTTTTTTGAAATTTATCGATTTTTTTAGGAAATTATAGA
-TTTTTTCTGAAAAATTATCGATTTCTCAAAGGAAAAGTATCGATTTTTGG
-AAATTATCGATTTTTAAGGAAATTATCGATTTTTCAAAAGAAGAGTATGG
-ATTTTTTGAAACTATCCATTTTTCTTTTAATTATTGATTTTTTTCCTGAA
-AAATTATCGATTTCTCGATGGAAAAATATCGATTTTTCTGAAAATTATCG
-ATATTCTTTTGGAAATTATCGATTATTCTAAAAAAAATTATCGATTTTGC
-AGGAAATTCTCGATTTTTAAAATAAAAACAGCGATTTTTTTTTTGAAAAT
-CATCGATTTTTAGGGAAATTATCGATTTTTCTGAAAATTATCGATTATTT
-CTTCAAAATTATCGATTTTTCGAAGAAAAGTATGGATTTTTGGAAACAAT
-CTATTTTTCTTCAAATTATTGATTTTTTTACCTGAAAAATTATCGATTTT
-TCTGAAAAAATATATAATACCACACATTAATTTCAGGAACCGGATTCAAA
-AAAGTGCAGCTTCTACCACACGTGGAGACGGAAGAGCTCGCCGGAGCTCA
-AATTTTGGAGGTTTTTCGACGAGAACTTCACGATGAGGCGCTCATATGTG
-TAGGAATTTGTGATGGTTTTTTTCTCAAAAATTTGAAATTTTTCAGGTGG
-AACTGGTGATGAGCGACGATTTGGAGGTGGAAAACGAGCAGATCATCTGG
-GGAAACATGCCGGGACTTGTTCGGCGTTAAATTTTAAATTTTTGATTTTT
-TTTTTTCTTGTAACTTGCATTTTTTGTTTAATTTAGTGTTTTCGGTGTTT
-TTTGTTGAAATTTTCGGGTTTTTAATATTCAAAAATTAATTAAATTATTA
-TAAAATAAATGCATTTAGAAATGCGGTATAAATTGAAAATTTTCAAAAAC
-CATCTCCCCGAATCCAGTGGTTTAGGATGAAAATCGTGGAAATCGAGCCG
-AACGAGAGAATTCCGAGTTGCCACGTGGGTCTGAAAATTGAGTGTATTTA
-ATTTTGGAAAATTTTGGAGATCTCTTACATTTTCTCAAAAATCCATAGCT
-TTTTCCCATTTTTTTGTTGCTGGATCATTTTCAGCTCTTCGGTTATATCG
-CAGACTTTGAAGCAAGGGTCTTCCGGGAGAATTTCCTGAACATTTGAAGT
-TTTTGGGTGAAAAAAAAGCTTTTTTAAAAGATTTTTTGGTATTTTCAAAT
-AATATCGGAAATTTGCGTTTAAATTTTTTTTTTCAAAAAAGTGAATTTTT
-TCAAATTTTTCGAAAAATCGAAAAAAAAATTTTCGGGTTTCTGGAAATTT
-TAATTAAATGTGTTTATGATGATGAGAAAATATAGTTGACAAAATAATTT
-TTTCCGATTTGTCAATTTTTCAAAAAATTTGAAAACAATTTTTTCCATTT
-TTATTCCTGAACATAAAAAATTCGAAAAATTTTCGTTTTTAATAATATTT
-CGGAAAAATTTTGAATTTACCGTAGTTGTGTCATTTTTAAAGAAACTCAC
-AATATTTCTAATCGAAGTATGCATATTTTTTAAATGAATTTTTGGAAAAA
-TTTCAAACTTGTTTTTTGTTGAATTTTTCGATTTTCTTTCGTTTTTTTAA
-ACAGAACAAATTTTTCATCATCTTTTCTACAAACAAAACAAAAAAAACAA
-TTTTTGTTTTTAGAAAAGCGAGAAAAATTTCGAAAAATTATTTTAAAAGT
-TAGAAAAATATCAATTTTGAACGGAATTTTTTCAAAATTCGATTTTTTTG
-TTTATTTTTCTAATATGTTCAGTTTTTGGCCATTTTTTTTTTTAAAAAGT
-TTGCTTTCAAAAAATTTTAAATGAGAATTTAGATTTTTTAACGAGAAATG
-TTGAAATTGAGAAGAAAAAAAAAATCAATTTTAAATAGAAAAATTTTCTT
-TTTCTAACATTTTCAGTTTTCTCAAAATTCCAAAAACTCGTACATCCTCC
-TGACAAGTACAGTAATCCATTGGATCCAGATTCTCCTCTCCAACACTCGT
-TTCCCGAATTTTTTCGAACCAATTGTTCATTTTCATAAGAACCGAGCTCA
-TCGCAATCAATTTCCCGATATTTCCATCGTATTCCTCCGAAAATTGCTGA
-AGCCGATTCAAATTTCCAATATCATGCTGGTGGAGAGAATACGGAGTGTT
-CAATAGATCCGTAATTGATTTAACTTTAAAATTTGGTTTTTTCATTGTAA
-TAATCATGCTAATCGTCTTGACATGATCTGTTAAATTCTCTCGTTTCGGC
-GGAGAATATAATCGATATTCCAGTGGCACGAGGTTGTCGAGAAATCTATT
-GAAATTCTGATAAATATCGTTCCAATCACTTCGAAGCTCGTCAGTTTCGG
-CTCCAGCTCCGCTTTTGAAGCCAGTCGTTTTTAGATTGTGCTCCAGCGTG
-TCTATTGAGCTCTGAAAATTTGATTTCAAAAATTTTGAGTAACTCAGACA
-ACCCCATTTTTCATCTAATTCGAAATTAGCCACATCTTATAAGAAATTAA
-CCACATCTAATTAGAAAAAACTTTTCTAATTAGAAAGGATGCATATCTAA
-TTAGAAAAGCTGCACACCACATCTAATTAGAAGGGATGCTCGTCGAATTA
-GAAATGAGGCACATCGAATTAGAAAGGGGGCGCGTTGAATTAGAAGTTAT
-GCGCATCTAATTAGAAAGGAGGCACATATAATTAGAAACACATTGCGCAC
-CACATCTAATTAGAAGGGATGCTCGTCGAATAGTACTACCTTTTAATGTA
-TGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTT
-TAATGTAAGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTAC
-TACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTTTAATG
-TATTACCTTTTGGCTCTTAATGTTGAAAATAAATCGAATCAAATTAGAAA
-CAATGCGCGTCGAATTAGAAAAAAAGCATGCCGAACTGGTGCGCGTTAGT
-TGACCCTATTTTTCTAATTAGATGAGAGGAATAGGGTTGTCTGAGTAAGA
-CTGCAAATTATCAAAATTTTTTGGTTCAATTTGTTTTTGGAGAAAAAAGT
-GAAATTTCCTGGCAATTTTCAGTATTACGTAGACGTCGAAATATGAGATT
-TTTCACCATTTCTTATGGGTCTCGCCACGCCGACAATCAATTATTGTAGT
-TCATGTCGATTTACGGCGCCACTGTTGCATTAATATTCCAAATGACAAAT
-TTGCCGCCGAGTTTAAAAAATTCAATAAAAGCCCGTAAATCGACATGAAC
-TACAGTAGTTGGTTGTCGGCGTGACGAGACCCAATTCTCATCTTTCGACG
-TCCACGTAATATAGAAATTTTTTTTTTGAAAAAATCAAACGATTTTGCCT
-CAAAAAATTCAAAACTGTAAATTCAAAAAATACCACAAAAAAAAAGCGAA
-AAAAATCGCGGAAGACAGTGGCGCCAGGCTGTCTCAATACAGTTTGATCT
-ACAAAAAATGCGGGAATTTTTTCACAGAAAAATTGTGACGTCAGCACGTT
-CTTAATCATACGAAATCAGATGAGATTTCTGCGTCTGCCATCCCGCATTT
-TTCCAAGATCAAAGTGGAACTGGGACTTTCTGAATAGGACTTTCTGATTC
-CACGTGGGAAGGATGACAAATCCAAAATTGCGATATTTCACTAATTTCAC
-TGCTTGAATTTCCTTGGAACCAATCAGCGTCTTCAAACTCCGCCCACTCC
-ATCTGATTGGTTGAAAAATGGGCGGAGCAAATCGCTGATTGGTCGCAGTT
-CTCATTTTTAGCCAAAGTTAAAAATCTCGATTTTTCAAGGTTTTTTGACC
-ACCTCCAATTCCAAGCTTCTTCCTTACCTTCAAATCGTAGAATATTGCCA
-ATTCTCTGATTGCATCGAGTCCTTCCTTCAAAACCACAACATCTTGCAAC
-TCGAACCCCGAAAGCTGATATTTCTCGTTTAACTTGAATTCTCCTAGAAT
-ATCCTTCGCACGTAGCAACTCTCCAACGATTCCTTCAGTTGGTAGAAACT
-CTTGTAGAGTGTACACTGCCTCCCAGATCTTCTCAAGATCCCCGTAATTC
-CAGACATCTTCCGAGCTAGCCACAAGAAATTGCATATGTTGGTGTTTTTC
-GTTTCGAGCAACACATTCCAATGAGGATACGAAGTTAGACTCGTTGATTT
-TTGTTAAAACGTTTATCATGCTGGCGTAGATTTCCTCGAATTTGGTTTTT
-CTTTCTTGAAATTTTTTGTATAGTTTTGAGGGTACCATACAAAAATTCTC
-GGGAAACTTTTCGATATCATCTATCATCATCGTCAGGTTATCGAAATCTA
-TATACTACAGTGTTTTTTGAAGAGTTTCCACGATATTTTGATCGGTTTGA
-TGTTTGAATGCTTCGAGAATACGCTCGTCTCCGCAACGTCTTAACGTAAT
-GCAAGGCTGTGCGGTGTGTACAAGTGTCTTGTTTAGCTCTTCAAAACCGG
-AGCGATACATAGAAATGGTTTCATGCGCAGCGTCCAGCTGCTCAGGGCTC
-TTGAAAGTTTTCAAACATTCCGAGAAGCTCTCAACAATGCTGTTGAGGTT
-ATCCTTTGGCAGATTTTCCCGAATTTGATTAACTTCTGATAGATATTTAT
-CGATATATTCGATATTTTTATGATATTTTTCCGTGTTGTTTAGGATTTTT
-TGCATCGCAAATTCGAATTCCACATAGTATTCCAAAAACTTATTCAATGG
-ATGCAGGAATTGAATTGATCCTTTGCCAGAAACGCTTTTTATCCAATAAT
-TGCTCTGCTCTTTTATGGACTCTCGAATACTTTCTTCTCGTTTAGGGAGA
-CCTAAAGCTCCACGATCAATTCGTTTTTTGAAAGAAATAATTCAAAAATA
-CCCAAAAGAAAATTGCCTGATGGCCTGGAAGAATGCGTATCCGAGGATTG
-AATACTACGAATAACGTCCCTGACCTTTCGCACCCAATTTGAAAGCCCCA
-GTGTCGTATTGGTGTCGCGAATCATTTCTAAATCACTCAACGCCGCTTCG
-AAATTGTTCAGTCTTCCCACTGACAAGAAGTCTCGAACACTTTTACTTTC
-ATTTTTCATTATAGTCGTAGCGAGTTTGAAGAGATAAAATGGATCTTGAT
-GGAGCAATGCGAATTCTTTCTTGGCTCGTTCCGGAAAGAAATTTCTGTAG
-TAGGCGCCAACCTCTTCGACCGTTTCATAGTTCCGTTCTGTACGATCTTA
-AAAGGTGGAGTACCGAAATCTGGGGAATATTTCTAAATAACTCCAAATTT
-GCTCCTGATTTCAATTATCCATGTGAAAAAATTCAAAAAATCCCTGATTT
-TGTATTTCGGCTTGAAATTGCCGAATTCCATTTGTGCACACATGCAAATT
-TTTCAAACGCGCGCCCAAAGAAATTATCATTGGAGCGCGTTTGCCTCATT
-TGATTCTCTCCGGAGCACGGTAGCACAGAAACTAGATGGATTGGTTCATG
-ATACTCAGTCTGGAAACCTATATTGGCTACTATCTCGAAAACCATCATAA
-AATCGATTTTGCGATGCAAATAAGAAATGACCGCAATGAAATTATCTATC
-TCCATTCGTGATGAATTTTCGATTTTGTACTTCCTGGCCAAGTTATGCAC
-GTTTGTTCGGTGGAGCGCGTTTTCACCCATCTAGCAACTGACACGGTGGT
-TCAGTAGCCAATATAGGTTTCCAGACTGAGTATCATGAACCAATCCATCT
-AGTTTCTGTGCTACCGTGCTGAACCACCGTGCTCCATCTACCGTATTTCT
-TCCATTAATATGGCTGCAATACTATTTTTCGATGGTCTTCCCGCTTGCAA
-TACTAATAGGGAGTGCAATACTAATTTTCAGAATATTTTTCTGCCTTTGA
-GCTTACTAGTTTTTTTCTGAAAAAGCTCGAATTTTATGTAAAAATTCAGA
-AAATTGGTTTTAATTGTAACCTATAAGTTTCAAAAATTCAATCTCGTAGA
-AATTTTTTTGAAAAATTGTTGCAAAATAGGCAAAAAATATTGTAGAAGTC
-CTGAAATTAGCGAGACGGGATTGCAATAAAAAAAAGTAAACGCAAGACTA
-TTAGGGAGTGCAAGACTAATAGGGAGTGCCATACTAATTTTCGGAAGGTC
-TCCGAGGGGCAATACTAATAGGGAGTGCAAATCTAATAGGGAGGCCATAC
-TAATAGAAGAAATACGGTATTTTTAGTTCCTTTATTTTTTCAACGAGAAA
-ATCAAATGAGGCAAACGCGCTGCAATGAAAATTTAAATTTATTTGTGCGC
-GCATTTGAAAAAACTCATTCGGACGCAAATAATATTCACGAATTTAAGCT
-GAAATATAATATCAGGGAAATTTTTTTGTTTTTTTTTCATACAGATATTC
-TGAATCAGAGGAATTTTTTTTAGTTATTTGAAAATATTTCCTAGATTTCG
-GAAATCAAAACAGCAGCTTTTGTACAACAGCTTTTTTTTAAATGTAAAAC
-TTGTTTAAAAGTCAAACCACGTCCATTTTAAAAATTAATTTTTTAACTTA
-TAAAATAAAAACATGTGGAATGCTTTTGCATGTACATTTATACAAGTTTT
-TTGAGAAAAATACATTTAAATTTGAAAAATGTGTTTACTAAAATTCTGAT
-CAATTTTTTTGTTATTATATATTAATAGCTGAACTTTACTTTAAGACAAA
-AATTCCTCTAATTAAAATCTACCTTCAAACCATTTTTTCAGTTTTTGCAA
-ATTCTCCTCGGAAATCGCAGTAGGACTGGGAGCTAGATCATTGAGTGGCG
-AGAGAAAATCACGGAAATTTTTCAGGCGATTTTTCAGGCCCCATGTTGCC
-TCCCATCCGTATTTTGGTTTCATGAGAGATTGGAGATCATGAAATAAATG
-CAAAAAAGCATCCAGCGAGGTGGTGATCTTTTTCAGTGATTCTCGCTGTA
-GTTGAAGATGTGGGAGCTTCTTAAGTAAATTTACAGCTTCTTCTCTATCC
-TTATAAACTTTAGTGTTCTTCCTTTTCCCGACAATCTCCTCGAAAGCTCT
-CTGCTCATCCCATCCGCCAATAGATTTTGTTTTGTAGAAACTTGAAATCC
-TATCAAAATCGATATCCCGATCTAATAGCTGATTCGTCAGATCCGTAGAA
-GCGATTTCGCCGCTGAGAAGCCCATCGACGATAAGATAGCAGTTAAGGAG
-CGGTGGTAGTGAGCTCATCCAGTGAATCCACAGGTTTATGGAGTCCTTTC
-CGTAGACTGAAATTATTTTTAATATTAAAGTAGAAAAAAATTATTATATA
-AACTAACTATACGCAGGAAAACTCGCATTAAGTTCCAGATTTCGATCGAA
-GAATTGTGGATGTCCAGCTGGAAATTTTTATTTAAATTTAGTAAATTTAG
-TGAAGAAATTTAATTTAAAAATACCTGTCAAGCGCTGACCCTTAATCTGC
-TCCAACATTTGAATACCTTGCCGCTCCCTTTCCGAAATTTCGAGATCTCC
-GCAGTGTTTACCCGGTAGAAAAACAAGAAGAAAGGGAATTATCGTTATAA
-TCATCGTTATCTGGAAAAAAATTAATTTTCATGGAATATATTTCAAATTT
-TCGACAACCAAACGCTGAAAATTCACATTTTTTTCAGGAAATTTGGTTGA
-AAAATCTGTTTTTCATAATATTTTGAGAAAAAAACAAGCGTAAAGGTATT
-CAAGGCGCATGCAATTCACTTAAGCCAGGGTCTCGAAGCGAACAGAAAAC
-ATACGGTATTTGAAAATATTCTTGTTTTCCGCGGAAAGTCGCAGAATTTA
-ATTTGATTTTTTTAACTTAAAAAAACAGAAAATTAACCGTTATACCTTTT
-GAGCAAAAAATTCTACAAGATAATAATTTAAAACAATTAAAAATTGAATA
-AACATTGAAAATTAAATGCTTAAATTTCAAGGCGCGTGCATCAAACTTTT
-GTTTGGGTCTCACACCGAATGTAACAAGTACGGTAAGAGTGCGCGCTTAT
-TTTCATTTTTCGAATTTGTGCGACCAGTTCTCATGTTTTTTAAACGATTT
-TTGCGGTAATTTTGGCCATTTTTTCTAGTTCCCACCGACAAATTGCATTA
-TTTCCGTATTTTCAACGAAAATTTTGTTAAAAAACCAACAAAAATTTAGA
-AAATTGCATCATTTTGCAGGGATGAATGGTCAAGCGGATCGCTGCGACCG
-AACCGCCTACGTTTCGGGTCTTCAGCCGACAATCTCCGACATAGAACTGT
-TCGAGGTGTTCAATCGTGTCGCTCACGTCGAGAAGGTCATCGTTCGCAAT
-GGAGCCGCCCGTCACGCGCTCATTGTTTTCAAGTTGGCATTTTTTTTCCA
-TTTTTCCTCATCTAAATCTCTAATTTTCCTATTTTCAGAACTGTTCAAGG
-CCTGTATCAGGTGCTCGTAAACTTTCAAGGAACAACTCTTCACGGCCGTC
-AGCTGCACATTCGTCCACTGCGAGAAAGTTCGCACGCGAACAGCGAGGCC
-ATCTCAACGATGTTCGAGAAGGTCAAACATCAGGGAAATTCCGGGAATTC
-TTCGTATCGTCAAGAGCACTCGTTCCCCGAGTACCGAAACCAGAACCCAC
-AGGCTTCATCATACCTTCCACCGAATCCACGTGGTCATCGAAACTCGACG
-GGCTGTTTCAATGGTGGCGGCGGGGGCTATGGACGCCGACGTTCCGCCGG
-TGGATACAATCAGTACAATCAGAACAAGTATCCGAACGAAACGTACCCGG
-GAATGACTCTGTTCGATAATCATCCAGTGCAGCAGTATTCGGGCTTCAAT
-CCCATCGATTTTCGCTTTGATGACTATGTGGAAGGAGCCAAAAGGTGCAA
-AATTCGCCAAATTTCGCTAAAAAATCTGAAATTTCGCCGACTTTTCCCGT
-AGCGCAGCAGTTTTTTCTTGATTTAGGCACATTTCAGGCAATTATTTTCG
-GCAAATCAATATTTTTCCACCATATATGTTCTAGAATGTTTTAGATGTAC
-TAGATTTTATTTTCAGACGAATCAAGTGATTTTCTATATTTTTACACTAT
-TTTTTGTTGAAATATGACCAGAATATGCAACAAAGTGTTCCAGCTGCTGC
-GAAAAGGAAAAATCGGCGAAATTTCGAATTTCAGTCTATTTTAATCTGTT
-TAAGCAAAAAGAAAACTAATTTTTAAAATTCAGATTCGACAACCTTGCCA
-ACCTGATTCGCTCGAGCACCCCCACGGATCCGTTCGCTAATTATCAAAAG
-TATTTTTGAATTATTTTGAAAATCAATAAATTGGTTTTTTTTTCAGACCT
-TGTGAATCCACAAGCACATCTCGTTCTCGTACGAATTCAGCAAAAGATCA
-AAAGCATGGCCCGCCAACGTGGAAAATGGAGCTGCAGATTAAGAAAGATG
-ACCACCACCACGCCGGCGGCGGAGCAGCAACCACAGGACAGAAGCTGTCC
-CCACAACAGTTTTTGGCTCAGATAGCTCAGAGACAACAATCGGAGCAAAA
-CGCGGATGAGGTGGCCAAGAAGAAGCGTCCGAACCTTTCGGTTATCAATC
-CATCGCTTTTCTATGAGCAATACCCGAGAACATCGTCGCCAGTTGTTTAT
-GCTTCAAAATCTAGTAATATTTTTTGGAGATTTTGGGAAAAAAACAAATT
-TTCTCGAAAATACGCCCGAAATAGTGTTTCACGCGAAAATTGGCGATATT
-TCAATTTTTCTGAAAAATTGCTATAATTTTTTCGATTTTCACGTGAAATT
-GCAAGTTTTTGGATATTTTTCTCGAAAAACGTCAATTCATCGATTTACGC
-AGCTAGTATACTCAGCAATTGACCATTTTTTTGCAGACAATTTGGTATTT
-TTTACTTAAAATTCTTGATTTTCGACTTCTCGTGTGCTAATCACTTTTTC
-AAATGCGCGCCCGAAGAATTTCTCATTGGAGCGTGCTTGCTTCGTGTAGA
-TTTACGAGAGCTTTCCATTTATTTAACTTCTTTCGTGCTTTTTCAGTTTT
-CCAGCGAGTTTCTGGCTCGACCCCTCGGTGTATTTTGTGCAAACACCGTC
-ACGCGCAAATGCATGCACTTTTTCAACGCGCTGCGTGAAAATTCCTCTTG
-CGATTTCAAATATTTTTTCCCGCCATTTTCCAAAATTTTCGAGAGGGGGG
-GGGTCGAGCCAGAACACCTTGGTTTTCCAGCGAGCTTCCTTCATTTACGT
-CGATTTTTTTTTTAATCTTCGTTAAAGTTCTAAAAAAAAACGACTTAAAT
-CATTTTAAATTTTCCAAAATTCGGTTTTCCTTCTGCAAAAAAAATCAATT
-TCCAGAACCATCCGGCCACTACGACGACAAAATCGCATCTCCACACGATC
-CGGCAGTTCTCGCTTACAGTCGCCTTCGTGTACCTCAATCGGCCTTCGAC
-AGTCTCTCACCAATCGACACCGACAATTGCTCATTCATCACAAAACACTT
-GGGACCAACAACCGGTGTGAAGCGTGATTTGACGAACGACGAGTTGTCGG
-ATATGATTGTATCAACTGGAAATCTCCGAATCAATCCAACCAACATCGAT
-CATCATGACGAACCGGCACCATGGTCTCCGCTGAAACGTCTTCGCGCCGA
-AAGTGGATCCCTATCAACTGCACAAGTCGCGTCGCCCGAGTTCTCACCGA
-TCAAACCAAAGACAATGGAGTTCCACGAGACTGAGGATGATGTTTTTGAA
-ACTGGACCACCACCAACCTACTTATCCGAAGGAAACGAAAACGCGGAGAA
-GAAATGTGTTGAGCAGCCGAAAATCAACTACGACGACATTAATAATAGTC
-GTCTTCCGTCGAATTCTCATTCGGCAGCACCGAATTCCGAGAAGAAGCAT
-TTCGTTTTTCCGGTACGGGGGCTTTTTTTTGAATTACCGAAAAAATTCCC
-AACTTTTTAAAGTTCAAAAAAGTCAAAATTTTTGTCCATTTTCTGGGCGT
-GACTGCTTATGCCCCGCCCCCCTTTTTCGAAGTTTCTGCTTCTCGGAAAA
-TGTATTCCCAAAGTGCCAGTTTTGAGGCCCCACGAAAAGGGAGCAGAACG
-AAAGAGGCACCACGGATTCAAGATCTGGTGCGATTCCGGATCTGGCACCG
-TGCCAACAACTTGAAAACGTGGTGCCTCTGAAAATTTGCTGCCAAGGTTG
-AAATATCGAATGCATTACCCGTAAATCGACACGAGCTACAGTAACCTGTT
-ATCCGCGTGGCGAGACCCATGCGCGTCAGATGTGGCGAAAATTATACTAA
-AACCTGTTTAACTTGCAGAAAAACTTAATTTTTTTTGTTGAAAAAATTGA
-GCCAAAAGACTCAAAAATTTCATAAAGCGAAACTTTAAAAAAATATATAA
-TTTGTTAAAAATTTCACGAAATATTTATGAATTAATTAATTTTTCCAGGA
-ATACCCAATGTGCCGTCACTCGTCAGTTCCATCGATTGCTCACTTGGTCG
-GTGATCTGTCGGACTTTTGCCCACACGCTACAGCCGACGAGAAGATGCTG
-CTCGACGAGGCGTCTTCAATCATCGAAAATACAACTCCAGCAGTGTCTAC
-TGCTCCGGCTGCTGCTCCAGGAGCTACAATGCTCCAAATATAGGAGAAGA
-TCACATATACAATAATATAATCTTATTGCATTTTCGCAATTCTCGTTCTC
-TCCACACACATACACACATCATCCCAAGTATTCCTGTGCTGAATCTCAGT
-TTGAATGATGTTTCATACCGTTTTTATCCCACTATTGCCTTATCGTTTCC
-TGTTTTATTATATTTTTCATTTTTTATATTGCCACCACCACCACCAACAC
-CACCCTCTCTATCTTTTTTTGTTCTTTTGCCTCCAGCAACATCATCACCT
-AGTTTTCTGTGAATTTTGAATTTTGTGTTCCCCCGAGTCCCCTCTGATAG
-GAATGATAGGAAAAACAATGAAAATGCGAGTTTTTTCAAAAAAAAAAATA
-CAAACTAGGAAACTATAGAAACAAAAAAAAAACATTTGAGGCGCAGTACC
-GAAATCTCTCCAAATTTGGCCCGAAAAATTCAAAAGAAAATATTTATTTT
-TCTAAATTATTATTTTTCCGCCACTCCAGCCTCATTCTCATTGGAGCGCG
-CAAAGTCATGTCGATTTACGAGATTAAGATTTTCAACGAGTTTCATCATT
-GTTATCGATTTTCGTGTAAAGTTAACTAATTTTTTTGAAAATTTTCGCAA
-AAAATTTTGGATAATAAAATGTTCAATTGGCACGAAAATGCAGATCTTCA
-GCAAAAAAACCGACAGAAATGTGTAAAACTGAATCTCGTAAATCCACATG
-GCATAACGCGCTCCAATGAGAATGTTTTTAGCGAAAAGTTTGAACAAAGG
-AATATCAAATCAGGGCCAAATTTGGAGCAATTTCTAAAATATTTTCTCAA
-TTCTTTCGGTATTCCACATTCAAACAATTATTCGGCCGTTCCCATGAGCC
-TCTGAATCTCGATGGGATCCCTTGGCACTGCAGCAGTCAACAGCTCAATC
-CCTCCAGCTTCACTAGTCGCCACGTCATCCTCGATACGGTATCCAATGCC
-ACGAAACTCTTTGACAGGCCAATCCATCGGAACATACACTCCCGGCTCAA
-TGGTAAATGGCACATTCGGTGGTAGATCAATGTCTCGGGATACTGTCGGA
-CAATCGTGAACATCCATTCCGAGATAATGACTGACGTGGTGGGGACACAG
-CTTCTCCGCCTGATGAATCATCTCCTTGTGATCCGTAGATCGAATCAGGC
-CGAGTTCGGTGAAACTTGCCGCGAGAAGTTCGTTCATTCGGCGGAACAGG
-GCGCTTAGGCGGACTTTTTCCATTGAGTGGGCGTAGGTGAGCAGTTCTTC
-GTGAACGTAGAGAAGCGCTTCGTAGAGGGATAGTTGGGCGTCTGACCAGC
-TGCAAAAACGAATTTTTTTTTGGGAAGGTTTTTTGAAACGATTTTTCAAA
-TTTCGTTCGAATTATATTAAACTTTATATAAAACGATTATCCACGGATTT
-CTGGCTTCCCTCATAAATTGGAATGGAAGAGTTTACCGAACTAGGCCATT
-TTGGCTCGGCCATATCTGGTGCCGCGTCGCGGCTCGATTTTAGTTGTAAA
-ACTAAATGCATTTGTACGTGTGGAGTACACGACTTTCCCACGCGTTGTCC
-GGCGGGCGATTGTCAATGGAGCGCAAAAAATTCACTGAGGAAGGGGAGAA
-CTCCGTGATTAGCACCGCCTATTTCTCTCACGAATCTATTTCTTCGAAAT
-CTTCTATTTTTTAAAAATCAATTCCTGAATTCTGAAATTCATTATAGCGT
-AATTTTTTGGGAATTTCACCCTGAATTCCATTTCTACGGAACAACATTTT
-TTTCTCGAATTTGTGGTGACTCAAATTAGAATTTTCAAAATCTCCAGAAA
-AAAAATCATTTTTCCTGAATTTTCTGGAGATTTTTAAAGGAATAAAGTGC
-AAAAAAGACTCTTTTTGAGGCACCACCGAAAGGAGAAAGGAGAACACAAA
-CCACGCCCATTTTTCCGTGCCGCGCGCAAGTTTTTCTGCAAATTTTTATT
-TTCAAACGAGACAGCGAAACTCCGAAATAACGCATATCGTGTTCTTTATC
-ATCAACGTGTTATTTCGGAGCTTCGTTGTCTCGTTTGAAAATAAAAATTT
-GCAGAAAAACTTGCGCGCGGCACGGAAAAAATGGGCGTGGTTTCTGTTCT
-CCTTTTTCACCTGTTCTCCTTTCGGTGGTGCCTCTTCTTTTTTTTTTCTA
-TGTTTAGCGTAATTTTTTAGCCATCTTGGAATAGCCCCGCCCATTTCTCC
-CACAAATCCATATCTACGAAATCTCGCATTCCAGAATGATTTGTGGTGTC
-TCAAACGGGAATATTCAAAATTTCTAGAAAAACCCCATTTTTCTTGAATT
-TTGGCCGAACTTCTGTAATTTCTGAAATTCTGAGAAAAATTTTCATTTGA
-GTCACCACAAATACTGGAATGCAAGATTTCGTAGAAATAGACTTGTGGGC
-GAAATCAGCAAAAAATGGGAAAACATTCAATTTTTTTTAATTTTTTGGGG
-TTTTATCACTAATTTTTAGCACTTACAATCCAGAAATCGGAAAGCAACGT
-GTCACATCTGACACATAACCATTCAAATCACACCCAGCATCCACGAGAAC
-ACATTCCCGGGGATTTAGGTCATTATTTGCGTCCAAATAGTGAATAGTGT
-TGGCACGAACACCACCGGCAATCACTGGTGGATATGCTTGCATTTCTGAT
-CCACGACGACGTCCTTCAAACTCCAAGAGCCCGCAAATCGCGTTCTCGTT
-GTGTAGATCACGTGATCCCGATATCATTGAGCTCATTGTCTGGGCTCCCA
-CGTTGCACACGTCACGCATTGAGCTCATTTCGGATGGAGATTTTATTACT
-CGGCGACGTTCGATCTGCAAGGAAAACTTGAAAATTGGCAAAAAAATAAT
-TTTTTTTTTGAAATTTTAAAACGATTTTTCGGGTGTTCAGAAAAATTTTT
-TTTAGGAAAAAATTGGAATTTTCCAAAAGTTTCAAAAAAATAATTTCTAG
-AACTTTTTCCTAAAAAAAAAATGAATATTGAAAGCTTCGAAAACAGTAAA
-AATTGGGAAAATTTTTTTACCGTTAAAAAATTTTTTTTTTTCGAAAAAAA
-AATTTTCAGTTTAAAATTTGGAGCGTTTTCAATTTTATTGATAATTGGTG
-AAACAAAATAAAAAGTAAATAAAAAATTTTTTTTTTGAAAAATTTGAAAA
-ATTAGATTAAAAATGTTTATTCTGGGATGAAAAAAACCTCCTAAAACCAT
-TTTCTGGAAAATTTAAACTTCCTATTTTGTTCAGACAATTCTTTTTTTTC
-AAGAAAAAATCAAATTTTCCACTAGAAAATCGAAAAAAATTGACCTCGTT
-TAAAAATTGGACAAAATTTGAATTTTTACTTTGAAATCCTCGAAAATCGG
-ATTTTTTTTTCAAAGCTTGAACAATTTTCTGCAAATTCTATATATCTCTA
-AACTCACAAAATGATTAATTTCCCGAACAGAATTAGCTTTAGCCTGTACA
-AACTTATAGAGTAAATCATCAGAAGTCGAATCAAAAAACACTGCAGTTCC
-CTTATCGCAAACTTTTTCCAAAGTCTGTAGAATCCGGCTAGTCGGCACAC
-ATTCCGTGAATTTTGCAGTCTTTTCCCATTCGGATTCAGTTGGTAGGGCG
-CCTTCCCATAGCTCATCATAGGCACTACGACGGTCAGCAAAAAGAATATT
-TGTTTCTTTTGAAGATTCGGATATTCCTGATTGCATTATGTAATAACAAT
-CTGGTGTGGTGATTCCGTTTAGGTATCTGCAAAAAAAAAAAATTTTTCAA
-ATTTTTTTCTGTTAAAAATTTAATTTATTTTTTTTATCAAACAATTTTGA
-ATTTTTCCCAAAAAAAATCCGAAAATTGTGAACAAATCTATTATTTTCGT
-TGAACAAAAAAAAAACAAATTCAATTTTTAAATAATTTAATTTTCGTTCA
-GAAAAAGAAATTTGTCGATTTTCGGCGGCAATGATTTTTTTTAACGAAAT
-TTTCCTGAAAAATTCAATATTTCAATAATTCCTGATTTTCTAGTTTTTTT
-TTTAAAGAAGAACATGTTAAATTTCTACTAATTTTATAACAAAAAATTTC
-GGGAAAATCTAGAATTAAAAAAAAATGTTTTCAGAAAAATTCTACTAATA
-TATTAATTTTAGCTTAAATTTCGATAATTTTAGGTTATTTTTCAATTTTT
-TTAGGGCGAAATTTTGATTTTCAAAACAAAAATATTTTCTGACAAAAAAA
-TTAATTTTCATTCTTTTTTAGATTTTTTGAAAAATTTTCAATTTTTTTCT
-GAAGAATTTGGTACTTGTGTATTACATGCCCTCATTTTTAAATTAAATTA
-AATGTTCATTAATTTCTCCATTTAAATTAAACGTGATATACATTTTCTCT
-TTTTAGGCTTAGAAATTGCTATTTTGCTACTTAAAAAATTACTATTAAAA
-TGAGGGCATGTAATACACAAGTACCAAGAATTTCAATCAATTCTTGTTTT
-TGAAATTTTTTTTGGGAAAAATTCCAATTTTCGATTGTTTCTTCGATTTT
-TTCAGAAAAAAAATTTTCTAAAATTTATTTATTTGTTTGAAAATTGGATC
-TAAAAAAATTTCTCTAGTTTTTATTTTTTTTCTGGAAAAAGCTTTTTTTA
-ACTTAAAAAGTTAATCTGTGGCCGAGTTTTCTCTCATCATTTTCACGGCC
-ACGGCCATCAAAACCGAACCTGAAATGGCTTTTCTGTCGGAACGCGTGTG
-GAACATCCGGTGCAATATATGATTTCCGTGCTCCTTTCATCACAACGACC
-ACTTGCTTTTCTGAAACTTTGAGAGGTCATGGCCTAACTTTTAAATGGTT
-TTCTAGGCCACCATGGTGATTTTATTACGGTACCGGGTCTCGACACGATG
-AATTTTGTAGAATAAATTTTTCTGAAAAATTTCGTTTTTTTTTTTAGAAA
-AATCAAATTTTCAAGAAAAATGGGAAAACATTTTTCAGGAAAAATTTAAT
-TTTATAGAGAAAAATAGAATTTTTCCTTTAAAAAAATCTGAAAATTCGGA
-TTTTTGAGAATTCTCTTTATTTGGATTTTAAAATCCAAATTTTCAAAAAA
-AAATTTAAAAATCGGAAAATTCCAAATTTTTGAGAGTAAACTCGCCTTAA
-TTTTTTTTTTCAATTAAAAAAATTAATTTTTTAAAAGAAAATTGGAATTT
-TTACCCAAAAATTGGCAATTATTCGAGTTTTCAACGGAAAAATCTGAAAA
-ATCCGAATTTTTGAAAAAAAAATCTTTAAAAATCCCAATATTCAATTAAA
-AACCGCGAAATTTCGGATTTTTGAGAAAATTTTAATTTAAAAAAGTCCTA
-TTTGTACTGCAAATCCTCATTTCCAAATGATGGCCTAACTTTTTCAGAAT
-TCTAGGCCACCAGGCCATTTCTCTGCCTCTTACCCCCAGTTTTGACCTCT
-TTTTTGAGTAAATTCATCAAATTCGTCCTTCTCATCGCATATTCCTCATT
-TGGAATTCGCGATGGCCACATTGGTAGGCTCCGCCCACTTCTGAGCATTT
-TTTTTTTGGATCTGATCTGTGTGGGAGGGAAATTCGAATTTTTTTAGAAA
-TGAATAAAACTGAAAAAAATAGATTTTTTGGGAAACAGGGAACCTGAATT
-TTCGAGAGAAAAAAGGAGGTAAAACAAAAAATTCGATTTTATATTGAGCA
-AAAATTAATAGAAAAAATAAACTTAACAATTATGAACAGAAAAACCTACT
-AAAAAAGTCTAAAAAATGAATGAAAAATTGCAAAAAAAATCTACAATCGA
-TACGAGACTCCTCCTCCAACAATGCAGTTCTCGCCGGTGATGTACCTGAA
-AAAAAGTGATTTTTTTTTGAATTTTTAGAAAACAAAATTATGAAAAAAAC
-CAAAAAATTTCCGAATAATCGAAATTTTTCGGAAGTTTTAGGTTAAAAAA
-ATTTTTTTTTGATGAAAAGTTTTTTTTCAACAATTCTGAAAACTAAAAGT
-ACCAAAAAATTTTAGTTTTTTCGATTGTTTCAATATGATAATTTTTTTTA
-AATGTTTAAAATTGTATTTTTTCAAAAAATATTATCAATTTTCCAATTTT
-ATGGTAATTTTGGATGTGAGATTTTTTTCTTCAAATTTTCGAAACGTTTC
-TCGATAAAAAAATTTTTCAACTGAAAAACTACAAAAAATCCTCTTATTTT
-GAAGAAAAATCGATATTTTCTCAAATTGTTCAGATTTTTTCTGTTTTTAC
-CAAAAGTGACCAAATTTTGAGACTTTTCGATCCAATGTTTAAAATTTTTT
-TCCCGTTTTTTCGATATTTGCGGTTTAAATTTTTTTTAAATTTTTTGATT
-CAATTTTAATAAGTTTGAGTGTTTTTCGATTTTTTGTCCAAATTTTTTCA
-AATTTTTTTCCAGAAAATTGGTAGAAGCCAAAAAGTGCGATTTTTTTCCT
-TAAAAAAGATAATTATTCAGTTTTTCGACTGTTTTCTTCTTGCTTCCAGA
-TTTTTTCTCGAATTTTTTTTATATTTGAATTGTATTTTTAAATATTATAC
-TCCTAATCGATAAAAATTAGTTTTTTTTTCAATTTAAATTGGAAAAGAAC
-GTTCTTTTTCGTAAATTTTAGTGATTTTTGATTCCAAATTTTTGGATTTT
-TTCAAAAAATTTCCCAGAAAATTTTACCTGGCTTTGGTAGAAGCCAGAAA
-TTCGATTAAATAAGCTTTTTTGGGTTTTTCGACAATTTGTCAAGTTAGGA
-ATTAAACTTTTAAAATTTTTTTCAAAAATTTTAAAAAACTAAAAGTATTT
-CTGAGAATTTTTCTGAAATTAATTATTCAGTTTTTCGACTGATTTCTGCT
-TGCTTCCAGATTTTTTCTCGAAGTTTTTATATTTGATTTTTTTAAAAAAT
-ACTCTTAATCGAAAAAAATTCATTTTTTGAATTTTTTCGGGACTTTTTTT
-TTCGAAATTTTCGTAAGTGTTAGTGTTTTTCGATTTTTGATTCTAAATTA
-TTGGATTTCTTCAAAAAATTTTTTCAGAAAATTCTACCTGGCTCTGGTAG
-AAGCCAGAAATTCGATTGAAGAAGCTTTTTTTTCGGTTTTTTGGACAATT
-TTCCAAGTTTTAGTTAGGAGTTAAACTTTTTCAAATTTTTTTTGAATTTT
-TTTCAAAAACTTTAAAAACTAAAAGTATTTCTGAGAATTTTTGAGAAAAG
-CATTTTTTTTCTCGAATATTTGAACTTTTTAAATTTTTAAAGCTTTTTAT
-TTTTAAATATCAATTCGAATATTTTACTCTTAATCAATGAAAAATCGATT
-TTTTTGATAATTTTTTTCAAAAAAAAATTCGAATTTGAAATTTTTTTCAT
-TCAGAAAAGGGAATTTGACTATTTGAAAACAATTTTTTGTTGAATTTTTC
-GTAAATTTGAGTGATTTTCGATTTTTGATTCCAAATTTTTGGATTTTTTT
-TTGACAATTTTCCAAGTTTTGGTTAGGAGTTAGATTTCTTGGAATTTTTT
-TTTGAATTTTTTTCAAAAATTTTAAAAACTAAAAGAATTTCTGAGATTTT
-TTCCTTAAAAAAGAGGAATTTTTTAGTTTTTCGACAGATTTCTGCTTGCT
-TCCAGATTTTTTCTCCAAGTTTTTATATTTAAATCTTTAAAATTTATATT
-TTTAAATAATATTTCAGATATTATACTCCTAATCGATAAAAATTCGTTTT
-TTTTTCAAATTTTAATTGAAAAAAATCGATTTTTTCGATAATTTTTTAAT
-TTTTTTAAAATTCGAATTTGAAACTTTTTCATTCAGAAAAGAGAATTTGA
-TTATTTGAAAACAATTTTTAATTTAATTTTTTAATCCTTTAAATTTTCGT
-AAATTTGAGTGTTTTTTGATTTTTGATTCCAAATTTTTGGATTTTTTTCC
-AAATTCTCCAAATTCTTATTTTTGCAGAAAATTCTACCTGGCTTTGGTAG
-AAGCCAAAAATTCGATTTAAGAAGCTTTTTTTTGGTTTTTTTTGACAATT
-TTCCAAGTTTTAGTTAGGAGTTAAACTTTTTTCAATTTTTTTTTTTGACT
-TTAAAAAAAAATTTAAAAACTAAAAGTATTTCTTAGTTTTTTCCTTAAAA
-AAGAGGAATTTTTTAGTTTTTCGACTGACTTCGTTTTTGAATTTTTAAAA
-ATTCAAAAATTGTATTTTTTAAAATTCTAATCGATAAAAATTCGTATTTC
-GATTTTTGATTTCAAATTTTTGGATTTTTTTCAAACATTTTTCCAGAAAT
-TTTTACCTGGCTCTGCTAGAAGCCGAAAAGTGAGATTTTTTTCCAAAAAA
-AGATAATTATTTAGTTTTTTTTCTCGAACGTTTTATTATTTGAACTTTAA
-AATTGTATTTTTAAATAATATTAAAAATTTAAATAATAATATAGAATTTT
-TTTGAAAATTCCTGAATTTTCTGATTAAAAAAACATTTTCTGATGCATTT
-TAGAAACTGAAATTTTTTGAAATCTTTTTGGAATTTTGGAAAATTTCGAA
-TTTGTTGATTATACTCTTAATCGATAAAAATTCGTTTTTTTCCAATTTTA
-TTTGAAAAAAATGATTTTTTCGATAATTTTTTTGATTTATTTTCGGGAAT
-TGACTATTTGAAAACAAAAACTTTAAAAAAAAATCAAACTTTTTTTTTGA
-AATTTTCGTATTTAAATTTGAGTGTTTTTCGATTTTTGATTCTAAATTTT
-TGGATTTTTTCCAAATTCTCCAAATTCTTATTTTCAGAAAATTCTACCTA
-GCTCTGGTAGAAGCCAAACATTCGATTTAAGAATCTTTTTTTTTTTTTGG
-ATTTTTTTTTGACAATTTTCCAAGTTTTGGTTAGGAGTTAGATTTCTTGG
-AATTTTTTTTTGAATTTTTTTCAAAAATTTTAAAAACTAAAAGAATTTCT
-GAGATTTTTTCCTTAAAAAAGAGGAATTTTTTAGTTTTTCGACAGATTTC
-TGCTTGCTTCCAGATTTTTTCTCCAAGTTTTTATATTTAAATCTTTAAAA
-TTTATATTTTTAAATAATATTTCAGATATTATACTCCTAATCGATAAAAA
-TTCGTTTTTTTTTTCAAATTTTAATTGAAAAAAATCGATTTTTTCGATAA
-TTTTTGAATTTTTTTTTTACAAATTCGAATTTGAAATTTTTTTCATTCAG
-AAAAGAGAATTTGATTATTTGAAAACAATTTTTAATTTAATTTTTTAATC
-CTTTAAATTTTCGTAAATTTGAGTGTTTTTTGATTTTTGATTCCAAATTT
-TTGGATTTTTTTCCAAATTCTCCAAATTCTTATTTTGCAGAAAATTCTAC
-CTGGCTTTGGTAGAAGCCAAAAATTCGACATAAGAAGCAACATCAGACGG
-TCTTCCAAGTCTTCCCAACGGAATCATCGATTCCAAGTGTTGTTTAATCT
-GACGAGCTTCTTCTCCAGAAGCATGATCCCATACAGCACCAGTTCCGTCT
-CCTTCAATCATTCCAGACACCACACTATTCACGCGGACTCCTTGTTTCGC
-GGCACTCTGAGCTACGGATTTTGTAAGTGATAGGACACTGCTAGATGCAA
-CTGAGTAGAGACCCATATCGATTGATGGAGTGAAGCCGAAACATGACGTT
-AGGTAGATGATACTGCCGTTTCTGGAAAAAATCGATTTTTTTTGGACGGG
-AAATTTTGCCTGCCTACGTGCCTACCTGCCGGCCTATTTTAGCCTATTTT
-TCATTTTTTTTTTGTTGTTCTATTTTTTTGCCGTTTTTTGGGAATTTCAT
-GATTTCTAGGGTAGGCACGACTTCATGCCTACGTGCCTATCTACCGGCCT
-AACATTTGATATTTTTTTAGAATTCCATGATTTCTAGGTAGGCAGGTAGG
-CACGAATACATGCCTGCCTACCGCCTGTTTTTTTGAAATTTTTTTGTGTG
-AAAAATTAAAATTCATGGGAATGCTTTTTTTTTCAAAATTCAATGATTTT
-TAATGCAGACCGCGCCTATCTGCCTACCGCCTATTTTTGGCATTTTTTGT
-GTGCAAAACAAAATCAAATTAGCTTTTTTCTTTTCGTTTTTCTACGATTT
-TTTCCAAATTTCAAGATTTTTCGGATAGGCACGACTTCCCACCTACTGTG
-CCTACCTACCTACCGCCTATTTTCGGCATTTTTTGTGAGCAAAAAGAGAT
-CAAATTAGCTTTTTCTCCTGTTTTCTACGATTTTTTTGGGTAGGCACGAC
-TCCATGCCTACCGTACCTACCTACCTACCTCCTATTTTCGGCATTTTTTC
-TCGTGCAAAAAATCATATTTATGAAAACACTATTATTTTTGTTTTCTGAA
-TTTTTTTTCCAAATTTTGTGATTTCTAGGGTAGGCACCGACTTCATGCCT
-ACGTGCCTACCTACCTACCGCCTATTCTCGGCATTTTTGTGAGCAAAAAA
-TTAACATTCTTGAAAATCCTTTTTTTGTTTTACTACAATTTTTTCAAGTT
-GCATGATCTCTAGGGTAGGCACGATTTCATGCCTACTTGCCTATCTACCT
-ATTTTTCCCTTTTTTCGTGGTTTAGGTAGGCAGGCATGAGTCAGGCACGA
-AAATCTAGAAACATAATTTTGATTCTATCGGTAAAATAGGCTTTCAAGAC
-AGTTTGAATTTTTCGAATTTCTACCAGCAAAAAATAATATCTGAAATTTT
-CGCGGCGAGACCCAAAAACTGACTGAGATTTGGCGAGCGTCGACATAGCG
-GCTTGCGAAAGACGGAACGGTGTTGTCAGATTGTTGGCGAAAAGCTGAAA
-TTGGTTTTTCGAGGTCAATTTTCCACGTGGAATTCAAATTTCAGCACTCT
-CGAACCTTATCAAAATCCTCGCCGGATGTCTCAATAATCTCGCCGAGCAC
-CTCATTCTGTGGTGGAACTATAATTAAAGTGTCCAGACCGCCGAGCTTCT
-CAGCCACTTTCGTGATCAGCTCCTTCCTGTGCTCGGCATTTGCCACGTCT
-AATGAGAAAGCTGTGACGTCACCTCCAACCTGAATTTATTCCCGAATTTC
-TCTTTGTCAAGTTCTGAAAATCTGCCTAAACCTTTATATTGTCCTCTGCA
-ACCTTTCCCACACTATTCGGACAGTCTGCGGCGGCGGCGACCTTGTAGCC
-GGTGAACGCGAGTCTTCTCACGACGGCTTTACCCAGTGTGGACGTTGCCC
-CGATTACAAGTGCACATGACATTACGCTGAAAGCCCGATGAGGAGGCATA
-TTTATAGATACACCTAGACATCAGGTACATTTATTTGGAAATCCGTAGAA
-AATAAAGAACATGTGAAAATAAAACAGATCATTTTATTATTTAGAGGGGA
-GAGGGAGGGGGAGCAAAGTCGCTGACTGAGAACTTTCGAAAACCGGTTAG
-TTACTCCAGTTGTACGGCTTATTCATGCCATATTTTCCAAGATTTCCACC
-ATTGTGTTGGTATTGAGAATGTTGATTCTGCTGAGCTGCCGGCTTCGATC
-CAGACATCTTGTCGTAACTCTTGCGCTCGTCATCCTGTCCGTAGAGTTGA
-CGACCTCCAGCGCTGCTTCCAACATTGGGCATCATGTTCATGAATGGAGT
-AAACTGGTGTGGAGCAGGTGAGTACTGCTGCATGAACAACGACGACAAGT
-TTGGCTGCTGCATGTAGTTCGTCGCCTGGAACCCTGGTGGTGGTCCAACA
-TTCGACGCCTGCTGTGGCTGCTGATCCCGAGAGCTTTGAGATCCGAACTT
-ATTGAAGTCCATAAGTCCATGAGTCTCTCGTTGTTGACCAGATTGCACTT
-GTTGCGCAGAAGCAGCCTGTGACAGAGGAGCAGTTGGAAGCAAGCTTGTA
-AGATCAACTCCCATTCCGTATTGCATAAGAGCAGCAGTATATTGCTCATC
-TCGAACTCCTGGCATTGGATTGTACATGTTCATGTAGTTGTTCATGTATG
-GTGCATATGGGAGTTGTTGAGTGAACATCATATGTGGATGCTGTTGTGGA
-TGTCCAGTCGGTTGTGATTGAGCTGGTGGAGTTTGTTGCTGCTGCTGCAC
-TGGCTGTTGTGGGGCTTGTTGCTGCTGCTGCTGTGGCTGGTGCTGCTGAG
-CAGATTGCTGTGTTGGAAGTGGTCCAGAATTGTTGAACTTGTTCGGCGCC
-ATCCTGTCCGTTGGTTGATATGAAGCGGACGAAGTGTCATAGGACAATCC
-TCTGTTAGATTGACCATATGACAATGGAGGTGAAGTCGATTTTAAGTTGT
-AATCGCCGTTAGGAATTGACGTCCTTTCTGGCTGAAAAATAATCGAGAAT
-TAGAATAAATCGTCTTTGCAACAAATTTAACTCACCTCAACTTGTTTCGG
-CATAATACGAGAAGAGTTAAATATATTTTCACTGGCATTTGAGATCGAGG
-CAGCGGAGGATTCAGTAGAAGGAAGCTGTGGGCTTGGAGCAGCCTCAACA
-AATCCAAATGAGTAGTCATGAATGTTCGTTGGTGCAGTTGTGCCAACAAA
-TTCCACTCCAGGATCAGGAATAATCTGGACTGGTGCTGCACTTGGAATTG
-GAGATAATCCTAGTCCTGGTGCTTCACTCAATCCTATTCCAAGATCCGTC
-TTCAGTTGAGTGGTCCATGCTTGATTTGGTTCTGGGGTGCTTTGTACATT
-TTCATCGTGATGAGTCGACACATTAGGCGTCTGCTCCTCAGCCAAAACTG
-ATGATTCACTGAAAATTAAATTTTTAATAATCTAAATACAGGGACAGAAC
-AACTTACTTTTGGAAGAAACCATCTTCTTTCTCCGGCTGATGCGAAGTTT
-CTGGCTCGAAAAATACTGGCGCTGCTGCTGGCTCTTCTTTAACTGGTGCA
-ACTGACGGAAGTGGAGGTTGTGGGGAGAGACTCCTCCTTGGCGGAGCTGC
-TGGTTGAGGATTCTGTGCCTGGTGCTTTCGGAGTGCTTCTTTGCGATGGG
-CAGCTGCTGCTACTGCAGCAAATGAGATCGGTGCCGGCGCAGAAGATGTG
-GGAACAGTGGCGGTGACGGATTCCTCTACTGGTGGTTGAACTTCGGTGAC
-TGTGGTATCCACTTTAGTCTGATTCTGAAAAAAAAACACGTTTCGTCATT
-TTCCTTCTTCAAAAAATTCTTACCTCATCAAGATCAGCAGTGAACGCATC
-TGGCTCAAGTGCTGATGATGGAGCAACAGCTCGAGAATATCCACCTCTGG
-CGCCACCTCTTCCACCTCGTCCAACATACGGTTTTTCAAATCCTCCTCGA
-GTCGAGCGTGGTGCTGCTCCTTCCTTATTATCACGGTTATCCCGATTATT
-ATCTCGGCTTTCTCTTGGAGCTCCATTGGATCGCCCGCGGCCTCCTCGAT
-CGACGAAACCGGTGCCTCCACCTGAAAAAAACATATCAATATTTGATCTA
-TTTCAATCAAGCACGAACCTCTGCCTCTTGCTACAAATCCTCTGTTGTTA
-TAACTGCCCTCTTCCGGCTTCTTCTTTTCCTTTTTGGCTCCTTTCTGTTC
-AGTCCACGAGTCAAGTTTATCTCCAGCATCCAGAATGTGATCGATTGCGC
-CGTAAAGATTGTTGTCAGTATCCAATAGCGCTATCTCAGCTTGTGCTTGT
-GTACATCCGGTGGTTTCGATAATCTGAAAATGAAAAAGACATGAGCAGTG
-AAAAAACCCCTCTTGGGAATGCGCGAACACTTTAATTAGCCCAAATGAGT
-AGGACATCTGGGTACTCTTACTCTCGCTGCACCATCTCAAGCGCGGACAC
-CTGCTTTTGTCCTTTTATTTGCCATCTGGCCCCGTCTTATCGATTCGAAA
-TTCCTATTGACACTGAAAGCGGACACTAGAGAAGTTCAAAACAACAAAGT
-CACGTGCGTCATCATGTCGGTGTGTGGCGAGCGTTCGCGTGATGCAAAGA
-TCACTATTTTCAGGAAAGCGTCATTTCCAGCTTGGAGACTTACCGTCTTG
-ATCATAAACTGTATGTCCTCCTCATTTCCGGAATTTCCTTCCAGTGTGAG
-TCGTGCAAGTCGCGCTTGATCGCTGGTAGCTTTTTTGTCGCCTTTAATAC
-CCATTCTGAAAACAAATTATAAATAAAAAGGGTCAGTCATGTGAACGCAA
-GAATGGAATGAGAATCACGAGAATACAACTATCAAAGGAAGGTTGAATGA
-AAGGAAGGTCAAATAGATGACAAAAGTAGGAAAAGAACGAAATATGGAAC
-CTTCCAGATCAAAAAAACATTATCAAAAGAAAAGCCTCGCACAGAAGACT
-CTAACGAACATGTTAGGATGAAGAAATATTTCAGCAATACATCACGTTGA
-ACTTTGGAGGATATTCTAGAGAAGAAAACCCCTACATTTTACAATAATTT
-TGAAATGGAATTCGAATGAACTGCTATACAATGGAGAATCCTATTTAGCG
-ATGATAAAGTGTAGGCTTGTTACTAGATTGAATAAAAATTTCGAAATGTA
-ACAATACATTGACTGAAAATTTGGGTATTTCAGAGTGTGATATCACAAAA
-ATCAATATTTCCACTAAACTCAAAAGTTCTTACGCTGAAAAATCATTAAA
-AAATTGAAAAATCACCGCAAGCTAGACTAGAATCGCGTTCAAATCTCGCA
-AATTCCCGCAGTTGAAAATGCGGGCGACCGCGACGCGAGCCGCAACGCAC
-CCCTCCAAACATGCGGCATGGGTCTCGCCACGACCGAAAGTACGGTCACT
-CTTGGCAGTATAAAAGGCGACCATTTTCCGCTATTTTCCGGTAAATTTTC
-AAATGAAACTGTGTTGCGGAGGGGGTTTTCCGCTAATTTTGCGGAAATTT
-AGCTATTTAATGTGAAAATGTGAATAAAACAAAAGAAAGTGGGGAGGAAT
-AGCAAGGAAACACACTGTTGAACCCTGGGAATTATCGATTTTGTATGAAC
-TCTTCTTTTATGGCGTCGAAATTATCGACACGAAAACTCAAAACCTTGTC
-ACATTTCTGAGAGAGAAATATCATTTTCAGCACACATGAGTCTTCCCAGA
-TTTCGACTCGTTCAGGGAAAGGCGATCGGCGAGCGATCAACGCCAGGAGT
-CAGCACACCAGAGCCGGTAATTGTTTTTTTTTATTTCAAAATTTCTACAA
-CAACAAAAAGAACTAACAATAATTTATTCCTTTGATTCCAGGCCCCTCCG
-CAAATAAAGCAGGAAGTCGACTACCAAGATGCTCATCAAATGGCTCCGGA
-ACCCGTGGAAGCACCCCGTAAATATTTAAAAATTTAAAAAAGTTAGAAAA
-AAAATTTGAATCCCAATTTTCAGAGGCTCAAAACCATCAAATGCAGCCGC
-CTCGTCAACCTATACAACAGCAGATGCAGCATTTTCAGTCACCATCGCCA
-ATGGCTCCACAAGGGCCGCCCGGGACTCCACAAAACTCTGCAGCGGCGGC
-CGCCGCTGCTTCAGATGACAAAAACGTGACAAAATGCGTCCGCTTTCTGA
-AAACTTTAATTAATCTGTCGAATAACGATGATCCAGAAATGCCGGACAAG
-GCCGCCCGTGTCAAAGAGCTAATTCGAGTGAGGAATTGAGCGAAAAACGC
-GATAAAAACCGGACAAATTCGGATATTTCAGGGCGTAATTTATCTGGAAA
-CGACGGCTGAAGAGTTTACACGAAATCTGCAACAAGTGCTCAAATCTCAG
-GCTCAACCGCATCTTTTACCATTCCTTCAGAATACTCTTCCGGCATTGAG
-GAATGCTGTTCGAAATGGTTCGGTTTTATGTGCAAAAAAATTAAAATCGA
-CAAAAAAAAAATCATCGAAAAACAGGAAAATTTGAGTTGAAAAGCAGCGA
-AAAACTTGAATTTAACATAAAAAATTGCAAAAAATCCGTTGAATTACATT
-TTTCAAGAAATTGTGTAGAAATTCCATGAAAAAAATTCAAAATTTCCAAA
-TTTTTTGGCTATTTCTAGTCAATTTCTTTAAAATTCCATTTTTGATAGCG
-AAAATTATCAAGTTTCTAACAATTTCAAGCTGTTTTTGGTGATTTTTTCA
-ATTTTTCGGCTTTGAAATTCCATTTTCCGGAGTATATTGTCATAATATAT
-CCGAGTTCCACAAAATTGAGCAAAAAAAATTAAAAATTTCCCTTTATTTA
-AAAATATTTTCAGCTGTCAGTAATATATGGATTTTCCGCAATTTTTCTCA
-CAATTTTGAGCAAATTCCTGATTTTCAGCCAATTTATAAGGATTTTCACC
-CATTTTCATAATTTAGGGCTATTTTCAGCTGAAAAATTGTAATTTAAAGT
-TTTTAAAATTTTTATAGATTTTCTCAAATTTCAGCTCAAAAATTCGATTT
-TCAAGCGCATTTCCAGGCAATTTATTAAGATTTTCACCAATTTTTTTAGC
-TTAAAATTTAAAATTTCCACATTTTTTGTCTATTTCCAGTAAATTTCTTT
-AAAATTCTATTTTTGAAAGCAAAAATTATCAAGTTTATCGCACTTTTTCA
-ATTTTTCCGGAGTATATTTTGGTAATTTATCCGAGTTCCACGAAATTGAG
-CAAAACAATTATTTAAAAACTTCCCTTTATTTAGAGCTATTTCCGCAAAT
-TTTCTCGCAATTTTCACGCAATTTTCATAATTCAGGGCTATTTTCAGCTG
-AAAAATTGCAATTTAAAGTTTTTAAAATGTTTATAGATTTTCTCAACATT
-CAGCTCAAAAATTCGATTTTGAGGCGCATTTCCAGGCAATTTATGAGGAT
-TTTTACCTATTTTCTAGATTAAAAATCTTTTTTTTTCCTCAATTTTGGAC
-TATTTTCCCTAATTTTCAAATTTCCAGGCACTGCATCAGTTGAAGGCGTA
-AATCCACCGCCTGGCTACGTTTTCAACAATGGAAGAACCCCAGGACCCCC
-TCAGCCACCTCCACCTCAACAACAATCCCAGCAGCAGCCACCACTAGAAA
-TGCGTCAAATTCCGAATCCGAATCAAATACCCCCACAAATGGTTCAAGGG
-GGTCCCCATATGGTATCTGTAGGCGCCCGGCCAATGATCAGGCCTATGGG
-CCCCGGCGGCCCAAGCCCAATGGGCCTACAAGGCCCCGTACGAGGGCCGA
-TGGGACATCAGATGGTCCAGATGCATCCTCCTCCCCCACCACAGCAGATT
-CAACAGCAGCACCCGGCTCCCCCTGTAGAAATGGAGGTGGAAGAGAATTT
-ACAGCCTACCGCGGCGGCCACGGCCACGAGGCAATATCCTGAAGGATCGC
-TGAAATCGTCGATTCTGAAGCCGGATGAGGTGCTGAATAGGATCACGAAA
-CGAATGATGTCATCGTGTTCGGTGGAAGAGGAGGCGCTTGTCGCGATTTC
-AGATGCTGTTGAGTCGCATTTAAGGGAACTTATTACACTGATGGCCGGAG
-TTGCAGAACATCGGGTGGAGAGTTTGAGGTATTGAGGAGAATTGATTTTG
-CTTCAAAATACGGCAGCGAAAAAAAAATTAAGCAAAAATAAGGAAATTAT
-TGAAGAAAAATCGTCTTAAAAACAATTTTACATTAAAAAAAAAGATTTTT
-AAATTTCAAAGGTTCCGAACTATTTATTAAAAAAACATCTAGATTTTGTT
-TTAAAATCCAAACAAAAAACATTGCTGAAACGCGGTAATTTTTTTTCAAA
-AAAATATAAAAATCTGAGAAATATTTTCAAAAATATCTCCAATTTTCCCC
-TGATTCCGAATATCTATTCGAAAAAATTCAAAAAAAAAATTTCCCTTTAT
-ATTTCAGCTTGAAATCGCTTTGTGCATGCACACCATGAGATTTTTCAAAT
-GCGCGCCCAGATAAATTCTCATTGGGGCGCACTTGCTTCGTGTCGATTTA
-CGGGAGCTCTTCATTTTTAAATTTCTTTTAAGCTTTTTTTTTCAGTTTTT
-CAACGAGTTTCCTTGATCTTCGTCGATTTTTTGTCATTTTTTTTCCTGAA
-ATTTTGTTTTGTGTCAATTTGAAAATTTTTTAGGTCAAAACTCCTGTGTT
-CGTCGAGATCTGACGTAAAAATATAAAATTCCGGGAGTTTTGAGATATAA
-AAAAAATATTTTAAAAATTTCAGAAAAAAAACTGACAAAAAAGCGACAAA
-ATAAAAGAAACGCGCAAAAAAAAAAAAAAAAAACTTAAAAAAGCACGAAT
-AAATTTTTTTAAAAAATGGAGAGCTGCCGTAAATCGACACGAAGCAAGCA
-TAAAAAAATGGCTTTTTTCCTAACAATTTTTTGTGAAAAATCCGAATTTT
-CCATCCTAAACACTACAAAAGATTCCAGAATTCCGGAGAACTACGTGGCA
-ATTGATGACGTCAAACGGCAACTTCGATTCCTTGAAGATTTGGATCGTCA
-AGAGGAAGAATTAAGGGAAAGTCGAGAAAAAGAGTCGCTAATTCGAATGA
-GCAAGAATAAGAATAGTGGAAAAGAGACGATTGAAAAAGCGAAAGAAATG
-CAACGACAAGATGCTGAAGCGAAAAGGAATCGAGATGCGAATGCGGCTGC
-AATTGCAGCACTTTCCAGTAATAAAACTGTCAAGAATAAGTTCGTTTTTA
-GCGTGAAATTTGCAGAAAAATTATTTTTAAAAAATAGATTTAAAAAAAAC
-AATTTCCTGACCAAGGGTGTCATTTTTCGATTTTTCGGTTTTCAAAAATT
-CGAAAAATGAAAGTTTCGTTTTTCGATTAAAAAACTGAAAAACCGACACC
-TTTGTTTCTGAGATTTGGATTTAGAAATAAGCAAAAAAAAATTATTCAGA
-AAAAATTGTTTTACAATGCTGCAAAATCGATGAAAAAATAAAATAAATCA
-ATAACTAATTTCTAAAAAATGGAAAAAAATTTCGTTTTTTTCGAATTTGT
-ATTTCACAAAAAAAAATTTTTAGAATAAAAATTTTCAATTAAAAAATTAC
-TATTTAAAATCACTGAAAAAAAATGAAAAAAATAGAAAATTCAGAAAAAT
-AGCGAAAAAAAAGTTTTTTTCCAGAAATTTCGTTAAAACGATCAAGATTT
-TAACCCTAAAATTTAGATAAAATCAATTTCTTGTGGTTCTTAATTTAAAA
-AAAAAAACAGTACTTTCCAGTAATAAAACTTTCAAGAATAAATTCGTTTT
-TAGTGCGAAATTCGCAAAAAAAATTACGAAAAAGTGAAAATAGAAGCTGA
-AAGGAAAAATGTTTAAAAAATAAGAATATTTTCGACATTAATTGGTTTTT
-ATATATATTTTTTTGTAGAAGTTTAAAAAAATTACTAAAATCACTGAAAA
-AATTGAAAAAAATTTTAAAATCTGGAAAAAAAGCAACAAAAAATTAATTT
-TTCCAGAAATTTCGTTGAACTATTCGGTATTTTAAGCCTAAAATCAAGAT
-ACAATCAATTTGAACAAAATTTGCTTTAAAAATACTAAAAATTCGAAAGA
-AATAGAAAAAAAAAGAAATTTTCGAAATTTGGATTTATTGTTAGAGAAAA
-GCTGAACACTTACAAAAAATTAATTTTTTACGTTTTGAGAAAAATTTTTG
-AAAAAAAAAATCGATTTTTAAATAATTTTTAGAATTTTTTAGAACTATAA
-TTTTTGAATTTCAGTGACTTATAATCACAGAAAAAAATGAACGAAAAACA
-AATGAACATCTTTTCGGCAAAAAAACGTATTTTAAAAAAAAATTTAAATT
-TCTAGTGACTTTGAAAAAAAAACCACATTTTCCAATAATTTCCAGGAATA
-AACTAAATTTCTTTGGAGAAATTTGAAATTTATTTCACATTTCGAAAAAA
-TTTATATAGAAATAAAAATTTATATGAAAATAAAAAATTTGCAGCTCCTT
-CCAGTAATGAAACTGTCATTTGTTGAAAATTAGTTTTTTTTTAATTTAGA
-AATTCTCTTTTCGAAAAAAAAGGTTTTTTTAAAACTTGATTAAAAATTAA
-TTCATTTTTTTCCAAAATTAGGGAAAAAATAATTTCTAAAAAATTAGACA
-AATACACTTTTTTGTTGAAAAAAACAACATTTTCCAATAATTTTCTTTTT
-TTTTAAATTGCTTCCACTAAATTCACTTTTTGAAGAAATTTTTTGAAATT
-TTTACTGAAAATTGTTGGAAAATTATTAAATGTGCATTTTTTTGCAATTT
-CCAGTTGATAAACTAATTTCGGTTCAATTTAAAATAAATTTCGAAAACCA
-ATTTCAAAAAATTCATTTTTTACAATTTGTTTTTGTTGATAAAACGAGCT
-AGTTTCTACCAAAATACCGCTTTTTTACATTGAAAATTTAAATTTCAGAT
-GGGAAAACACGGGCGCCGCAACGACAGCACCTCGTCCACGAACAGTACGT
-GTAACAACTCGTGATCTACATCTTTTAGTCAATCAGGATAGCCGATTCAC
-AGGGTAGCGATTTTTTTTGTTTAAAAAATTTTTTTAAAAAACACCGTATT
-AAACATTGATTTTTATTGGAAAAAACTGATTTAAAAATTTTTCAAAAAAC
-TTTCAAACGAATGGTAGTTTTTAATATTTTAATTTTAAAAAATTCCAATA
-AAAATCAATTTTTATACGATTTAAAAAAATTTTGAAAAGTTATCCAATTT
-TCTCCTAAAAAAACTCATTTTTTTTCCAGAACATTCATCCGTGAAAAGAT
-GTCATACGGTGGTCCGGCAGTCGATACAACTATCTGAACTAAAGAAATCT
-CATGGAAAAAGGAGCGAAAATTCTGCTTTTCTCGTTTTCTTTTTTTAAAT
-TTAATTTTATTTTTCCACAAATTAAAACAATCACTTTTTTCCAGTCAAAT
-AATAATTATTTCTCATTTTTAAACGAAATGCTAGACATAAAAAAAAGCTT
-CTTTTTCAGCTTTTCAGCCAAAAATTTCAGATTTTTCAGAAAAAATTCAA
-CAACAAAAAATTGGCAAAGTGCAAAAAAACCAGAATTAGATATTAAAAAT
-ACAGGAAAAATCGAGAAAAATGAGTTACAATTCAGAAAATTAGGCAATTT
-TTTTTTCAAAATTTCTCAAAAACACTGAAATTTCGGTATTTTTTTCTCTA
-CTTGAGCACAACCTCGTGTTGCACCAATCGAACATAGTCTTTGAGCGTCG
-GTGGAAGTGGAAGCTCATCGATTATTCGCTGATAGACACCGTCGGCACCG
-GCGATTTCCAGATTTCTACGTTGGCGAAGGTGGATGGCGCGCTGGAAAAA
-TTTCTAATTTCGAGCTGAAAACTCTTTTATGAAAGCAAAATTTCATAGTT
-TCAATTCAAAGTTCGAATTCCTCGCAAAATTTCAGTCGGAAAACCGAAAA
-CTAGAAGTTTCTTGCTCGAATTTGAAATTTCGAGGGGTACGGTATCCTCG
-AAAGTACGCAAACACCGAATTTTGTTTTTTTGAAGTTTTGGCGCCAAAAA
-TACAATACCCGGGGTCTCGACACGACAAATTTTTAAAATTTTTTTGAGTA
-CTGTAATTTCAAACAAAAAGTTTTTTTTCGAATAAACTCGAATAATACGA
-TAAAAAACATATTTTAATAAAAACCGTGGCAACGAAAGTTTGAAAGTACA
-GTACTCTCTTCAAAGGCGCACACCTTTTACGCATTTAACTTTCGTGGCGA
-GACCCCGGGGATACCGTAATTTTTGACTCAAAATTTAAACAATAAATCCG
-TTAAAATATTAAAAAATTTTTAGATATTTTTCAAAAAGACTGTCGAAAAA
-TTGTTTTTTTATAATTTTTAGAATATTAACAAACAGTTTAAAAATTCCAA
-CAAATTTTGTTTTTCATACCGAAAAGAAGAAAAATGGACAAAATAGTAAG
-CTATTTTTGTGTGTCAAAGTGTCTTATTTCGGCTTGATCTACGTAGATCT
-ACAAAAAATGCGGGAGAAGAGACTCAGAGTTCTCAACTGATTTCGCATGG
-TTAAGAACGTGCTGACGTCACATTATTTTAAGGCGAAAAAATCCCGCCTT
-TTTTTGTAGACCAAACCGTAATGGGACAGCTTGGCACCACGTGACACCCC
-CCGATTCTCACCTGTTCGTGATTTTGGCGAACTGCCATTTCTTTCAAATA
-ATCGTCTAGCGGGGGACTCGATGCTGAAAAAAAAGTTTGATTCGTTAGAG
-GAGCACAAAATTCTGAAAATGCGTATTGCACAACATATTTGACGCGCAAA
-ATATCTCGCAGCGAAAACTACAGTAATTCTTTTTAAATGACTACTGTAGC
-GCTTGTGTCGATTTACGGGCATCGATAGAATATTTTTAAAAAAGAAGAAA
-AAAGAGGGAATAATACGAAGAAAAAAAGGAAAAAAATAAATTCATTTCAG
-AAATCGAGTTCGTAAATCGACACAAGCGCTACTGTAGTCATTTAAAGAGA
-TACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAA
-TACGCATTTTAAGAATTTCCAGTTTTTTCAAACCTTTAAACTTACATTTT
-CGCGGTTTTTTGGCGCTCTCGGATTTCGGGGAACGTATACGTCGGCGACG
-TGACGTGGTTGAAGCAGGGTCCGTCGAACAACATGGCTCTTCGTCTTCCG
-ATACTTGGGATTCTGTTGATGTTGACGGTGATTCCTGAGGTTCCTCTAGA
-GCATCTGAAAGCTCTTGCTCATCTTCTGATAAATCTCCATTGGGACGTTC
-AACCAGGCCGGTGGTGGAAGGATCATTGATGTTCGGAATCATTACAATCT
-CCATTCTCGGAGTATTTGGAGTTTCTGGTCGAGCTATCGAGGAAAGTATG
-CGATGATGGCGGGGTCTATCATGATTAATCGTCCATTCGAGCACATATGC
-TGGTGCTGGAAGGATTGAAAATTGTAAAAACTAAGATTTTTTGGCCAAAA
-AAATAATATTTTCTCAAAAATTTTGAAATTCTCGACAAATATTTTTTACT
-ACTGCCGGTACAGAGAATGTAGATAGTTGAAGAGACACAGACATCCCGGG
-ACCCAAGGGACGGGGCGCGGGATGTCTGTGTCTCTTCAACTACCTGCACT
-CTGTGCTGGTAATATACTTTTTCCAAAAAAAAAACCTACATTTCGGAAGT
-AAAAATGGAAAATTTCGGAGTCTACACAATTGGAAATTTTAATTTTTAAA
-AAATTAAAAATTGTTTTAATTCGGAGTTTTAGACGGAAAAAATTATTAAA
-CTCTAAAATTTTTAAAAATCGAAAAAAAACAAGTCTGAGAGTGAAAAAAA
-TTAATAAATTTTGAACTGAACATTAGATATTTCGATTTTTTTTTGAAAAT
-CATAAATGTTTTCTCGCAAAATTCGGATTTTTTTTACCTGCTCGATTTTC
-AGTAGCCGGAGCTGTATTTCTGAGATTGGCACCATCCAAATGTGCTCGGG
-GCGCTGCAAATTTGATATGAAATTTCACTAAAAAATTAGGAACTTATACA
-AATTTTCTAAAAGAAATACTAATGTTAAGATAATCGAAAGTTTGGAGTGA
-CAGAAAAAATTGTTTCAGCTTCTAGAAATATTTTAATTTAGAAAAAAACT
-TCCAGAAAATTAAAATTTTTTTTTAGAACTTTTGAACATTTTTCCTGATT
-TTTCTTTTTTTTCCATTTTTTGGAATTGCTGGGAATTTCTCTTTTTTCCT
-TCATCCCACAGCTTCGCTTCAGCCTAGGCCTAAGCCTGAGCCTGAGCCTA
-TGCATAAATCTAAGCCTAAGCCTGAGCCTAACCCTATGCCTAAAACAAAG
-CCTGGACCTAGGCCCAAGTCTAAGTCTAAGCCCACGCTCAAATTTAAATC
-GACTCAAGTAACTACTTTAAAGTTGGCAGAAATATTTGAATTCAAAAAAA
-TTTTTAACCAAAAAAAAAATAATTTAAAAGAAATTGTTTTTTTTAAATAA
-AATCAACAATTCACCTGTAAAACCTTGCATTTCTCTCCAATTCAACATTT
-CTTGAAGAACGTCAGTTCTTGTTTCATTCCATCGACGAACATGATCTGCT
-ATAGTATTTCGAATATTTTGTTCATTGTTTTCTTGTTCTCTGGGATTATT
-ATTACGACCCAAATATTGATCCATGACGTCATCCAAGTGATTACGGGTTC
-TTTGATCTGCTGGGAATATTTATAAGCACTTTTTTAATTTAAAACATATT
-TTTTAGTGATTTTTTTTCGAACTTTTGAATTTTGAATTAAAAAAAAAAAA
-ATTAAAAAGTTAAATCCTGAGGGGAGCCAAGAAGTGGGCGTGTTTTAGGA
-CATACTCTTCACTTACGCTTTGGTCTACAAAAAATGCGGAAAACTTTTGC
-CCAAAAAATGTGACGTCAGCACGTTTTTAATCATGCAAAATCATTTGAGA
-GTTCTGCGTCTCTTCTCCCGCATTTCTTGTAGATCTACGTAGATCAAGCC
-TAAATGAGACACTCTGACACCACGTGGAAAATAAAAATCGAACATTTTCA
-AAAAAATTACTCAATTGATTGTCTGCTGGAGTTAGTTGGTCGATTCTGAA
-AAATATTAAAGTACTAAAAATTTTCCTTAGCAACATAGCGCGTTTGCATC
-AAGAAAGGCGGGATTTTTCTAAGCCCGCCCTTTAATGGATCATCAATTTC
-TAGGAAAAATCGATATTTTACACTAAAAGTGATCCAAGAAAATCAATAAA
-TCGGAAAATTTTCCGATTTTCCGTGCTTTTTTGCGAAGATTTATCGAAAA
-TGATTTCCATTAGAGCACGCTTGCAATTTTTTTCACCAATAGCTTTCAAA
-TTTCTTACGGTCTTGGATCAAAAAGTTGTCGACGCCGATTCAACTCTTCG
-AATTGTTCAGCTTGATGCCTTTGAACATGATCCATATACGTATTTCCACC
-TTTCATCACCATTATTGATCCGCAAATCTGACGATTGACACGTGGATTGT
-AGGCGTGTCGGCGAATGTCGCGGCGGAGTGCCTGACGCGCCAAGTAGGTC
-AACGTGCGGGGACCACTAAAAAATCCGGGTTATTGTGATTTCGTGGTGAG
-ACCCGAAAATAGTAGAATTTCCTCGTACATCCTGTGCCTAAGCAGGTTTT
-CAGTTTTTGATGGGTTGTTACCTTCATACACCTACCTGCCTTTGTGACTG
-CCTCCCTGCCTGCCTAAATGTGTGTATGCCTACCTACAGTCTGTTTATCT
-GCCTCAACGCCTTCATACCTACTTGCCTACCTTGCTTACATACCTGCCTA
-CGCGACTACCTATCGGCCTACCGGTTGGCAAGTAGGAAGGCTAACAGGTA
-GGTAAGCTGGCAGGCCTGAAATTTGCAATTTTTGCGAAAAACCGAATTAC
-CTTTCGAAAGGCGTAGGCGTTGAGATCCGTTCCTCCTTCGGAAGCCTGAT
-CATTGGAGAAAATGTCATTCTTCCAGGGACGTCATACACAGTACGATGCT
-TGGAAACTCTTCTGTATCGGCAAACCTGAAAACCTTTAAATGTGGAGGAG
-CCAAGAACTAGACGGAGCCTGTGTAAGGAATATTGTTTCCGGAAACACGG
-ATTTTCAAATTTTAGGCTCCACCCACTCACCACGCAAAATTTCATTTTTG
-GCCCAAAAAGTAAATGTGCAGAAATTGTATTTCAAATTGTAGAAAAACCA
-AGAAATGGGTGGAGCCTGCCTGCCTGCCGGGCTCCGCCCACTTCTTGCCA
-AACCATACCCCCTGTATACGTGGCATGACGAGTTGTCCTCCAACATTCAA
-CATTCCAAGCATTCGTTTCAACAACTGAGAATCATCGGCAACGAATCCGA
-CAAAAATTCGATCATATCGATTTTGATGAGCTTCAAGAAATTTGACATCG
-GTGATGTCGCACACTTTGAGCTCCGGCCGAGCCCAGCCGACAGAGCTCGC
-TTCGGGTGTAGTTATCCATTGATCAATGCATGTTTCCGAGTAGGTGACGA
-GATTCTCGTAGAGTTCGATCCCATGATTTATACCAGTTTCACCTTAAAAA
-TAGGGTTGTCAGGCCACGCCCATTTTTAAAAAATGAATTAAAATTTTCTG
-AGAAAAAATTTCAAACTTTGGTGGGGCATTAAATTTTTTCACATAAATTT
-TTTCGGCGGTAAATTCAAATTTTTTAAAAAATTTCTTTTTTTTTTGGCGG
-GAAATGTGCCGCAAATCAGAAAAACTGAAATTTCTACAAAAAAAGTTGGT
-GGCCGAGTTTTCTCATTTTGTGGTCAGAAAACTCGGCCACCGATTTCTTT
-TGCGGCCCTGTGATTACTTAAAAAAATCGGTGGCCGAGGATTTTTATTTT
-CGCGGCCACAAGTAATGAAGATTGCACAAAATTGATAATAGGGAAAACGC
-GGCCACGAAGTCTAACATGTGCCACGTGGCCGTTAAAAAAAAGCCGGTGG
-CCGAGTTTTATTATTTTTCTAGGCCACGTAACCAGAACTCACCCAATAAA
-ATGCCAGCAATCGTACTTAAATACCCTGAACCAGTTCCAATATGAAGAAA
-CGAGTGTCCTTTACGCAAATCCAAATAATCGAATAATTTCGCATAAATAT
-CAATTGCTCCAACACGAAGTGCTCCCGGATAGAATGGACCGCCCGGTTCT
-GTGGAGGTCAACGACGGAAGACGTGTAAATTTCCGTTCACTAATCGGAAG
-AAAATCGGATCGATCGACAAGTCGAAAGGCTCGTTCGATGTTTCGACGAC
-GGATTGTGTCGTTTTTTACGAGAAAATCGATAAGATCGTCGTTTTGGCTT
-TCACTATTGCCCATTTCTGGAAAATCGATTTTTTAAAATTTTAGATTTAT
-TTATTGATTTTAAATAAATAATTAGAGAGCAGTCATGTGTTTTTCCTTGT
-ATATTTACGAGAGAAATCTCAAAAAATTATTCAAATAGGAAATTTTACGC
-CAACAATAAAATGTAGAGTGGTGTGCGCCTTTAAAAAGTACTGTAATTTC
-AAACTTTTTGGCGCAAAATTTTAGAGTAGTTTTCTTTAAATTAAAAATTC
-AAAAAAAAAACAAATCAAGATAAATACAAAAGTTTGAAATTACAGTACTC
-TTTAAAGGATCACACCATTTTGCATTTAAAAAAATTTGTCATGTCGAGAC
-CGTAATTTTAACGCAAAAAACGTGAATTTTCGCGTCTGTGTAAAAGAAGT
-TAGTTAAGGAGAAAAAACAATTGAAAAATCAACAAAAATTGAACTTTCAA
-CGGAAAATCAAAAATCGTTGCGAGTCAATAATTTTTTAGCTTTGAGGAAA
-ATAACCCTTAAACTCAAAAAACAATTAATCGACTCAACATCAAAATTTCG
-TTACAAGACCCAAATTAAAATTTTTTATTTTGGGATAATTGCTCCTAAAA
-TTAATAAATTCCAGAGAAACGAGTAAATCGTGGCGAGACCCACTAGCGTG
-TACCTTTAATTTCGAAATTATTTTGGGCTGTTCATCACGAACACACGTGT
-TGCCTAGCTACCAAATTCAAAAAACGAAAAACAAAAAAAACAGGTTTCTT
-TGAAATGAAAAATCGATAATCAGCAACGTGGCAAGATGTCTCAAATTATT
-GGAAAAAAAAAACGTTGAAATTCTCAGAAAACGGACCGTTCTGTGGCAGA
-ATTGTGAACGGCGTGCAAGGCCACGACCCGTGGAGAGCGCGTGAGAGTGC
-AGAAAAAAGGAGGCGAGAGAAAACGGCTGACCCGTGGATAGACTTTGTGG
-ATTCAGGAGACGCAGAGCGACCGTGAGAGACCCAGAAATATATGCAGAAA
-GTTAAGGCGTGCAATAGTGTTGGAAATTATAATAAATGGGTACGGTAGGT
-ATGACCTTTCGGGATCTTTGTGGGTCTCGCCGCGACGAGTTTTCAAGGTG
-CATAAGGTTTTTGCGATGGGTCTCGTCACATAATTGTAGATTAAAATTGT
-TGATTCGAGATAAATGGAAATTCGAAGCGTCTAAAACAGTTAGAACTTTT
-AGTTTACATTAGGTTGAGCTCAACTGTCCAACCCCGTCAAACTTTTTCCA
-CTTTTTTTTTACTTTTGCCTTTATGTCCTTTTCGGCCGTTTTCCTGGGGG
-TTTTTACCAGACTACGAAATATCCTAACTTGGTAAGCCTCAGCCTAAGCC
-GAAGCCTAAACCTTGGCTTTCAACTATACATACACATTTCCTCCTTTTTA
-AACGATATTAATTAATTTACAAAACACCAAAAAAATATACAAAAAATGAT
-TTGAATTTATGAGTTTCCCGCTAAATACCTACCGAGACCCAACTTTTGGC
-CGTGGAGCGCGCTTGCACTTAAACTTCAATTTTTCACATCCCCATAATAA
-CTTCCTTGTTTTAAATTGTTTTTCCCTATATTATTATTATCCTTATCACG
-AGATGCCCTTGCAAAACACATTGTAAAAATAGTATTCTCAACTGATAATA
-ATATTTTGTGTACCCCACGATAGTCCTTCTGGACCATAAAAATATTGATA
-ATTACTGATAAGCTTTCTCTGTGGTTTCTGTAGTTTTGGTGATATTTTGG
-GCAACAAATTTATATTATGGAAACACGGAATTCTGAAAATGCGTATTGCG
-CAACATATTTGACGCGCAAAATATCTCGTGGCGAAAACTACAGTAATTCT
-TTAAATGACTACTGTATCGCTTGTGTCGATTTACGGGCTTGATGTTGGAA
-ATTAATTTATTTTCGAATTGTGACAGCGATATTCAGTTTTCCTTTGTTTT
-TTTTTTTCGTATTATTTTGTTATTTTTATGCTTTCTTTTAATATTTTATC
-AATTAATGAATGATTTCCGTAAATCGACACAAGCACTACAGTAGTCATTT
-AAACAATTACTGTAGTTTTCGCTTCGAGATATTTTGCGCGTCAAATATGT
-TGTGTAATACGTAAAGAAAGTTTGAAATAATTGTTTTTAAATAATTTCTT
-ATTCATTCACTGTCAATTCTCACCGAAAAAAAAAATCCAAGTTCCTCCCG
-CCAACTTGGCACGATGCCAAAAGGTTCTCAGGCCCATTCATGTCATTCAA
-TCCATTCAAATGAACGACTTTTCGTTCAGTTTAGGCTTCTTCTTTTTCCG
-GTTTAGTACTTTTTCAAACCGAAAAAAAAAATCCCAAATTGAATGCAAAT
-GTGCTCTATTTGGAATAGACTTCACCCTATTTCGGAATTTTTTCCGATTT
-TCTGAAAATCTTTAACACTTTTCTAACTGTTGCATTAATGACATTTTTCT
-AGAAATTCTACTGCAAACGCGCTCAGTTGCGAAAGTTTTTGGGTCTCACA
-ACGATTTCGGAAGAAAAACGTTTTATTCGTTGCGAGACCCGGAAGAGCCC
-GGTGGAGCGCGTTTGCAATTTTTTTGGTTTGAAAATTTTGCGCAACGATG
-CTCCAAAATAACACCTCGCGAATTTTATCGTTTTTTTAAATTATGACTTT
-TCCGGTCCCAGAACGAATTACAAAAGCAATTTTTATGAAAAATCGTTACA
-AGACCACAAAAAAAAGCGCAATAGAGCGCGTTTGCACCTTTTTTTCTTGG
-AAAAGTCTCGTTTTTTTCTCGGTAAATTCACTGTGACATTGACCTTTCTC
-GAAAAACGAAAAGTGTAATGGAAAGTGAACAAAAGTGACAATAATCTGGT
-GAATTGCGTTTTGTTGTAATATTTTTGTATCTTCTTTTCTTTTTTTAATC
-TGCGAAAAATAGAAAAGTTTTGGAGAGAAAGTGATTTTCGACGAAATTTT
-CCTGATTTTGCTAAAATTGAACAAAAATTGTCATCATTTTCTGTGGGGTT
-TCTCAAATGTTTTCTTAAAATTTATGCGCCTTTAAATTTGGGGGATTACT
-GTAATGTTTGTATTTTTCAATTTTGTTTCGGGAACACAAAATTCTGAGAA
-TGCGTACTGCACAATATATTTGACGCGTAAAATATCTCGTAGCGAAAACT
-ACAATGGATTAAAATTTAATGAAATATCGTTATCACTATTCGAAAAGAAT
-TTCATTATGAAGCCCGTAAATCGACACAAACTCTACTGTAGTCATTTAAA
-GAATTACTGTAGTTTTCGTTACGAGATATTTTGCGCGTTGTCCCCGTAAT
-AGTTTAACTTTTACCACGTGGCCGCCAGAAGAAAAACTTCTGCTACCGGA
-TTTCATTTCCTCGGCCACAAACCCTTTTGACCCCCGAAAAAGTACATAAA
-AACAATTCCGGGGACTGGGTCTCCAATCTCTCGCCCCCACTCACTAACAA
-GGGGGACACCCTCAGAAACGAATGCCGTCTAACCGTCTGCACCCTCTCTC
-TCGTCGCTCCAAATTCTTGGATCAATGCCAACTAACACGCAGTGTCCCCC
-CTCCTCCTTCATCCACCCAAATGTTTCATCACTTCCCGGCCACCGCAGGC
-TTCTCTCTCTTTCTCTAAATCTCTCATAAACTACTGTCTCTCTCTCTCTG
-CTTCTTTTGCTCAATTGTTCTTCTTCATCACTACTATTTGCTCAATTTTC
-GTAAATATTTTATTTTAAAATATCCCTTTTTCCTCCCCCCGCCTCTCTGC
-TTCTCGCTTGACGCGCCACATACACTAAAAAAACCGGTTTTTTCTATCTC
-TCTCCGCCCGATCATTGAATAGATAGTGTGTGCTGTACATCAAATTTCCA
-TGGAAAAATCGCGCCGAAATTCCAGAAAATTCCACTTTTTCTAGAATTTT
-CAGCGATTTTTTTCGGTTTTTGAATTTAATACAAAGCGAAATTCCGTGAA
-AAATTAATTTTTCCTCAATTTTTGACGAATAAAAAATATTAGTATTGTTT
-TTTTTTCAAGAAAGTGTGATTTTTTCACAATTTTCTATGGTTTTTACGGA
-GAAAATCTTGAAATTCCACAGAAAAACTTGACAAGTCTTTGAAAATTAAT
-AAAATTTCACCGTATCTGCCGATCGTTGCAAGACACACTCCACAAAAGAA
-GTCGTGCGCCTTTAAACTGTGTACGGTAACTATATTGATTTAATTTTTTT
-TTTCGATTTTGCGTCTATTTTTCCAATTTTTCTCTGATTTCGAACGATTT
-TTTGCATTTTACCTCAAAAAAATTAATTTATTTAGATGATAAAGTGGAAA
-TTGCTGATTTTTTACAAAAAAACACTTAAAAAACGAGTTTTCTCATCAAT
-TTCAGTTGTTTCTGGCATGGCTCATTGTTTATCGACACCTGCTTGTTTTT
-CTCCTCCTCTCCCATCAATTTTATGAGTTTTTCTTCGAAATTTCTCCATT
-TTTCCCGTTCAAAAACCGCCAAAATTCGCTTTTTTTTTTCCAGAATTCGC
-CTACTATAGCACTACTAGATGTGTTAATTTGGAATTATTTTTCAAAAAGA
-AATGTATCCGGACGGGCTAACTGAAAATGAGAAGCTCAAAGTGAAGGAGC
-TGTGCACTATGGTCAATATATCCGATGAGGATGCGATTAAATTGTTAAAA
-GGTGGATAATTAAGCTGAAAAGTGGAAAAAAAAATGCATTTTTTACCTAA
-AATTTACCTAAAAATTGGACCAAAACGTCATAAAAATACTGAAAAGTCAG
-AAAATTGTCTAAAAAAACTAATTTTCGCTAAATAATTCCAGAAAACGACT
-GGGACATTGCAATTTCATCGCGAAGAGTGTCGAAACAAGAGGATAAAACA
-TTGGTTCCGGGCACTTCGAGAGGTAAATTTTTGAAAATTTTCAGAATCAA
-ACTGAAAAATAGATATATTGTGTGAAAAAATCCATTTTCGCCGTAAGAAA
-AGTGAATTTTGAGCGGTTTTTCAAATTTTAAACTGAAAAAAAAAATCAAT
-TTATCTGAAATTTTGCTCTTTTCGGCGGGTTTTTTCTCAAAATTTGATGA
-AAAAGTTCTAGAAAAACGACAAAAAAGCCTTTAAATGTACTTTTTTCTGC
-GATTTTTTATCTTAAATTTAAAATTTTGCGCGTCAAATCTGGTGTTTTGA
-CTCCGCCCACTAAATTTAAACTTTTCGTGAAAAAAAAATGTTTTTCTCCG
-ATTTTTAATTGTTAATTTAGGCAAAAAAATACAAAATTTGCCCAATTCAC
-CTATTTTTTCCAAAAAATCACAAACTTTGCGCGTAAAATCGGGTGTTTAT
-GCTCCGCCCACAAAAATTTCTTAGAATTCGATTTTCGGCGGATTTTTTCT
-CAAAATTTGATGAAAAATCTGAGAAAAACTACAAAAAATCTTTGAGCTTT
-ACTTTTTCTCTGCGATTTTTATCTAAAATTTGAAGTTTTGCGCGTCAAAT
-CTGGTGCCTTGGCTCCGCCCACAAAATTTGAAGTTTTCGTTTAAAAAAAT
-GTTTTCACCACTTTTTCGCCGCTTTTTCGCCTGAAAAATCCCAATTTTTT
-TGCAGAAGAAATCGATTTGGATCGATTATCGAGTCGTCTACGTGTTCACG
-GATTAGCCTTCTATCTTCCAGATTTTGGAGGTTTTCCTAATGAATTTCGA
-ACGTTTTTGGAGAAGGATTTGATAGAGACGCAGACACAGAAGAGACTGGA
-GGCGTCCAGTAAGTTGTTTTCTGGAAAAATTGAAAAAAAAATTGAATAAA
-AAAAATGATTTTTTTAATCGAAAAAAAAAGTTTTCAAAAATAAAATTGGA
-AAAGGTGAAAAAAATTGAACAATTAAAAAAGAGCGACAAATGAATAAAAA
-AAAACTTTTTTTTTTTCGAAAAAAAAGAAAACAAATGTTTTTTAATCGAA
-AAAATAAAAAACGAAAAAAAAAGGAAATTTTTTTTACAATTAGAAAAAAA
-AAATTAAAAATGTATTAAAAATTTTTTTTTTTGACATTTTCTTTCGCTTT
-TTAATAAGTTTTGACTAGCGGGCCCTGCGGGCCCGCCAGTTGCAGGGGGT
-GTAGGGCGAGTCCCCCAGTCGGGCGTAGGTTCTCGGCTTCGCCTCGAACC
-TGTCAGAGGATTCGCGACAATTGCAGTGAGTCAATGGGAGGAGGGGAGAC
-CCACTCATATTTTATAAAATCGAACATTTCTATTTGAATCCCGAGCACTC
-ACAAAAAAACGAAAAAGTTTGTCAGTTGGGGGAATCGAGCAAAAGAGCAA
-ATTATTCACAGCCATACGCACTAACCACTCGGCCATGCGGGAGAGACCTG
-TCACAGAAATGTAGGGAAGGAAAATTTCTGGGGGGGGGGGGGGGGGGGGG
-AGTTGTCTTTCGATTCCGTTTTATTCAATAATGACAATTTGGGGAAAGAC
-GTTTGAAAACCGTTTATCACTGATAAGTCAGCAGGAAAACAATTTTTTGA
-AATTTTTTTATAGCATTGTACTCATTATTTAATTCCCGAAAGAGAGCCGA
-AAAGTTGAAGGTGTTATCTTGTAAATTGGTTTATTTGAAGAAAAAACAAG
-TTTTGGCCTGAAAATTTTGAAAAAATAATATCTCTTGGCAGAGCATTGCT
-AATGCGACGAAACTCCAGCTTCCATTAGATAAAATCAAAAACTATGAATC
-AGAAATACATTCCGCAAAACTTTAGTGGAAAAAATGTTCAGGAGACCCAG
-GAAACCACTCCCCCCAGTACTAAATTTTTGAATTATTTTTTCTTGAAAAA
-TTTTCCCACTGAACTTTTTACAAATTTTATATGTCTCGATGCGTCTTGAT
-GAGACCTACACGTCAATTTTTGGAAAACTAAGAAAACTTGAAAACTGACC
-GAGTTATGATTGAAAAAGTAGATTAGCAAAGATGGGAAAGTGTGCAAAAT
-TTGGCACTTATTCGTCTTGCTCGGCCGACTCATAGTACTTTTTCCAATTC
-TGAGTTAAAAATCGTGTTCAGCGTACTTTTGTACGTGGGATAAAGAAAAA
-AAATATCAAAAAAGATGAAGTAGAACTTGAGATAAAGACGAAAAACTACT
-TTTTCGGAAAAAATTTTTTTTTGGCAAAATGGCATTTTTTGGCCTTTTGT
-TTTATCACAACTTTTTGCCTTTTGCACTTATGAACTCAAACTTTCTTTCA
-AAAAATCCACCTCTCTGAGTAGTATCTTGCACATAAATTTGGAACAAAAC
-CGAGCAAAACCCGAATTTTAATTCAATTAAAACATGGTTTTTTGGGGGTA
-AAAAAAGCAACAAAAAATTTTTTCAAACTGGGGAAAGCCGCCCTGAGCTC
-AGTTTTGCTCCAAACTTTGTGCAGTTTTTTGCTCCCCCGTGGGGTGAAAT
-ATTTCTAGTAAGCTGTCAAATATTACAAAATTCAGTCAAACGGCTCTGGA
-GTTATTAATGAAAACGCAGTGTGACATTTTTTCGCAAGCCAAAAAAAACG
-CGAAAAAACGCGAAAAAGGGGCGGAGTCTGTACACTCGGCATTTATTAGA
-GGCTGCTTGGCAGATTTTGAAATATCGGAAAAACTTTAAAAGTTCTTTTT
-TTTCCAGGACACCTAAACTGGTGGCATCAATTCGGCCAAAAACTCTACCC
-GCTATCAACTACTGGAGACGGAAATTGCCTTCTTCACGCCGCATCGTTAG
-GTAAATGGTTTTTCAGAGCGAAAAATCGGAAAATCGCTAAAAACTTACTA
-TTTCCACTGAAAAAATTGTAGAGATCGCTCAAAATTTCACTATTTTCTGA
-ACATTTTGATAAAAAACGACAAAACTATTTCAAAACGAGCCCCGAAAATT
-GTTTTTTTACTAAATTTTTTTTGGAGAAGTGCAAAAATTTAAATTTTTGA
-ATTAAATCTTTAAATCTTCAACAAAATTTAATCGTAAATTTTCAGGTATG
-TGGGGAGTACATGATCGTCAGCTATCACTTCGTGAAACTCTCTACGAACT
-TCTTACAAATGGCGCCAGAAAAGAAGCAATCCGACGGCGATGGAAATGGG
-TTGAGAATCATATGAATCAGGTAATTGGCGAGAGAAGAATCTGTGAAAAA
-TTTCTTAAAATTCGGTGAAAAATGATCAAAAATGAGCTGAAAACCGGTCA
-CGTAGTTGAAATCCGCGGAATATGAAATTCCCAGAGGAAACAATTTTCGT
-GGATTTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACG
-GAGTTGAAATCCGCAGAATTCGAAATTCCCAGAGGAAACAATTTTCGTGG
-ATTTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACGGA
-GTTGAAATCCGCGGAATTCGAAATTCCCAGAGAAAACAATTTTCGTAGAT
-TTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACGGAGT
-TGAAATTCGCGGAATTCGAAATTCCCAGAGAAAACAATTTTCGTAGATTT
-CAACTTTTCTAGATTTTTTGCCAATTTTTTATTACATGTTACAAAAAAAC
-GGCTGTAAATACTCACGGAGTTGAAATCCGCGGAATTCGATTTTTGTAGA
-TTTCATCTTTTCCAGAATTTTCCAACAAAAAAAACCGGAAAAAATTATCC
-GACACTCCATGGAATCTAGTTTTCGGAGATTTCAACATCGAGAACTTTTT
-TCGCACATTTTTTTGCATTTTTAAAAAATTTCACCAATTTTCCAATTAAA
-ATTTTTTAAATTTCCAGAGTAACGGTCTCGCATTGACCCTCTCGGAAAAT
-GAATGCTTGAGTAAAAACTCACGGAGTTGAAATCCGCGGAATTTGAAATT
-CCCAGAGAAAACAATTTTCGTAGATTTCAACTTCGCGGAGTTTTCTGTCA
-ATTTTTTGAGATTTTTTCTCAAAAAGCTTGAGTAAATACTCACGTAGTTG
-AAATCCGCGGAATTCGAGATTCCAGGAAATTCGATTTTCGTAAATTTCAT
-CTTTCCCAGAATTTTCCAATTAAAAAAAAACGGAAAAAATTATCCGACAC
-TCCATGGAATTTAGTTTTCGGAGATTTCAACATCGAGAACTTTTCTCGTA
-GATTTTTTTGCATTTTTTAAAAATTTCACCAATTTTTCAATTAAAATTTT
-TTTAAAAAATTTTCAGAGTAACGGTCTCGCATTGACCCTGTCGGAAAATG
-AATGGGAACTCGAATGGGATGTTGTACTCGGATTATCATCTCCATTACCC
-CGTAAACAAGAGGATAATGGCTCAAATTCCACAGATCAAATCTACGAGAG
-TCTTGAGGCAATCCACGTGTTCGCGTTGGCTCATGTGCTCAAAAGACCAG
-TTGTGGTTGTATCGGATACGGTAGGGAATTTTAAAATTTTTTAATTCTTC
-AAAAATTTATTGAAGAGAACAGTAACAAAAAATTTGGTTACTTGTGAATT
-TTACAGAAATATAGAAAATTTTAATTTAAAAAAATTTCGAGATTGGTGAG
-AATCAAGGGTGTCAAGTCCCGTGTCCCGTTTGTCCCGTTGTCCCGTTTTT
-TGAGTGTTTTTACGGGAACGGGACGTCTTTTGTCCCGTTTTTGAGCGTTT
-TCACGGGAACGGGATGTCCCGTTGTCCCGTTTTTTGGGTGTTTTCGCGGG
-AACGGGACGTCCCGTTGTCCCGTTTTTAAAATTTTCACGGGAACGGGACA
-TCCCGTTGTCCCGTTTTTGTCATTTTTACGGAACATTGACACCCTTGGTG
-AGAATAAAAAATCAATAATACACATAATTTTTGGAAGAAAAATCGATTTT
-AAAAATGAAGCTTAACATTTTTTTTCGAAAGAAAAAAAGTGTAAGAAGTT
-TATCAAAAAAAAAAACATTGAAAAAAATATCTTCAAAAATGTTCAATTTT
-GTTTTAAGGTGCAACTATTACAAGAGCACACAATTCTTAGAATACGTATT
-GCGCAACCTATTTGACGCGCGAAAACTACAGTAATACTTTAATTGTCTAC
-TGTAGTGCTTGTGTCTCGATTTACGAGCTCGATTGATAGAATATTCAAAT
-AATTTATTTATCGATTTAATATTCAAATTAGGCAAAAAATGAGAAAAAAT
-ATACATGTGAAAAAATTAATTTTAAAAATAGAGCCCGTAAATCGACACAG
-TAGTCATTTAAAGGATTACTGTAGTTTTCGCTGCGAGATATTTTGCGCGT
-CAAATTTGTTGCTTAATACGCATTCTTAGAATTTTGTGTTCACATAATAC
-GGTTTTTCAAAAATTTTAAATCTTCATAAAATTCATCAATAATAACTAAA
-ACTTAATCAAAAAAAAATTTAATTTTAGTGTAGTCATCAGAAAAAGTCCA
-TCAAAAAAAGTCCATCAAAAAACCATCAAAAAAAGAAAATTGAAAAATTT
-GAATTAAAACATTTTTTTCGAATTTTTGAAAATAAAAGTGTTTGAATATT
-AAACGTAATTAAAAAAAAAGATTTTCCTTTTTTAGAAAAATCTATTCATA
-TTAGAACAGTCGATTTTATAAAAGTATCGATTTTTTTATTAATTGGATTT
-TTTGTAAAATAATAATCGATTTTGAAAATAAATTGCTTAAAATATTGTAT
-TTTTTGACAGAAAAAATGTAAAAAATTTATCAAAAATAAATAAAATTGCA
-AATAATTTTACCTACAAATTAATTGTTTATTAAATAAAGTTTAAATAAAT
-TAGAACAGGAGTAAAACGAGTTTTCAAAATTATTCTTTAAAATCTCGGGT
-TCTTTTAATTCAAAAATTCTTTTAAAAAAAACTCAATAATTACGGATTTT
-TCAAAAATTCGAAAAATTCAGAAATTCAGAATTTGGATAACATAATTCTA
-GTTGACTTCCAAAAAAATGATATGTGACTTACTTAAGGTACAACTAACAT
-TAATTTTCCAAAATTCTTATGGCTGCTTTAAAACACGCCAATGGGGTCAT
-AATGACCGAATATTATGTTTAAAAAAATCAAAAAAAATTTTCTGATTTTA
-TATGATTTTTTGAAAATTGGAAAAATCACAGTTTTAACCTAATTATTTTT
-GAATTTCTGCCAATTGGATTTGTTCGGTGCAGCGCGCTTGCATTATTTTT
-ATTTATTTATTTTATTTATTCTCGTTATTTCACTGATTTTCTTCATTTTC
-TATGTTTTTTTTTCTCGGAAAATGAAAGAAATAAACAAGACAAATGCGAA
-ATGTTTGTTAAAAAGTAATTGAAAATGCGTAAAACTGTGATATTCTGAGT
-TCCGACGACGAAGAGCCTGAAATTAGTATATTTTTCAGTTTCACTCATTT
-TCAATTACTTTTAAACAAACATTTCGCATTTTTCTTGTTTATTTCTTCCA
-TTTTCTGAAGAAAAAACATAGAAAATGAAGAAAATCAGTGAAATAACGAG
-AAAAATATATATAATTCATTAAATAAAAATAATGCAAGCGCGCTCCACCG
-AACAAATCCAATTGGCAGAAATTCAAAAATAATTAGGTGAAAACTGTGAT
-TTTTCCAATTTTCAAAAAATCATATAAAATCTAGAAAATTTTTTTGAATT
-TTTTTATCATAATATTCGGTTATTGTGGCCCCATGGGCGTGTTTTAAAAC
-AATTTCCCCACTGAGCGTAGTCCACCTTTGAAATGTTCTCAAAAAATGAA
-AAAAAAACGAGTTATAAAAATTATTTTTTAAAAATCCAATATTTTAAATT
-AATTTTTTTTTGCAGATTCTGCGAAACGCGAAAGGCGAAGAACTGTCTCC
-AGTGGCTTTTGGTGGAATATATCTTCCATTAGAATGCCCACCATCACAAT
-GTCATCGTTCACCACTTGTTTTATGCTATGATTCTGCTCATTTCTCACCA
-CTTGTACTCATGAGAACAGAGACTAACAATAAACGTAAGCAATTTTTTTT
-TTGAGAAAAAATATTTTCAAAATCATTTTTTAACTGAATTTTCAAATTTC
-CCCCCCCCGTCCCCCCCATTTTTTTCGAAAAGTGAATTGGAATTTTCCTG
-AAATTTGCACAAATTTTTTTTTGAAAATTCAAATGTTCGTCAAATAATTA
-TTTTATTCGAAAAATCGACATTTTTCCAAATTGTAATATTTTTATTCTAA
-AAATCCAAAATTTGATTTGGTAAAATTTCTGTCAACAATCAATTAAAAAT
-CCAAAATTTTCAAAAAAATTGTGATTTTATTCGGGAAATTCGAAATTTCC
-TATTTAAAATTGGATAAATCTAAAAGTTTTCGATTTTATAATTTTTAGGA
-AAACAAGTTTTCAAATTTTTTTAATTATTAAAGTTTTTTTTTGCAATTTC
-ACTAAATGAGCCAAATTTTAAAAGTGGAGCACCGAAATTTGAGACTTTGC
-TTTTTTAGACTCAAATTGGTCCAAAACTACCGAATTTTGTAATGATACAT
-TCTGAAAATTTCTCAAAAAAAAGTTATGGCTGTTTAAAGTTCGGCAAAAT
-AAGGCCCATTTTCAGCTAAAATCAAAATTTTTTCCAACTTCTAGGTGTCG
-CAACGTCTGGACCCTAATTTTTATTTATTCATCACTTTTTAATAAATATT
-GTGGCCTTTGATTGGGCGTTTAATCGTTGTTTTAAGTACATTTATGATCT
-TTGGAGTACAAATAAACGTTACATTTTGTACCCCAAAGACCATAAATGTA
-TTTAAATCAACGATTAAACGCCCAATCAAAGACCACAATATTTATTAAAA
-AGTGTTGAATAAATAAAAATTAGGTTCCAGACGTTGCGACACCTAGAAGT
-TGGAAAAAATTTTGATTTTAGCTGAAAATGGGCCTTATTTTGCCGAACTT
-TGAACAGCCATAACTTTTTTTTGAAAAATTTTCAGAACGTTTCATTACGA
-AATTCGGTAGTTTTGGGCCAGTTGGGTCTAAAACAGCAAAGTCTCAAATT
-TCGGTACTCCACCTTTAAAGAATTCATATAATTTTCTAAAACAACATATT
-CTGATTTACAGAAATACATTTAATATCAATATGAATTATTTGAAAAATCA
-AAAAATTTATATTTATTTTCAGAAATAATTCCGATAATCGATGTGAACCG
-TAACCTGCTGCCTGTCCATTTTGCAGTTGATCCAGGAGAGTCATTCGATT
-GGTCCAAATTAGAAACAAATAGTAATACACAGACAACTACTGATATGTCA
-CAAATTGATAAGCTTGCGTTGATTAGTCAATATATGGATATTATTAGGTA
-AGAAAATGAGAAAAAGGATTTTTTCAATTTTTTTTTCTAAAAAAAATATT
-CAAAATATCGTTAAAAAGCCAAAAATGTGTACGTTTTAATTTAAAAAATA
-TTAAAATTTTTTTGTCCCAAAATTAAAATATCGAAATCAAAATGTTTCCG
-ACATTTATATAGAAATTCTGGAAATTTTTTTAAAATCGAAATCATATTTT
-GAATGAAACTACAGAAAACAGCGCCAAAAAAGAAAAAAAATCGTTTTTTT
-TTTTCGAATCTTTCATTACAAATATTTGAAAAAACGATACAATTATGTTT
-CGCGAAAATTTTTTAAAAAAACTTTAAAAAATTATTAAAATCAGCTATTT
-AATCACAAATGAGAAATATATCGGAAATCTGGAAAAAATTAAAAAAATTT
-TTTGCGTATTTGTCTGAATTTATTTTACAAATACCAAAAAAAAATCAATT
-ATTGTTGGAAAAAATTGAAATACAACGGAAATCGAATTATTTTTATTTAA
-AAAGAACGAAAAAAAATCCAGAAACCATCACAAAATTATTGGAAAACGAG
-AAAGCTGATTTTTCGCTAAAGTTCAAAAAAATTTACAAAAAAAGAAAAGT
-ATTAAAATCGGTAATTTTCCCAGCTTGAAAAACTGAAAAATTCGAGTTTT
-CTAAAAAAAATTAAAAAAAAAAATCAAAATATTCCTCAATTTTGGAAAAT
-TACGGAAAAAGTAGTTTTCTTTAGCTTTCGGCCAAAATTTTATCATAAAA
-ATTTCCGGAATGCATAGTTTTAGAGAATAATTTTAAATTGAAACACTAAA
-TTTTTTAAAAAACTTTTTTTTTTGAAAATCCCGGATTTAAAAAAAAATAA
-AATTTGAATTTCATATAAATATTTTGTTAGGAAAAATAGTTTCTAAACAA
-AAATTTGAAAAAAAAAATATTTTTTTTTTCATATTCTTTGAATAAAAAAA
-ATCTGAATTTCGAAACATTTCAGATTAGACGTTCGTCGTGGCTCAATCCG
-TAGCTCGCGGAGAGTTCGAAGTGCTCACGCGCAACTTCTCACCGAATCTC
-GTGGTGAAAATGGGCAAAATTTGCCCCAAAAATCAATTAAACCAAGAGAT
-TTAAGTGCACATTCTAGTGATGAACAACCATCAAATAATGCAAAAGGAAT
-GACATTAGCATCAAGTGGAATTGGTTCTGGAAGACATGAGAAATGGAGAT
-TAATCAATGAAATTCGGTAAGCATTTTTTTTTTGGATTTTTGGCCTGGAA
-AAAATTTTTCCAACAAAAACTTGAACAGAATTTTTGAAAAAAATGTTGGA
-AAATTAAAAAAAAATTTTTTAAAGTAATCAATTTTAATTTTAAAAATTAG
-AAACTTTTCAAATAAAACATTTTTATTTTTTCAAAAATTTTGAATTTCAT
-TTTCAGAATAATCATTAATGAAAATTCAAAAAATTCAAACTACAATACTA
-CGATAACAAAAAAAAATCAGAATGCGTACTACGCAACATATTTGACGCGC
-AAAATATCTCGTAGCGAAAACTACAGTAATCCTTTAAATGACTACTGTGT
-CGATTTACGGGCCTTGTTCTATTTTTGAAATTAATTCATTTTCGAATAGT
-GACAGCCATATTACATTTTTCTTCGCTTTTTTGTATTATTTTCTCTTTTT
-TTTTGCCTAATTTGAACATTCTATCAATCGAGCCCGTAAATCGACACAAG
-CGCTATAGTAGTCATTTAATGAATTACTGTAGTTTTCGCTACGAGATATT
-TTGCGCGTCAAGTATGTTGCGTAGTACGCATTCTCAAAATTTTGTGTTCC
-CGTAATATGGTAGTTTGAATTTTTTTAATTTTCATTAATGATTATTCTGA
-AAATGAAATTCTAAAGTTTTGAATAAATAAAAATGTTAAAAAATTTTTAT
-TTGAAAAGTTCCTCATTTTTTCAAATTAAAATGGATTACTTTTAATTTCC
-AAAATTTGTTTACAAAAAATTCGTTTAAAAAAAAATTAAACTGTTAAATG
-TTAAACTTTTCAAAAAAAAAGTTCAAAATTTTTCTGTAAATTTTTAAAAT
-GATACATGTAATTTAGATTATAATTTAAAAAAAAGACAAACATTTTTTGA
-CGAAAAATATTAAAATTTTGTTAAAAAATGAAAGTTTTTAAAGCCTAAGC
-CTTAGCCTCAGCCTAAGCCCAAGCCAAAGCCCAAGCCTAAGCCTAAGTTT
-GGTACTGCAGTATTTAAAAAAAAAGTTTTTCCCCAAATTTCTTCTGTTTT
-CTTAAAATTCAAAACTGTTATTTGCAAAAAAAAATGTTTTTGCAAAATTT
-GAAATTTATTGAACTGAAAAAAATGTGAATTTTTTAATTGCCTTTGTCGC
-AGCGGCTGGAAACAATTTTTTTTTTGAAATCAATTTTAAGAATAAAAATT
-GATTATCTTGCGTTTTAAACTTGATTAGGGTATTTAAAAATCGATGGACG
-GCGAGTTTTGGTTCAAAAAAATTAAAAATCTCGCCGTCCATCGATTTTTA
-AATACCCTAATCAAGTTTAAAACGCAAAGTAATTAACTTGTATACTCGAA
-ATTTGACGATGATTTCAAAAAAAAATTGTTTCCAGCCGCTGCGACATTGA
-TAAGTTGGTCAAATTTCCGATTTTAACTAATTTTAGGCCATTTTTTGAGC
-CGTCATAACTTTTTTCTGAAAAGTTTTCAAGAAGTTTCATTATAAAATTC
-GGTGTTTTCAGACAATTTTGAGTCTAAGAAGCCAATAAAAAATTCGACTA
-CACCACCTTTAAAGCTCAAAATAACGTCCAAAAATTCAATTTCCAGAACC
-CACGTGCTTCGAACTTTTCGTATTTCCTCATCAACACGTGGCAAAGAGAA
-ACTAATCGATACGGACGATTGTATTGCAAGAATGAATTCGACGTGCGTTC
-TCGCATCGGAATTATTGCCAACTCATCACCAATACATGGACAAAATAATC
-AATGAATACATGAAAAGTGCGAAACAACGATTCCAACAGAATCAGCGAAC
-ACAATCGGATAGTCGGAAACGGATTAGTCGAAGTTTCAGTGCAAGCTCAC
-TTATGCTCACGTGTATCGGTTGTGATTCGGTACGAGACCCACTTTTTGAT
-GGAATTTCGAGAAAAAAGTTGAAAAAACGGAGAATTTGGCACAAGTAGCC
-TCAATATTTGAAAAAAAAAACCGAAAAAATGGATGAGGGGAAGCCAAAAT
-ACCAGAATTTACACCCAATTTTCAAAGTTTTATTGATTTTTTACAAAAAT
-TTTCTCAGTTTTTCAGTAAATTTGCCAGATCTGACCATTTTTTAGGAAAA
-CTGAAAATTTTCGGTGTTTTGCCAGAATAGCAACTTCCTGAAAATTTAGA
-ACTAATTAATTTTTAATTTTTTGGGGGAATCATTTATTTCCTAACAGAAT
-TTGATTTGAATTTCGAAAAAAACCGATTCTAAGCTTAAAAATTGACAAAA
-ATAGCAATGAATGTCAAAAAAATTGCTAATACATAAAAATTGTTTGAAAA
-AATACAAAAATAACAATTTTTATTTAAACTTTAAAAATTTTTCAAATTTT
-AAAAATTGAAAAAATTAAAAAATTTTTAAATTAAAATTAAAACATTTTTT
-GTTAAAATTTGAAAAAAATTCAAAAAAAAAATTTACATTAAATTTTTTTT
-TTCAGGAATTCAAGCCGGCATCTCAAGTGACAAATATCATGTGTGATCAA
-TGTTTTGCTTGGCAAAAAATGAGTGTTCTCACGTCGAATTGCGACCAATT
-TATGGGAAATTCTGGGCCACCGTGCAAAAGTTCAACACTTCCGTCATTTG
-GTAGTAATGATAGTAATCAGAATGATAAGGAAAATATTGTGGAGGTACTT
-AATGTGGTGCCTAAAGATGGAGCCAAGACACTTACCAGGTATGGTTGAAA
-TTTTGAAAAAATTAGAATTTTCAACGAAAACAGAAATTATTTTAAAAATT
-TATTTTTAATTGAAAAATAAAAATTTCTCCCAAAAAATTTTCCCAAAAAA
-AGTGTTTATGTTATTTTTGAAAATTATAATTGAATTGATTTTAAAAATTA
-CGAGAACACAAAATTTGGAGAATGCGTATTGCGCTACATATTTGACGCGC
-AAAATATCTCGTAGCGAAAACTACAGAAATTCTTTAAATGGCTACTGTAG
-CGCGCTAGTGTCGATTTACGGGCTCTATTAACGAAATGAATTAAAATCAT
-TTAGTTATCGAATAATACAAAAATCATTTCATTTCGAAAATCAAGCTCGT
-AAATCGACACAAAAGCTACAGTAGTCCTTTAAAGGATTACTGTAGTTTTC
-GATCCGAGATATTTTGCGCGTAAAATATGTTGCGCAATACGCATTCTTTG
-AATTTTGGCTTCTCGTAATATACGAAGGTTGAAAATTTCAGATTTTTAAC
-ACAAAAACTTATGAAAATAAAATTTATGAAAAGTATAAAAAGTTGAGAAA
-ACAGAAATTTTAATTTTTGCGAAATCTAGATGTCAATTTCTTCACAAAAT
-TTTTCAAAAATCGATTTTTCTTTCGAAAATTTTTTTTTGTAATTATTTTA
-AATCAAAATTTGGCGATTTTCAAAATGTTTATTTTATATTTAATTTCTAA
-AATTAATTATTTTGATTAAAAAATATATAAATTCAATTTTCAGATTGTAA
-AATGAATTTTTTTGAGTTTGCCGTTGAAAAATAGAAAACAAATTATTTTT
-AATAACTGAAATAACTGAAAATGTTGTTTGAAAAATTACATTTTTCCAAA
-AAATCGAACATTTTTGACGCGCAAAAAAATTTGTAAAAAAAAATTTTCAA
-CAGAAAAAACTGTAAAATAGGAAAAAAATTTACCTAAAAAGCGTATGTGC
-CTTTAAAATGTACAGTAACCCCAAAAAAATCGATTTTTTGCAGTATGCGA
-GCTGTGGAGGACGAAAACGGTGTGGTTCACTATTATATGGACGATGAAGT
-AGCGGATTCGTGATTCTATTATACTCATTTCTTTTTTTGAAAATATATTT
-ACTAGAGACCAGTTTTCATTTGATTTTTATCGATTTTTTTTGGATTCCAA
-ATTTTTGTTTTTTTTTTGTTGCTTTTTGTGTGTTTTTTGCCGTCTATCCT
-TCTTTCCTGCCAACGGGATTTTCTCTTCTTTTTTTTTTTTGAAAAACTCA
-ATTTTCCCGCCTAGTATTGCTTTTTTCGAGATTTTTTCTTCCATTTTTCA
-TATCCGCGCCAGCTTTTTCTCTCCCCTCCTTTTTTCACCCATATTTTCGA
-GCTTTTTTCTGTGATTTTTTTTTCACCCCCAAAATTTTTTGTACCAAAAA
-ATTGATGCTTCTTTTTTTTCTCTTTATTTCCAACAAAATGCTTGGCCAAA
-GAAATAAACTCTTTTATAATTTATCATTCAAAAAATTTGAGACCAAATTG
-AAATCCACATCCAGCAACTGCAAAGTGTCATTTGACAATGCACAAATCGC
-ATGGCACGCCCCGTTTTCGTCGATCACCCGGGAACGCGTATTCTGGGACC
-AAATGAGGAGGCGGTGGCGATCGGAGAAAATGAAGTATGGACCACATCTG
-GAAGACACACCTGATTTTACGCGCAAAAATTTAGAAATGTATCGATTTTT
-CGGTCAAAAATCAATATTTATCGATTTTCGGAGGGCACATGGGCTTCTGG
-CCTTCCTCATTGAATATTCGCGCTCCATTTACACTCGCCTGCCGGACAAC
-GCGTGGAAAAGTGTGGTGTACTCCACACGGACAAATACATCAGTTTTACA
-ACTAAAATCGAGCCGTGACGCGACACGCAACGCGCCGTAAATCTACACAA
-AATCTCTCCGACCCAAAATGGCCTAGTTCGGCAAACTCTGCCATTTCGAT
-TTATGAGGGAAGCCAGAAATCCGTGAGGGCAAAGATTGAACAATCTGAGT
-TAAATCGTTTCCATACAAAATTTTTTGAAAATTTTATTCTGAAACTGTCT
-AAAACTCGAAAAGTTATCAATTTTCTGGTTAATTTCTGAGGAAATTCAAA
-AATTGATATTTTCGAAAAAAAAAATCGGAGCCAATACACATCATTTGACG
-CGCAAATGTTGAATTTTCAAATTTACGAGAACCCACGGGATTCTGGCTTC
-CCTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGGCCATTTTGTGTCG
-GAGAGATTTTGTGTAGATTTACGGCGCGTTGTGTGTCACGTCGCGGCTCG
-TTTTCAGTTGTAAAATTGATGTATTTGCCCGTGTGGAGTACACGGCACTT
-TTCCACGCGTTGTCCGGCATTTGTCAATGGAGCGCGAAAATTCAATGAGA
-AAGGCCAGAACCCCGTGAGAATCCTAAAATTCTGAGAATGCGTATTGTGC
-ATCATATCTGACGCGCAAAATATCTCAAAGCGAAAACTAGAGTAATTCAA
-TAAATCACTACTGTAGTGCTTGTGTCGATTTACGGGCTTTCGAAGAAGTT
-ACTTTTTTAGTTTCTTCGTATTATTTTTTTTCATTTTTTGTCTAATTTTA
-ATATTCTATCGATAAATGAATGGGTTTTTATTTATTTTTATTATCGAGCC
-CGTAAATCGACACCAGTGCTACAGTAGTTTTCACTACGAGATATTTTGCG
-CAATATATTTATAAAAGTTGACTAGCGGGCCCTGCGGGCCCGCCAGTTGT
-AGGGGTGTAAGGCGAGTCCCCTTGCCGGGCGTAGGTTCTCGACTTCGCCT
-CGAACCTGTTAGAGGGTTTGTGAAAATTTCAGTAGGTCAATGGGAGTCTT
-CTTGTTTTTTGAGTTCGGTTTGACCAAAAACAGATGCACCCGATGAATCA
-GTTAAAGCTGAGTTTTGATTGATTGAAGTTTGAGGAGGCTTTATATTAGG
-GGAGACGTACCCATATTTTGTATAAAATTGAGTATTTCTATTCGAATCCC
-GATTACTCACAAAAAAACAAAAAAAATTGACACTTGGTAGAATTGAACCA
-ACTACCAAAATTTCTGCAGTCATACGCACTAACCACACGGCCATGCGGGA
-GACACCTCAAACTGGGATGTAGGGAAGAAAATTTTCTGGAGGAAGTCGTC
-TTTCGATTCCGCTTTCTTCAATTATTACTATTTGGGGAAGACGTTCGAAA
-ACCGTTTATCACTGATAAGTCAGCGGAAAACCTAATTTTTGAAAATTTTA
-TCACAGGATTGTACTCATTATTGAATTCCCGAAAAGGAGACGTACAGTTG
-AGGGTTATATCTTGTACACAGACAGATGTATAGAATAAAACAAGTTTTGG
-CCTGAAAATTAAAAAAAATAATATCTCTTGGCAGAGCATTGCTAACGCGA
-CGAAACTTCATCTTCCATTAAATAAAATCAAAAACTATGAATTAAAAATA
-CATTCCGCGAAACTTTAGTGGAAAAAATGTTCAGGGGACCCAGGAAACCA
-CTCCCCCCAGTAAAAAATTTTTGAATTATTTTTTTCTTGAAAAATTTTCC
-CACTGAACTTTTTACAAATTTTATATGTCTCGATGCGTCTTGATGAGACC
-TACACGTCATTTTTTAGAAAACTAAGAAAACTTGAAAACTGACCGAGTTA
-TGATTGAAAAAGTAGATTAGCAAAGATGGGAAAGTGTGCAAAATTTGGCA
-CTTATTCGTCTTGCTCGGCCGACTCATAGTACTTTTTCCAATTCTGAGTT
-AAAAATCGTGTTCAGCGTACTTTTGTACGTGGGATAAAGAAAAAAAATAT
-CAAAAAAGATGAAGTAGAACTTGAGATAAAGACGAAAAACTACTTTTTCG
-GAAAAAAAAATTTTTTGGCAAAATGTCATTTTTTGGCCTTTTGTTTTATC
-ACAACTTTTTTCCATTTGCACTTATGAACTCAAACTTTTTTTCAAAAAAT
-CAGTCTCTCTGAGTAGTATCTTGCACATGAGTTTGAAACAAAACAGAGCA
-AAACCCAAATTTTAATTCAATTAAAACATGCTTTTTTGGGGGTAAAAAGA
-GCAACAAAAAATTTTTTCAAACTGGGGAAAGCCGTCCTGGGCTCAATTTT
-GCTCCGAACTTAGTGCCGTTTTCTGCTCCACTGTGGGGCAAAATATTTCT
-AGTAGGATTTCAAATATTAGAGCATGAAGTCACACGGTTCAGGAGTTGTG
-AATGAAAACGAAGTGGGACATTTTTTCGCAAGCCAAAAAAAACGCGAAAA
-AACGCGAAAAAGGGGCGGAGTCTGTACACTCGGCATTTATTAGAGGCTGC
-TTGGCAGAAAATTATCAATTATGTATATGTATAAGAATTATATTCGAATT
-TCACGCGTAAGTTCCAAATTTAGCAGCATAGCCGCCTGAAGTTCGAAATT
-TAAAATAAAAAAACCGAAAAGTACCTGACAGCCAACGTGGCAACAAATGG
-AATCTCATCGACAAGTCCTTCAGAATTGAATACTGCAGCATTTGACGTAT
-GATAAATGACTGCCACGAATTGATTTTCAAATAATATTTTATTGATTGAC
-GTGGCAGTTTGGTGGCTGAGCGGTTTGTAGTCCAATGTTGGTAGAGTTAA
-TAGGTAAAGACCACCCGTCTCGGTTGCCACACACGCTTCTTCGCCGCTTC
-TGGAAAATTTGGTTTTGAATTTCTAGGCCATTGGGTTAGGCTTCGTTTTT
-GAAATGGGTTAGAAATGTAGAAAATGGAAATTCTAGGCCATCAATTTTCC
-TTTTGCATGTGTGTAGGAAATTGGCTAACATTCTAGAAAATCGATAATTT
-TATAGAAAGTGAAATTTTCGCAAAATCAATAATTCGATAAAAATCGATAA
-ACTTTGATAGAATTTTGTTCATCAAAAACCGATAATGTCCGAAAAATTTC
-AGAAAATTAGATTTTTTTAACAGTCCGTTCATTTCGTGGCCTAGAAACTT
-ATTTCTAGGCCATGGAAGAGTTTTTCCAAGATTCACGGCCACACGTACAC
-TTGCATGCTAACAATTGCGACAGGCTTATTAGAAGTCGAAGATCTTCGAA
-TTTTTCGCGACAGATCCGACACTGTGAGCTTTGTCCCGCCGAGTTTTTCG
-AGTCCTGATGTTCCGATTTGCCATAAAATTATATTACCATCGTCGGAGCC
-TGATAAGAGCCCGTGACGACACATTTCTAGGCAAGTTACTGCTCCGTCGG
-TTATCTGGAATAGAGAACATTTGGAACTTGTCGATTTTCAGAAACATTTT
-ACTGTACTTTTTTATGGGCAAAACATTGTTTTTTTTAATTAAACAAAACT
-ACTGATAATTGTAAAAAGATCAATTTTTTAGTGTTTGAAGATCATTTTTG
-AGTTCTCTAGCTACAAAATAAACAATTTTAGAGGAGTTGCAAAATTGTGA
-ATTTTAAAAATAAATTGCACAATTTTGCCACTTTTTAATGGTTTTTGATG
-GATTAAACCTAGATTTTCTGAATTCAGCATACATGAATTACCGCTTTTTG
-ACAAAATTAGACAACTTTTTATTTTTGTCCAATTTTTTTCAGCCATCTAA
-TGACTGTCCTTTTTTTTGGGCAAAAAAATAAATTTCCTAAAAGCGTTCGA
-AACTACTATATTTTGAAATATTTTGAAATAGGACATTTTTTTAGGGCTCG
-GAGATCAATTTTAAGTTCTCTAGCTACAAAATGCGGAAAAAAATGTAAAA
-AAGTTTGGTACTTGTGTATTATACCCCCGCCATTTTAAAAATTAATAAAA
-TTTCCATCAATTTATTTATTTAAATTAAACGTGATACCATTTTTCCTTGT
-TAGGCTTAGGAATGGTTTTTTCCTAAGCCTGAAATTCCACACGTTTTTAT
-TTAATGAGTTAAAAAATTAACTTTTAAAATGGCGGGGGTGTAATACACAA
-GTACCAAAAGTTTCTAGGCCCCATTTGCTGGGCCACAATTTATAGGCTAC
-AGTTTCTAGGACACATTTTCCTGGGAACATTTTCTAGGCCACATTTTTTA
-GGCCACATTTTCTTAGCCAAAAATGTACTCACAAACTTAGCAACGTGGCA
-ACAATTTCAAAAAAAACCTCATACCTTCTTCTCGAAAATTATTTTATCTT
-TCGAACACATTGAGATATTTCCAGAAACGTCGCCGAGAATAAATTGGGTC
-GATGAGTAGAAAACTGCAGAAATTGCACAAACCGGTAGAGGAATCGAGAA
-GCTCTGAAATTATTCTTCATTAATTTTTTCATGCAATTTTAATCTCGGAC
-CAATCAGCGTTTTGCCACGTCTTTTTTTTTTCGAACCAATCAGAGGAGTG
-GGCGTGGCTAGATGCTGATTGGTCAGTTTCAAATTTTTTACAAAATATGA
-CCTACCGTAGAAGAAGAGCACAAAAGTGCTCTCGCCTGATGGGAACAGAA
-AGTTTCATGAGAGATACCGCCGAACAGAATTAACGTTTTTCGTGAAGAGC
-TTGAAATCATTAGAATGATATTTTCATTTCGGGTCTGAAATAATTCAATT
-TTAAAGGTACACGCCACCACCGTATCCTACTTCCACATGGTACTTCTGCA
-CAGTTTCCAGCGCAACTTTATCGAATTTGTGAAATTCCAAAAGCCTGTCG
-TAGTTCACCTTAGAATCGTCACGCACGAAATCGTAAAGGAGGTTCAGAAC
-CTAAAAGTTTGAAAAATATGTCCTAGGAAATCAAACTGTGAATTTCTAGG
-CCACATGATGGAAATTCGTATGAAAATTGCGACGAGCCCTAACATGTGGC
-CTATTAATTGTGGCCTAGAATCTGCTGCCTACAAGTTGTGGCCTAGAAAA
-AATGTTTCCTAGAAATTGTGACCATGGCCTAGAAATTTTGGCCTAAAACA
-TCCGACATAGAAATTGTATGGCCTAGAAAGTGTGGGGGCAAAAGTTTTTA
-ATTTTCAATTCGGTTTTTTTTTTCACAAAATGGAGAATTTTTTGATTTTT
-ATGTCTGAAATTGAATGGGAAACGTGGAAATATTGCTAATAACCAACCTC
-TTTGCTAATTGTAATATCCTTTTTCACATTCTCGCCGACACCATTATCCA
-CAGAATCCGTCTGAACTTCTTTATTTTCTTGAAAATTTGCCACGCATTCC
-ACGTCTTTTTTATTTGTCTCTATCGTCTGCGTCTCCGACGTCTTATACAC
-TATTTCTCCCTGAAGGCGGATAGGTTTTCTCCACGTGAACTGGAATAGTG
-TGACGTCTTCCATTATTAGCTGAAAATTTGAGTTAAAACTGCTCTATCAC
-ACTAAACACGACGACACTCGTGGCCGCGGAAATTAGAAAACTCGGCCACG
-TAACTTGGTTAAATTAATGAAAATATTATAAAAAACTTTCGAAAATTTGA
-AACATTTTAACTTTTTTTAAAAAAAAACACATGCAAATGTTCCTAAACTG
-GCTAAATAAACAACGCACATCCCCGGCGGAGCTCTGGTTTTCCATGGCAA
-CCGAGAATGCGTGCGGGCCAACGGGGAGAATGTGGAGTACGTAGAGACGC
-AGACAGTTGTATAAAAGGGGCGGCAACTTGAAAAAATAAATTTCTAGAGA
-TTAATCCGTGCAAAGTTGTTTTTAATTACCGATGACCGAGTATGTGATTT
-TTCTAGGCCACGGAACCAAATTACGGCGGAGTTCCGTTGAAAATATCGCT
-TAATTGTTTTGTTTTTTCTACCAAATTAACTGACTGAAAATCCAGTTTTT
-TTTTTCTGAAATTAGGTTCTTTCAAAAATCACCTGAGTGTTCCTTGATTT
-GTTTTCGTAACTTTTTTCTCTCCAACTATTACACTACGGGTGTTTTGACA
-ACACAATGGAAAACATGTCTGTTCAGTTTAAAGACTGACAAGAGTCTCGT
-AGTCTCTCGCGGACTAGCTTACGGCCCTTGTGGTCTAGAATATTGAAAAA
-CTTAGTTTCAGTATTGTGGCCGCGAAATTTGAAAACTCGGCCATCGATTT
-TTTTTCCCACACCATGGGGCAATATTCACTAGACCATTCATTGTAACAAA
-TATTTCAAAACTAAGAATTAAAAAAACTCCTACGCAATTTCCCCAGTCAC
-TTGGCGGCTCTCACGCTCCCTATTTCAGATGTTAACCTCATTTGAATAAA
-TTGCTTCTCCCATGTGTTTTTGGATGGGATACTCCATCTTTTTCAACCAA
-TTTTTTCTCCTTACTTTTGTTTTTAACGGCTTTTTTTCATATTTCTGATT
-GAGAATAGGTCAAGTGATGACGTAATAGAGCGCGTGGAAGAGGAGTGACG
-TCACACGTGGCCTAGGAATCTCTGCGACCACCACATGAAAAACGTTTTAT
-TTTCTAGGCATCCCTACCTACCCGTGTTTTGTCTCTATTTTGACAATTTT
-TTGCAAGTAAATTCCCGGCTGAAACAAGGTCACCGCAACACAAAATAGGT
-GAAGGGATGATCTCTTTTTTTCCAGAGTCAGTCAACATACATAAATTATG
-TGTGTCTCTTCCATTTTCCTGTCGTCAATTTGTTCACTATTCGCTTCACT
-AATTCCTGCTTTGCATTTTAATGTCCGTGCCCTCTCACTGGAACTGACAT
-TTCACACAATGTTTTTTTCGGTGGAAAAAAGTTTTCTAGATTTTGATATT
-TGCTGGAAATTTGGAAAATTTAGCGACTTGACCGTGCAAAAATTTTGGTG
-GCCGAGTTTTCTCTTTGCGCGGCCACGTTGTAATAGTTGCCAGGTGTCGC
-AAGTTTTTAAAATGACCGAGTTTTCTCTATTCACGACCAGATCTCTCATT
-ATAGCCGACTTCCGACTTGCGTAAAAGTGCGACGTGGCCGAGAAAAATTT
-CAGTGGCCGAGTTTTCACGCGAAATCACATTTTTTTAGTTTTTTGGTACG
-TGGCCTAGTTTTTTAAAACCATTGTTTATCTCCACCCAATCTAAAAAAAT
-TTCTGCGGATTTTTAAACCATGGCCGTAAAAAAAAGCCACTCTCATATAT
-TTTTTCGACACCTTTCGGTTTTAGAAATATATTTTTAAAAATAAAATAAA
-TGGCTTTGAAATCCAAATAGAAATAATTTTCCAAAAAAAGTGGAAAATTT
-TCTAGGCCACTTGAAATTTTTTCCGAGATCTTTTTTGGGAAAGGAATTTG
-TGGCCTAAAAAACAAAAACTCGGCCACTATTTTTTGACCATTTTTTCCAT
-GTGACGTCACTTGTGACTTACAATTCCTTTTCTCAATTTCTTATGAGAAA
-TCGCTTTTTTTAAGACTTTTTGTGATTTTGTTGCATTTTCTCCCAGTCGG
-AGATTACGCCACGTGGAAATAGTAAACTCGGCCACACTCTTATAATTTTT
-TGGCGTCTTTTGGGAAAAGTAACAAGTTCAAACAATGTAAATTACATAGC
-CTAGACTTAGCTGACCAAGGCTTGTTTGAAATATTTTTGTGGCCTAGAAA
-AATAAATATTCGGCCATTACTTTTTCTTCTCATTTTTGTCAGAAGACGTC
-ACTGAAAACCTAGAAATCTCTCTTCCAGGGCTGCAAATGAGTATATCCTC
-CATACCTTCGTCACCGTCAATATCGGGATCTTCCACGTCATCGACCGCGC
-CGAACATTTCATTTTGCTATACATGGACCACTAAGGTAAGCGGCCTAGAA
-AAATAGAAAGTTCGGCCAGCTCTTAAAAAATCGATTAATGATAATTTTCA
-GTTAAAAACGCGAAAAACTGCGGACGGCGAGGCGACGATTTTATCGATTT
-CTCCGAAATTCGCGACAGTCCACCAACTTATTTCGTTTCAATGGAATATT
-CGAATTCATGCCACTTCTGAAATGGTAAGGCTTGTTTTTTTTTGAGGTAG
-GCAGGCACGAAAGCGTCTGCTTGCTTTTCGAAAACACGTGGCCGCGGACT
-GAAAAACTCGGCCACCAAAAATCTGAAACTGTGAGTCGCCCTGACAGAAT
-TTTTTATTTTCTCGGCCAAACAGCAAAAGCCGACAAGTGAAGTTAAAAAG
-GGAGGAGCATTTTTTTAAATAAAAAACTAGACTCCTAATGACCTCAAAAA
-TATCATATTTTTAAATGTAAGAGTCGGCCACGTCCGCGGTCGATTTACAC
-AGTGTCGCGGCTCGGTTTTCATTAATTGAGCACTGAGAAGTTTCACTTCT
-CCAATTTCAATTTTCAGAACGAAGAAGACGAAGAAGTGGACTACGTGGCA
-GTTGACCTTTACCTGGTAGATGGTCCTGTAAATGAGGTGAACGTTATGGC
-CGAGGTGGGGGCTCTAGAGAAAACATCCACAGCAACGTTGGGAAGCCTTC
-CCGCAGGTCAGAAAGAAGCAAAGACTATAAAAATGCAAAAGGGCTCTGGT
-TGTGAGATAACGGATGCAGATCGAGAATGTGTGTCGAAGTATTTGAAAGA
-GAACGTGGAGAATATCATCAAAATCTCCATAATTATAAATATGGAGACAC
-GACTTTTCGAACCATCAACCTATTTGGATGCAATATCTCCAACTCCTCGA
-GCATCATTTCTAACGGCAAATTACAATGCGAGAGTTAACAGTAAGGTATG
-GAAAAGGCGATCACGGAAAAGGAATGGAAGAATCGAGCGAAGAGTGTTAA
-GTGATAAAGAGAAGACGAAGTATGAGAGTAAAGTACAAATGATATTGGAT
-GAGGAACGGGAGAAGCTGTGTGATAAACGAGAGATGTTGAAGGAGGATGA
-TGGTGGATCGAGAAGAGCTTCGTTGATTTCTCAGTTCAGGGAGAATCAAC
-ATGAATCTGTGTTGGATGATCATATGTTCAAGAGGGTAAGGTTTTTATTT
-TTAATGCCTAAAACTTTGAGATTGAGGCAGTTCAATAGGCTATATACATA
-TAAGTGTGGACCCAACAAGTTTGTTACATGAAGTATTTTTTCCAGATCCT
-CGTTAGCTGCTGTGAATCTTGCGAGCAACGTCGTCTATCGTTCATGTGTG
-ACAGTCGAACCGAGGATGATTCTGAAGGGGAAGATTGTGAAGACAATGAA
-GAAGATGATGGAGAAGGTGGCTCCGATGATGAGGAAGACGATGGAGAGGA
-GCCTCATTTTGAATGTGATAAGAGTGATAAGGAGCATGTCCACGATGTAG
-GTCTCCTTTAAAATATCGTCCATAAAAGCTTAATTTTTTAGATGCTAGCA
-AATCTATACTTCAACAAAGTAGTCCTTCCCGAAATGGAATATGTCGAGGA
-TTTTGTGGATTTCCTGATTGATGCGGAGCTCAATGACTTGCCAGTTCTCA
-AAAGAGCTTGTGAGAGGTATTTGTGCAGTGAGCTGAATTCGGTAGGCTTC
-TGTTCAAAAAAATATAAAAATCTAATCGAAATATTTTCTAGAAAAAAGAC
-ATTGGAACTTGTCTCCTGTTGGATTTGCTTTTCAACTCGATTGTATTCAA
-CTTGCCTGTTATGAAGTCGATGACCTTGACGGAGTTGGCGAATCGAACGC
-ACGAGTTTGTGGATGCTGACACACTTTTGGATCAGGAAGAGTTTAAGTGA
-GTAGGGTGTGCGGCAAATTTGCCGAATTTGCCGAGCACGGCAAATTTCAA
-AAAAGTAGATTTGCCGAATTAGCCGAGCTCGGCAAATTTCGAAAAACTTA
-TTCATAAACCAGCAGTGTGTAAAGAATTCAGTAGTTTTGGTGCTCCAAAA
-ACATTAAAAAATATCAAATTTTTTCGAGTTTGTCAAGCACGGCAAATTTG
-CCGAATTTGTCGTGTTCGGCAAATATTGGAAAAATAGATTTGCCGAATTT
-GCCGAGTTCGGCAAATTTTGAGATTTGCCGCACACCCCTGGTGTGCACCG
-TTAAAAATTCTTTTTTTCCAAAAATCTAAAACTTGAGGTTAATAATGTGA
-CCGAAAAACTGAAAAAAAAAAGAATTTGCCGCTGCAAAACCATAATCCGC
-CAAAAGTTTTCTTTGTTTTTTTTTCGAATTGCAGGGTTTCCGAATCTGTC
-AAAATTGGAAACACGACAGTTTGCCGAAAAAATTTAATTTTTGAGTGAAC
-TGTTGATGCGAAATTCATTAAATACGATTTCAAAAAGCTCGGTCACGTAT
-TTGTAATTTTAGAGTGGGATTAGCTATTTAAAAATTACATTTGTAATTTC
-CAGAAACCTGGATAAAAGAATGCGAACGCTTGCCGATCGGAATCTCGTGG
-AGCTCATCGAGCAATGTGTTACGTTTCGTGACCAAAAAGCAAGAGTTCGC
-GTTTTGCCGACCGCCGAATCATTTGATATTTCGTTCGACTTAACTAATCA
-ATAATATTATCGTGTTACTTTTTTCCTCTGTTTTCTTTCTCATTTTTAAA
-AATGAATGCTTTTTTCTTTTTTTTTACCCGATTTTCCACACGACTAACTC
-CAAAATCAGCCGCGCCTTTTTGTCTTTTATCCCTGCTTTTCCACACATTT
-ATCAAATAAAGAGTGCAACGAAGTGCAAAATGGGAAGTAGTAGTGCTGCA
-ATCTCATTTAGAGTACACTTTTGGAGCTCTTTTCTCCAGATATATTATAT
-GCTGTAGATGGAAACTTTTCCAGTTTATATATAATATTTTTCATTTTCCA
-TATTGCCCTTCACTGCTCATCATCCAATGGGGTGCATCTAATTACGGCAA
-AGCTTCGCGGATGGGGCGAGTAATGAGCAAAAGAGCACAAGGATGGGGCT
-CTTTTGTTCCTCATTTTCATTGCTTTTTGATTTCATTTCCTTTTCAACAT
-GTTTCCATTTTCGAAATTAATCGGCTTTTCTGACCCAGGACTCACGGGAG
-ATGAAAATTAATCTTTAAGAATTGTGCTTTGAAAAACAATATCATACACT
-TTTCAAACTTCATTTCTCCGTTGTTCCCAGTAAATTCCAAGCTGTCATCC
-ATCAACTCTCTGATAAAAAATAATCATTTGGTCCGTCCGTCGCGAAAATG
-AAGTGAAAAAAGTTAATCCCGGCATGTTGAAATACACATTTCGTCGCGTG
-GAGTATAGTTATGCTTCGATTTCTCAAGAGGATTCTTCTTTCCCCCTTTT
-CATATTTTTTCGGGCAAAGAAGAAATCTCTGTCACCCCCCGACTAAAAAA
-CGCTAAAAATTCAGCGTTCATTGTTCGGTTTTCCGTTTCAAAAAGAAAAA
-AGTGTGTCAAAAACTCAAAAAGTCACCGCCTAAAGTTAGTTAGCACCTTT
-TTCCATTGTGAAGATTTTCTTTCCTTCAATACAACTACTACAGTTTGTTT
-CCTGTGTGTCGTCCTATTGTTGTGGGTGTAATTGTTCGATAGAGCGCGCT
-TTACAAAATCTCTCGAATTAATTGAAAGTAGTGTGTTGTAGAGACCTTGA
-CTCCTTTGTCAACACTGTAATTAGGAAGGAGTACACCGCCGGGCGGGTGA
-GAACAGTTATTATAACGATAGTGGTTTGTTATTGTTTGTTATTAATAGGT
-TAGTTGTCTACTTTAAACGTTTTTTGTTTGAAAAATTTCTGTTAATTAAA
-AAATACATAATTTATAAAAATGATGAGTTTTTTTTTCAAATTTCTCAAAA
-ACCGAACCCATGGGGTTTTTTGAGAAAAAATAAGAAAATTTTTCTAGTTA
-TTCAAAAAATCTATACATTTTAATATCTGTAAATTGTAAATTTGGAAGAC
-AAAATTTTGACAATGCGTATTGAATTTGAGTTTATTTAACTTAAAGAAGA
-GAAATAGACAAATAAATAATTATATATATTGCGCAACATATTTGAATAAT
-ACATTTATTTTTCGTAATATTTATTTTGAAAAATGATTGAAAATAAAACT
-CGAAGAAAACTATATTTAAAAATGTCGGTGCTTTTTTTACATTTTTTAAA
-CGAAAAAAAATGCGAAAAAAACCAATTTTCCGAGTTTTTTCTTCAAAATA
-TTCGTCCCTGTTCATGAAAAATGTTCTCACTTATGTAAGTAGTTGTCACG
-CAATGCAGTTGTTGACCAAAAATTATTTTCCGAGTAAACCCTATAATTTC
-CAAATTCTCTTCTTCTGAAATTTTGAACTTTCCATCGGGAAAATGTCATT
-TCAACTCGAATTCACACTAATTATACATCTGTATAATTATTTAGATTCGT
-ACTTTTTCCTCCTTTTGAAAAAGTGCACAGACACCGCCGTTATCTTTACA
-ACCGTCTGGCAGGACCGGTGTTGTAGGCTTTAAATAAATATTTTTCCATA
-AATTTCTTAATTTTTAGCTGAAACGATTTTCCAACAAAAAAAAACGCACA
-TTTAAAATGGTTACCGTATTTCTTCTATCAATATGGCTGCAATACTATTT
-TTCGATGGTCTTCCCGCTTGCAATACTAATAGGGAGTGCAAGACTATTAG
-GGAGTGCAATACTAATTTTCAGAACATTTTTCTGACTGTGAGCTTACTAT
-TTTTTTTTCTGAAAAAACTCGAACCTTGTGTGAAAATTCAGAAAATTTGA
-TTGTAATTGCAACAAAAAGGTGTAATTACTTCAATTTCATAGAAATTTTT
-CCAAAAATTGTTGCACAGTAGGCAAAAAATGTTGTTAAAATCTCAAAATT
-AGTGAGGTGATTTTGTACCAAAAAAAAAGTAGACGCAAGACTATTAGGGA
-GTGCAACACTAATTGGGAGTGCAATACTAATTTTCGGAGGGTGTTCAAGG
-AGCAATACTAATAGGGAGTGCAAGTCTAATAGGGAGGTCATATTAATAGA
-AGAAATACGGTAAATTTTATATTTTTCGGTGCATTTTCATTTTAAAAACA
-ATTTGTTTGAAAATAATTATTTTTAAAAATCGTTTTCTTCAAATTTTTTG
-TAATTATAAGAAACCAAAAAACCTTTATTTAATTTTCAACAAGTGTATTT
-TCTAATTAAAACAATTATGAAAATTCACAATAAAAGTTCAGGACTGAATC
-CAAAAAAACTTTTATTTCAAAAACGAAACACCTTGTTTGCCAAAAACCTG
-GAAAAGCCTGGAAACCTGGAAAATCGAATAACATCAAATTTTGCAAATTT
-TAAGCGTTTTCTCGAAAAAGTTGACCTGAAAAAATAGGATTTTTCAGTTT
-ATTTTATAAAAAAGCGAAAAAAAGCAAATTTTTTGAGAAAAAAATTGCCT
-AAATTTTCGAAAAATCATTTTCAAAACTATTCACGATTAAAATTCGTTTA
-TCCATTTCTCCTTCAATTCTTCCAGATTCGAATGAAAACTTGCTCAGAAA
-AAATGCTAAATTTGCTCTTTTTCGTATCCACTACTACTGCTACTACTAGT
-AGAAGTTCTTCATTCGGTGGCCGGACTACTTTGAATCAAATCACATTTGT
-CGGGAAGAAGGAGGTCGTGCCTTTGCACTTCTGGTCACTCCAGAAATTGA
-AGAAATTGAGCAGCTCGAGTTTTGGAGTATTCCAGGCAACTCGGTCGTTT
-TTGAAAACCTATTCTATGAAAACTGCAAACTATGTGGCTTCATCTGGTCT
-GGCTGGAATTTTTTGTTTCAAATTTTGACCCAGTACCTTGAGAATCAACC
-AGTTTTCCACGTATGCTAAAATCCGAAAAAGTGACTCACACGAGAAAGTT
-TCAATTTCCGTGATGACGTTCGCCTGGCTCTTCAGCTCATTCTTTTGTCT
-CCAGAGCTCTGGGGAGCTGCAAATGAGTTGAGAGCAAGCACATTGCGTGA
-GCAAGATAGCTCCAAAAGATATGAAGAGAGCAGGCGGGAGATGAAATTGG
-ACGATGAAAAGTCGCCAGAAGCATAATTTTGGTGCGGCGACACCCGAATA
-ATGAGACATTTACGACTTTTTGGAACATCTTCTACGGCCAGAATGTTTCG
-TAACATTTTGGTAATTTGAGTTGTAGTTTTGAGGGGCTTTTTTCGATTTT
-TAAATTTGTATTGACTCTTATTCGCAAAAAAAGAGAACTGCTATAGCACG
-TGTAGTCAAAATGTCTTTTTGATCTTCAAAAAATGCGGGAGTTAAGACGC
-AGACATCTCATCTGATTCGCATGGCTAAGAGCGTGCTGACGTCACAATTT
-TCTGGAAAAATATTCCCGCATTTTTTGTAGATCAGGCTATGATGTGTGTG
-TTCAATGAGACAGCCTGACACGACGTGATGTAGTTCACATTTTTCGGCAG
-TTTTTTTCCTGAAAAATGTGGATTTTCGTTTTTTCTTAAGTTGTCAAATT
-ATCGAAAGCTACTAAGCTTGAGTAACTTAGGAAAAGTAGGATTTTAAATT
-GTTTTCACGGGCCTCGCAACGAAAGATCTCACTACTATCACCAGAAATCC
-AAAAAAACGAAAATATTTGTCGTGCCGAGCCCAGGCTCCGTATTTTTGAA
-GCGAAATTCCTAAACTCCCTAACCGCTGAAAATTTCTGAGTTGATTTTCC
-ATCACCTTCTATATACAGTCTTTCGACCCGAAAACGATTTGAATTCGGCT
-TTCTCCTCAAATCCTCTGTATTGCATCCTCTTTCTTAGTTGATTTATTTG
-TAGCGGATTCTTCCCCTTCCCATCCGTGGCGTTATTGTTCGGTTACGATA
-CGCTTCTTGTGAAGGTTATATGCAAACGACTACTTGCCATTCGATTCTTT
-CTCCAAAAACGGGTTATTCCATTTCCTTCAACTAAGGAGCTGTTTTTTTC
-TTGGTTTTTTGTAGAAAACCTACATTCAAAGTCGAAGTAGTGAAAGTCAA
-AAATTACCAAATTTCGCAATTTAATTTTTAATAAAATGTCGCCCGAATTA
-ACGATAAGTTAATAAGAACAAAATTCAGTTAGTCCGAGAGTCGTGATTTG
-CCGATTTAGAACAGCATTTAGCTGAAAAAAACGATTTTTTTCCAAAGTTT
-GAACTGCCACTACATTTTTCTCAAGTATTGAGAGTTTTGAATTTCCATCA
-TTTAGTTGTAACCACACTTTTCTTCCGATTCCCATAGCAAGCGAAAGTTG
-TCTTGTTTCCGAATATCTGACCTAACTTGGTTTTTTTACGACTGATGCCG
-AATTTTGAAAAGTTTATTAGAAACTTTCCACGCTCTCCCCTTTCCAACCT
-CGCAAACCCTTTTGTCTGTAGTTGGGATCTGTTGCTTTTTTGGGCAATTT
-TTTGCCAGCTTGATCTACATATCATTGCTTGATCTACATATCTTGAGCAA
-AATTCCAAAAAGTACGTTTTCTTGTAGATTAATTTGTGGGTTTTTTTTGA
-GAGTTTTGAGCTAAAACTTGCATGGCATATTTTTTTCACTGTTTTAAATC
-ATTTACAAATTATTTTTTCCTCTTTTTAGAAAAAAAAAATGTTTGTTAAA
-ATTTTGGAAAAATTTCAAAAAGGTGTTTTATCCACTTCCAAAACGTCATA
-ACTTTGCTGAAACTGGACCGGGGCAGCTAAATTTTTCGGAGTGATCATTA
-TTTTCACTCTTTTATCGAAAAATTACTATGGCATGCCAAGCCCGGGGACC
-CATTTTTTCACTTCCCTTGTAAGCCGAAGCCTTAGTCTAAGTCTAAGCCT
-ACGACTGAGCATAAGCCTCAGCCTAAGCCTAAGCGTAAGCCTCAGCCTAA
-GCCGAAGCCTAAGAATAACGGGAAACTTTTTTTGTTGCTTTTTTTTGTTT
-TTTTTCAAATGCCGAAAAATAATTGCGGCATTTGAATTATGACTTTGTTG
-TTCCTAGAGATTCTGGTTTTCAAAATAGGCAAAAATGCCATGAACCTTAA
-CGATGTTCTTTCTCCCCGCCCTTTGAACACTCTGAAGTTTCCCGCCATGT
-CAACCTTTTTTGATCGTTCGGCACGATAACGTTCTGAGTGCCGCGGTGCC
-CGTTAATTTCCATCGAATCGTTAGGTTTTCTCCTTCGATTCCTAACGATC
-AAGCCATAATTTATCCGCAAAATGGGATTTTCTCCCTTTTGTGATGATGA
-TGATGATGGCCTCCCTCTTCTCTGCGATGACAGTCGAGTGATGAATGTCT
-TCCTTCACACTTGTCCGTTTATCATTTATCACTCTGTGCTGAAAACCGGT
-CTCTCTCTTCCCCTGACCTCTTCGGCTTTGTGAAACAGTGAAAGAGAAAC
-GGAAAACAGGCGGTGTCAGATGGTTGACACGTTGATGTCGTAATCCATTT
-AGTATTAATGCTACTATGTACGCCATTTGCTATATATGCCCATATTTTCA
-ATGGCTTTGAGCACAAGCTTTCAGAATTGGCAATCAATTTCTAAAATTTT
-AAAATTTTGAAAACCAATATATGGGTGGAGCCTATTTCTTAACTGTTCCG
-TAGTTACCGAAAAAGTCGGAAAGCGCCGATTATCTAATACTTTCGAATTC
-GGCAAAACTGAAATTTCTTCAGATTTTTATGATTTTGAGAGAAAAAATTA
-TATTTCTTTGCCAAAAAACATGTATTACTTAAAATTTGTTTGTTTTATTA
-TTTGAGCTCAATAACTATCAAATTGACAAACAATTCATTGGCAAAAATGC
-CGAATATCGTAAATTTGAAAAAATCGGCAATTCCCGAATTGCTGCACACA
-TCTTGGTTTTTTGAGCTAATTAATTGAATTTTTAAGAACTTTTATTTTGG
-TAATCTAAATTTTAGTTACTGAATTCATTGCGAAAAAAATTTCTTCAGAA
-TAGGGCTTCCATGTAGGCGTCAAAAAGCTTGCCAAACCTTAAGACGACCT
-CCGCCTGCCTACCTCAATCTATGTGCTGAAACATATGCGAACTTTTTTTG
-CAATTCTTGATTTGGTTTTCATCAAATTGATAGAAATGAGAAAATTTAAA
-ATTGAAAATTTACGCACAAGTACAAAAAAGGATTCAGGCAGGCGTCAGGC
-CGTGAAACCCCGCCTGCTTACCATGGAAGCCCTACTGCAGAAAATGAGAA
-ATCTGATGTTCAAAAAAAAAAAGAAACCAGCCGTGTTTTTCCTTGAAATT
-CGAAAAGTTCCCCGATTTTCCCCTCATTTCCGGACCGTTTGTTCCCATGG
-TGGACCGGTATTTTCACCACTCCGTCAAAGGCGATTATCGGGTCTGTCTG
-TCGTCGACGACCCATCACACCAAATCGGTTGAATTGTCGCACCCCTTTTT
-TAATCGGCAATATATTTACTTTTTATTTGTAACTAAGTAGTAAACAGTAA
-TAGTTTTTGCAAGAATATGCATAACACCTTATTTCACTTGGTAAAGTAAT
-TGAACTGTTGTAATTGAGCTGAACATGATTCACCTACGAAAAAATGCCTG
-TGACCTAGGGCTTGCATGTATGCGTTAAAATGGCTGCCTGCCTGACCTGA
-AGGCAGCCTCCGCCTGCCTTTTGCCGGTTTATGCTAAAAACACGGTTTAT
-GCTACGTGAAATTATTTTTTCATTTTTAATTTGATTTTCAACTTTTGAAA
-TTTGAAAATTCACGTCAAAATGCAGAAAAGAAGGTGAGGCAGGCAGGTTT
-CAGGCAGGCGTCAGGCCCTGAATCGGCGCCTGCCTATCATGAAAACCCTA
-CTCTGAACTCGATTTCGCCCTCCAAACATCAATTTCCGTCATTCTCCTTC
-CGTCCTTTTTACCCACTTTTTTAATGAATTTGAAATGAGTAGTCGAGGGA
-AATTTAGTGAACCTACTAGAAGTCGCCACGGTTTTCAGCAGCAAATTTTT
-TAATTTCGTAGAAATATGTGCTTCTGTGTTAAAATTAATAATAGCTAAAC
-TATTGGATAATGTACTTTAAGACGTGCAATGTCACTCCATATTTTATAAA
-ATGTTGAAAATTTTGGAAGGGATCGAGGAAGTTTTGATACTTTTTAGAAA
-TCGAAAATTTTCAATTTCCGATTCCCTTCAACATTATATACCTCAACAGT
-TTAATAAGATACAAAAAATCTTCAGAGAGTCATCTGTTCGCACACAGTTT
-TACCCCTATCAAATTACAGATGTGTTGCCTTGCACATCTGTGAGAACTTC
-ACACTATTCTGCTACAACAGATTTTCGGAACAGAAGGTGTGATGTTTCTA
-CCTGACTATGAAGATTCACGTGGGCGGCAATCCAAATTTTTTGAAATTTG
-GAGATTTTCGAGTTATCCATAAAAGATTCCGTTAAAGAGAGATCACAATT
-TTTTTTGTAGATTGACAAGAAAATTACCCCAACAATACTCAAAACAATTG
-TAATTACAATTGAATTATTACTTTTCAATTCTTAATTTTTTAAGTGCTGA
-AACTTTTCTATTGACGTTAACCCCTGCAAAAATGCAAAATTGATCAACAT
-CTAGTAAATCTACTAACAAGGGAAGTCTTTGAGGGGGTCCGTAGATTTGG
-GGTTTTCATGCTAAAATTCCTACAGAAGAGTGTTAGTTATGATCTCTCCA
-AACATTTTTGCGCATTTTTAAAGTGATTTTATTCTTATTCGGGAACCTAG
-AATCATTGTCCGCACTTTTTGGAAATTTTTATTTTTTTCATTTTTGCTCA
-AAATTTCTTGATCAACTCCAAGCAAAAAAATCAAAGTTTTTCAACAAACA
-TTTTGTTAGTTGATCATTTTTCAAAATAATTTATCTCAACGAAGTTATGC
-AACTTCAAAGTTGGTTAAATATTTTGCACAAAGTTCGTGAGATGTAGATC
-ATTTCGACGGTTTACTTGCGAATAGAGAGTTAAAACTTGTGTAATGTACG
-TTTCATACATTTCTGAACAATAAAATAGCAATTTCATACATTTTTACAAA
-AATAAAAAATTTCCTATTTTTGCTTGGAGTTGATCAAGAAATTTTGAGAA
-AAAAATGAAAAAAATAAAAATTTCCAAAAAGTGCGGACAATGATTCTAGG
-TTCCCGAATAAGAATAAAATCACTTTAAAAATGCGCAAAAATGTTTGAAT
-GAGTTGTTTAAAACTTTATTCAACTTACAAAAATATTTCAAAAATAGAAG
-GAATCGAACCAAACCTTAAATATTATCAGACGCGCGCACTCCCAACTCGG
-CCACCGAGGACAATTTTCAACTCAATGTGGTGGGTGTCACATTTTCGGTG
-GTCACGCAAGCTGAGATTTGCGTGGACTGCATGGTAAGACAGTGGATTTC
-AATGGTGTTTTTAACTTTCAAAACGTCATAACTTTGCTGAAACTTGACCG
-GGGCAGCTAAATTTTTTGGAGAGATCATAACTAACACTCTTCTGTAGGAA
-TTTTAGCATGAGAACCCCAAATTTACGGACCCCCTCAAAGACTTCCCTTG
-TAAGTCAAACAAAAATTCTGTATTTTTCAGAGTACTATACATAGTATATA
-TTTCTGAAATTCTCTCAACAAAATCCTTTCCCCTTCCTCATTTTCCCACG
-TAAAGTAAAGTCAAAATACATTTTAATTACCATTAATACCTAAATGAACC
-AAACAGGTCGGTCTTGCCCTCAATTCTACCATTTAGTCTCACGGCTTTTG
-TACTTGTTCACCCACTTCCCCCATTCTATAATCCAACCACACAACTTTTG
-GCAACAAAGTGTTCAATCGAAATGGGACACTATTTGCTATTCCTATAATT
-GACAGGCTGGTGGAAGGAGGAAAGCAGCACACGACGAAAGGCATAAAACA
-ACTTGGCGTTGTGTTAATCCCACCCGTATTGCATTCTATATTAGGTCGAC
-AAACAGTTCATTCATGTCGATTTTCGATCATTTCTCAGAGTTTTGCTTCG
-AATTGTAGGTTCATGGAGTTAGCCATTCTGTCTATTTTTTCCGCTGAATT
-TTAAGATGTTTAATACTTATTTGCCACCTTTTCGACGGAATGACATGTAC
-CGGTCAAATCTTGGAATCGATCTAAGAGATGACAATTTTGAATGTATATA
-CTCAAAATGGGCTCAAATGAACGAATTTCGTAATGAATTTTTTAAAAACT
-TTTTTCAAAATTTTTTATGGTGGTTCAAAGTTTCGAAAAAATTGACCGGT
-ACATGTCATTCCGTAAAAAAAAACGCGCTTCTATCTGAAACAACAATTTT
-TTTGATAAAAACTTTCAACTACAAACTTGTTCTTTACAAAAAGATCAACA
-ATTTATTAGTTGAGCACTTTTCTGTACAAAAAATTATCCGCGCAGATATG
-ATCTACCAAAGTGAATTTGGAAAATTGGCCCGTCAATGCTTCGTTGCAGT
-GCTATTTTAGGATCTTTGAGAGCTCGCCGTGAGCTTGGCTCTGGAGATTC
-GCAGCTAAAAAGGAGTAACCGTTTCTTTAGGAGTAACCGTTTCAAGACAT
-GGGCTATCGAATGGCATAGGTCTCATATGCAAGTCCGATGGGCACCTTCT
-GACGGTTCCCTAGTCAGATAGAAGCCAAAATTTGGGCGAGGTATGCCCAT
-TGTCATTCTAACTGTCGAAAAAGTGGCCTCCGCCAAGACGTGATAACTAT
-TTCTCTCAATTACTCTGCACTCCCAATAAATCCTACACACCGTTTGAATT
-GAGTCATTCAAGTGTCAGTTGTTCAGTTTCTAGCAGTTGATACGTGTGTG
-TGTGTGGTGGTGGTCAACCAACTGTCGCCCTTTTGAACACACACACACAC
-ACATACTTTTCCTGCCATATTCCTCCCCAAGAAAGAGAGAAAAATAAGTT
-GCATCTTTTCTTTTCTATATCTCTATCCACTAACACACCCTGTTATTCGC
-ATGTTCTCTCCATTCTCCAAACAACGCAATCAGTGTCCGCCTAAATCTAC
-ATAATCGATTCAGGGGGAATTAACTGTGTAGTTTTGTAATACTTTTCCTT
-AAGGTTCTTGAAATTTTATATTTATAACCGACCGATTATGCCTAATTATA
-ATTATAATTTAGAGAATTTTTCAATTTAACAACTATTGCGATGTTTTGAA
-TTTTTGATAAAACCGGAGTATTTTTTCAAGAAATTCTGTTTAAATTAGCT
-GAAAAATTTTGATTTACTAGTTTTTGGTTTGCCTCAAAAAAAATCGGTAA
-AAATTTTTTGGGGCTTTTTTCTCAAAAAAAAAAAAAGAACGATTCAGGAG
-ATTTTTCATAACTTCGAAACTTAGTGCAAAATCTTTTACGGGGTGTCGAT
-TTTTTGATATTCGAAAAATCGGGTTATTGCTCTATTAAGAAAAATTATTT
-CCTGGACATATTTTCTGAAGAATTCCTCGTCTTTTCCCATTTTTCTACAA
-TTTTTCCTGATTTTTCATAAAATTGAAACTTTCGCTGTTCAGTTTTCCCT
-TCAAAATGAATTTTTTCGACGACGAATGTTCAGAAAGTTAACAAATAATT
-TTAAGATTTTGTCAAATTTTCACACACGTACTTTTCCACCAAAATTGACA
-AAAAACCCTAAAATTTAATTTCTAAAATTTTCAAAAAATCGTGATCCATT
-CTTCCTTATCATGTTATGTCTTGCAAGCGTTGCCTCAAAGTCATCAATCA
-GCTAGTTGTCATCAATTCAGCGATACTTAGAGATTGAAAGAATGAGTAAT
-TCATCCTTGTTTCTTCTTCATCTCCTCACTTCACTTCCAATTTTCCATCT
-GTTACCAATCAATTTGGCCTGGCGATTAGTCATCTATTTGTTCGTCAAAT
-TTGGTGCAAATTGGCTCGTGTCACTGATAAGTGGTTATTTTTTCTTTTTG
-GTTGATAAGGTTACCTGATAAGGTCATTTCCTTTTTGCGCCTTTTTTCCA
-GTAGTAATTCCTCTAATGTTCGTTTTGAAGTTACTAATCGAAGTTGTTAA
-AGTATTAGATTTTTTTAAAATCAATAGGAATGTTTTTTTAATACAGTGTT
-AACAAAATTTTATGTTTTAAAAAGTTAAAATAAATTTTAAAAAATCTCTG
-AGTTGAATTGTTAATTTTTAAAACTATAAACAGCATTGGCATTCATAAAA
-AACAAATTTCGACAAAAAATTCGTAAAAATTGCTGAAATCGCACTAAAAA
-TACTCAAAACACTGAATTTTTTGCTCATAAAATCTGGAAAATCAAGTCGT
-TTTACTTGATATTGCCATAGGAAATTACAAAAAAAAAGTGATTTTATTAA
-AGGCTGGTCAAAATTTCATATTTGAACAACGTTTTATAAAACCGCTGTCA
-GAGTAGAACAATATAGGTGTAAAATGTAGTTAAAAACTATTCTTCGATTT
-TCCTACATTTTTTTTTCTGTAAATTGAAGTTTTCTCGTAGAACAAGAAAA
-TTTAAATTTAAACCAAGTTTTTAAATTTTCAATTAAAAAAAACTACAATT
-TTCGATTTTTAATAAAACATTTTAAATCCCAATTTTTCTTTCAAACATAT
-TTTCCAATGCTGATTCTGAATCCATGAAGTCTTAACACTTCAATTTCAAC
-ATTCTGTTGCAACAAGTCGTCCCATCTGACCAATAACAAGGGCTCATCAA
-TCACTGACGAGGGCCCCCGGGCGCCGCCATCATTTTCCTCTCTTTCTCTC
-TCTCTCTCTCTCTCTCTCTCTCTCTTTGTTTCTAAAAAGAAGGAAAATGA
-GCTGCAATTTATCAAATCCACGGTCTTTTTCCCTCAAATTCTCTGCCTCT
-CTAGTCTTCTCCCTCATGGTCATTGTCGCCACATTTGTGACTCACAAAAT
-GGGCCGTATTATACAAAAATAATTAAAGTTCAATGCGTATGCGTGTGTGT
-ATTTGTTGCTGGGTGAGGGCAAATGCACATTAGCCACCCACAACAAACTT
-ACGTTTTTTTTTTTGTATTTTGCCTTTTTCTTCTTGAAGAATGGTGTCAC
-ATCACATTACGACCTTTTCTTTGTTACGGAGAAAAGAAGATTGGAGCGGA
-ACTGACTGAGGTGTGAATACTTTGTTGGTTTTTTTGGCTATACCTATTAG
-TTACCTTATTTTTGAGAAAAAAAAATTTGAAGCATGTTATTTTTCGAGTT
-GTTGGTAGGATGTTGATAATTACTGTTATCGTGATTTTCTTATTAGAAAT
-TAATTTTTATTTATTTAGTAGAATTGGGGATTTTTATTCAAATGATCCAA
-AATAATCTTTCGACACTGAAATCACGACCATTTTTGAGCCAATCAACGTT
-TTCAAACTCCGCCTACTCTGTCTGATTGGTAGGAAAAGTGGGCGGAGCAA
-ATTGCTGATTGGTTTCGAAGTTCTCGACTTAGAAATACCAGAGTTCATCA
-AAACTGAAATATTGCGTTTTTAAAGGATATATTATTATTATTATTATTTT
-CTCTCGATTTTTTTATTCTGTGGTTGCTCTGAATTTCAGATTATTCGAGA
-TAGTTTTCGATAAAGCGACAGATTGTTCAGTTTCTGAATTTTCCATAATT
-TATCCTCTAAAAGTGAAAGTCAAGGTTTCGTTCTTTGCAAAAAACTCATT
-TTTTTGAGAGTTTTCGGAATTTTGGCTCGCATCACGCTCCAATAAATTAA
-TTCAAAATTTCGGAAATTATTAACTTCTTCCATTTTATCAATACTGTGTT
-AATCTCACTTTTCTAATTTGAAACAAAAATTGAATTTTCATCGATTTCCA
-AAATACTTTACATGCTTGGCAATTGAAAATTAGTTTTGTTTTTCAAATTC
-TCAGTTTCCAGCCACTGAAAACATTGCGAGCCTCCATTGGGTCCGCTCCT
-TCCTTCCGAAACACATTTCCCAGTACTCTTTCCAATCTGGTCAACATTTG
-AAAGGCTGTTGGGGGGTCGAAAGGCAATAAACAACCGAAAAATAGTTTAT
-TCCAATGTCATCGAATCCTCCCTGGCTTCTCATATTGTTGCCAAAAATGA
-TGATGGAAATTGTTTTTCGTTTGTATACACACACATCATCCTGTGCCACA
-CCTTTTCCCCACTCTTTTTCCCGACGAGCTTTTTCATTCGGAAGGCGACA
-CAGATAGCAATTACCGACATATGGAACCAATCGTACTCTCTCCGCTGACT
-GCGACTACCTAATTAACCTTTTATTGAAAAAATGAGAGAGAGAGAGAGAG
-AGGATATGAACGGAAGAAGAAAAAGAGGCAAAGCAATTGTTTACTTGTTT
-TTCGAAACAATTCAAAATTTTGTTTGGGCTGTGCGCCTTTAAAGATGGAA
-AAAAAACGGAAATTTTCCAGCAATTCGTTAATTTTTTTGTCGGCAAATTT
-GGCAAATCGGCGAATTACCGGTTCGCCGATTTGCCAGAAATTTTCATTTT
-CGGCAACTTGCCGGTTCGCCGATTTGCCAGAATTTTTCATTTTCGGCAAT
-TTGCCGGTTTGCCGTTGCCGGAAGTGTTTAGAGGAATTGTTTATGAGACG
-GAAGCACTGTGCCTGTTTGCCAATTAAAATTGAAATTCTGAAATTTCCAA
-AAAAATGTGCACAAGCACCATTTGCCAAAAACTTTTTCAGTTGCCGGTTT
-GCCGATTCGCCGGAAAATTTAAAATCCGGCAATTTGCTAATTTGCCGGAA
-AAAATCGTCTACCGCCCACCCCTCCACCGAATTCGGAAATTTTGTAAAAA
-ATAACTTTATTTTTGGGCCAATACGATACTACTTTTCCTAAAAAGAAGCT
-GTTACAGTAATCAATGTATCATCTTTTCCATCTCGAATGGTACCTGTGTT
-TACCTTAACTGTCACATAACTGTGAAGAGTACTTGAGATGACAAGTAGTC
-TTATCAGAAAACCTCCCCGCTTACTGCTTCTCGGGTGTCGGGTTACCGTG
-TTTGCTGAACGGTTTTTCGTAGGGATTACTGTAGAGAATTGGATGAGTAG
-TTGGGATTAGGCGATTAGGGGGAAATTGGAAAACATGTCTGTGCACTCCA
-TATGTTTCTAATAAGAATCCTTGGAAATTTGCATATAACTCAAGAATGGT
-ACTGGTCCAGTTTCGTTTTGTTATCTTGATTCTTCGAAATGGTGCTCACT
-CAACTTGATTCCATCCCCAGGACGCTAGTTATTTTCGTAATCTCCGCGTT
-CGATCTCGAGCTCCTCCTCTATGGAAATGTTAATTTGTGAGGGCTATCGC
-GTCCACAGATTTATAGCGTCCGTCGTGCGGTTTCGCTGGGTTCTCGCAGC
-CACCCCCCCCCCCCCCCACTCATCAATCGCGTAAACTTTTTGTGAGCACG
-CAGCACACAATGTGCTCAGGAGGCTTCTGTCTCTTCGGAGATCCAACATG
-TGGCACCTCCTCAAAGTGTTCACTGGCCTCCTCGGCTCGGCAGTCAAATT
-TATTCATCTCTTTGGAGATTGGCTCACAATTTTTTTGATTTGAATTCAGT
-GACTATTTATCGATTTCTAGGGCTTCTATGTAGGTTGCCTGTGTGCCTGT
-CGTCTGACGTTAAGGCGGCCTCCGCCTGCCTCTCGCCTCAATCCGTGCCT
-TGTGCCAAAACATACGAATTAATTCGATTTTTATCAAATTGATAAAAATG
-AGAAAATTAAAAATTTGTAAATTCAGACAGGCCTGAGGCAGGCAGATTTC
-AGGCAGGCATCAGGCTCAGAAACCGCGCCTGTCTACCATGGAAGCCCTAC
-TGCTATGTAACGTTTGAGATATTCGGTTCAGATAAAATAAGTTGAAGTTA
-CGCGAAGAAATTCTGAATTTTGAATATTTTCCAATAGTTTCTAATAGTAT
-TTAGATGTTGTATTTAGATACTGTTGCTACAAAATTTTTAGAAAATTCCG
-TGGTAAAGTTCAAAAGACTACTCTTTCTCTGAATATTGGTTAATAATATG
-AATCCGTTCTGCTTTTTTTCCGTATTCCAATTCTTGACGACTTGATATGA
-AGCCAGCTCAAATAATAGGCCTCCCACGTAGTGTCAGGCTGTCCCAATAC
-GGTTTGATCGACAAAAAATGCTGGAGTGTTATGCCCTTCAAAATGTGACG
-TAAGCGCGCTCTTAACCATGCAAAATCAGTTGAGAACTCTGCGTCTCAAC
-TCCCGCATTTTTTGTAGATCTACGTAGATCAAGCCGAAAGGATACACTCT
-GTCACCACGTGGCCTCCTAAGGACTATTTTGCAAGGACCTAATTTTCTGA
-ACCTTCACAAATTGATCTGCACCGTTTGAGATCGATTGAAAAGTTCTAAA
-ATTTTCTGTCCTGTATACTTTTTTCTGTACATAAGTCCTACCGAAAGGGT
-CCCCCGCGGTAATAATTACCCGTCAAAACAATGTGTACTACTAGCCGAGA
-TATGAGTTGTTATTGTTGTCATAATACAACAAGATTTGGATCACCGCCCA
-ATTTTCTTGTCAAAAAGTTCCGCTTATCTCGTTTTCTGCTAATTAGAGAA
-TACTCTATGGGAATTGGTTGATCCACTCCATTAGTGAATGTTCCCCCAAT
-AACCATGGAGCTGTTAGAACAAAGACGAAAACCCGCCAGAAGACACACCT
-TCTTGAGAGCAGGTATTAGAAAAATGAATGAAAGGAATTGGGAGGGGAAC
-CCGCGGTGGCCGAGACTTCCCACTTGACCCGATTTGTGCACATACGCAAT
-ATCGATGAGGAGTGGTGGTCCATTCGATACAGTCTTGCACCATGTTTGTC
-GAAATGCTATTTGGTTGGCTGGCAGATGTTTTTGGTCCAATTTTCTTGTC
-AAATTTTGTCTTGATCTGACAGATTTTAGGATTCTTGGAATTCGACTCTT
-CACCGAAAAAATATAATTTTTCGGAGTTTGTTCAATTTTTCAGTATCCTG
-ATTGGAACATTTTAATGTTTTACAAAATTCGATTCTAAATTTTAAAGCAC
-ATTTTGACCTAGTAGGACTTTCGGAATTTTGTAGCCTTTATAAAAAATCG
-GTGGCCAAGTTTTCTATAATTTTTTTACGTTTTGAAATTGCCTTTTTATG
-AATTTTAAAATGTGGAACATTTTTTGAATGACTTAGTTTTTCAAATTCCA
-CGTAGTGTCAGAGTGTCCCATACCAGTTTAATCGACGTTGATCTACAAAA
-ATCGCGGGAACTCTGACGCAGAGCTCGCAACTGATTTTGCAGGGTTAAGA
-CTTGCTGACGGCACATTTTTTGGGAAAATTTTCCGCATTTTTTTGTAGAT
-CAAACAAATTTCATATTGCCTCGATTTGTTCGCTATAGTTGTCTAGTTTT
-GAAATCGTTGGAATTTCTTGAAATTCGAGTTCTTGAAACATTTAGGTTTT
-CACCTAGTTTTCTCTGCGTGTTTTTTGTGTTGAAAAAACGGTTCTCAGAA
-ATTTGACTGCTTTGAAAATTTCGAATTTCATCTCCAAAAAAAAGTGAACA
-ATTCGTATTTTTCTAGAATTTTTGGAAATCTCTTTAAAATGAGTTTTTCT
-GAAACATTTTAATCTTGAAATAGTCAGAGTTACGTCAAATTCTATTTTTT
-GAGGAATTTATTTTTTGTGAGAAGAAAACAACAAATCCGCAATTTTTTTC
-CGAATAATTAACCAATCCAAGATCCCCCCTCAAACCGGATGGCATTTATT
-CGGATCCCGGCAGGTGTTCGAATGAGATATGTATCCATTAACACATTGTG
-CATACACATAGACACATTGTCAACGTATGCCGTACACAACAAAACAACTG
-CGCTCGTTCGCACCTCAATCCTTTGATGTTCTCCGCCGGGGGCTCCTGTA
-AGGTCAGGAGTTTTCTAAAAATGTTGCCTTCTTCTCCGTCTTCTTCCTCT
-TCATCATCGAATATTCCAGAGGGGGGCCGACACGCTTCACTTGATTTTCG
-ATGGCAATTTGTTTGAAGAATTCAAGAATTCGAAGAATTTATTTGGAAAC
-TCACTACTCTCTTTTTTACGTTTACATCCAACTTTTGGCACTTAGGCGCC
-TCCAACTGCAACCATATGGTGCTCAATGAGCCGAGAGGGATCATCTGTGA
-ATTTGGTGTTTTTTTCTCAATTGGTTGCCTATTTGATTGGAGAGAGATTA
-ATTTGCATACAATTACCTCTATTTGGCTCAGGGGTGGACGGATATTGCCG
-TTCGGCATTTTTTGCCGACAAGTACGGCAAATCGGCAATTCGCCGATTTG
-CCGGATTGCCGGAAATCTTGATTTTCGGCAAACCGGCAAACATCAGCGTA
-CTATTTTACTATTCAAAATAAATGTAGGAACATTCATAGGATGCGTACAA
-TTTTGCCGATAAAATTTAAATTCTGAAGCTTCAAAAAAAATGTGCAAAAC
-CACAATTTGCCGAAAATTCTAGCCGATTTCAATTCCGGCAATTTTTTGCC
-GAAAAAAATTGCCGCCCACCCCTGATTTATATTCAGTCTGTTACCGATTC
-TAGTGAGGGGTTTCCAGCCTTTGCATGAATAGGTGTCTGCTACATTAATT
-GCGCAATCCACATTGATACAGAGCAACCTCAATTGTTGTTTTTTCTGTGG
-CCCGTTCTGCTCGTTACACCTATAAAAAGGTGGTCAAACAAGTCGTAAAA
-TTTGGGTCATGAGATGGTCCCTGGGTTAATTGGAGAAGTGCCGTCATTGA
-GAGAGAGAGAGCCAATTACGTATGAGGTCTGCTCTGCTCTCGGGAAGACT
-CTATAACCCTTCGTTTTTGGCGGGAGATATGAGATATTTTGCTGTAATTA
-TCGCACTTGTTTTGGGTATTCTCTTTTTGTATGATTTACCTAAAATTTTT
-GAGCAGTTGTGATTATCCTATTTTGTTTCGAGAACCTAGAAATGTTTCCT
-ATCATAGTAACCGTTTAACTCTGTGAGTATAGTTTTACTTTAAGTTGCTC
-CGTTTTTTATTTGACTAGCACAGCTTTTTTACATTGCTCCGGTTTTGGCC
-AAAGGTTTTCTGTTTTTTTTTTGCAGTTCTGACTTATTCTGGCCTGCTTT
-ACCCAGCTAAGCCTAGGCCCGGTTACAGTCCATAAGACAACATTTTTGAA
-CTCAATAATTGCCGAATTGCCAAAATGCCAAATTTTCGATTGCTGCCCGT
-CTGAGTAAGTCTGAAACAGTTTGTGTGAAATTGAGCCGGAAACTACTCGG
-AGTGATGTGGCCACTTCCCTATTTAGTTTCTCGGTTGATTTTCACACTTC
-CCGCCGAGAGCCCGAAGCATCTGCCAGCTGAACGGTTTCCGTCGTTTTTC
-ATGTCTATCGCTAAAATGTGCGCGTTACACACACATAAACATCACTTCTC
-TCATAAAGTGATGGATAATTCGAGTGGATTGCATCTGACACCACACTTCC
-GATAATCGCTTCGTCGTCTTGTCATCATCGTCGTTTTCTTCGTCTTGTTG
-TCGTCCGGTCCCCACACACACATCAAAACGGCTACTTCCGACGTGTCGGT
-GGTTTGTGTGTGTGTCAAACGGCACCACCACAAGTGGTTGCCCTCGCCCG
-TGTGCTAATTCGCATTTTGTCTTGTTAATCACGCAATAGTGATAACAATC
-GCTTCCGGACCATTGCTAATATAATATATTGGCTACCGCGGGCATGTCTT
-GGCAATAACCTTGATGTCAAGTTTTATCGTTAAAATGTGAAGCTGTATGA
-TTGCGAAAAATTTGAAGTTTTCCCATTCAAATTGTAGGCATATTTGAAAA
-ATTTCTGAAGATTTATATCTGTCGTAAGTGGAACGGTTTATTTGGTTTCT
-TGGGTCTCGTCGCGAAAAGCTTTCACTATGGTTTGAAGCACGACTGGGCG
-ACAATCGAAGTCGAAGTTCGGCAATTCGATAATTCGGCAATTATCGAGTT
-CAAGATTTTCGAAAGAAAAACTCAAAAAATAATTTTGAAATCTATTTATT
-AGTTCTGGACACGCGGAGTCAGAAAGTCCCATTTCGCTTTGATCTACGAA
-AAATGCGGGAGTTGAGACGCAGACATCTCAACTGATTTCGCATGGTTAAG
-AGTGTGCTGACGTCACAATTGTTCTGGAAAAAAATTCCCGCATTTTTTGT
-AGATCAAACCGTAATGGGATAGCCTGGACGTAGAACTCGCCAAATCGTAG
-ATATATGCATAATGAAAACTCTAGAGTTAACTCTGCCACCCTCATAAAGT
-GAGTTAGAAACATTTCTGCTCTGAGGAACTATAGAACCCCCTTTCAAGTC
-GATCGTCAGCAAATTCTAGAAAGATCTGACAGTGGCCGATTTTTTAATGT
-TTCTAGGCCACGTAAAAAAGCTGATGTCTTGTTACTTTTCAATTCGAAAA
-TCCCTTTTTTTAATTTTTCGGCAGCACCCGGTCCGAGCCAACATCTTCCT
-AAACACTTCAAAACCCCGCCCCCTTCTGCCCTCCCGGGTGTCTCCGTGTT
-GTTCAGGGTGTTGTCCACCCCCTAGACACCCAACTGACCATTCACCCGTC
-TCCTCCTCCCCCTCTACAACAACCACCACCACCTGATCCATTCCATTATA
-ATGATATTCCGCATACTTGTCATACAGAGAATACCCGGTTTGCTGCTGCC
-AAACGGTTTTCATTTATTCCATTTCTCACTCCTTGATTGTTGTCAATTCT
-TCGATTCGATGCGGCAAAACTAGCGCCAGTGGGGAAATTGCTTTAATAGT
-AAACAATTTTTTTTTAAATTTCCTATATTTTTTGTATAAGATTTTCTTTT
-TTAATTGCAAATCCCATGGGAAAGTCTCAAATTGCATAAAATTCCAATTT
-GAATTCCCTCCAAGATTTCAATGTTCGATGGAGCGCACTTGAATTATTAT
-AATTTTTATCAATGAATTTTTTTATCATCTCTGACTGATTTTTCACGATT
-TTTTGTGTAGTTTTAGAGGAAATTTACTGAAAAATCCAAGTTAAATGTAA
-ATTTCCGATTTTTATACAATTTTTGGACTACTTTCCCCGCCGCCACCGCT
-AAAAATCCCAATTTCCTGCAAGTTTTCACCTGCTCTGACTCATTTCCGCG
-AGCGCGCGCGCTCGTACTTTTTATCTTTTACTATTTATTTATCTCCTCCA
-AAAAAAAATCCCGTTAATTTTTTTTCCCTTACAATTTCTCATAATTTACT
-CATTTAGTTTGGCTTAAAAAATGCTAAATTAAATTTTTTTTTCATTTCCA
-GATCACATGACACAACGAAAATGAGGAGAAAAATGAAGTTATTCCTATTT
-TTATTATTAGTAATTAATATATGTCGGTCGGCCGCTGCTAACGGTGACGA
-ATGCCCGAAATTGTGAGTTTTTCGCTTAAAAATCAGATTTTTTTCGAATT
-TACTGTGAAAAAGCGGGGGTTTTGCCTGAATTTTCACTTAAAACTGCTTT
-TTTTTGCTAAAATCCCGAATTTTTCAGAGAAAAATAATTCAAACTCCATT
-TTTCAGCTGTAAATGTGCTCCGGATCCGGTGCAGCCGACGTCTAAACTCC
-TATTATGCGACTATTCTTCGAAAAACACGACAATTACACCTATTGCGTCG
-TCGAATTATGATCAGGTTGCTAATATTCGGTGAGGTTTTTTGATTTTTGA
-ATGAAAAATTTGAGAAATTTTTAAAAATGGGAAAAAATGTGATTTTTAAA
-TCAAGATATCGGAAAATACGAAAAAATTTCCAAGAAAATGGTGGTTTTTA
-TCGAAAAAATGTTAAAAATGCATAGAAAATTTGGATTTTCGAGTTCGAAA
-TTTTCTGAAAACAAAAAAAAAAGTTTTTTTTTACACTAAAACATTAAAAT
-TGGATTTTTTTTTCCGAAAAACATAATTTTTCAATTTCTAACAGTAAAAA
-GCTCACAAAATTCCTTGAAAATTGACAAATTTAGTATTTTTTACACGAAA
-AATGCATTAAAATTGAATTTTTAAAACAATTTAAACTTAAAATAAAATTT
-TCATTTATTCTACACGGTAAATGTATTAAAATAATTAAAACTTCGAAATT
-TTAAATTAGAAAAAATCAAATTTCCTCCTTATTCTCAATTTTTTTTTACA
-GCAAAATTTCAGTTGAATTTTCCCATAATTTTGAATTAAAAATGTGTTTT
-ATTCCAAAAAAAAACTATTTTACAACAAAAAACTAGATTTTTTCCCAATT
-TTCTATGAAAAATTTAATTTACCAATAACTTATTTTCTTTTTCCAGATCA
-CTATTCATATCTTGTGATAATAATAATTTCCAATTTCCGGATGCCTACTT
-CAAGTCGTTAACCGCGTTGCATCATCTGCGGATAGTGGTGAGTTTATTAT
-ATTATCAGCTGTTCTCTACAGAACATCTGCTTTTTGCGTGTAAATTTAGA
-GGTCAATTTTCGGAAAAATTGGAAAAATTGGCCTAAATCTCAATTTGAAG
-TAGATTTTCACGTGTTCAAAAATGTTCAAAAAATTCAATCAAAAATTCGA
-TTTTTGGAATACTTCAAAAAAATTTAATTTTCTTCGAGAAAACCGGTAAA
-TTACAAAAAAAATTCGTTGGCGATTTTTTTCTGTAGTTTTCCAGAAAAAC
-AAACGAAAATTTTAATTTTTAATTTTTAAATTTTCCAAAAAAAATTTTTA
-AAAATTCATAAATATGTCCATTTTAATTTTAAAAATATCGGAAAATATTC
-AAAAAATGAACTTTTCTATCGAAAATTTAACAAGAAAAAATTACGAAAAG
-TTCATTCAAAAAATTAAAATTCTTCTATATCTGAGGAAGGCTAACAGTAA
-TTTTTTCCCATTTTTTGACTCTTTGAGCAAATAACCGTATCACTAATTAC
-CTTAACCATCAAAAAAGAAAGGTGTGCCTGTCTTCTATTCATCCTCCTCT
-CGACACCAAATTCTTAAGAAGAGCCCCCCACTCGGATGTCTCTAATTAGG
-CACAAATGTTACGTCATTTTGTCATTTGTACGGCCACAGATGACCTCCGG
-TGTGCTTGGAGGACTGCGAGAGAGGAGGATTAAGGGGATTTTTATGTCCT
-ACAATTGATTTTTTTAGGTCAAAAGTAGGGATTTTAAGGCCAAAAATAGA
-GATTTTTTAGGTCAAAAGTAGGGATTTTAAAGCAAAAAAAAAAAATTTTC
-GGCCAAAACAGTGGTTTTTAAGGCCAAAAAATTTAATTTTTCCGTTTATG
-ACACCTAAAATTGGGGTGAAATTTTTTTTTCGGATAGAAATCTAAAATTG
-CAATTGTTAATTATTCCAACATTTTTTTTTGCATTAAACGTTATTGTAAA
-AACATTGAAAATCACTTGATTTATCCGAAAATTTCATTTATTTCAGATAA
-ATATTGTTTAATAAAAAATGTGTTAAAAAACATGGTGCATAGATATATAG
-ATAATTTTGTAGAATAATTGAAAATTGCAATTTTTAACTTCCTACCCGAG
-TAAACAGAATTTAAATCCAATTTTAGGTGTCATAAACGGAAAAATCCCAA
-TTTTTGGCCTTAAAAAATCCCAATTTTTCGGCCTAAAACTCCCTAATTTT
-GGCCTAAATCACCCTATTTTTAGCCTAAAAAAGTCCCCTGTTTTTCCATT
-TTCCCCAGGAACTCGTAGAAGAACATGTGTTAGGCGTGAAGAGGTTAAGC
-CGATTAGCCATGTAATATTCAATACTTGAGTATAGAAGGGCCAGAAGCAG
-CAGCAGCAGGGGGTGCTCCAAGAGCACCACCTCAACAGATGTATAAAGTG
-GTTTTCGAGTAGATTTGTGGTTTTGCACACGGTGGAAGAAATCTGAAATT
-TGAATTTTTTAAAGCCATTTTTGTGCTGAAAAATGTACAGAATAACCGAA
-ATTTCACCACCCTTTAAGGTACGGGAAATCTCCGGGAAAAAGGCTCAAAA
-ATTGCATAAAAATGGAGATTTTAAAGCTAAAAATAGCTATTTTAACAAGT
-TTTTTTGCAGGGATGCGAGACCACACATTTCTCTGTGAAATTGTTCGAAG
-ATTTGGCCGCTTTGAGAAGATTGGAACTCGATCAGGTACATTTTTCTTGG
-AAAATCTAGAAAATTTTGCTGAAATTGGCTCAGAAATGTCCTAAATAGTA
-GAATTTTTCATTAAAAAGCCTCTCAAAACGGCTTAAAATTAAGTAAAAAT
-CGACATTTTTTCACAGATCTCCACCGCCTCAACCTCTTTCGAAATGACCG
-AAGACGTCCTAATGCCGTTGGCTCGTCTCGAAAAGTTTTCCCTCACGAGA
-TCACGGAATATCGAGCTTCCACAGCGACTTTTGTGCTCTCTGCCGCATTT
-ACAGGTATATTTTTGGGTAATTGATAATTCGCCAAAAAGAACAGCAGCCG
-AAAACTCAAATTTTTCACGAAATTTGCCGAAAAACTAGATTTGTAAAATA
-AAAAGAATGCAAGAATTTTTAGCTTAAAAATCTCAATTTTGAACGATTTT
-TAAAGCAATTTCAGTATGAAAAATCCAGATATTTTTTGGGTAAAAATTTG
-GTGAAAACGCGTTAAAATCTGCATTTTTGAACGAAATTCGCCAAAAATCA
-AGACTTTTGTAGTGCATTTTACTGTAAAAATGTATACCTATTTTCTATTT
-TTATGCGTACTGCGCAATATATTTGACGCGCAAAATACCTCGCAGCGAAA
-ACTACTCTTCAAATGACTACTGTAGCGCTTGTGTCGATTTACGGGATCGA
-TTGATAGAATATCAAAATTAGAAATAAATGGGAAACTACTGCGAAAACAA
-AAATTTATTTCAAAAATTGAGTCCGTAAATCGACACTACAGTAGCCATCT
-AAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATGTGT
-TGCGCAGTATGCATTCCCATCTTGTTCTCTACATTCAATTACCACCACAT
-CTCACAGAGAAGGAATTAGTTGTTTATTAGTACGTGGGGGGGGGGGGGCT
-TTAAAGCTTACTACTTCTTCTTTCTTTCCACTTTCTGACGTTCAACCATC
-TGGTATTCCTGGCGGCGGGGCAATTGAAAATGAGAACAAAAGGACATCGA
-TGGAGGGAGGAGGATTGAGAGTTTGGAAATTGTGAAGAATGCGCGCGGAA
-GGAGGAGGTCAAATATCACAAGCGCCGGAAGTTGTTGTCAGCCAGAAGCA
-ATAAAGGCCTAATTATGATGATGATGAAGAACCTCCCTGAAAGAGAATAG
-CGAAAATGTGAAGTTTCCATCTCAAGGGAGCGATTTTTTAGTGATCATGG
-AGTCTTGAAGTGTGCACATAGTCTACGTGCCCCACAAGAGCCTATGCCTG
-CCTTATGCCTACTCACATGCTCACAGCCAAACTCTTTCGAAATCAGAATT
-CTACATTGTAGAATCTACAACACTGAAGTTTCTGCCATAACGTTGAAAAT
-AGGCACCTACGCCTGAATACGTGCCTGATCAACATGGATGCCATATAGTC
-CAGGCTGTATAGTCGTAAAACAGGGATTTTTTAGGCTCATGGGTTTTTGT
-CGGAAAAAATCGAACATTGAGAAAACCAGAAATTTTTCAAATTTTCGTAT
-ACTATTCCACGAATCGTTTCTCCCGTTTATCGAATCTCCACGTCGCACTG
-TAATTTTTCAAGTATCGTTAGTCCATTCGCCCGAGAAACTCCACAGTTAC
-AAATGCTTTGCAAGCATTTTCAAGAAACCATGGTTCCTGGCATGTTTTGG
-CGCATTCAATAATGCCGCTAATAATAATAATAATGCCTCCTATTATGATG
-TCGCGTTGTCATCGTTTGCTGCTGCTCCGTCAGATACTTTATGGGGTTGT
-TGTTTTCTCCCTCCGCATCAAACGACGTTCCTCTCTTCAAAATGATGATG
-GATATACATATATCTATGTTTATAGAAGAATTGAACCCCACACTTTACAT
-ATGAATAGATGGGGACCTTGTTACCTTGACTATCGGGAAGAGATTGAAGG
-TTCCAAAGACGGCTGGCTGTGGCTCATTAGGCTAAATGATGCGTGATATT
-ATTCGCTCTACGGCACCTCTATGATCCAGGAATAGCAGTCACTGTCAACA
-AGAGTCACCTCACGGCAACAATACTCCGCTAATTACGGTTTGCGGCAAAT
-CCCAGAATTTATTTGAAATTCTAACTGGGTGTTGCAGATGGGTCGAGGAA
-ATATGATAGCAATAATTATTGTTACGTGGCAATTGTAATCCGTCAGATAT
-CGTTTCGAGACCTGCTGACTCAAGAATGTGAAAATGGACAAATTTGGAAA
-ATAGGTAGCGGAAAATTTTCGCAAGTTTTGAAAATTTCGGTCATGATACG
-ATACGAACTCCTTGATTTTCACAGCCCGACAAGCCGTACGCGTACGCAAT
-TTGTCTACCGTATACCTGAACGTTCAGGCTCGTCTATCTCGAAAACAGTT
-GGTCCAGCCTTTTTGTGGGGCATATAAAAAAGGTCAGAACATAAATTCTA
-AAATTTTTTGGACCATAGCTTGTTTCGTTATCACGCGCCCAAACCTGATC
-TACACTCAAATTATCAGTAGAGCGCATTTGCATGGATGTACCACTTGCCG
-GGCCGTGATTTTGAATGGAATATTAAATTCCACGTCACTCTAGTGAATCT
-CCGCTTCTCAATATGCTTCATAATTCATCAAATTCAATTCATTTTCGGAT
-AAGCCAGTTGTAAACAGTTGTGTGTGTGTGAGTGAGCTCATCCTTCATAA
-AATGAATAGAGATAGAACACTGACACTCTCTCAAAGACAAGAGGAATTAA
-TAAATATGAGAGCTCATTAGCTGCTCTTCTCGTGACTACTAATTAGGAGG
-GTGGTACATGAAACAGTGTATGTGTAAAGGGATCCCCGCCGCCGCCGCCG
-CCAATGTCTTTCGGTGTATGGCAATATCCGAGTGGTGTTCTCATTTTGAA
-GAGAGTATTAGGATGTAACGTATCAACTGGAGAGAGATAGTTCAAAGATT
-GGGGATTTGAGATATTTTAGGTGTCGAAATGGATGAAATATAAGCATAGG
-GAGGAAATAAATAGAAAACGATATACTTAAATAGCAATAGTTATTTGAGT
-TCTTACTGTAGTTTTCGCTAAGAGATATCGCGCGTCAAATAAAATGCTCT
-ACGTACGCATTCTCATGATTTATTGTTCCCGTAATATAAACATAGCAAAC
-ATTTTTAATGTTTAAATATTCCTCAATGCTATTGAAATTCAAATTAGTAC
-AAAGAAAGCAATTTTTCGATTTTTTTAACGAGAAAACTAAGTTTTCATCA
-AAAAATATGTAGATTTTGATGAAAATAATATGACAATTTATTTAAACCTA
-TATATTTTTTTGTCCAAAACAACTTTACGAAAAAAATTTTTTTTTAAATA
-AAATTATTGGATTTTTCGTCAACTTTACGATAAATTCCGAAAAATTAACA
-ATAAATATAGGAGAAAAAAATCCGAAATTAACGAAATCCCCTGTTCCAGG
-TTCTGAATATCTCGTCAAATGAGCTTCCATCACTGCGAAGAGAGGAATCG
-TGTGTCGCTCAGCAGCTTCTGATCGTCGATTTGTCTAGAAATCGGCTCAC
-CAACATCGAGTAAGGGATTTTCCGGATATTTTATAATTTTGATCTTTAAA
-AATTTCAAAGTTTGTGAAAATGTGAAAATCTAAAAATGTGGAACAAATAT
-TGGTTTTATCTATTTAATACCCCAAAACTTTGAGATTTTTCCGTTGAAAA
-ATCGAAAATTCGAAAATTATCTCAAAAATTTCAGGCAATTCCTACGTGGC
-ATCCCGGCAATCCGGCAAATTTCGGTGGCTTACAACTCGATCGCCGAGCT
-CGATTTATCGCTGGCAACTCCATTTCTACAACAACTCGATGCTGAAGCCA
-ATCGAATCGTCGACTTGACGTCACTTCCAGGCACTGTTGTACACGTGAAT
-TTGGCTGGAAACGCGCTGAAAAGGGTGCCGGATGCGGTAGCCGAGTTGGC
-GAGTCTTGTGGCGTTAAATGTGTCGAGAAATGAGATTGAAGCCGGAAATT
-CGTCGGTTTTTTGTGGGTTTTCGGATTTTTTTTTGGAAATTTGAAATTCG
-GAAAAAATTCAATTTTTACATACAATTTTGCGTATTTTGATCATATTTGT
-TTTAAAAATCGAGAAATTTAAAAAAAATCAAATTTCGCTTATTTTCATTG
-GAGAATACATGAGAAAAATATTTTTGTTTCGAAAAAGAAAAATAGCCAAA
-ATTTAATGCTATTTTTTCGAAAAATTTCGATTTTAATTTTTGAAAAAGTA
-TTGAATAATTTCATCAAATTTGTTTTATTTTGATGAGAAAATACGTGAAA
-AATGGAAAAAAAATATGAAAATCTTTAAAACAAAAAAATAATCAGATAAT
-TATGCAATTTGGCCTGAATTTTCAAAAAAAAAACTTGGATTTTCGAAAAT
-TTCATCAAATTTTGTGTATTTTCATGCAAAAAAAGATAGGAATTTCCAAT
-TTTTGACCTTAATTGCAAAGAAAAATTCCTAAAAAATTGTAACGTTTCAA
-AATCTCGATTTTCTTCTGAAATTCTCAAAATCTTCATATTTTTCCAGCTT
-CCCCAGAACTCGAAATGCTCGACGCCTCTTACAACAAATTGGACAGTCTG
-CCCGTCGAATGGCTTCAAAAATGCGAAAAACGCATTGCTCACCTCCATTT
-GGAGCACAATTCGATTGAGCAGTTGACTGGTGGAGTGCTGGCGAATGCGA
-CTAATTTACAGACGGTTCGTAGACTTGTTTTTTTTTTTTTTTGAAAAAAA
-ACACGCTGAAAAAATCTAATAAAACCCAAAAATTTGCATTTTTGTTTAAA
-AAATATGAAAAATTGTTCAAATTCCTAGTTTTCAATATTTTCAACAAAAA
-AAAATTCTAGAGCTTCCATGGTAGGCAGGCGCGGTTTCAGGGCCTGACGC
-CGACCTTTCGCCTCTTTTTTGCATTTTTACGGGAATTTTCAAATTTCTAA
-TTTTCCCCATTTCTATCAAATTATTGAAAATCAAATTAAAAACGCGAATC
-GCGTATTGAGGCGAGAGGCACGCAGAGGTTGCCTTAAGGTCAGACAGGCA
-AGCTTTTTAACGCCTAACGTAATTTTAAAACCTGAAACATTAGAAACTTC
-CACACGTTTGTAATTTCACTGAATTTTACTGCACCTCTTCATAAATTCAA
-TGTATTTAGATAGTGTAATTTTTAAAGGTGGAGTGCCGAAATTAAAGACT
-TTGCTTTTTTAGACCAAAATTGGTCCTAAATAACCGAATTTCGTAATGAG
-ACTTTCTGAAAATTTCTCAAAAAAAAGTTATGGCGGTTCAAAGTTCGGGA
-AAATAAGGTCAATTTTCAGCTAAAATCAAAATTTTTAAAATTTTTTATTT
-ATCACTTTTTGATAAATATTGTGGTCTTTGATTAGGCGGGGCACCAATAA
-AAGTTACATTTTGTGCCCCACTGACCATGAATGTATTTAAATCAACGAAT
-AAACGCCTAATCAAAGTATTTATTAAAAAGTGATAAATATAAAATTTAAA
-AATTTTGATTTTAGCAGAAAATGGGCTTTTTTTTCTCAAACTTTGAACCG
-CCATAACTTTTTTTTTGAGAAATGTTCATTACGAAATTCGGTAGTTTTGG
-ACCAATTTTGGTCTAAAAAAGCAAAGTCTCAAACTTCGGTACTCCACCTT
-TAAAGAACAGTGTAATTTTTTTCTATTTTCCAATCAGTGCAACTCTAATA
-GCAACTCTAAACTTATTTCAATAAACTCTAGGCACAGTATTTTGAATAGG
-CGATCGCGTGACAGTTTTAACCAAACATAGTCATGATGACCTTTTGTCCT
-TACAGAATCTTCTCAAGTTCATGCACACACAGGTGTCATTTACTCTGTCA
-AGTATTGTATAAGTGTGATCCCGAGAGTATTATAAATGGTAGTTAGACCA
-CCCTTATGGTTAAGTTGTTCGTATAATTGTAGGGGTGGGGATCTTACCAC
-ATTTATACGGCCCCCCTCCTATTGTATTGTATTGTTGCCACCAGTCGTCT
-TGAGAATCTCTTTCAATCCGGGGTGACAGAAGGTGTCATATTGTCGGAAT
-GTGTAATAGGTGGGTCTCGAATGGATATCACTAACAGCTGTGAAGGGATC
-CGAGAAGGGTTTTCGGTCTTTCTAGGGGTTTAACTTTCCGCTGTCAATAT
-TATTAATCTTACAAGGAAAGGGTTTTAGTTTACCGTCAGACTTTAAAACG
-AGACATGTGTCATTTGAAAGTGTTCCATAAGTGTATGTCACTCCAAAATT
-TCAAGCGGCAAAGCTCCAGTCTCAAACCCTCTAGCATCGATCTGAAAACG
-TTTCAGTGCATTTTTCACTACTTTGAGGCAAGTAGAATTTCTCCAAAATG
-TTTTTTTTGCAAATCTTCAATGTTTTTCAGAACGTTTAAAAGAAGGAAAA
-CAATCTGGAAAATTTTTGGAAAATTTTAAATTTTTTGAAAAAAATCTGAA
-ATTTCTTGGACCTGGTGGCGTGAAGAAATGTTCAGATTTTTTTCAAAAAG
-CTTAAAAATTTTCCAAAAATCTCCCAGATTGTTTTCCTACTTTTAAATGT
-TCTGAAAAACATTGAAATTTTGCATGTTAGTACGATTTGATAATCGTGTT
-ATAATTACATTACACATACATAATAATCAATTGAAATATACAATTCTTAA
-TTATAACCTGAAATTGAGATTAGATACCTTAGACAATACAACAAATAAGA
-ATGTGATCGATTCAGCAGACCCCTATTTGTGAAAAATGCCTTCTAAATTT
-TATTTTACACTTCTCCTAGTAGATGAACAGCACCTGCCAATAATTTCATT
-GACAGCCGGATGGTTTTTGGCTCCTCTAAGACAGTATAATCCCGTCTCCC
-CCGGGGGGAAGTGGTGTCAAATTGCTTTGCGGAGCAGGTGCTTTTTTCTG
-AATCGAATTGGCTTATTGGTGACGGAAAAACCCCTAATAGAATTGATACA
-ATTTGGTTTTCAAGAGGATTTGGGGAAGGGTTTAGAGGGTAATTGAAACT
-GAGTAGATCTTCGTCTGTCGTGGAGATCAGAAGATTGAGGGAAGTACTGG
-GTTTAAGGGGGTCAAGGAGTACTGTAGCGCATTTCGAATACTACTTTAGA
-TAGTTTAGGTATTATATCAATAGGATAATATATTATCAAGTTGCACCAAA
-ATTGGAGATTCTAGTAGTGCATTTTCTTTATATGCTAGGTATGTATAAGT
-TTCTAATAAGTGTATATACCTACCATGTACCTAGGGGGAGTAGAGTTTGT
-GGGTATTTTGCTTAAATAGACTAAAACGTGTCCAAAACCACCGAATTTCA
-AAATGAGACTTCACAAAAAATTTCCAAAATTTTTTTTATGGAAAAAAGAG
-CAAAATTTAACTAAAATCCGAAATTTCGCACAGTTTTCTTTGTCACAGCC
-GCTGGATTTGAATTTTTCTGAAATTATCACCCTTTAATCCTTATTTTAAT
-AATTTATCTCGCGGAAATTCGTTGATTGAGACAACTTTTAGGCCGATAGG
-CATCCCATCTTGATCATTTTTGGATGCCTATCGGCCTAAAAGTTTTTTAA
-TTTCAGAAAAACTAAAATCCAGCTGCTGTGACAAAGAAAAGTGTGCGAAA
-TTCCAGATTTTAGCAAAATTTGACTCTTTTTTTTCTCGAAATTTTGACTC
-GCCATAAAAATTTTTGGAAATTTTTTGTGAAGTCTCATTATTAAATTCGG
-TGGTTTTGTACCAGTTTTAGTCTATTTAAGCAAAATACCCACAAACTATT
-ACACTTTACTTTAACAAGACACACAATAATTCACAAATGGTGTAGTATCA
-TGCCGGAATTTATATAGGATTGATTCTTGAAGAACGAAATTTTAAATAGA
-TTATTGCAGACTATGTAACACTATTTGTATAAACAATTAACATAGTGTAT
-TGAATAATGACTTTATTGAAATTAATACAGTTTTTGATATACCCATCTTC
-TATTAGTATATCATGCAATACTAATAGGTAATATGCAATATCACTTTAAT
-TGTTATTTCCCATGCGTCGTGTTTATACAAATGCTTTATATACTCGAATA
-GTCTATAATAATCCAATTAAACTCGAGAATCCCAATACAGAATATAGTGT
-TTACCAAAAACACTTGTGTTATTATTCTAATATACATGCACACACACACC
-CACACACAGGTTTGACACCAGTTCTACTAATATTTGCATAATACCATTGA
-GATACCTGAAGTACCCTATAGATATGCACGGGATTCGTTTCGGGCACTGC
-CACGGAAAATATTGAAAAAGTGTGGTAAATTTACGAAAAACAACAAAAAA
-AATGCGATTTTCCAGAGAAATACGAAAAAAAAGAAAAAAATATTTAGAAA
-ATTAACAACAAAAAAAAAAATTTTTTTTTATTAAATAATAAAATGTGTTC
-ATTCTGTTTTTCCCCTTTCAGTTAAACTAGGGCTTCCATGGTAGGCAGGC
-GCGATTTCAGGGCCTGCCTGAAACCTGCCTGCTTCACGCCGGCCTCAGGT
-CGCCTTAAGACGGCTGCTAAAAATTTGAAAAAAAAATTTCAAAATTTGAA
-TTTCCGCGCTTTTTTCGAATTCCTAGAACGCTTTTTTTTAATTAAAAAAA
-AATTTCAGTTGGACCTTTCATCGAATCAACTTCGAGTTTTTCGAGACGAA
-GTACTTCCGGAGAATTCGAAAATTGGAAATTTGAGACTTTCCAACAACTC
-TTTGGAGCTCCTCGAGCCGTCGAGCCTGAGCGGCTTGAAATTGGGTAATC
-TAAATTTATATGAATTTTGCAAATTCTAAAAATCCTAATTTTTTCTAGAA
-TCCCTTGATCTGAGTCATAATAAGCTGACAGAAGTGCCCGCCGCAATTGG
-AAAAGTCGAGCAGCTGAAAAAAGTGGATTTGAGCCATAATAGAATTGCGA
-AGGTTTATCAATATGTGCTCAATAAGATTAAGCAATTGCATACTGTTGAT
-TTGTCGAATAATCAGTTGCAAAGTGTGAGTTTTTTGTTGATAAAAATTTA
-AAATTTGAATTTTTTCTTTTTTTTTAATTATTAATTCTGAAAAATTCAAC
-GAAATTTCCGAAAATTACTTGAAATTTAAATTTTTATCCAGAATTTAGTC
-TATAAAAACGAAAAAATACGAATTTTCGATTAAAAAAATTAATTTATTTA
-AAAACACACTTTCGAAAAAAATTTTGAATTAAAAAAAATTTAAAGTTCCT
-TAAAAAACTATTTCCTCAATTTTTTTTCTGAAATTTCACTCTTTCATTTT
-TTAATTCATTTTTTAAGTCTATAAATACGAAAAAACACGAATTTTCGATA
-AAAACACATTTTTCAAGTTTTTAAAAATAATTTTAAATTGGAATTTTTCT
-TTAAAAAATTGTTTTTTATAAAAAAACACATTAATGCATTTTTTAAAAAA
-TAATTTCTTGAAATCTTCCAAAATCGGTTGTAATTTTAGCGAAAATAACT
-ATTTTTTCCAGTTTTTATTTAAAAAATCCCTCGAAATTTGAATTTATCCA
-GAATTTAGTCAATAAATGCGAAAAAATACGAATTTTCGATTAAAAAAATT
-AATTTATTTAAAAAACACTTTCGAAAAAAAAATTTTCAATAAAGAAACTA
-GTTCTTAAAATTTTTTTTCTGAAATTTCACTTTTTCATTTTTTAATTCAA
-AAAATTTGAATTTATCTACAATTTACTCTATAAATACGAAAAAAATACAA
-ATTTTCGATGAAAAAACACAATTTTCAAATTAATAAAAATATAATAAAAA
-ACATATTACTAAATTTTTAAAAAATAATTTCTTGCAATTTTCCAAAACCG
-GTTTTAATTTTAGCGAAAATAACGATTTTTCCAGTTTTTATTTTAAAAAT
-TCCCTTGAAATTTGAATTTCTCCAAATTTTTTCTTGAAGTTTTTAAAAGT
-TCCATCATTTTCTACTGGAACTTTCAAAAAATGTTCCTTAAAAAATCTCT
-AATTTCCGCTAATTTCTACGTAAAATTTCAGCAAAAAAACAACGACATTT
-CATGTTTTTTTGTTAAAAAAATAATTTTCTTGAAAATTTCTTTGGAATTC
-GATTTTTTTTGAGTTTTAACCCAATAAAATGTATAATTTAAAAATATAAA
-AATTCCAGATCGGCCCCTACATCTTCTCCGACAGTTCTGAACTTCATTCC
-CTGGACGTGTCGAATAATGAGATTTCACTGCTGTTCAAGGACGCTTTTGC
-GAGATGCCCAAAGCTGAGGAAAATTTCGATGAAAATGAATAAAATTAGTG
-AGTTGAAGCACGAAAAACTGCCCAAAAATTAAAATTTTGAAATTTTTGTG
-TTTAAAAACCTAGAAAATCGAGATAAAGTAGGCTTAAAGTTGCTCAAAAT
-CCGCAGATTTTTTGAAATCGATTTTGAAAAGTGCACATGGAGCTAAATCA
-GACTTCAAAATTCTCAAATTAATTGCATTTTCACTCGAAAACCTCTGAAA
-ACTGCCTTCTTCCTATATTAAATCAAATTTTCTTTCAGAATCCCTCGACG
-AAGGTCTCACAGAAGCTTCCGGCCTCCGACGTCTCGACGTATCTCATAAC
-GAGATCCTCGTGCTGAAATGGTCGGCTTTACCTGAAAACTTGGAGATTCT
-CAACGCTGATAACAATGATATCAATCTCCTGACCGCCGCCTCAATGTCCC
-CAAGCACCGCAAACTTGAAGTCCGTTTCGCTTTCCAACAACGGCATCACC
-ATAATGAATGCGGACCAGATTCCGAATTCGCTCGAGTCGCTGGACGTGTC
-GAATAATCGACTTGCAAAGCTCGGGAAGACAGCGTTGGCCGCGAAATCTC
-AGTTGAGAAGGCTCAACTTGAAGGGCAATCTGCTTACCGTAGTGGCCACC
-GAGTCGATGAAAGTCGTAGAGGCTGTGCATCCGTTGAAAGTGGAAATCTC
-GGAGAATCCTCTGATCTGTGATTGTCAGATGGGATGGATGATTGGTGGAG
-CGAAGCCAAAGGTTCTCATTCAGGACTCTGAAACCGCAAGCTGTTCCCAT
-GCCGTTGATGGGCATCAGATCCAGATTCAAAGTCTCAGCAAGAAGGATCT
-ACTGTGCCCATACAAAAGTGTATGTGAGCCGGAATGTATCTGCTGTCAAT
-ACGGAAATTGCGATTGCAAATCCGTATGCCCCGCCAATTGCCGATGCTTC
-AGAGATGATCAGTTTAATATCAACATTGTCAGATGCCACGGGAACTCATC
-AATGGTGCCCAAAAGAGAATTCGTGGTCTCCGAGCTCCCGGTCTCTGCGA
-CAGAGATCATTCTGAGCGGAGTCACCCTTCCACAGCTCCGAACTCACAGC
-TTCATCGGAAGACTTCGTCTCCAGAGGCTTCATATCAATGGAACCGGGCT
-CCGATCCATCCAACCGAAGGCTTTCCATACTCTTCCAGCACTGAAGACGC
-TGGATTTGTCGGATAACTCGTTGATCTCGCTGAGCGGGGAGGAATTTCTA
-AAGTGTGGAGAAGTCTCGCAGCTTTTCCTCAATGGAAATCGATTTTCCAC
-GCTATCCCGTGGAATCTTCGAGAAGCTTCCGAACTTGAAATATCTGACAC
-TTCATAACAACTCCCTCGAAGACATCCCTCAGGTTCTTCACTCGACGGCG
-CTCTCCAAGATCTCCCTGTCATCGAACCCCTTGAGATGCGACTGCTCGGG
-AGGATCCCAACAGCACCTTCACCATCGTCGTGACCCAAAAGCTCATCCAT
-TCTGGGAGCATAATGCGGCCGAGTGGTTCTCGTTGCATCGGCATCTTGTC
-GTTGATTTCCCCAAGGTTGAATGCTGGGAGAACGTGACGAAGGCCTTCCT
-GACGAACGATACGACAGTGCTGAGCGCCTATCCACCTAATATGGGAAATG
-ACGTCTTTGTGATGCCTATTGAAGGTTGGTTTAAAATTTTTAAAAAAACG
-CGCGTCAAATATTTTAAAGTCTTTTGTTCGAAAAATAACCATTTTACAAT
-ATGTAGGATATATCTATAACAGCTACTGTAAAAACTCCAGATGTTTGAAT
-TTTTTTAAAAATGCGACGTGGTAAATATTATATTGATTACATATTATTAT
-TACAGTGTATTTTTTTCCACTTCTACGACTTTAAAGGGGGGCGCATTTAC
-GCGCGATGGTCCCAGCATTGGTCTCGCCACGCACCCCAAAAATCAATGGG
-TGGCGCGTGTCGAGACCATCGCGCGTAAATGCGCCCCCCTTTAAAGTCGT
-AGAAGTGGAAAAAAATTCACTGTATAATTATTAGTCAAATGATACTTATT
-ATGATATTAGAAATTAAAAAATTAGGTTTGAACATTTTTTTTCCTCGATT
-TTTTTACGGTATTTCACCATGTATGCGTTATAAATACAAATATGATCCCT
-ACCTTTTTATAACTTTAAAATAACTTTTAAAAAGGAATATAATACATGCA
-CAAGCACCATAAAATTTCAACGTTTGCTTTTTCTGGTCCGAAGAATTTTT
-TCAATACGTTTACTTTATATATCACATATACAAACAATATACTGAGAATG
-CGTATTGCGCATTATATTTGACGCGCAAAATATCTCGGAGCAAAAACTAC
-AGTAGTCCTATAAATTCCTACTGTACTGCTTGTGTCGATAGAATATTAAA
-ATTGCAAAAAAAATTTAAAAAAACGAAAAAAAAACAAAGTATAAGGGAAT
-ATATAGCTATTCCAAAATAAATCAATTTCAAAAATCGAGCCCGTAAAAGA
-GAAGGACTTACTGTAGTTTTCCCTACGAGATATTTTGCGCGTCAAATATG
-TTGTGAAATACGCATTCTGAAGATGTAGTGTACTCGTAATATATATTTTT
-TAACAATTCAAACATTTCCAGAATTCCTGCGCGACTACAACTCAACAATC
-TGTGTTCCATTCTCATCTGGATTCTTTGGACAAGACCCTCAGAATAGTAT
-ACTCTTTGTAATAATAACTATATCGATTGCTGTTCTCCTCTGTGTCCTCG
-TTATTCTCGCAATTTCATTTATTCGAAAATCTCACGACGCAATCAATCAA
-CGAAGATACAAAGCATCATCTCTAAATTGTTCAACATCAGCCGGCTCGTC
-GCCTCTTCCGGTTCCGCTGTTGAGTTATCACGCATTTGTGAGCTATTCGA
-AGAAGGACGAGAAAATGGTGATTGATCAATTGTGTCGACCGCTGGAAGAT
-GAAGATTATCAGTTGTGCCTGTTGCATCGGGATGGGCCGACTTATTGCTC
-GAATTTGCACGCGATATCTGATGAACTCATAGCTCAGATGGACTCGTCGC
-AATGCTTGATTCTTGTGTTGACTAAACACTTTTTGGAGAACGAGTGGAAA
-ACGCTGCAGATTAAGGTAACAAATTCAAACTTTCAGTTTAAAATTGATAT
-ATTCGTAAAAATAAGATGTTCTTAAAAATTCTGAGAATGCGTGTTGCGCA
-AAATATCTCGTAGCAAAAGCTACTGTAATTATTTTATATGACTATTGTAC
-CGTTCAAAATTACTATCCAAATATTTGATTTTTTGTTTTAAAAAATTATT
-TGGAATTTACTCAAATATTGAAAACAATATTATCGAAATTCCAGAAAATT
-TGGTGGAAATTCCGAAAATTTCAATTTTTTCGCTAATTTTCGAGAAAAAA
-AAAATTAAAATTTGGATTATATGAAATAAATTTCCAAACATTAAATTAAA
-AATTTTTTTTTTTTGGATTTTCCAATCTCGAACCTTCAAAAATTGAATTT
-TTTTGAAATTTTTTTTCGGAAAAAGTAAAAAATGCTCGAAATATCGACAA
-AAAGTTGAAGTATTTTTTTTTGTAAAATTGGAGATTTTTGAGATAAAAAA
-TCTGAATTTTCATTCAAATCTTGAACATCAAAATCAGCAAAAAAAATTGC
-TATAAATTTATTTAAATAAGATTTAAAAAGAGTAATTCGCTATGATTTCA
-AATTTTCAAAAAAAAAAATTTTTTTTTCAAGTTTTAATTTTTGAACACTA
-TCAAAAAATTTATTTTTAAACCAAAAAAATTCCGAATTTTCTGTAAAATC
-TCAAAAAAAAAACATTCCTAGAAATTTAATCGAATATGATTTAATAATAC
-TATTTTTAAATCATATTCAATTACATTTCTAGGAATTATTTTTGCTAGAT
-TTCAAAAAGTGTATGAAAAATTAAAACTTTTTGAAAAAAAAACTGTTCTA
-AATATAATTTATAACACCAGAAATTCACTAATAACACTCCACATTTTTCC
-AGACCTCCCACCAACTATTCGCCAAAAACCGTGCAAAACGAGTGATCGCC
-GTGCTCGGCGACGGTGTGGACGCGAATCTGCTGGACGATGAGCTCGGACA
-GATTCTACGGAAGCACACGAGAATCGAGATGCGGAGCCATTTATTCTGGA
-CACTTTTGCACTCATCACTTCCATCACGACTTCCATTACCATCGAATAGT
-GGCGATGATTCGTCTCAACTATATTCGGATATCTATGGAATTGTGCCTTC
-CGATGTTGTTTAGCTTACAGTTTTCCCGTTTAGGTCACAGTTTTTAGTAT
-TTTTTTTCCTCTTCCAAATGTACGAGTTTCCATTATTCACGAGGTTTCTT
-TTTCACCCCCAATTCTTCTGTGCACAATTTGCCATTTTTTGAATTTTTAC
-AACAATACCGGTACTATATTTTTCGATTTTCTTTCTTTTTCTATGAATCT
-TGCCATCATTCTCTAATAATTGACCAGCGATTATATTTTTGATTTAATAA
-TTGAATATTCTCGTTTTTCAGTTCAAATTATTGCTTTTTTCTGTCACCAC
-AAATTCAAATTCTCGTCCTACCCTGTGTGATCTTCTGTAATATATATATA
-TTAATAATCGTCGTTTCTTCTTGTTGTCATTTGCGGATGCTTATGAAGCT
-TGTATTTTAATTTTTTGTTTTGTTTTTTTTCCTGTTTCAGCTGCAAAAAA
-TTCGGTAGAAATTCTTGAAAACACGCAAAAAATGAATAAAAAAAATAGTA
-TATTAGCTTGTTCGAGAGGAGTTCACAAGCGGGTGGCCTAACATCTCCGC
-GGCCGCCCAGTGGTGTACTCCTCTCGGGTGAAAGAATTCCCATTTTATCA
-TCAGTTTTTCGGCCTATTTTTTCAGTTTTTCTCAACTAAATAGTCAATTA
-TCTCTTAAATAATGTCGAAATTAATTTAATTTACACATTTTTCCAATAAA
-ATTCCAATTTTCGGTCATTAAATTACCCCTTTCGAATTTTGCTCTCAAAA
-ATTAAATTTTCATCGATTTTTAATTCTCAAAATTCTTGAATTTTCAGCGA
-AGATGGGCAAATTCAGCAATCAGAAGAAAAATCGTGTCAAGAACAAGGTG
-GCGGTGACAGTAAAAAAAGCGCAACGCATGAAGGCAGACGCTAAAAATGC
-CAAAAAAGACGGTGAAGTGGATGTTGAGATGAAGGAGGAGGTGGTGAGAG
-TCAGAGGACTCGCCGTATCGTCGCTGGTGAGAAAAAAAAGGAAAAACTCG
-GCGAAATTCTTGATTTTGATTTTTTTTTTCAGAAAAAATTGGCCTCCGGT
-GAGCTGCAAAACGTGCCAAAAGTGAACGAGAAGAAGATTATCCGCAAGAC
-AGAGCTTCCAGTTCGAGAGAAGTAGGATTTTCTCGATCTCTCCAAACAAA
-AAAATTGTTTTTTTCAATTTCAGCAAAAAGATCCTGGACGCTCCGACTGG
-AAAACGTGGCACCACTGCTCAATACATCACAAAAAAGAAGGCAAAGAAGA
-TGTACAAGAAGATGACACACGACGCACGCGACAAATATCGAAAAATTCAG
-GCGGAACTGGCCGGAGACGGTGAAGATGACGAGGAGGGTGAAGCCGAGGT
-GATGGAGCAGTGATTTTGGATTTTTCCGCGGCATTTTTAAAATTGTTTTT
-TTTTGTTGATTTTGTTACTGTTTTTCATTTTCCACATAAAATAATCGAAA
-ATTTATTTATCACAAAAACTTTTGCACAATTTGCTCAGCTGAGTGAGCCA
-ACTGTTTGCCACGTGTCACGATTCGATGCATCCATCCATTGGGCTCCTCG
-AGCTCCGCTTTCGGAGCCTGTAGCTGCTTTAGAATTATTGTCCAGAGCTC
-AGAAATGTTCATCGAGTACTGCGCGGAAACTTCGACGAAATTGCACTTGT
-GTACTTTGGCCAGGCAGGCTCCTTCTGGAAAAATCAATTTAAAAATCGAT
-AATTTGAAGTTCCACGTGGAGCCGCGACGCGGCACGCGTTGCATCGTTTT
-TTTTGGTTGAAAAACATGGTGCATCGAAGAATTTTCCTTTGACGATTTTA
-TACGCAATGCATCACATTTGACGAACAAAAATTCAAAATACTTTACTTTG
-CAAACGCGCTCCATTGATAAACTTATGAAAAATCGATAATGCTCAAATTT
-CACAAAATTTTCCTCCATTTGAAATTATATAATTGTTAAACAAAATTAAT
-AAAACCAAACATTACGCGCAGTTTCCGATAAATTTCGATTTTTTCAAAAT
-GCAAGCGCGCTCCATTGCTAAACCTTGAAAAACCCACCCATTTTCGACAC
-CACCGTATTCCGTTTCAAATCGATTTTATTGCCAATCAGTATAATATTGG
-CTCCGCGAGCAATTTTTCGATTCAAAAGCCGACTGAGCAGGTCTGTGGCA
-CACACGAATGATTCTCGATTGTCAACGTTGTACACTATTGCGTACATTGT
-CAGTGATGACGCGAATGGAGAATTCTGGAAAAAAACAAGAGTTTAAAGGC
-GCAGGTGGGTCTCGCCACGATCCATGTTTTTTTGCGGGAATAGTGGAAAT
-TTGGAGTTAGTAAAAAAATCAAATTTGTGTAATTTTTAATAAAATCGGTT
-CGCAAATGCGCTAGTACATCAGATTTCACGAGCAAATTTCATTTTGTGAG
-ATTTGCACCAAAGATATGGGCATTTGAACTGATTTTTTAATGGTAAACAC
-GCGAAAAAAAATACATATCCAAAAATTGAAAAAATTTTAGGTTTCACAGT
-CTCCTCGGCATCGAAAGCGCAGTAGTAGGGGTGGCGATAGGGCGCCCTGC
-TAAATTTTCTATTTTTATGGTCTTTCTTTTCGTTTTGTGCTAATGAACAA
-AAGTTAAGTTCGAAATCTGCGAAAAAAATCGTTTCAACGCTAAGAAACGA
-AGAATTGTATTTCTCAACGGTAAAAAGATTCACTCCTGCGCCAAGGTGAC
-AGCAAGTGCGCCCCAGCCCAATTCGACGCTGAAGAGACTGTGGGTTTAAA
-AATTTAGAGAAGTCGCAAATTTTTTGTTCAAGATATCAGCCTAAGCTACG
-GTTTAAAGGCGCACAAGCACGTGGTGTCAAAGTGTCCCGTTTCGGTGTGA
-TCTACCAAAAATGCGGGAATTTAGACGCAGACTTCTCAGCAGATTTCGTA
-TGGTTAAGAGTGTGCTGACGTCACATTTTTTTCTGCAACAAATTCCCGCA
-TTTTTTGTAGATCACACCAAAATGGGACTGTTTGACAGCACGTGCACAAG
-CAGATCACAAGTGGGTCTTCGAGTTATCCTCCCCAAATCCTGTCCAGTAG
-AGCGCACTTACCTCCAACGTGGCTTCCAGCAACATTTCCAACTCGATTTG
-CTCGTTATTCAACAGGAAATTCATCGTTTTCGATGAAGTGTCATCTCCCT
-CATTTGACTCATTATTGTATTGGGTGACGAGCCGCGTGGCAAATTGGTTA
-ATTGCTGACAGCAATGTTTTCTTCCCGCTATTCCTTGATCCATAGACACG
-TAGAACCACATGTTGCATTGGAACATTCGACGTTTCTTGGAATAGCCAGA
-CTTCTGGACACGTGGCTCGGCGATCTTCTGAAAATTTTTAAATTTTCAAA
-AATTTGGTTAAAAATTTCAAAGGAAAATCAATAACAAAGCTACTCCAAAA
-TTTTCAGCCTGATTGGTTGGAAAATGAGCAAGTTACAGCGCTTCAAGAAT
-TCTAGGCCACGGTCACCAGGGAGTGGTGGCGGTGACCCTCTATTTCATTT
-TTAGATTTTTTAAATGGGAAACTCGAATTTAAATGTGAAACATCTGGAAC
-ATTCCAAGAAAAATTCAAAAAAACTCTCTAAGGAGTCGATAACCCTCCCC
-CAATTCCTGAGATGTGACGTCATCAGGGGGAGCCCGTGACCTCATAGCTT
-CAAATTTGAATTTTTCAACGAAAAGTGTGAAATTAGATGTAAAATTACTA
-GGAAATTAGAAGAAAGATTAGAAAAGAAATTTCGGGGGTGTCGCTCACCA
-CCCCCCCCCCCCATTTTTATAGTGTGACGTCATAGAAAGTGGGTCCCCGC
-TACCTTCCATTTTCAAAGTTTTTTTATTTTTCCGATGATTGTATTACTGT
-ACTCACTGTAATTATGTGCAACAACTGGTTGTCCAGTGGAGCACGTTTGC
-TTATACCCATTGTCCGTCACAAATCCATTCTTAATTCCAAAACTTCGAAG
-ACTTCCCTCCGGTCGTTTTTCGACGTCTTCGATGTTGTTTTGGTGCATTT
-GTAGAGAGTATTGGTATCTGGAATATTAAGGGGAAAATGGTGAAAAAATT
-CAGAAATGTACAGGTAATCGAGAAAAAAAGTTAAAACTTTTTTTGAACTA
-AATTTTTTTTTCAAAATTTCAAAAAAAAAATTTTATTTGAAGAACTTTTT
-TATAATGTTAATTTTTCTGAAATTACTTAACTTTTTCTCTCAAAACTTGC
-TCACTGAGTTTTTAAATAGATTTCTGAAATTGTCCACGTGAAGTACACTC
-CCAATATATCAAAGGAGCGCATTTGCGAACTAATTTTATTAAAAATTTCA
-CAAATTTATTTTTTTTAATAACCTAAAATTTCCGCTATTTTATCGTATTT
-TCTAAAATAAATAAAAAATTGTCCAGGAGGAGTACATGGCCAATTTATCA
-ATAGAGCTCATATGCACACTTGTTAAAAAACAAAAAAAAAACTTATTCAC
-CTTGGCGGTGGGTACCGCTTTTTCACACGACGAGGCGAGTTTTCCGAGCT
-GAAAAATGATACTTTTGGCTGGGAAGTTTTAGAATTTTGGGGAAAATAAG
-CATTTCCGGTGAAAAAAATTGTTTTTTATTGGAATAGTTTTTAATATTCT
-AGGCCATGTCGTAAAGAATTGAGTCAAAATTTAAATTTTTGAGGTACGAG
-CTTCCAGTTCCCCCCACAATTCCCCCTATGGCCTAGAATTTCAGAAAACT
-CTACCATCGATTCAAACTCTGTTACTTTTGAGGATAAGGGGTTCCGGACG
-CCCCAAACTTCCGCCCGTGGCCTAGAACTCCCAACTTCTTCCACCGACCT
-GGACGTGGTGCTCGTACTGGCAAAATGCTCATCAACATCTGGCAGTAAAT
-TGTTCAACCGTCTTGGGGACACGGTACGCGGGGTCGACGGTAGACTTCGG
-CGACTGATCGGCGATGTAGGAAGACTTCTGAAAAAAAATCAATCAATAAA
-ACAACGACACTCTGCTCGTGAGGATCCGCCCATTCCGCTTGTTGTTTACC
-AATTTCTTTTAAAAAAATTCTACAATGCGCAAAATTAATAGAACTACCTT
-CTTATAATTTTTTTTTAACTCAAAATTTTCAAAAAAACAACGACACTCCG
-CTTGTAGACTCCGCCCACTTTCCAAAAAGGACAATTCGGAGTGTCGTTTG
-AAAAATATCCTAAAATTTGAAAAATTCATTTTTAGTCTCAAATTTTAATG
-AAAATTACGTGAAAATCTATAACAACTACGACACTTTTGGCTCCGCCCAA
-AAACGTCTTTTGGCTCCGCCCGAAAACGGGGCGGAGCCTGGCACTAATAT
-TACAGTTTTTATTTCCATAAGTGATTAAAAAATCAACAAAAAAATTATTT
-AGAAAGTATCTCAATTATTGAATGAAATTTTATAAAATCTACGACACTCC
-GCTTGGAACCCCCTCCCCCTGCCAAGAATGGGGCGGAGCCTAGAACAAAC
-GGAGTTTTTGCAAGAAAAATATTGCTTGAAATTTTAAAGACATTAATAAA
-AATCCGAGTTTTTAGAAAAAATTGGGCCAAATCGAATAATAAAAAATACG
-TTACTCCGCTAATAAAACCAGCTCATTACCAAGAAAGGGGCGGAGCGTAT
-ACAAACGGAGCGTCGTTTGAAAAAATATTTTTTGGAAAACTAAAATGTTC
-CAGCGGGAGGAAGCTTCTGCAAAGGCAATCTAATTTTTTTCCGGAAATTC
-AATTTCCTCAGGGTTCTCTCTGCAAATTTGTTCACGAAAAAACTCGTGGT
-GCTGTGCAAATGCGCTCTATTGATAATTTCATCTAGAGAGCGCAATTACA
-TCAAATTAGCAATGGAGCGTTGTTGCATACCTTCTCGTTGCAGCGGGAGA
-CGCTGGTGACGGAGGTGATAGCCGTGATGAAAATTGTTGGGGTATCGCCA
-GCGCAACTGGAAGGGAAACACGACGATTCGACATTTTTCTGTAAAAAAAT
-CCATGATAAAACTAAAATTTAAAGAAAAAATAATGTAAATAAAAGTGGGG
-AAGTGGCTAAGCGGGGACACAAATACGCGGGAAATCCGCTTATTTTTGCT
-GGATTTGACGTAAAAATCCGAATCAACTGGCACTCGACGCGTTTTCCAAC
-AAGAAAAAACTAAAATTTCATATATTGGTGGCCTAGAAAATTCGAAAACT
-GTTCAAGCTTACGTAAAGTGTGTATTTTCCATATTAGAGAATAAGATTGG
-AAGAAAAATAAAATATTGTAATTTCTAGGCCACCGCAAAACTTCTAAGTC
-ACCTATGAAATTTCTAGGCTACCGTGAAAATTCTAGGCCATCATAAAAAT
-AAAATTTATATATTTTTGTCCTGAAACTAAGTCCACTTCCGCCAGAAATA
-ATAAAAGCAACAAAAAAGACAACACAAAAAATTGAGAACTCTTAAGAACA
-AAAGAAATCCGACCCGAAATCGAATACCCCACGAAAATTTTCGGAATTTA
-GAAAGAAAAACTATTTTTAGACACTTTTTTTCCTTCAAAAGGAGGAACTT
-TGTTGCGCGGCCTAAAAAATAGAAAACTCGGCCACCGATTTGTTTGCGGC
-CACGGGACACTCCGCAGTTGCAAAGGCTACAGATGCAAATACTGGAAAAC
-TAGGTCACCAAGTGGAAACCTTGGTCATCGCGTGGAAAAAAACTTTGACA
-AAAAATTTTTGAAAATTTTATAAATTTATTCTAGGCCACCACCTGTAAAC
-CTAGGTCACCATGTGGAAGGCTAGATCACCAAGTGGAGCCTAGACCAGCA
-CATAGGCCTCTAGGCCACCACGTAGGAAATTAGGTCACCAACTGGAAAGC
-TAGGCCTCCACATGATAAATAATATTTTTTGGAATTTCGTTTTGACCAAA
-GAAACTTGTTTTTACCAAAATATTTGAAAATCGTTTTCAAGGCCGTCCGG
-TGAAAACTGTGTAAACCTAGGCCACCAAATAGAAAGTCAGGCTGCGACAT
-CTAAACTTAGGCCACCAAGTAGAAAGCTAGGCCATCAAGTAAAAACCTAG
-ACCACTATGCCAAAATAGATGCCTTCTAAAAGTTTCAGGGAAAAAATGTT
-TTTCAACAAAAATTTTTAAAATCGTGGCCGAGTGGACTTTAATAAAATTT
-ACTTTTTCAGCCACGTGGCAGAGGGATATCGGAGCATCGTTTGAATTTTC
-TAATTTCTGAAAGAAAACCGGAACACATTGCAAAAATACGAAAAATATAA
-CTGAAGCTGACATATGAAATGAGTTCTATGCTCCCCGCCGCCTATTCTTC
-TCATTTTTCTGCTTATTTTTGTCGTTGGGGGGATGCTGGTATCATATTCT
-TCGTCCCCTCTTCTTTCATTGCCAGTCTATTCAGTATTATAATTAGCGTG
-TATTCCCTATTGGATTCTGCTCCCCGTCGTTTTTTTTTCTATGCGAAAAA
-AATAGAAAATACGAGGTGAACGGGAATTTTTATGAAAACGAACGAAGAAT
-TTGAGTTTTCTAGGCCACCAAATTGAAACATAGGCCAGCAAACGGATCTC
-TAGTAAAAACCTAAACCACAATACGAAAAACTAGGCCACCAACGAAAAAT
-GGGAGATTCCGCTTGTGTGTTCAAGCATTTTGTAAAATTCTAGATTGTTT
-TAAAAACTTAATTTTTCCAGTACAAAAATCGATTTAAAAACAATAAATAT
-GTCAAACTCGTGACGTTTGTCAATAGAGCGCGTTTGCATGTCAAACAAAA
-CATATTCGGTGTAGATTTACGGGGACACTTTACAAAACAAAAAACCTTCA
-CAAGGCTCCAAATAAGAGCTAGAAAATGGAACAAATTTCCGTTTTTTTTT
-TGTTGGTGAGTGTCTTGTGAGGAGGGGACCGCCCGTGTCTCTTCCAAAAA
-CATTATTAAATTAGTGTGACGTCATCACATTGAAAAACAACAAATATAGT
-TCGAGTTTTGAAGAAAAATTTCGGAATTTTTCTGGTGAAAAAATTTCAAA
-AATTTCAATTTTTTTTTAAATCTTAAAAAATTTTTTTATATATTTTTAAA
-TTCAATGTTTGATCTGAAAACCAAATTTTCACACAAAAAATCTGGTTTTT
-GACGTCTAAATTTGCTTTTTTTCACCCAATTACGAGGTTCTCCGTGGGAA
-GGTGTGTCTAGACACTTGAACTTTTGCTTTTTTATTTTTTTTCTAATTGA
-AAATGATTAAGCTAGATATATTTTCTCTCTTTTCTTAATCAGAATTGTTT
-TTGAAGATTTTAAATTTTTACACTCCCGTGCAGCAAATGCGCTCCGATGA
-GAAGTATGGAAAATTACAACTGGAGATTTTCAAAATGTTCAATTAAATTT
-TGCGTTTTTCTTTTAAAGGTTCAAGAGTCTAGAAAACTACGAAAAGGTGC
-TGTGACCTTATCGATGACGTCATCACAATTCTTGAAAAACTGGGAAAATG
-AGACGATGTGGAAAGAGGGGATTATTTATGCTTAAATAAACTTTTTGCAC
-TAATTAATTCATATAGTTGTAGTGCTTCTTTATATTTTAAGAGAAATTGC
-AAATTTTGCACCCAAAAAAGTAGACGGCCGAGTTATGGGAAAACTCTTCC
-ACGGACACAAGACGTGGAAAACTAAAAGTTTCCGTTGTTTTTTATACGCC
-CGCATGGCACATCCCCGCCCCAACAAAATTTTCAGGTTTTCAGGGTGAAA
-ACATTTTTTCAGCTGCTGGGCGGCTTCTCGTGCAGCTGGAAATGTATTTC
-CAGACGGGTTGGAACCGGGATTTGTCATTCAATTGTTGCAATTACGCTCT
-ACCGCTAAACCTCGTTTGGACTCCACGTGGACAACACGGTGCCTTATTGT
-AAATTTCTCTTCCATCTCCATAATTTCAGAACAAACCGTCGCTTTTATTC
-TCCATAATATTATAATTTTATTTAAAAAAATCTGGAAACATTTATCGATT
-TTTGTGAAAATCTATGTGAGATTATTGACAGAAATACAAGAAAATCGATG
-CAAACATGCTCTATTGCTAAATAGTTCGTGTACTCTACGTCGACGACACG
-ATTTCAAGAGTTTTTCGTTTTTTGAACAAATCATCTGTTATTATTGCAAA
-ATTCGGTACATTACTCAAAAAAAAACAATAATTGATAAACATGTAGAAAC
-ATACATGCAAACACGCTCCGATGCAAATTATTGATTCTCCAACTTTTATT
-GTTAAGTTATCTTGAAAAAAAAACTGATAAAACGAGAAGTCCTTGGTGGT
-ATCGGTCGCCTAGAAACAGATGAAAGAATGGAAAAACAAGTATTACGGGC
-GGCTCCGTTTCGTATTATGGGGGGTGGGCCGCAGATGATCCTTTAGAATA
-AGAAAAATGTCTAGTATTTTGTGATACTTGTGAAATATAACCCTAAACTT
-AAAAAATAAATTAGGGCTCAAAAATGGTATTTTTCTAATGTAAGCCTACA
-AGCACAAAGGTATTCAATTTTTTTTCAATAGCTAAAAAATTAATTTTTAA
-ATTGTGATATCATAATACTTACACAAGTACCAATTTTGTTTTAAACGATA
-GAATATTCCATAACTTTTGGGTAGGATTTTCTGCACTCGAAAAAAACGGG
-ATTTTCAACAAAAATAGTGGACTTTTTAAAAACAACGAAAAAGTTTTGCT
-TGGGACCAAGTCTAGCAGATTACAAAAACTGATTCTTCCAGTCAAAGATT
-TTATATATCACTTAACAATTGTTTTGCCTACCTAGCAAATTCCGAAGTCA
-GAAAAGTTGAATTTCCCTCCAACAATTTTTTTTCATAGTCAGCCAATTTG
-CATTTCCCGCGAAAAAATTTACGGATTCACCACAATGGGTCTCCCACCAA
-TAAAATTAATTATTCATTTATCTTCTTAAAAGGTCACACGAGATGCCAGC
-GACACAGGGCAAGTGCGACCACTATCCCGAAAAAGACACCGACAGAACCT
-AACGAAGGCTTCCAAAAATAGCATAGAAATACAAGAGACACAGAATATCC
-CATGATGTTCTGTCACTTTCAACATCATTCTGCCTTTTTTGTTCCCTTGT
-GTATGGTGACTATAATTTGATTGTTCTGAATAATCTGATGTCTACTTGTG
-TTGTGGACCACTATTGATTTTTGCTGCTTTGGTTAATTTGAGGTAATACT
-TTAACAAATTTGTTTTAAATATCATAGTCATTTTACAAATTTCAACAGTT
-TTCCTATTAATCCGCTAAACCGCAACTAAAAATGAAAAATTAAAACTTTT
-CTCAAAACTGTATGGGAAAGTTCAGTGACGGTTATGATAATTACAACATC
-GTTAATGCAAATTTAACAGGTTTCGCAAAATTATATTCAAAAAATTTTTT
-AAATCGTTTATTACGGTAACAAGAAATGTTGAGAATGCGTATTACACAAC
-ATATTTGACGGGCAAAATATCTCAGAGCGAAAACTACAGTAACTCTTTGA
-ATGAATTCTGTAGCGTTTGTATCGATTTACGGGCTCGATTTTCGAAATTA
-ATTTATATTTGTAAAGTGAAAGCTATATTCAATTTTTCTTCGATTATTTG
-TTGTTTTGTTTTATTGTGTTTTTGTTTTATTTTAATATATTTGTCACTTT
-TCAAATAGAAATTAATATCGAAAATCGAGCCCGTAAATGGACACAAACGC
-TACAGTAGTCATTCAAAGAGTTACTGTAGTTTTCGCTCTGAGATATTTTG
-CCCGTCAAATATGTTGTGCAATACGCATTCTCAACATTTCTTGTTACCGT
-GATAAACGATTTAAAATTTTTTTTAAAACTATTTTTTTAAGTAGAACAAA
-ATTCAGAAAACAACTCGATAAAAATGTCCTAGTCATCCGATTAAAATAAT
-TTTTTGAAATAAATAATATGAAAATTAAATTTTAAATATTAAAAATGTTA
-TTGTTGCTTTAAAAAACGTTATTGGACTTTTCAAGGCGGCAAAAAAATGA
-AAATAAAAATCGATTATTTTTTGAATTGTTGACTTTTCGGTTTTTAAATG
-TTGTTGAAAAGAAACGAATTGTATATACGAATTTCAATTAAAAAGTTTAA
-AATGTTTTTTAAAATGTTTTATTTTTTTCAGATAGATCAACTGAACTTCA
-TAACTTTAAAAAGCCAGTCTGGGATGTATCTATACCACTCTATCAGACTA
-CTCTTAGCACTAATCACAATGTACGACCCCGTGAGAGATTGTTGTCTGTA
-CTGGATACTACACGAGTGGTAGAATATAAAGAAGTGTGGTGACAAGTTTG
-GGATCTGAGTCCAGTAGAAAAAAATCATTCTACCGAAACTCGAAACTATG
-AGCGACTGGTCAAAACTATGCATTTGACGACGTCTACCTGTTTTAAGTTA
-TTGGTGGTGAGTGTGCCTTTGAAGAAGTCGCTCGAGCCTCGACCTTCTCC
-GACTGGCTTGAACTGAAAGATCCTCGGGAATCATTTTTAGAATTTAGAGG
-TGGAGTACCGTCTGTGGATTTTTTTTTGCTCGAAACGATAGAATACAGCC
-CCAATATTCCGAACAGGGGTGCGCGGCAATTGCCGTGTGGCAATAGAATT
-TTCGGCAATTTCGGCAATTGCGGCAACTTAGGCAATTGCCAAAATTGCCG
-AAAATTCACAAAACCGGCAATTGCCGAAATTGCCGATTGCCGGAAATCCG
-AATTGGAAATATAAATTTGATTTTTTTTTGTAGTTTTAAGAGCTTGAACA
-TGCATTTTACTAAACAATTTTCTCTTTTTAAGCTCAAAATGGTTTAATCC
-TTTGAAGATTGACCGTTTTCTTTTAGAAAATTACTGACAGAATATTAAAA
-AACAATGTGACATTTTTCAATTTTCGATATACATTTAGGTTTGAAAATTG
-CCGAAAATGCCCTGCAATCGGAATTTCGGCGATTTCGGCAATTGCCGAAA
-TTGCCGATTGCCGGAAATTTTGAAAACCGGCAATTGCCGAAATTGCCGCG
-CACCCCTGATACCGAATATAACTGTAAAAAATGTATTAATTTTTTTGTTG
-ATTTTTTGAAAATTTTCATAAAAGTAAAGAAAGGGCCAAATTATGTTTGA
-ACTACTAGTAGTCTGTGACTTCATTTTTGGCATTTTTCCGTTTTTCAGCA
-ATAATGATTGGTTTTCTTTGTTCTCTAATTTTAAACATATTTCTTCACAA
-ATGTCTCAAAAATTAACAACTTCAGTTTAAAGTAATAAAACAAAAAAAAA
-AGAAAAATAAAGAAAAACCAGTCAGTTTTTTCAAAAATAATTCAAAAATA
-ATTCGGTCCTTATTTTTTTTTTTTTGCAAAAAAAAACAAAACAAACTCCC
-CTATAAAAATTTTCCAAAAAAAAATTGGAAGGTTTTTTTTATTTCAGCCT
-ATTTTTGGAAGTTGTCGAACTCGATCAAAACATTTTTTCATTGGTTTAAG
-TTTTATTATGCTTGAAATATTCAAATTCCAACATACCAGGCATTGAAAAA
-TCAGTTTTCGTCGCTTTTTGACTCGAAATAAAAAAAACCAAAAATTTTTG
-AAAAGTTTTATTATGATAGAGTCATTCAATTATATTCCCAGTACTTTTAA
-ATAATCAAACAATTTTTTAGAATGGCTAGTTTCAAAATCGGCGGCTTTGT
-CGTTACATATGAAAACATGCACAACAATATGAAAAATAGGTATGTCTTCA
-AAAATATTAAAAACAATATTTTTTTAATTTTACAGATGTTAGCAGTTCGA
-CGAAGCAATGCAGGAACTACAGTTATACAATCAAATTCACGCTTTTTATA
-TATTAATTTTTAAAATCATAAAAATTACAATTTTCATCAACGTTGATCAG
-CTAGACGAATGCATTAAGAAAAGGGAAAACATAGGGCTTCCCAAAACGTC
-TGCCTCGCCCGCCTTGTGGCGACCTGCGCCTGCCTCGTGCAGGCCGCGTC
-TCCAGTCAGTGCAGTGCAGAAATTTTTATTTCAAAATTGTACAAAAACAT
-GGAAAAATAGAGAAGGATAATTTTTTAGGCCTCGGAAATCAATTTTAAGT
-CCTCTAGCTACAAAATGAACCATTTTAGAGGAGTTTCAAAATTGTGAATT
-TTTACAAAAATTACCCAATTTTGCCACTTTTTAATGGTTTTTGATGGGTT
-AAACCTAGATCTTCTGGATAATTCCGCATATATGAATTACCGTATTTCCT
-ATATTAGTTTTGCATGCAAGACTAATTTTCAATTGGTCTGTAGGGGTGCA
-AGACTAATAGAGACTGCAAGACTATTAGAGGCTGCAAGACTAATTTTCGA
-ATGCTATAAAACTCCGAAACGTGACCAATTTTTGATTGTAAACTCAACTT
-GATATCGTTTAAACAACAAAAAATACATCCTTTTCCAATATTTAATCAAT
-TATTTGAACGCTTTTAATCAAAAACTCGAGTTCAATTTGCCCAGAAATGG
-GCCAATTTATTAACGTTGCAGCATCTATGCAAGATATTGCTGGACTGGAA
-AAAAGTCGGGTGCAAGACTTTTAGAGACTGCAATACTAATAGAGGCTGCA
-AGACTAATTTTCGATTTGCCCGTAGGGGTGCAAGGCTAATAGGGATGCAA
-GACTATTAGAGGAAATACGGTACCTGTTTTTGACAAAATTAGACAACTTT
-TTATTTTTGCTCAATTTTTTTTCAGCCATCTAATTACTGTCCTTTTTTTT
-TGGACAATAAAAATAAATTTTCTAAAAGCGTTTGAAACCACTATATTTTG
-CAAAAGGACAATTTTTTAGGGATTGGAGATCAATTTTATGTCCTCTAGCT
-ACAAAATAAACAATTTTAGAGGAGTGTCAAAATTGTGAATTTTTACAAAA
-ATTGCCCAATTTCGCCACTTTTTATTTTGGTGGGTTATACCTAGATTTTT
-TAAATTCAGCATATATGAATTACCCGTTTTCAACAAAATTAGACAACTTT
-TGATTTTTGCCCAATTTTTTTTTCAGCCATCTAATGACTGTTCTTTTTTT
-GGGCAAAAAAAATAAATTTTTCTGCAAACGTACAAAACCATTAGAAATTG
-AAAAAAGGCAATTTTTTAGGGTTCCGATATCAATTTTGAGTCCTCTAACT
-TCAAAAATGACTATTTTAGAAGAGTTTCAAAATTGTGATTTTTCTGCCAT
-AAATTGCCCATTTTTGCCACTTTTAATGGTTTTTGGTGGGGTATACCTAG
-ATTTTCTGAATTCTGCATATATGAATTACCGTTTTCGACAAATTTAGACA
-ACTTTTTATTTAAAAAATTAAAAAGGATTAAAGGACGATCCGTTCTTCAA
-GTGCTATGCACTGCGGATCTGGGATTCAGGTACACTGCCTGGTGGTGATC
-CCTCTGGGCTGTAATTTAAGCCACGTCCTAGCCGAGGACTGTGGCCGATA
-ATCCAGTCGTGGATTGCTCCACTTCCCAATAGAGGCAGGGTGAACCTAGG
-GGGTGAGGCCGGACTTTTATCTCGTGACCTCCAGACTGCTAGCGGCCACC
-ACTACCGACTGAGCTATCTGCCCCCCTTGGGGAAAAAAATAATTTTTTTT
-TTTTTTGGGCAAAAAAATAATTTTTTGGAAATTGTACAAACCAAATATTA
-TATATTAAAAAATATTATCCAAATATTCCAAATATTCCAAATATTCCAAA
-TATTCCAAATTCCAAATATTCCAAATATTCCAAATTTATTCCAAATATTA
-TGAAAAAGGCCATTTTGTTAGGGCTGGGAAGTTTGAATTTTTACAAATAT
-TGCCCAATTTTGCCGCTTTTTAATGGTTTTTGATGGGTTAAACCTAGATT
-TTCTGAATTCTGCATGTATAACTTACTTGTTTTCAACTAATTCAGACAAC
-TTTTTATTGTTTTTTTTTCAAATTTTTTCAGCCAATTAATGACTGTCCTT
-TTTTGGGCAATTTTTTTTTTGAAACAAAAAAAAATTAAATTAAATTGCCC
-AATTTTGCCACTTTTTAATAGTTTTTGATGGGTCCCGGAAACCTAGGAAA
-CCTAGTCCCGGAAAATCGAAAAATCGAAAAAAAATTTTTTGAAAATTTAC
-CAATGAAAAAAAAAAGACTCAATTTTCTTCCAAAATAAAAAAGTGGGCAA
-AATTTTAAATATTTTTCGAAAAAAAAACATAACTTTTCAAAAAATTTTTC
-GATTTTCCAACAAAAAAGTGAAATAAGAAGACATGCAGGTTACTGTAGCT
-GATAAAGCTTCAAGCGTACCAGGACCCGAAAACCGCCGCCCGCGTAAATC
-GACATATTTAATGTACCATCAATTTGATCCTCCTCTTCCTCCTTCTTTCA
-ATGACACCACACAACTTCCTGTTATGAAGGTCTCAATTCCCCTTCATAAC
-ATTCTTTGTAATTAATGCACCCTAAACAAACTGTGCAAACACACTTAGAC
-ACCCCCCTCCTACACGGTCTTTGGAGTTCCCCCGCTCAACTCTAATGGAC
-CTGGTAATCCCTTGCGCGGTGGGATTTTTCGGGTCTCGCCGCGATTTTTA
-TCCGAATTCCGGAATACCGGAAATGGCGTGGAAATCGATATTGCAACAAA
-GAAAACTGTTTTATTTTCAAAAATCCGCTCACTTTTTTTAAAAGTGATCT
-TTCAATCATTTTTAAAGTTTTTTTTTTTGAAAGCACGCGTTTCTGGCTTC
-CCACATATTTTGGAATGTAAGAGATTGCCGAGTTAGGCCATTTGGACTCG
-GCCACGGCCGGGGTCGATTCACGTAGCGGCTCGGTTTCTGTAGAAAACTA
-AATGTATTTGTCCGTATGGAGTACACAAGCTTTTCCAGGCGTTATCCGGC
-AGGCGATAGAAGCCGCGACGCAACACGCAACGCGCCGTAAGTCTACCCCG
-GCCGTGGCTGAGTTATGATGGCCTAACTCGGCAAACTCTTGCATTTGAAA
-ATATGAGCGAAGCCAGAAGCAGGTGAACATGGATTTCTGGCTTCCCTCAT
-AAATTGAAAAGGGAGAGTTTACCGAACTAGGCCATTTTGGCTCGGCCATA
-TCTGGGGCAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGTTTTTA
-GTTGTAAAACTGAATGTATTTGTCCGTGTGGAGCACACGACTTCCCCACG
-CGTTGTCCGCTAGGCAATTGTTAATGGAGCGCGAAAAATTCAATGAGGAA
-GGCCAGAACCCCGTGTGTGATTTTTGCAACTACAGCCCAAAATTTGAACG
-GGATTAATACAAATTTAATTTGAAATTTGGATTTCGCAATTCAAAATTTG
-CGAAATTAAAATTTCGAAAACCCGAATCTCATCGAAATTAAATTCCAAAG
-TTTTCATTCAAATTTCAATGAGGTCTCTATTGAGCCGAATTCCCGCGCAC
-GGGAGGTAGTGGACCCCTTTTGTATGTTTAGGGGTACAAAGACCCCCTAC
-CACCCCTTGTATATGCACAATAGAGAACACTCAAGACCCGCCCACCCTAG
-GCCCCTCATCCAAAACATATCCGAATATACCCTCTACTGTACTTTATTTA
-CTTGCTCCGTTTACCCGGGTACCAGGGTACTCCCTAAACTAACTGAATTT
-CCAAGGTGGTGGCCTAGAAAAAGCTCTTCCACTGGTTTTTTTGTGGAAAG
-AAATGATGAAGGTTCTTGTTGTTTTATTGCTTATGGTAGGTTTTTTTTGC
-CACGTGTCCGGAATTTTTAAAACTATTTTTCTATTTTTTAAAGGCCCAAA
-ACTTTGTTTTTTTTAATGTTATCGTTTTTTCGTGAAAAAAATTATTTCAG
-AAAACGGGGGTTTTAGGTTTAGGCTAAAGCGTAGGCTTAGGTTTAGGCCT
-AGGCTTAGGCTTAGGCTAAGGCTTAGGCTTAGGCGTAGGCTTAGGCATAG
-GCGTAGGCTTTAGGTTTAGGCTAAAGCGTAGGCTTAGGTTTAGGCCTAGG
-CTTAGGCTTAGGCTAAGGCTTAGGCTTAGGCGTAGGCTTAGGCGTAGGCG
-TAGGCTTAGGCCTAGGTGTAGACTTCGGCTCAAACATAAGCTCAGGGGCA
-AAAAAAGGAGAAACTCCCACAAATTCCTAAAAATCCTGAAAATTTTTTTA
-AATCTTAAAATAGTCAATTTTCAGTGGAAATCACAGTGAGCATTTTGAAA
-ATCCAATAATTTTCAGGTAAATTCGACATTTTCGTTCGGATTGGACAATG
-AAATAATCGGTGAACCAAAGTTACAATGCAATCCGGAAAGTATTACATTC
-TCCTTCAACACACGGAATCCGTTTATGTTAGTCTTGGGGTCTCGACACGA
-ATTTTTCCCGCAAAATTAGTTTTCCACGCGTGAGTACACCGCAAGTAGAG
-CGCTTATCAATAAATTATAAATTATCAATAGAGCGCACTTGCCCCCGGTG
-AATTTCAAAATTTTCAGAGGAAACGTATATATTCGTGGCTTCTACCGAAC
-ACCCGGCTGTCGTCGGCAATTCCTCGCACCGAATCAGGCTGGCGGCTCAT
-TTACGGTACGGCTCGGCGATTGCGGGATGCGGCGGTCCCGACAAATCAGT
-GGACATTCGCCACGTGGCGTCAATCAGCACATCACTTTTGTTGCGAACTT
-TCATCCGAATCTCGCGACGAAAGAGGAACGATCATTCAATATTCGATGCT
-TTTATGCGCACAGTGAATCTGTTGTCAAAGCTGATCTGGATGTCAGGTAG
-GGATGCAAATCGATAAATTCCCCGAAAATCGATACATTTTCCAAAAATCA
-ATAAATACCCAAAAAATCAAACAATTCCCAGGAAACTGGAAGAAAATTCT
-CAGAAAATCAATAAATGTATTTGTTTTGCAGCTCAATGCCGGAGGAATCG
-TTCGAACAGGGTGTGACAATCGTGCCCCAATGCACATATTCCCTTCGTGA
-AGGGACATTTGAGGGCCCAAAAGTGTCGAATACACGTGTCGGAATGACAA
-TTGTTCATCGATGGGACTGTGATACATCGGGGAACTATGGAATACTGCTA
-CGTGGATGCACCATACTCGATTCACGTGGTGTTGAATCTTTTCCATTGCT
-TGATGAGAATGGGTAAGAGTAGGGAAGTGTCGGCCGCTAGAAAAGAAAAA
-TATATCACTAGAGCACGTTTTCTAAGCATTTTTCTCAATAGAGCGCGCTT
-GCTCAATTCCCTAAAATAAATTATGGTGCATCGAAACGTGTTTACGTACT
-GATAGAGCTGTAGTACTCGAGGAAGCTGAAAAAAATAATGAAGAAAGTGA
-AAAAAATCAAAAGTGTGAACACAGCAGCCTTGTCAGATAAATTTCAAAAA
-TCTGTGCATTTGGTCGTAAGTTATGGCGCATCAAAAGTTTTTTGAAATTC
-TCAATAGAGCACATTTCAAAAAAGAGCGATTTTCGCAAAGCCCCTTTCTT
-CGTTGTTTGATTTAAAAACAATGCAATTTCGTTTATTTCGCAAATTTTTG
-AAAAATGAGTTAAATTTGCAACAGAGCGCGATTGCACACACACACACACA
-CACATCAAACGTCAGAGACCCCACTGATTTTGGAGATTAAATTACGGTAG
-ATAGAGAATCACAAGGAAAACATCACGAACTTTGTTCCGTCAATTCCCGT
-GGTGCTTGTTATCATCAGAATGCAAAATTTGAAAGTCTGAAATTAAGCCG
-TTTCCGCTAAAACGTAGCGAATCTCATTCCACCGAGTCTATTTTCGTGAG
-GTCTCCAATTTTTCAAGTCTCTGCTCGTTATGGTGCATCGAAGGGTAATT
-CAAAATTTCAAATAATTTTTAGACACTTTTCGACCAGTTTCAAATTTTTT
-TTATGGTGCATCGAAAGAATTTTGCGTAATTTTCAATAGAGCGCGATTAC
-TACTCACCTCTAAATTTCTGCAAATTCTTTTTCCAGATGCTCAGTGTCCC
-GTGACTTCCCACAAGTGGTATATCTCCCATCACTGACGTCAGCCTACATG
-GCAATCGAAGCCATCTCATTTCCTGACCAACCATCGATTTCTTTCTCGTG
-TCAAATTAAGTTGTGTGATAAGGGAAGTGATGAGTGTCGGGGTATGAGTC
-CCCCCGCGTGTACCCCATTGACACAGGTCCCCATCACGGGACAAGTACCA
-ATGCCATTTGATAATACAATTGGAAATACGTTTGGTGAGTTATTTACGGC
-CGAGAAAACCTGCAAAAATAAAAGTTCAGCCACCGAACTTTTTGACATTT
-TTGCGCAACTGTATGCCGCACAAAACTTTACGTCAGAAGTGGGCGTGTCC
-GCCTGCAGGCCCCGATGTTTTAGATGTAAAAAATTAGATGTTTTAGATGT
-AAAAAATTGAAATTTGAATACAAAAAAAAATTCGGCCACCGATTTTTTTT
-GCTTTCACGTTTTGTCAATGCATTTCCAATTTTTTTCGTGAAACGTTTTT
-GTCAGAATTGGGCGTGTCTTGTAAAGTCCCGCCCAATTTATGGGCGTGGC
-TTGTTTCGACCAAAAATACTGTTTTTTTAACTCACAAAAACAGAGCTATA
-AACTTTTTGAAAAAAACATCCCTGTCCTCTCCTTTCTCCATTCTAAAATT
-TGAATTAGATGGCCGTGAAAAACCCCGGCCGCGGTCTTCAATTACAGTGA
-AGAATTTGGCGGCAGAGCGCGTTTTCACAGTCTTTTTTTGTCGTCACTGA
-GCAAACTTCAACTGCTTCCAGCCAGAAATTTACAAGCAAATTCAAATTTT
-CAGACGGAATCCCACTGGAGCCGTGGATGAAAGAGCCCTCTCCTCCCACT
-GATGACGTGGCAAACATCACCTCAGAAGGCGAGCCAATGCCTCGGCTCAT
-CACCGAAGAGGAACAATATCAAATCGAGTCGAACCATGTTGAGGCGCGAG
-AAAAACGATTTGCTCATCGATTATTCAATATCACATCGGAAGATCTCTAT
-GTTGAGCCAACCGTCGAGCCAATGGAAGTAGAGATGCCTGGAGCACCGAG
-AGAAACTGCTCGGAGGGTGTCTGAGCCATGTGTCTCGGTTGAAACTTTCT
-ATATTTCGGCGCTTGCTGTACTTTTCGTTTTTGTCGTTTCGATTGGGATG
-GTCTGTTTCTTCGGAAGTCATATGCTTAAAAAGTTGGTTTTTTATTGATT
-TTCCTCCCACAGGGTTCTGACCTTCCTCATTGATTTTTTTGCGCTCCATT
-GACAATCGCTTGTCGGAAAACGCATGGGAAAGTCGTGTACACGGACAAAT
-ACATTTGGTTTTACAACTAAAATCGAGCCGCGCCGCAACACGCAACGCGC
-CGTAAACCTACCCCAGCTATGGCCGAGTCAAAATGGCCTAGTTCGGCAAG
-CTCTTTCATTTCAAAATATGAGGGAAGCCAGAAATCCATTTCCCCAAATT
-GCAAGATATTTGTGGCGTGGCCGAAGTTTTCTAGTTTCTCGGCCACGTTG
-TCAAAATTATTTTAAAAAATCGCTGGAAACACTAAATTTAGATATCTCCT
-GTAGATTGTGATTCGCGGAAAAATTCCATGAATCTCGTTCTCCCAGTTTT
-TTTTTTGTAAATTCAACAAATCAAATGAGCGCCAAAACCTCACAAATCTC
-ATACTCCCAAAATTTGCGTTCCTCTTTTTCTTGAGGCCTCCTCTTTTCAC
-TGTAAAATTTAAAAAACTCGTAACTTTTTCTTCAGAGCGCGATTGTACGC
-ACAGAAAGTCTTTAAAGTCTGAAAATATTTTAAAGTTCCCCAAAATCCCA
-CAAGTCTCATTCCACCGAGAGGTCATTTTCCGTGAGGTCTCTTTCTTGGG
-TCTCGACGCGAAAATACTGTAATTTTATTAATTTTTTCAGAACTCAAGAC
-TGTGAAATGCCGATTCCAGTCCCAGAAGGATATTATCTAAGCAAACACTG
-AAACTCTTGTTTAAAAGTATTCGTTTCCCATCCACGTGCCATAATTCTTG
-CATTTTCTTTTTTTTTCCCTATTTTTATTCAATTTATTTACAATTTGTTC
-AATAAATAATCAATAAATAATAATTAAAAATAACATTAAAAGTCACATTT
-TCCGAAGGAACCACGCGTGGAATGTAACGGTGCCGTTGTCGAATGGTTCC
-GGCTGAAAATTGATTAGTTATCATTGGAGCGCAATTGCATTTTTCTCGAA
-AAATCGATGTTTTCGTGTGATGCAGAATTATCGATTTTTTTTAACTTGGT
-GGCCGAGAAAATGGAAAACTCAGTCATCGACTTTTATTTACCTGGAACGA
-AAAAATTTAAAGTATGATCACGCGCTAAAGCCTCAATTATGCAAAATGCT
-TTAAAAACGGGTTTTGGAATTTTCTAGACCACTGGTGACGTCACTCCTTT
-TCCATTTATTATTCTAACTGTTTTCTAGGCCACTGATGTCGATATTTTTC
-CACTGCTGGGTTTCTAGATCGCCTGCGACGTCATTTCTCTTCCATACCCT
-GCTCTAGCGGGTTTCTAGGCCACTGGAGAAATTATTTTTCTTCCAAAAAA
-AAATCTAGGCCATTAATGACGTCATCATTTTTTCTTTTCTTTAGGATTAC
-CTCAGGTTCCTCATATTTCAGATCCATCCTCGCCAATCGTTCATTCTCAT
-GAACTTTTTCCACTTTTTCACTGCTCGTACTCTTCTCATCTACTGTATCC
-GCCACCACAACGTCCGGAGCAACAACTTGCTCATCAATATGCTGATATTC
-GGGCTCCTGGCGGTCCCAACGTGGTGTCTCTGGTGCAGTTTCATATTGAT
-TTTGCTGCTTCTCCAGGAGGTTCTGTATTGAACTGATCGCTGAGGAGGAT
-CCAACGATCGGAGGCATCGGAGGCGGCAGAGGAGCCATAGATGGAGTCTG
-AGAAGCCATCATTTGGAGTTGGGGGTAATTCCTTTGTTGGGACATCTGTG
-GGGACATTTGTGGGGACATTTGAGGGGACGGGGACATTTGGAATACCATC
-GGAGGCATTGGAGGTGGTGGGGGTGCCGGAGCCATTCGTATCATTGGAGC
-CATCACGTAAGATGGTGGAGATGGTGGGAGACTGGAATTTTTTTTTTGAA
-TTTTTTTTCATAACACGGGCTTCTGGCCTTCCTCATTGCACTTTTCGCGC
-TCCGATGATAATCGCCTGCCGGACGACGCGTGGAAAAGTGGTGTACTCCC
-CACGGACAAATACATTTAGTTTTCAACTGAAAACCGAGCCGCGACGCGAC
-ACGCTACGCTCCGTAAATGGCCTAATTTCTTTTTTTTAATCTTGAGTTAA
-AGTTTAATTTTAATTATTTCTACAGAATTGAATGGCTGGGAATGTGCCAC
-GTGGCCGAGAATTCTCCTGCGTGGCCTAGAAAATTCAAAAAAATATTTTT
-TGGTGGTTTTGATTACAAAATAAAGGATTTATACGGATAAAAACCTATTT
-TAAAAGCCGTGAAAAAAATCATATCAACCACTGCCTAAAAGATTGAAATT
-TTTATGATGGCCGAGAATTCTCAAGTGTGGCCTAGGAAAAATCAAGGCTT
-TTGAAAATTTGCTCATTTCGAAAATTAAAAAAAACAACTCAATTGATAGT
-AAATTTTAAAATTAAAAATTATTTTTCTGGTTTTTTTTTCTCAATTTTTG
-CAAAATCAAAATTATAATCAATTTTTAATCCAGAATTCGTCAAGTGGCCT
-AGAATTCTACTGCGTGGCCTAGAAAATTCCACCAAAATTTAAATTTTCCA
-AATTGTAAAAATGCTCCAAAAAGTTGAATGGTGGCCGAGGTTTTTCGTTT
-TTCACTTTTCACAGCTACGGAAAAAAACTCGGCCACCAATAGTTTTTCCT
-AGGCCATGTTTCAAATGCCCTATTTCTATGTTAATTACAGTATTTTCTAG
-ACAAGATTTTAAAAAAACTCACGAATAGCACATGGAGCTCTGACACTTGC
-TCCCACCAATACAAAATTCCGAATTTTTTACAAAAAACTGCAAAACTATA
-AGAATTTGTGGTAGAAATTGGGGCATTTACGTAATAATAATAATAGAAAA
-ATGTCCGCAAATTTTTTTTCATAAATTTCATAGGGAGGAGGTAAGCTTCA
-GCTAGAAGCCATTCAATTTTATTGGGGCGCCGAAAATCTTCGGAACACTT
-TTACAATTTATACAGTAGTGTACAACTTTTACAACTTAATAATATCTTCA
-ATACTTCCAGAATATTCTTCTTTTTCCTCCTCAATTGCCACGTCATCATC
-TTGTAATCTGGTCCATTTTGCTGGCGAGGCGTCGGCAAACAGGCAGAATA
-TAGTATTTACGAAGAGAAGTAAGCCCGCATGCGCCAGGAAACAATTACGC
-CAGTCTGTGAATCTGAAAAAAATAATCTTGTCTTTTAGGGGACCTACGCC
-TGCCTGCCTACGTCTGCCTTGCAGGGGACCTTTGCCTACCTACTTGACTA
-CCTTCAAGTGAGACCTATGCTGGTTTGCCTGCATTTTTGTCAGTGCCTTC
-TAGGCCTATGCCTACCTTACAAACTATGTAGGTCAACTGCCTGCTTTCAA
-GGTGGCCTAGGTCAGCCTACATGCTATCTACGTCTACCCCAATGTACCCT
-GTGCCTATCTACCTGCTTTTAATGCTATCTGCCTTTTCGATAGTCTTTTA
-GGGAATCTACGCCGGTCCAGCTCACATAGGTTATCTATGCCTATGCCTTC
-CTGCCTGCCTCCAAAGTGACCTACGCTTACCGTGTTTTTTTTTCTAGACC
-GTATATACCTACATGCCTGCCTTTAAGTTTACCTATGCCTGCCTGCATTC
-CTCATGCCTGCGTGCCTACATGAATACCCTAAAAACTCACGTATCATCAG
-TAACAATCATATTGACGAAAAACGGTTCGATGAATATCGTGCAAGCCCAG
-ATGTTCATGATCTGGAAGAGAAATCGTTGGCCTAAAAATTTTCTCGGCCA
-CCCCCTTACCTGCTGCATTGCGAAATAGGCGTACTGCTGGGAGTGCAACG
-TGGCACACTTGTTGAATCCCGCCGTATTGCACCCCATCACACTTTCGGCG
-CAAATCTGGAATGATGGAAGAGAATAGGAAAACTAGGCCATGGATGTATG
-TGCGCTATGTTGATAATCGGTTATTTTCAACGTGGATTATCAATTGAGCG
-CACTTGTCCCACTGGAAGAGTTTTCCTATCTAGGCCACCACCACCACCCA
-CTCACCATTATAATAATAGCCAGCAAGTGTTTTTCCTGTGGAATAAATGC
-TAGAACGATGAAAAAAACGGCGGCCACGGCCAGAGCGATTGTGTTGAAAA
-TTTTAGTTTTCAGAGTTTCTGAGATGAATCTGGAATATTGATTTTTGGTG
-GCCGTAGAGAGGAAAAACTCGGCCACTGATTTTTTTCACAATTATAAAAT
-TATTTTTCCAGGAAAAACCCCCGAAAAACTCACTTAATATAATCACTAAT
-AATTCCCGACGATAATTTCGTAAAAAATTGAAAAATAATGGGTAAGGCGG
-CCAAAAAACCGGACGAAAGTACGTCATAGTTCAAATAATTTTTCATATAT
-TGCGGATTGAATTGGGATACCAATTGAACTGTTATCAAATCTCCAAACGA
-TGCGATCCAACAAGCCCACAGGCTTAAACTTGTCAGAATATGACGGAATG
-GAAGATTTTTTGGCCGGGATACCTGCAAAACGAAAAAGTAACGGGCTTCG
-AATTTCCCCCCCCATGTTTTCAAATGGAAGAGGTGGCCGTGAATAAAGCT
-AACCTCGACCGGGGGTCGCGACTCGCGACAAACGGGAAAACTCAAAGAAA
-TTTCGTACTGTCGCTACTTTTTTTGAGTTTTCCTGTTTGTCGCAGGTCGC
-GACCCCCGGTCGAGGTTCGCTTTTTTCACGGCCACCTCTTCCATTTGAAA
-ACATGGGGGAAATTCGAAGCCCGTGAAAAGTTAGGCCATGCAATGCGATG
-TGGTGGCCGAGGTTTTGAAAACTCGGTTACTCTCATGTAAAAAATCTTGA
-AGTTGAAGCAAATTTGCGTACATGAAACCCATTTACCTTGCTAGCAGTTT
-TAGAAAAATTTGGGATTTTCTCATACTAATGAGGGAACGTCTTAATTGTC
-GACAAATTGCGTACCCCGAGGAACCCACTAATTCAGTCCTAGGTTTAGGC
-ATAGGCTAAGGCATAGGCTTAGGCGTAGGCCTAGGCTTAGGCTTAGGCTT
-ACACGTGGTGTCAGAGTGCCTCATTTCGGCTTGATCTACGTAGATCTACA
-AAAAATGCGGGGGAAGAGCCGCAGAGTTTTCTACTGATTTCGCATGGTTA
-AGAGTGTGCTGACGTCACATTTTTTGGGGCAAAAATTCCCGCATTTTTGG
-TAGATCAAACCGTAATAGCACAGCCAGGCACCACGTGCGCTTAGGCTTGG
-GCTTTCCGTAGTCCTTCGGGCGCGTTTTTCTCAAAAATGATACGTGGTAC
-AATTTCAGGTTTTTTTCCGCTCCAAAATCTAGTTATAATTTGTGTCCGGT
-AGAGCGCGTTTGCACTCACTTTCTTTCCCGATTTCCCTTCTCGAATCCTC
-TCCAATTCCTTCTCGCCAACCCAACTGTGCTCACTCGGCGAGCACTTGAA
-AAATAGGAAAAACAGCGAAAAAGTGACCAACGATACACCGGCGTGCACAT
-AGTAAACCGACGTCCATCCACCAGACGAAGAGCATAACCATCCCGAAACT
-GGCATTGTAAATATATTTGAAAGTTGTGTATTTCCGGTTAATAGGCCAAT
-GAATACTCCGTGCTCGTATGGGGTCGCCCAATTTGCTGTAATTGAGCCAG
-CGAGGGGAAATGTGGCTGAAAATGCCATTCCTTGACAAATACGGGCGGCC
-ACAAACCATCCGTAGCCAATGGTACTTGCCAACGGGATAAGGGCTGTTGA
-AACTGGAAAAATTGAGTGCAATACATCATATTTGACGCGCAATTTTAAAA
-TTTAAAAAATGGAAACGCGCTCTAATGATGCTTGGTGTACTCCTCTCGGA
-CAATAAATGTCAATAATTTTTGAAAAATCGATAATTTTTTTTTAATTTCA
-GAAAAATTCGTGAAATCTGTTTTATTTTGCGCGTAAAATATGATTCTTAA
-ATACTTAATTCAGTATTTTACGCACGTGGTATCAGAGTGTCTCATTTAGG
-CTTGATCTACGTAGATCTACAAAAAATGCGGGAGAAGAGACGCAGAGTTC
-TCAACTGATTTCGTATGGTTAAGAACGTGCTGACGTCACATATTTTCGGG
-CAAATAATTCCCGCATTTTTTGTAGATCAAACCGTGATGGGACAGCCTGA
-CACCACGTGCTTACGCGGAATTTTTCACAATTTTTTGTGCTTCATGCACC
-ATGTTTTTGTTTCGAAAAATCAGATTATTGTTTTGCGCGTCAAATTCAAC
-GCCCACTGTGCAATACACCATATTTGACGATCAATTTCAAAAATTTTGTA
-TGCTTTCGATGCATGCTTTTTGGGGTACTGTAGCTTTGAAAATACGCATG
-CACTGGATCTGACGACAAAATGCACAGTTTTTATAAAATTAGTCTATAGA
-AATTAGTCAGTTTTCTCGAAACAAATAAAAACTACAGAAAACTCGGCCAC
-CGATATTTTTTTTTTTCGCGGCCACGATTGACGTCATACCTCCCGAAATA
-ATTCCGGCGACAATGAAGACAGGTTTATGCGGCAAATGTTGAAAAGAAAT
-GGAAAATGGAATCGAGGCGGCAAGACTTCCAATAGCCACACACGATTGAA
-GAAAATTCGACTCTGATTTGGTATAGTTCACTGAAAAAATCAACTATTTT
-GGCGGCCGCCAATGGAAAAACTCGGCCACCGAATTAAAAAAAAAACCTTT
-TGAAGTTGAAGTACTATTATCATCTTGCATACAAATTTTTGTAAAATTAT
-AAGTATTCATATTTGAAAGAATCGAGGTCAAACACAGTGTGGCACATATT
-AAAATCTGCAAAAAAATCGTGAAAATTCAATTTTCCGGGGGTTTTGAGTT
-CAAAAAGTACCAGAAATCGGACAGGAACCGGCGAGTTGACCATGGTGCAT
-CAGAAACCGGAATTTTAAATAAGTAAAAAAATTTATGATGCTCGTGGTGA
-TAACGAAAAGTGCAGTGATCAATTTAAGGGAAATACTGCTGGGGGATTAA
-ACGTTGACACTGTCAACTTGATAGTGTTAATTTGATCAATGCTTTGTACT
-TGTTTTTTGCAGGAAAAATTCTTTGAAAATTGCAAGACTATAGTATAGTC
-TGAAAATTTGATGAAATCTAAAACTTTAATAAATACCGTTAATTATCATT
-ATTTTTATGAAATTTTAATATAATCTACTTAAAATTTAATTTTCTAGGCA
-TCTGTGAGCTTAAATTTTCGATTATCCCTCGCCAAATTAAAGATTTGCAG
-ACTTTTAAGCTTATAAGCTTATTTCAGTGAGAGAGAGCATTGTGAGAAGA
-GAAACGCAGACGAGGCTGGCGCGTTTCTCGTGCTCTGACGCGAGTCTCGA
-TTTGCTTGCGCATTTCTCGTGCGCGCGACGTTCATTTTATTTTTCCGATT
-TTTTTTCAGTTTTTCTGAACTTTTCTTCTTGAATTTGTGATTTTTTATTT
-ATTTTTCACGTCTTGTTGCAAAATAACTGATTTTTCACACAAAATATTCG
-AATTTTCAGGTCGGCAACATGGGATTCTTGTGGAAAACTGCAAAACTCGG
-AATTAAAGTTGGACTCGTCGCCGGCGCCGTCAAACTGTCAATCGATAACG
-ATATTTGGTCGACTAACAATGTTAAAGTATTAGTTTTCCCCCGTTTTTCC
-ACGAAAATTTTCATTTTCAGGGCAGCGAACTGTATCAAAAGCTTAAAAAG
-TACATTCTTCCCGGCACCGTCGTCTTTCCAGAGCAGGTTTTATCGATTTT
-TTCTCTGAAAATGCAATTTTTTTCTTATTTTCAGCTCCCAACAGTCGAAG
-ATGTGCAGCTGAAGGCCGGTGGAAAGTGGAACAGTGCTGTTGACTCGGTA
-GGCTGCATTTTTGAGAGGAAACACGGAAAAATTGCTGCGAAAGTTGGAAA
-AAAGTCCTGGAAAATGGAGATTTGGCGCCGAACGTTCAAGAAATTCCATA
-ATTTCAAAAATCTATCTGAAAAATTGAAAAATATAAATTTTCAGTCATTT
-TTAGTCAAATTTCAGAGCTAAACGTCGAAAAAAGTGCCTAAAACTAGGAA
-AAATATGACAAAAAGACACAAATTTTGGAGAAAATTGCTGAAAATAATGC
-AAAACACTTTTTTTCACAAAAAGCGAAATTCAAAAAAAATTCCACGTCAA
-AAATTAACCAAATGCAAGTACGCTCCATCGCACTTTTTTCCAATTTCTGA
-CTCGAAAAGTCTTAAACTTCTGGTTTTGTAGGAAAGATAATGCAAAACGC
-AATTTTTAGTCCAAAATTCAGAGAAAATTCTGAAATTGTTTTTAAAAAAA
-ATGCAAGCACACTCCATGGCACTTTTTTTTCAAAATTTCGCGTAGAAAAT
-TACAGACATTAGCAAAATTCCGACGATTTCGCTGCGAGACCAGAAATATT
-GTAGGAAATTCAAACATTATCCGAAAATAATGCAAACGCGCTCTATCGCA
-CTTTTCTCCAAGTTCCCACTCAAAAAGCATAGAAAATACCTGAAATTGCC
-GTTTTTTTTCACCGGAATTTCAAATTTACGCGATTTCGCTGCGAGACCCA
-AGCTAGTGCAGTGGAGCGCATTTCCAACAATTTCAAACTCAATTTTTTTC
-AGGTATTCACCACAATCGAGAACGTCCCATCAAGCGTGAACACAGTGGCC
-AATCGACTCATCAATAATAAATAAATTCCCCATAAAAATTATCGATTTAT
-CGATTTTCCCCCCGAATCCTCGTGTATTCCTTCGTTAGAATGTACTTTTT
-CCCTCCTCATTTTCTAGAAGTATTTGTGTGTGTGCTCTATGAAAAAATTT
-GCAATTTTTGACTTTAAACGGACGGTGCATTATATTATTTTATCAGTTCC
-CATCGTTGATCAATTTTCTCCACTGATTATCAATTCACTGATAAGCTCAC
-ACTGCCTGCCCAACTCAATTCATCGCAACTTCTTCTCCCTGCTTTTTTTT
-GCCATGAATTCGACGGTGGCTTCCCGTTTCTCATGGGGACTCATTCTGGC
-GTCGATCGATTTTTTGGCGTGCCTACTGTTCGCCTGCCTGCATGATGGAA
-CTTTCAAATTCGCGAATTTTACTTCGCAATTTGGCGATTTTTCGTTTTTT
-ACGAGGTTCGATTGATTGGTGGCCGAGTTAATTTTAGGCCACGAAAAATG
-AAAATTGAAGCCGAGTGTCATTTTCGCTGGAATTCTAATTTTCAGTGTGT
-AAAAATATAGAAAACTGCAAAAAATTTTGAATTCCCGCCAAAAACTAACG
-TTACGAGACCCAAGTACAGTGGAGCGCAGTTGCAAAAAAAAATTTTTAAT
-GATTTTTTGCAACTACGCTCCACAGTCCTTGGGTCTCACAACGTTGAAAC
-TAAAATTTTGGAATTTCTCCCATAACTTCTTATAATAACGATATTCGGTG
-GTCTCGACACGACATATTTTCATTAAATAAAACGGGTGTGCGCCTTTAAA
-GAGTACTGCAGTTTCAAACTTTAGTTGCTAAGCGTATTTTCAACAAAGCA
-ACGAAAATTTGAACTTACAGTACTCTTTAAAGGCGCACGCCCGTTTTTAT
-TAAAACAAAAACTTGTCGTGTCGAGACCGGGCACCGTAGTTTTGACGCTA
-AAAATAAGATTTATGAAAAAGCGGGTTTCCAGAAAATTTCACTTTTCAAA
-CTTTGATGAAAATTTGAAGTTTCCAGCCAAAATCGCTGCGAGACAGTGGA
-ACGAGTGCAGTAGAGCGAAATTGCTGTAAAATTTTGAAAAAAAAGTGAGA
-AATTTAAAAACACGGATTTCTGGCCTCCCCCGTAAATTGAAATGGAAGAG
-TTTGCCGAACTAGGCCACTTTGGCTCGCCCATATCTGGGGTAGATTTACG
-GCGCGTTGCGTGTCGCGACGCGATTTTAGTTGGAAAACTAAATGTTTTTG
-CCCGTGTGGAGTACACGACTTTCCCACGTGTTGTCCTCTAGGTGATTGTC
-AATGGAGCGCAAAAAATCCAATGAGGAAGGCCAGAACCCCGTGAAAAAGT
-ACGCGTTTTTGAAGCAATTCATCGAAAGAAGACAGTAAAAAAAAAGTCAA
-AAATTCAAATTTCCAATAGAAAAACCACCAAACCCAACAATTTTTCCAGC
-ACAATCGACCTATTCTTGCTGCAATTTTTCCGTTTTGCACTATGGATGGT
-GCCGGCGGCAATCCACGTGGCCAACAAGGCGGACACGTTGACAATGTGGA
-AAGAGGTCGGTGGCCGCGTGGCCTAGAAATCCCGAAAATTTCAAATTTTC
-AGCCAATTTTCTGCTCGGCACTGCTCATCTGCGCGGCGAGCCCCACAAAA
-TTGCTCCTCCTCACAGAAAAGCTGAAGCCCGATGAGTTCCTCACTTTCGG
-CGACACTGCCTTCCTTGTCTGGAATTTCATTTCCGCGATCATTTTGAACT
-CCTCGTGGACAAGATACTTCTCGCGAACTCCGTCTTCATATATAATTCTG
-GAGGATGAGGATGTAAGTGCGCTCCGCTGAGAAAATGTTTTGATCACCCC
-CACGATTTTCAGCTCGAGGTGGCTCCAAAACAAACGTTTGAGCTTATTTT
-CCGCCTGCTCCAATACTGCAAACGTGAATGGCTCTGGCATATTTCCGGAT
-TCTCGTGGCTCTTTATTTATTCGATCAGTAAGAGAATATCCATCGGGGGT
-TTTTTGTTTCGAATTTAAAAAAAAACACAAGTGGAAGAGTTTTTAAGATT
-TCTAGGCCACGCACCCACTCCAAAACCCCAATTTTCAGCCCGTATCTTCG
-TTCCCTATTACACGGGACAAGTCATCGCTACCGTGGTCGCCACAAAATCG
-TACCCAGCCCTCTCCAACGCTGTCTACATCATGACAATCATCTCGTTGGT
-GAGCGCTGTCGCCGCCGGATTCCGTGGAGGATCCTTCGAGTACGCCTACG
-CAAGGATCCAGAGGGCAATCCGCTACGATTTGTTCCACGGACTCGTGAAA
-CAGGATGTCGCTTTCTATGATGCTCACAAGACCGGAGAGGTGACTTCTCG
-TCTGGCTGCTGATTGTCAGACTATGTCGGATACAGTTGCGTTGAATGTTA
-ACGTTTTCCTCAGGTAGGTGTGGGTCCGTGACCGAAGTTCCCAGATCACA
-TGACCTAATTTTCCCAAATTCTTCCAGAAACTGCGTTATGCTCCTTGGAT
-CGATGATCTTCATGATGAAGCTTTCGTGGCGCCTCTCCCTCGTCACATTC
-ATCCTCGTCCCAATTATCTTCGTCGCCTCCAAAATCTTCGGAACATATTA
-TGATGTAAGTGCGCTCCAGCGAAAACGTTTTTCTAAAGTTTTGACCCCAA
-AATTCTGTCAAAGTGCCCCATTTTGGTTTGATCTTCGGAAAATGCGGGAG
-AAGAGGCGCAGGCTTTGCAACTGATATCACATGGTTAAGATTGTGCTGAC
-GGCACATGGAAAAATTCCCACATTTTTTTGTAGATCAAACCGCACCTGAC
-ACCACGTGAAATTTTTGACAAGTCAAGAAAAATTTCGGCAATTGTGAAAT
-AATCGAATTACCGCCGCACGTGGTGCCAGGCTGTCCCATTACGGCTTGAT
-CTACAAAAAGTGCGGGATGTTTTTGCCCAACAAATTTGACGTCAGCACGT
-TCTTAGTCATGCGAAATTAGTTGAGAACTCTGCGTCTCTTCTCCCTCATT
-TCTTGTTGTTCTACGTAGATCAAGTCGAAATGACCCACTCTGACATCACG
-TGCCGCCTCCCACCCCTGCTCCGACCAGGAATCAGCGGATCTACTTAGTC
-TCAACTTGTTTTATTTCAGCTCCTCTCCGAAAGAACACAGGACACAATTG
-CCGAGTCCAATGACGTTGCCGAGGAAGTTCTCTCCACAATGCGTACAGTC
-CGATCCTTTTCCTGCGAGAACGTCGAAGCCGATCGCTTCTACGGGAAGCT
-CACCCACACACTTGATGTCACCAGAACCAAGGCGATCGCCTATATCGGAT
-TCCTCTGGGTCTCCGAACTTTTCCAGTCGTTCATCATTGTGTCAGTCCTC
-TGGTATGGAGGCCATCTAGTGCTCACCCAGAAAATGAAGGGAGATCTTCT
-AGTGTCATTTTTGTTGTATCAAATGCAACTCGGAGATAATCTTCGTCAAA
-TGGGAGAAGTCTGGACAGGATTGATGCAATCTGTTGGAGCAAGTCGTAAA
-GTGTTCGAGTACATTGATCGAGAGCCCCAGATTCAGCACAACGGGGAGTA
-TATGCCGGAGAATGTTGTTGGAAAGATCGAGTTCAGAAATGTTCACTTCA
-GTTATCCAACTCGTTCCGATCAGCCAATCCTTAAGGATCTCTCGTTTACC
-GTTGAACCAGGAGAGACTGTCGCATTGGTTGGACCATCTGGCTCTGGAAA
-GTCTTCGTGCATTTCTTTGCTTGAGAACTTCTACGTCCCGAATGCTGGAC
-AGGTTTTGGTGGATGGAGTTCCGTTGGAAGAATTCGAGCATCATTATATT
-CATAAGAAGGTACGTTGGCGTCAATTTCGGTTCGACAAATCGTTTGCCGG
-TTTGCCGGCAATTTTAATTTTTGGCAAATTGCCGATTTGCCGGAAGTGTT
-TAGAGTGCTTTTTTATAAGACGGAAACACTTGAAACTGTGTCCGTTTTTA
-AATTTTTGTGCCGGTTGGCGATTTGCATGATATTTTCAATTCCGGCAATT
-TGCCGATTTGCCGGAAATTTTCCATTATGGCAAGTTGCCGATATGCCGGA
-AATTTTGATTTCGAAAAATTGCCGATATGCCGGAAGTTTCAATTCCGGCA
-ACTCGCCGATTTGCCGGAAATTTCAATTCCGGTAATTTGCCGATTGGCAG
-GAACAAATCGTTTGCTCGCAGTCTATTCGGATAAAAATTGCGCCAACTGT
-TCATCCGTTTGCACAGAAAAAGCATTTCCGCGCTTCGCTATTGGCCAATT
-TCAAAATAGTGGGCGTGACCAACCAATCACGGGTGTTTCTTGCTTTCCAT
-TGCTGAAACTGTGATTGGTTGGTCACGCCCAATTTTTTGAAATTGACCAA
-TTGCGAAGCGATGACTTTGGACGCAAGAAACTTCCGTTTTCTCCTTTAGC
-TGTCGATCGAGATTCTCTCCTTTAAAAACACATTGCCGATCTTTTCAAAG
-CCCCTGTTTCAAACGACACAGCTAGTAACAACAAAAAACCTCGAAAACTT
-CCAATTTTTCAGATCGCCCTTGTCGGCCAGGAGCCCGTCCTGTTCGCTCG
-TTCTGTGATGGAAAATGTCAGATACGGTGTCGAAGTGGCGGATACGGTAA
-GCACGATTAAATGCACCATGAGCCAAACAAAAAAACTTGTTCAGGAAATC
-ATTCGCTCTTGTGAAATGGCGAATGCTCACGGATTCATTATGCAAACCAC
-GTTGAAATACGAAACAAACGTCGGAGAGAAGGGAACACAAATGTCCGGTG
-GTCAGAAGCAACGTATCGCAATTGCTCGTGCTCTTGTTCGTGAGCCAGCG
-ATTCTCTTGTTGGATGAAGCCACGTCGGCGTTGGACACCGAGTCCGAACA
-TCTTGTTCAGGAAGCGATTTATAAGAATTTGGATGGAAAGAGTGTCATTT
-TGATTGCACATCGATTATCGACTGTTGAGAAGGCTGATAAGATTGTGGTT
-ATTAATAAGGTGAGTTGCAATTGCGCTCGACCGAGATTTGGTCGCAAACC
-TGACACGGGGTTCTGGCCTTCCTCATTGAAATTTCCGCGCTCTATTGACA
-ATCGCCTGCCGGACAACGCGTGGGAAAGTCGTGTACTCCACACGGACAAA
-TACATTTAGTTTTACAACTAAAATCGAACCGCGACGCGACACGCAACGCG
-CCGTAAATCTACCCCAGATATGACAGAGCCAAAATGGCCTAGTTCAGCAA
-AAACTCTTCCATTTCAATTTATGAGGGAATCCAGAAATCCGTGCGCCCGT
-GGTGTATTACTCGTGGATAACTGCTCATATTTCAGAATTGAGAATTTCGC
-TAAAAACTGTAGAATCGCGTTAAAAATGAGACCTCACCAAAACAGGATTC
-ACGAAACAAGAATTCACAGAAATAGTATTCAGTGGGCGCAGTGTGCGCAG
-TGTGCGCGGGGGTTGCGAAAGCACACTTTTCGGTCCCGCCCCCTAAATCG
-TGTTTTTCGTGAATACTGAATCTGGGAAATTTGAAAACTCGGCGAGTTTT
-TCTGTGCGGCACACCCACGTGGTGTCAGGCTGTCTCATGGCCCGACAAAG
-GGTACATCAGTGTAAATGCGCTCTACCGAACAGAACGCATAACCCACGTG
-GTGCCAGGCTGTCCCATTACGGCTTGATCTACAAAAAGTGCGGGATGTTT
-TTGCCCAACAAATTTGACGTCAGCACGTTCTTAGTCATGCGAAATCAGTT
-GAGAACTCTATGTCTCTTCTCCCGCATTTTTTGTTGATCTACGTAGATCA
-AGCCAAAATGAGACACTCTGACATCACGTGATAACCTGGTTGATACTACG
-CGTACGGCTTGCCGGGCCGTGTTTCTCATTGCGGTTTGATCTACAAAAAT
-GCGGGAATTTTTCCCCCAGGAAAGTGTGACGTCAGCACACTCAGTCTGCG
-TCTCTTCTCCCGCATTTTTCGAAGATCAAACCAAAATGAGACATTTTGAC
-ACCAACACACACACACACACACACACACACACACACACACACACACACAC
-ACACACACACACACACACACACACACACACACACACACACACATCATATT
-TGACGAGCAAAATCGGCCCCATAATTACAGGGAAGAGTCGAACAAATCGG
-AAATCACGAAACCCTACTGAAGGACACCAACGGAACCTACGCGAAGCTCG
-TTCAACGCCAAATGATGGGAGATCAGAAGCCACGTAAACGGCCGGCGGTC
-GCCAGATCGGGACCTCAGCCAGCCGCGTCAATCAACGTGGCAGGACCATC
-GCAGGGTAATGCAATGTCCCTGTTGTCGACGTCTTTCAGCCAATCTGCCA
-GTAGTGTTACTTCTCATTAATTGTTTTTTCTTCTTGTTAATTGGCAAAAT
-ATTATGATGAACTTGTTGGGTTGATTAATTTGTAAGAATAAAGTATACAA
-TTATTCATTCATTATTAAAATTTGGGCACATAGAAAAAATTGTGGAAAAA
-CTGTAAAAAATCTGCAAAAACGTGGAAATTATTCAAATCAACTCCAGGTA
-GTCGTTGTCGACATCGTCTCGCTGCCGCATCGTGTTCTGAAAATCCATTT
-TTCACTTTTTTTAAAGCAGATTCCCAGCTAACCGTCGACCGGATCGTGTT
-GTTCCATCCGCGGATTTGAGAGTAGGAGCTTACGGTGCCACGTGTCTCGT
-TGGCAGCTTGCCAATTATTCACAGACAGCCTGTACGAGTCGCTCAACAGT
-GGACCGGCGTTTAGAGTCTGAAAATATATAACGGGAACACTAAAATTTTA
-GAATGCGTATTGTGCAACACATTTGACGCGCAAAATATCCAGTAGCGAAA
-ACTACAGTAATCCTTTAAGTGACTGCTGCACGTGGTGCCCAGCAGGGCTG
-GGAATTTTTTGGTTTTTTGGTTTTTTTGGTTTTTTGGGACCAAAAATCCA
-AAAAATCAAAAAAAAAAACAAGTTACCGTGTCTAGTCTCGACTCGAGACT
-ATTCTGTATTAAAATACATCGAAACATGTATTTTAACACAGTTGTGACGT
-CATAATGTAATACATTTGGCAACATTACTTGAATAACCCCATTAAAAATC
-ACCTAAAGCATAAAACATTTTTTGGTTTTTTTTTGGTTTTTTTGGTTTTT
-CCAAAATTTCAATTTTTTTGTTTTTTGGTTTTTTTGGTTTTTCAAAAACT
-TCAAATTTTTGTTTTTTGGTTTTTTGGTCCAAAATTTTTTTTTGGTCCCA
-GCCCTGGTGCCCAGCTGTCCCATTACGGTTTGATCTACAAAAAATGCGGA
-AATTTTTTGCCCGAAAACATGTGACGTCAGCACGTTTTTAACCATGCAAA
-ATCCATGCTTCTCCCGTATTGTTTGTAGATCAACGTAGATCAAGCCGAAA
-TGAGACACACTGTGACCGCGTGCTACTGTAGTGCTCGTGTCGATTTACGG
-GATCAATTTTCGAAATGATTATACATATAATTATCGATAGAATAATAAAA
-TTAAGCAAAAAAAAATCGGAAAATAATACGAAAAAACAAAGGAAAATTGA
-AAATCGCTGTCAAAATTCGAAAAAAATTAATTTCGAAAATTGAGTTCCCG
-TAAATCGACACAAGCGCTACAGTAGTCATTTAAAAAGGATTACTGTAGTT
-TTCGCTACGAGATATTTTGCGCGTCAAATATGTTGCGCAATACGCATTCT
-CAAAATTTTGAACTCTCCGCCTCTCACAGCTGGGTCTCGTTAGGTATGGG
-GGCGGATCCTTTTCAATTGGCGGTGGAGCGCGATTGAAAAAATTTTCGAT
-TTTTTTTCGATTTTTCAGAAAAAATATCGATTTTTTCCGATTTTTCAGAA
-AAAAAATTCGATTTTTTTTTGATTTTTCACAAAAATTATCGATTTTTTAG
-ATTTTTCAGAAAAAATATCGATTTTTTTTTCAGATTTTCAGAAATTATTT
-TGATTTTTTTTTAATGTTTTGTCCCTTTTTCTGAAATTCTACCTCATAAT
-GATTGCTTCTTCCACTTCCGCCTCGCTGCCCGTAGTTCAGTGTCGAGTAA
-TTCGCATTCGATACTGTGTAAATCGACAGTGGAATAACCGGGTAGATCAT
-AATGTAGTACAATGTGGCAAAGTGGATCACTAACTGAAAATTATTGGATT
-TTTCTAATAATAAGGTGGGGAAATCCGAAATATGTGAAAAATATTTTTAA
-TAAACAAATTTTCCCCTGATTCCGAATATCTATATGAAAAAATTCAAAAA
-AAAATTTTCCAGATTTTATATTTAAGCTTGAAATCGCTTGAGCCCGCATC
-ACTATTTTCAAATGCTTGCCCAAAGAAATTTGCATTAGAGCGCGCTTGCA
-TAGTTTGATTTTCTTCATTCAAATATTGTATTTATTACCGCCAAATTCAA
-TTTTTTAACCGGTTTCATTCATTTTTGTCGAAAAAATATATTTTTCAGAA
-AAAAACCGGTGAAAAAAAACCAAAATCGACAAAAACTAATGAAGCTGGCT
-GATAAAAATTGAATTCGGCGAAAATAAATAAAATATTTAAATGAAGAAAA
-TTCTTAGGCGCAAACGAAATTCGCCATTTCAAGCTTAAATATAAAATCAG
-GGATTTTTTATTTATTTTTTTTTCACATTGATTTTCGAAATCAGGGAAAA
-ATTTGGGGTTAATTATAAATATTTCCCAGATTTCGGTAAGAAAAATATGA
-TTATTTTTTTACTAAAAAATAACCCCCACCAGTAAAGCGTAGAAAATTGA
-GATGATAAATGCGAAAATGATGAACGCGGAAGAAAAAAAGTCGGGATTCT
-TTTGGGCAGTGCTGGAGTAGTTGAAGATCGAGATGATTGTAGAATAGTAG
-GACAGGAATGAAACAATCATCTGTAATTTATTTTTTTAAAGCTTCCAGGT
-CAATACACGTGGTGTCAGAGTGTCTCATTTCGGTTTGATCTACTGTGTAG
-ATCTACAAAAAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTCGC
-ATGGTTAAGAACGTGCTGACGTCACATTTTACTGGGAGAAAAATTTCCGC
-ATTTTTTGTAGATCAAGCTGTGATGGGACAGCCTGGCACCATGTGGGTGC
-CGAGGGTATTGCTTTTTGGTATTTTTTGGAATTTCGAAAAAAACTTTCCG
-ATTTTTTTGAAAATAGCTCTTTTTATAGAAGAAAATAGTTTTTTCTCATC
-AACACAAATTTTAGAACAATTTTTTCGATTATCCGGAAAATTGAAAACTT
-TCGTTTTTCTATGTTCCATTTTCGATTTTATAAATTTGGGAAAACCTAAA
-ATTTCGATTTTTTTTGAAAAAAAAACGAGTATTCAATAATTTATATATTA
-TAGGCATTCTTTTTCTCTAATTTCTTCTGAAAAACATTAAAAAAAAATTT
-TTTTTTTTTTAAACCAATTTTCAGTAATTTTTTTCTGTAAAAAATACGAT
-TTTTTTCCAATAAATTTCTAGTTTTTTCTCTCTTTTCGTACATTTGGACT
-GTTTCTAATTTTTGCTTGCTTTTTTCTATATTTTTTCTGCGATTTCCTAT
-GAAAAGTACCAAAAAATCGGAAATTGTTTTTTTTTTTCGATTTTTTAGGA
-AAAAAAACGATATTTCCTATAAATGTTTTTTTCATAAGTAAATACTTTTC
-TCCTTTTCCTTTTGATCTACAATATTTCGAATTTATTTTGAAAAAAATTT
-TTTAAACGTTTTTTTCTGAAACAAAGACCCAAATTTTCAATAATTCAATA
-ATTTTTCTGGATTGTTCAACCGAAATATACACATTTTTCAATAAATTTAT
-AGTGTTCTCCTCTATTTTTGTTGATTTTTACTACTATAATTTTTTCAAAA
-TTTTCGAAAAAAAAAATTTTTTTTTTGGAAAATTTTAATTTCAATTCGAT
-TTAAAAAATATAAATGTTCATATTTTTTCATCGAAATATATATTTTTTGA
-TTTTTCAACCTTTAAATTGTTTCATTTTCTCTGAAAAAATCGGAAAAATC
-AACAGAAAAATCGAATTTTTTAAAAATATTTTCCGATTCCGACCGTAATT
-TTTATGAAAAAAAATCGGTTTTCTCGTTATTTTCTACAACAAAACCTCAA
-AAAACATGCTGGGCAACGTCAAAATCGCTCGATATCGAATCTTCAGCTCA
-GTCTCATGTTTCACCAAATACACCGCATACAGAAACATCGTGCAGCTGAT
-GAAGAAGAAAATGAGCAGATATGCACACTTTTCCACGAAAAATTCGCCCG
-AAATCATGAAACGTGGCAAATTGAGCACAATTCGATGGAGCCAATAGCAG
-GTCGATGAGCTGCAGCGGAAGCTTTCATTGGGATCTGTGCAGTACGTTGG
-AACCGATAAATGTTCCTGCATTGATCGGATACAGTAGACGAGCAGGCAAA
-TGTATTTTACAAGTGAGATATTCTGAAAATTTTTGAATTTTTTTTCCGAA
-TTTAAAATTTTAGTTTCTCGATTGTTTTGAAGTAAAAAAATTGATTTTTT
-AGAAAATTATATGTTTTGTTTAATTTATTTAAAAATCTTTAAAGGTGGAG
-TAGCGCTAGTGGGGAAATTGCTTTAAAACATGCCTATGATACCACAATGA
-CCGAATATCATGATAAAAAAATTCAAAAAAATTTTCTAAATTTTATAGGT
-TTTTTTTTGAAAATTGAAAAATCTCAGTTTTTGCCTAATTCCAATTTGAA
-TTACCGCTAATTGGATTTGTTCGGTGGAGCGCGCTTGCACGTTTTTAAAT
-TTTTTTATTTTATTTTATGTTATTTTCCACCGATTTTTAATGTTTTCGGT
-GTATTTTTGCTCGAATTTTAGAGAAAAAGTCAAGATAAATGCAAATTTTC
-AATTAAAAAGCACGCTTACAGGCGTAAAAATGACAAAGTACCGATTTTAA
-ACGATTTCCAACCTGAATTAATTAATTTCACTGATTTACGCCTGTAATCG
-TCTTTTTTAATTGAAAATTTGCATTTATCTTGGCTTTTTCTCTAAAATTC
-GAGCAAAAATACACCGAAAACATTAAAAATCGGTGGAAAATAACAAAAAA
-TAAAATAAATAAATTTAAAAACGTGCAAGCGCGCTCCATCGAACAAATCC
-AATTGGCGGTAATTCAAATAGTAATTAACAAAAACTGAGATTTTTTTCAA
-TTTTCAAAAAAATCGTATAAAATTTAGAAAATTTTTAAAAAATTTTTTTA
-TCATGATATTCGGTCATTGTGGTACCGTGTTTTAAAGCAATTTCCCCACT
-AGCGCTACTCCACCTTTAAAGTGCTAATGTAAACTTTTTGTACACGTGGT
-GTCAGAAAGTCCCATTTCGGTTTGATCTACAAAAAATGCGGGAGAAGAGA
-CGCAGATTTCTCAACTGATTTCGCATGGTTAAGAACGTGCTGACGTCACA
-TTTTTTTGGGAGAAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGG
-GACAGCCTGGCACCACGTGTTTGTACAATTACACATTATCCTGGAACTTT
-CCAGAAAATTTGAATTTCCCGCCAAAACTTATGGGTCTCATCACGATGAG
-TCACTAACCTCAAACCGATATATTTTCTAAAAACAAAAACTCAAATTTTC
-TCAAACTACAGTAATCCTACAGTAATCCTACAGTACCCCTACAGTACTAC
-TACAGTACCTTGGCATTGTCCCCCACCAATATACAACCCAATATACCTTC
-AAAAAACAAACACGTAATTTTTCCCAAACTACAGTAATCCTACAGTACTC
-CCACAGTACCCCTGCAGTACTACTACAGTACCTTTTTAGAACATTTTTCT
-GTTTTTCGATTTTTTCGCAAAAAAAATTCAGTTTTTTCAGCAAAAAAATT
-GATTTAAAAATATTTCAAGTTACTTTTTAAAAGCTTTTCAAAAGTTTTTC
-AATCCGTAAAAATAAAATTTTACGAATTCTTGTATTTTTTAAATTATCTG
-AAATTTTTTTTTCTCAAAAAAAAAACTTTTTTTTTCAAGTTTTCAATTAA
-TTTCGGCAAATTTCAAAAATTTTAGGTTTAAAAAAATTCAATTTTTATGC
-TTAACATTTTATCGACATAAAAATCATTAACAACTACGAACAATTTGTGG
-AAAACGTTTTTGGCAGTGGAGCGCACTTGCGCCTCGTATTCAAAAAGCCA
-CACAAAATGGTGAAATATTCCCAAAAATCAAATAATTGTTTCGCTACGAG
-ACCCAAAATACCGCAAAATAGTAATTTTTACCATAGTAATTTTCAAAAGT
-GGCACGTAGACCTGATGAAACGTGTCGTTCACCTCCTCCGAGCTTCTGCC
-ACGTGAGCTGGTGCTCCGGCATGGCTGATACATTTGTGAAGTTCGCTAAA
-ACAGAAAAATATTATAAATAAGCGGAAAATTTCGTGGTCTCGACACGACA
-AAAAATAATAAAAATTATTCGTGGTGAGACCCGAGTTGTTTTGGAGCAAA
-ATTCTCAAAATTGGGGTATCACGTGGTGTCAGAGAGTCCCATTTCGGTTT
-GATCTACAAAAAATGCGGGAGAAGAGATGCAGAGTTTGCTGACGTCACAT
-TAAAAAAAAATTCCCGCATTTTTTGTAGATCAAACCATAATAGGACAGCC
-TGGCACCACGTGCGGGGATTAAAACCCGCGCCGCACAGAAAAAAGGCGGA
-GTGTTATTTCGCAACACCGCGGCACGGTTTTTTGTTGATCTTTTTCAATA
-GTCTTGATATTACTTGCGATTTTTGCAAATTCAAAAAATCAACAATAAAC
-CGACCGTGCCGCAGGGTTGCAAACTCCGCCTCTTTTTCTGTGCGATGCTG
-ATTTTTTGCGAAATTCACGAATCAAAAAGCACACGTGGTGTCAGTGTCTC
-TCATTTCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGAGAAGAGAC
-GCAGAGGTCTCAACTGATTTCGCATGGCGCCACACATTTTTGGACAAAAA
-ATTCCCGCATTTTTTGTAGATCAAACCATAATGGGACAGCCTGGCGGGGA
-TTAGAAACCGCGCCGCACAGAAAAAAGGCGGACCGTAGTTTCGCAACACC
-GCGGAACGGTTTTTGATATTACTTGCGATTTTTGCAAATTCAAAAAATCA
-ACAAAAAACCGTGCCGCAGGGTTGCGAATTTACGCTCCGCCTCTTTTTCT
-GTGCGATGCTGCTTTTTTTGCGAAATTCACGAAAAAAAAAAAGAAAATAA
-AAGTACATTTACCGATAAAAGTGACGATAGACCGCCGATATACATGGAGA
-GAATAGAGAGAGAAATGTGAAGTTTATTAGAAAACAATTTTGTAAAATTA
-TGATGATGATGAAGATTTGCGGAATCTGGTAATCGGTTTTAATTGCCTTT
-TCTATTATATTATATTAATCACTTGATGATGTACGGCTTTGCGCTTCCTC
-GTCCACGGTCTCCAGATGACGGAATCCACGTGGCGATACTGATCGATTGT
-GTTTTGGAGTGGTGGTGCTGCTGGTGCTGGTGGAGGGAATTGAGGTGGTT
-GCAGTGGATATTACGCTGAAAAATTGAAAGGATTGGTGGAGGAAATGAGA
-GAAATTTGAGAGCATAAATTTTTAAAAATCGAAAAAAAATTTTTTTTTGC
-TATTTTTGGGCAGAAAATGGCGAAAACGGTGTTTTTTTGGGTAAAAAATA
-ATAAAAATTTACAATTTTTTTTGACAGAAAAATGCGGAAAAGCTGTTTTT
-AGGGTTGAAAAATCAAAAAAAAAATTTTTTTTTGCTATTTTTGGGCAGAA
-AATGGCGAAAAACGGTTTTTTCAAGTTTAAAACATCAAAACAATTTTTTT
-GCAATTTTTTTACAGAAAAATGAGGATAAGCGGTTTTAAAGGTTTAAAAA
-ATTTTTTAAAATTTTTTTTGCGAATGGAAATTTTCTGAAAAATCGTGCAA
-ATGCCTAATTTGTGCAAAAATCTTATCTGGTCAATGATTTTTAAGAGAAA
-ACACCGGTTTTAGAAGGGAAAAAGGCAAAAAACTGGATTTCCAGTGAATT
-TTATACTAAAAATGGAAAAAATTCAGAAATTTTTTAAGGAAAAATCAGAA
-TTTTCGCAATTTCTACACGAAATATATAGAAATTGAGGAGAACCTCGGAT
-TTTTTGCGGAGTTTAAACAATAATTTTTCGGCTAAAATTAACGATTTTCA
-GAGAAAAAACTTAAAAAAAACAGAATTTCAGTGAATTTTACACGAAAAAC
-GTAGCAAAAAGAGGTTTTTAGGGAATTTCCAAGTCAAATTTCCGAAATTC
-TTGCGATTTCAACCCTGAAAAATAGCGAAATTGAGGAAAATCTCGGATTT
-TTGCAGATAAATAATATTTTTTCCAATGATTTCCGTCTCCAAAACACAGA
-ATAATTTACCAATTCGACGATGGTGAGGAGGGAGAGCCCAGCTCGTTGGT
-GACAGCCGTGAGATCCGAGAACAAATTGACGCTGGCTGAAAAAATGGAAT
-AAACGCTAAATTGATGATTTCCGCTATTAAAGTGCATATAGAAATACGAA
-AAAGCAAAAAAAAAAATTTTTTTTAACCTTTTCCCTGGAATCGAAGAGCA
-GTTTGCTTGCGGATTGGACGTCGAAAAGGGCCTAAAATTCTCATTTTTCG
-GCCTGAAATTCCTCGAAAAACCCACTATTATTGGTAGTCGGAGATGGCTG
-ATCGCCTCGTCGCTGGTAATATAGCACGCCTAGCCAGAATCCGTAGAGAA
-AATAAATATAGACTGCCCACACTAGGATGATGGGAAGAAACGACAATCGG
-CAGGCGTCTGGAGTGAAGAAATCAAGATTTTTCAGATTAAAAATTAAAAA
-TCTTTAAAGGTGGACTACACCCTTGTTGGGAAATGGCTTTCAAACATGCC
-TATGGTACCACAATGACCAAATATCATGATTAAAAAATTCAAAAAATTTT
-TCTAGATTTTATATGATTTTTTGAAAATCGAAAAAATCTCAGTTTTTGCC
-TAATTCCTATTTGAATTACCGCCAATTGGATTTGTTCGATGGAGCGCGCT
-TGCACGTTTTTAAATTTATTTATTTTATTTATTGTTATTTTCCACCGATT
-TTCAATGTTTTCGGTGTATTTTTGCTTGAATTTTAGAGAAAAAGTTAAAA
-TAAATGCAAATTTCCGATTAAAAAATCACTGAAAATGCGTAAAACTGAAA
-AATATGCTAGTTTCAGGTTTGTTGTCGTCGGAACTCATTATTTTACAGTT
-TTACGTATTTTTCACATTTTTAAACACTTTTTAGCAAACATTCTGCATTA
-ATCTTGCTTTTTTACTTCTCTTTCCGATAAAAATACACAACTAATGAAGA
-AAATCAGTGACATAATAATAATAATAATAATAATAATAATAATAATAATT
-TATTACGCTCGCTGGGAGACGTGAAGGAATACAGAATACAAAAGTTATCA
-TTGTTCGCTTGAACTAGAATTGGTGCAGTCGGGCAATCGTTTCCATTCCA
-TTAAAATGTTGTCCTTGTCCTTGCGTTGTCCTTGCGTAGACTCCCCCATA
-GTGGGCGAGCGATTCCCGAGTGAAAATAATCACGGAATGAAAAAATAGAA
-GAAAAATAGAATAAATTAATAAAAAAAATAATGCAAGCGCGCTCCAACGA
-ACGAGTTCAATTGGCGGTAATTCAAATAGGAATTAGGCAAAAACTTTTTC
-AGATTTTTTCAATTTTCAAAAAATCATATAAAATTTATAAATTTTTTTTG
-AAGTTTTTTAACGTGATATTTGGTCATTGTGGTACCATAGGCGTGTTTTA
-AAGCAATTTCCCCACAGGGTGTAGTCCACATTTAAAAATTAAAAATTAAA
-AATTCTACCTAACAAAATCGAAAATTTCAGATTCTCCTTGATTAAAAGCT
-TTATTATTGAGTAAAGAGTCCGCAGCGTCCACACGGAGAGCGGGTACAAG
-ATGGAAATCTGAAAATATTTAGGATTTTCAAGGGAAAATATCGATTTTTT
-TTAGCAAAATACCACAGAAATTGCGGATGGAATGAGTAGAAGAGCCGGGT
-TGACTTTCCGGGGAAAGTTTCGACGTGTGATGCTCGTCTCGGAGAGCCTC
-ATTCCCAAGAATCCGGTTGCGATGCTGAAGAAAATCGATGGAAAAAGTCT
-AAAATATCCCCTGAAACCCTACCTAAAAATCAGAAAATACGAGAAAATAT
-TGATTAAATTCCGAGCCGGCACATAATTCGGGCGGATCAGCACTCCATTG
-AAGTTTCGAAACGTTTCGCCGTTCCACTGAAGTCCATCGAAGCCGGGAAC
-GGATGGCGGCTCGAAATGCTCGTCGACACTCATTTGACTGGCCCTGTAGA
-GCCCGATGATGGCAATGGCGAGCATTCCCACTTCCACATGGAATATCAGG
-CTCTGAAAATTAAAATTTAGCTTTTAGACGGAAAAAATCGATTACTTTGA
-CATGAACTTGATCGAAAAGCCAGCGATACGGGTATTTTCGGTGCAGGCGG
-CCTGATTCCGGACGTGCTCCTCGAGATATATTGGAATTTGTCGAGCGGAT
-ACTAATATCTGCCATTTTTTCGCTGAAAAATCAGAAAAAATAAGTTTTAA
-AACAGAATTTTAATGGAAAAATAAACGGAAAAATTCGAAACTTTTTTTTC
-CGCCATTGAACACCAATGTGCCTTTAAGGTACGGTAGCTCTTCGTGGTGA
-GACCACTGCGCCGCGCATCTGATTTCTCGTGGGAAATTTGTTTCGAATCC
-TACGTTTTTTACAGATTTTTCTTTTTTTTCGTTTCGCTCATCATTTTTTT
-GTTGCAAAAAATCCAATTTTCAGACAAAAATGTCAGAACGCCAATCCAAA
-TATTTTGACTATCAAGGTATCGTCATTTCCTCCACTGGACAAGATAACCA
-AGATTCGGAGACGGACCTCGTTTATCTCATTCAAGCTCATGTACGTGAAT
-TCCCTCCGTTTTCATATTTAAAATAATAAGCTCGTTTTCAGGGAAAAGCG
-GCCCCGAAGAACATCATGTACGGTGTCTCCAAGTGCGCATTTGTTCCAAC
-AAACTTGGAGAGGAATTTCGATAATATCGAAGAGGCAAAAAATCTTGAGT
-CAGTATTTATTTGATTTGAGCCCATTTTTAATCTGTTAACACTTGAATTT
-TTAGACGTCGATCCAAAATCCCGCTAAAGTTCGGTGAAGTCATCCTATGG
-AACGAATCGGACTGTGATCACGATAAGAGGATAATCCTTCATATCAAACG
-AGAAAAACCAATTTATGAAGCGTCTTCCAGCAGAAATGGACTTATTTTGA
-AAGTCGGTGGCGTCATCCAGCCCACCTCAACGACCTCGTTCTGGACGCCA
-TTATGCACCGTCACCATGCGTATGTTTCTTCTTGATTTTCGTCTCTCTAA
-CCATATATTTATTTCAGCAGAGACAGAGGCGACCCGTGCGGAGCCAGACG
-TTTGGCTATACGCCTGGATTCGATTCGAAACTACCATGAAGAGTGGTCTA
-GATCCTTTCAATATGACTGCAACATTCGAATCGTTTGACAGTTGCGATCC
-ATCCGACCAAGCACGCGTCTGTGAAGCGGTATTTGCTTTTTAAAAATTTT
-TTACGGGATTTTGAACAAATAACTTTCAGCCATGGAACGCAGGCTCTCCT
-GACTCTAAATTCGGTGTTTGGCGCCCGGATCCAAAGCCTGCTGATAGCGA
-CGACGAAATTGATATCGAGCCGAGAGAAGGCTGGCACTTGCCAGAAGACA
-AATGGGCCGAGGTTAAGGTTGCTTTGTGGATTCTCGTTGACAATTTGATT
-TTGCAGGTCATCAAGATGCAGCTTGGCCTGTATGTCGGCGAACGCCTACT
-GATTTGCAAAGAACTCTCGCAGTTCGACTTTATTATCCCACTGCAGAAGC
-CATTTTCCCGAGGAACGGACAAGACTTTGATCTACCCAGCCGTCGGAGAA
-TACTTTCATTTCAGTGCTATTTGGTCGATGCAGCACAACGGTTTTCTGAT
-CTATGAGCTTCAGCCAGTTCCACTTCTCAGACAGCATGTAACCTCTGTCA
-ACGGAAATGTAAGTTATAATATTGATTTTTTTGTCCAGAACATAATTTTT
-ATTTCAGCTCCTTACCCGCGTCGTTCCTGCCAGTATCAGAGGTCTCTTCG
-TTGACAAGGAGGGCACTCTTGGATTGATTGATGACCCACACCATCTTCTT
-TCATTCTTCGAGTTTCATCCAGCTGGTTATGAATTCTTGAAGGCTATGGT
-AATCATGAGTGGGTCTTATTTTGAAACAAACGCTTTCAATTTTCAGGCCG
-AAGTTCGTGCTGTTCGAACTTCAGAAAACAAATCTGTCCGTTACCGCATT
-GTTCGTACATCGGGAATGTCCATTTTTGAAAACTGGCTTCGTGATACTCA
-GGTCTCTAAAGTTAAATTAAACTCGTCCTTTTCACCCCTGAATTTTTCAG
-TTCGTTGTTGGTCCAGTCAAAGGAATTCGAATCAATGAAGACACTGTCAT
-TTGTGCCAAACATCCGAATGTCTACTTCAAAATCCCCAATAACTTGAAGG
-AAGGAATCCCCATTGGCGGAGGAGTTCAATTCGTTGGAAAGCGACAAGCT
-GGAGTCGACAGTGAAATTATGATCACCGAATGTTCTCCATGTCCAGCGTT
-CACTTGTAAAAATTACTCGGTCTCTGGTGATACGGTTAGTCTTCAATTAT
-TTAATAGTTTTTATTCTATGAGGAAAATATTCAGCGCTTGTTCCAAGTGT
-ACTTGAAGCCAAATTGCGATCATGAGCAGTTGGCGGAGAGTGATTCGATG
-GGATTTGTGGATTTCAGAGAGTTGGAGACTCCATGTAGAGGAAAGTGAGT
-GTGTCAGGATTTGTAAAAATAATTGTAACTGAATTTTAAGGTTCCTGGCA
-TGGGTCCGTGAATCCATTACTGTCAATGATTGTCGCCGTGCTGCTACCAT
-CATGGAAGTATGCTCGACAGCCATCTGTCCTCCGTTGATTGCAATGAGCG
-CGAATTCGAGCAGAGCAACATCGGCCAGAACTACGCCAGCTGGAAGTTCC
-ATTGGATCCAGATCATCAATTCAATCAAGAGCATCTGCAGCTACTTCAGT
-GAGCTCAAACGTAAGTTTATTTTTAAGGTTGGAAGATGATAAAAACAAGT
-TTTTCAGCGATTCGTTGGCCCTTCAAGCCGCAGAACTCCATCTGGTACTC
-CACAAAGCTCAACATCTTCCAGGGTCTAATTAAATATATACGCATCCCGT
-TTTCCCCCGTATTTGTGTTTCAAATGTTCTGCTCATTTTTAATCTACCCG
-TTATCCAACCAAACATTTATTTATTTAAACTTCAAGTTCCACCACCATCC
-CATTCCGCACAACTTGTCTCTCGTAATTTTCTCGTGCTCTAATGAAGTTG
-TGGTAGGTTATTCTAGTGAATACACCCATGTTAAGCAGCGAATACATCCA
-GAAAAGTCCCAACAAGCCGGCAGCGAGATACTCCCCCCAAAATGATGGTT
-GATCGGTACATCCAAGATAGGGTAGCATCGCGATAGACGTGAGCAAGTTC
-GTTATGCACTTGAAAAACTGAAATTTCAGAAAAGATTAGGTGTATCAGAA
-GGTTAAAAACAAACAAATGACATATAGATGAACGAAGCCAGTGATGGAAT
-CGGATTCCGAATACGAGAAGCCATTCCCGGAGATACTGTGATAAGAATCT
-GTGTGATCGAGAACACAATGAGCACACCCACCGGGAACATGAATTCCATG
-GAAACACGGAGGCAAAGGTCACAGTACTGCAAAAAATGCGAAATTTTGGC
-GATTTTTGCTCTAAAAAATGCACTGGCCGGGTCTCACCACGACAAATTTT
-TGTTGTCAGTTGAATGCCAATAGAGTGTGCGCCTTTAAGGAGTACTGTAG
-TTTCAAACTTTTGTTGCAATCGATTTTACAGTTTTCCCGAGAAACAAAAG
-TTTGAAACTACAGTACTCCTTAAAGGCGCACACACTCTTTCCGCATTCAA
-CTTAACAAAAGGTTGTCGTGTCGAGACCCGGCCACTGCATTTTTGTAGCA
-AAAAAAATTTGAAATTTTCAAGTCTGGATAATAATATATAATATTTTTAC
-CTCAACTATGGGAATTTGCATTTCCAAACTATCCAAACAATCGCTGAACC
-CGAAAGCATCACAAATAATCGATCGATATTGTCGCGGAATGTCACGTATC
-GATTGGTAGATCATGAATATGTTGCCAAGTAACGCGAAAATCTTGAAAAA
-TGGAGGATTTTGCTTTTAAAAAATCCAAAAAAAAAAACTTAAATTCGACA
-ATTTCCTGTTTGAATTCCCTCCAAAATGAGAACTGCAGGACCCATCAGCG
-ATTTGAGTGGGCGGAGTCCGAGGGCGCTGATTGGTCGTGCAGTTCTAATT
-TTGGAGGGAATTCAGCCAAATTTGAAAAATCTCGTTTTTTTTGCAATTCT
-TTTGTGGTATTTTCGACATGGGGTTCTTTCTGGCTTTCCTCATCAAGGGT
-GTCAATGTCCCGTAAAAATTTCGAAAACGGGACAACGGGACGTCCCGTTT
-TTTTGAAAACACTCAAAAAACGGGACAAACTGGGCGGTTAAAAAAAAGAG
-TGCATAGTTGGCGTAAATTTTAGTGTATTCGAGGCAAATTATAAAAAAAA
-CTGCATGTAAGTCATTAATCTGCATGAATTTAAGTCTTGAAACAAAACTC
-AAAAACAGAACTTTAAAATGTGCAACAAAATCATGAGAGAAATTGTCCCG
-TTCCCGTGATAATTTTGAAAACGGGACAGCGGGACGTCCCGTTCCCGTGA
-AAACACTCAAAAAACGGGACAACGGGACAAACGGGACACGGGACTTGACA
-CCCTTGTTCCTCATTAAAATTTTCGCGCTCCATTGATAATCGCCCTGGGA
-AAGTCGTGTACTCCACACGGACAAATCACATTTAGTTTTACAACTAAAAT
-CGAGAAAATTGGGAGAGTTTTTGCCGCGAACCTGGCCTAGTTCGCGGCAA
-AAACTCTTCCATTTCAAAATATGGGCGAAGCCAGAAATCCGTGATATTTT
-CAGCATATTTTTTTGATTCGAAGCAAATCTCAGTTTCTCACCACAACGAA
-CAACTTCACATTCGGATGCCGCCCGTCTTCGAAACGTGGAATTCCAACTG
-AATTCACCGATTCGACACTTGAACCGGGTGACATCATCATATTTTCAACC
-AGCTCATACTCGAACTCCGGAATATCCGGCACCACATCAATCGGTGCTGG
-TTCTGGCGGTGGCGGCTCAACTGACACTTTTCCTTGATCTAAAATTTGTT
-TTTTTCTGAAAATTTGTCACTGTACCAAATCAAAAAAAAAACCTTACCAG
-AACTCATAATTTTTGGATTTTAATTTGTAAATTGCAAAACAGAAAATGAA
-TTGGAATTTTTTCACTTTTTATTTATGGGAGGGGGAAATTCTTTGTTGTT
-GCAATAAAGTAAAACAATCACAGTAAATGCCAGTACAATAGTTTTTCACG
-TGTAATATATTAACCAATTACTATATTCAATAACTCTGTCGTCTAAATAC
-ATAGGGTAGGGGGGAAGGTGAGGGAAAATGGAAATAATAAAGTGAAATGT
-TTTGTGTACTTGCGATAAAACAATCAATAAATGGGAACAAGCCGATGATA
-AACTGATAAACCGAACGTGAATATCGAGAGAGGGAGGAAGAAAGCGTATA
-CCCGTTAATGAAATCAAGTTAATGGAATTATTTGGATTGAAACAAAACAA
-CGAAAATATCAATGTTTGAGCATAAGGAATGAGGGAATGGCACTGGTGGT
-GGTGGATAAATGAATCGGGGGGAACGGAATCTATGGAAGTTTCGAATACA
-TCGCATCGAGTTGCTTCGAGTAGTGAGCCTTCAGCTTCGGACGCTTGCTC
-TTCAACGTTGGCGTGAGAAGATCATTCTCGACGCTGAATTGCTCGGCGGA
-GAGACTGATATCGCGCACTTGCTCGAACGAGAAGAGCCCGGCTTTCTTGC
-CAACAGCGACCATGTCATCGAGGATCGCCTTTTTGACGGCGTCGTTGTTG
-CACAGCTCTTCGAATGTTCCCTTGATTCCTTGGTCGGCCATCGCTGGGAC
-GAGAACCTAGAAAAATTGAAAATTACATATATATATATATATATACACGC
-TCTCCTCAAAGCCGAATAATTATTAGAGCGCGCTTACTGCGCTTCGCGTT
-TCTGCATCCGCGGCATTTTGACTTTACACTGAAAAAAGCAGATATTTCAG
-ATTTATCGAATTTTTAGCTTTTAAAATTTTTTTCTGCATTTTTCGAACAA
-ACCTTTTGTTAAACAGTGAAAATTGAATTTAAAATGACTAAAATGAACTT
-TTTTCGTTCACTGGTTGTGAAATGGTTTGAATTTGAAGAAATCAAAGGGA
-TTTTTCTGAATTTTTTAATAATTTTCTATTAAAAATCGGTTTTAAACCAT
-TTTTTGACCCTAATGTTAAGTCACAAATGTATTGAAACCGGTTTTTAATA
-GAAAATATTTAGAAAATAAGAAAAATCCCGTTGATTTCTTCAAATTCAAA
-CCATTTCACAACCAGTGGACGAAAAAAGTTCATTTTAGTCATTTTAAATT
-CGATTTTCACAGTTTAACAAAACGTTTGTTCGAAAAATGCAGAAAAAAAA
-TTTTAAAAGCTAAAAAATCGATAAATCTGAAATATCTGCTTTTTTCAGTG
-GAAAGTCAAAATACCGAGGATGCAGAAATGCGAAGCGCAGCAAGCGCGCT
-CTAATAATTATTCGGCTTTGAGGAGAGCGTGATATATATATATTTTTTTT
-AATTTTGAAAATATTTAAAACCAAAAAACCAACCTCAGCATCAGGTACAA
-CAATAGCAATGAGACACGTCTTCAGTGATTCTCCATGAACAAATGATTGA
-GCGACATATTTCGAGCGGACATAGATGTTCTCAATCTTCTCCGGTGCCAC
-GTATTCTCCCTGCGAGAGCTTGAAAATGTGCTTCTTGCGATCCACAATTT
-TCAGCGTTCCCTCAGGAGTCCATCGTCCAATGTCTCCAGTGTGCAACCAT
-CCATCCTCATCGATCGTCTCCTTCGTTTGTTGCTCATTCTTATAGTATCC
-CTTGAAGATGATGTGTCCCTTGACACACACCTCGCCGGCTTGATCCTTCG
-CGTAATAGTTCAACTCGGGCACGTCGACCAACTTGATCTGACACGATGGG
-ATCACCATTCCGACGTGTCCGGCTAGCGAATCTCCTTCCATCGAGACAGT
-GCAAGCGGCGACACATTCCGTTTGACCGTAACCCTCGACGACGACACATC
-CCATAGCGGCACGAACGAAGGTGAGCACATTCGTCGAAAGTGGAGCCGAT
-CCGGTGATCATCAGACGCACACGCCCTCCGAATCCTTCGCGAATCTTTTT
-GAATACCAAATTGTCGAAGAATCCGTCATTTCTGATATTGAAGCTGGAAA
-AAAAAAGAAGATATTAAATACTATCAAATCATTCAGACCACTCACTTTGC
-CATATCTCTGGCCTTGTATGAGATAGCGAAATCAAACAACATCTTCTTCA
-AAGTCGACTTGTTCACTTCAGACATCACTTTATCGTAAAGCCGATTCAAG
-ACACGTGGCACCACTGGCACCACAGTCGGCTTCAACTCTTTGATATCCTC
-GGCCAACACACGTATGTCACCACGATAGAATCCGACTTTCGCGCCGACAC
-AGAAGCACACACTCTCGATGACTCTCTCGAGCATGTGAGCCAACGGAAGG
-AAGCTGATCATCGAATCGGTCGCCGCGATGCCACTGTGCTTGAAGAAGTC
-CATACAGACACCGTCGGCGATCACGTTCGCGTGAGTGAGCATCACACCTT
-TCGGTGTTCCAGTCGTTCCTGACGTGTAGCATATGGTCGCAAGATCCTCT
-GGTGTTGGTGGAATGTGTGCTGGACGAGTCTTGGCGTTCTTTCCAATCTT
-CTCGAGATCCTCGAACGTGAGCACCTCGACTCCGAGCGATGACGCAGTCG
-TTTTGAGCTCATCGGTGACTGGTTCCATCACAACAAGTGTGCTCAAACTT
-GGGCATTGCTCCTTGAACTTTAAGAGACCTGAAATCAAATTTCCTTTTGT
-TTTTAATAATATTCCTTATCAAACTCACCAGTGGCCTTTGAAATATCATC
-ACAGACAACAATCTTGATCTCTGCCTGATTCAAAATGAATATCGACGCTT
-CTGATCCAAGGGTCTCGTAGATCGGCACAATCACATTCGAATAGTTGTAG
-GTGGCGAATTCGGTGATGATCCATTCGGCGCGATTCTTCGAGTAGATCCC
-AATGTTCTCCGCGTTGCCAGTCGGAACGCCGAGCTCACGGAACGCGACGG
-ACACGTTGTCGGCTCGCTCGAGAATCGTATTGTACGACTCCCACACGTAC
-GGGATTGAACCATCCGACTGTTTGACTCGACGTCCGAGCATCGGCCCGTT
-GTTCGAGAGACGGGCTCCACGGCGAACACCCTGGTAGAGGGTGCGCGCGT
-CTTCGAACAGGAAAGCCTGGAGTTCGTCGTCCTTCAGGTAGGCGCTGATG
-CGGGAACCATCCTGGAAATTAACATTTTAGTCGGGGGGTTTTTTTGGAAT
-TTTTTTTTCGCTCGTTTTCTATTGTAAACCGAGCCACGACGCGACACGCC
-GTAAATCGACAAGCCCAAATGGCCTAATTCGGCAAAATCTTACATTTAAA
-AATATGAGGGAAGACAGAACTCCGTGATTGGAGAAAATTAAAGGAGGACT
-AACGGTTCGGACGATTTTGAACGTATAGACCCAAAATGAGCTCAAATGAA
-TGAATTTCGTAATGAAACTGCTCAAAAATTTTTATGGCGGTTCAAAATGT
-TGAAAAAATTACACTGATTTTGGCTAAAATCACGAATTTTCCCATTTTTC
-CGTGTCACATCTGTTCGAAGTTGGATTTTTTGGAATTATCGTTTTTTATT
-ACATATATTGGTAGTTTATCTCATTTAATTTCGTCGATTAAAGTACATTT
-AAAGCCGATAGGTAACCAATTTCGATAATTTTTGGTCACCTATCGGCTTT
-AAATGTACTTTAATCGACGAAATTAAATGAGATTAATTACCAATATATGT
-AATAAAGGACGATAATTTCAAAAAATCCAATTTCGAACAGATGTGACACG
-GAAAAATGAGAAAAATTCGTGATTTTCGCCAAAAACAGTGTAATTTTTTC
-AAAATTTTGAACCGCCATAAAAAATTTTTGAAAATTTTTTGAGCAGCTTC
-ATTACGAAATTCGTTCATTTGAGCTCATTTTTGGTCTATACGTTCAAAAT
-CGTCCGAACCGTTAGTCCTCCTTTAAGTTTAAAAAAAAAACGGCATATTT
-TGCCCAGTTTCTCTCCAAAACTCACCGGCAAAATGCGACTCTGATTCATC
-GGATCCACCAGTGGCTTGACATTTCCCGAATAGGTGACCCCACTGAACGA
-GTAGGATCCCGACGTCGATGACGAGCTCTTCGACAAGTAGTATCCGAGGC
-CCATGGTGACTGCGGCGGCGGCTCCGATTTGAACGTACGGTGGAAGGGAA
-GAGTTCGAGTTTGGTGCCGAAATGAAATCGACAATACTTCTGTAACAATT
-GAAATTATATATAGAGAGGACGGGTGATGATGATGAGTCATCCAGGTTGT
-TGTTGTCGCGCGCGCGCGCCCGCACTGTTCCCCACAAAACAAACAACTTA
-TTTGAAATTATGAAATCGAAGTTTCTTTGTTATTTTATTTTATTTCACAA
-GATGGTTTTCATGTTTTATATACCATTCGCAAAAACAATACCTAGTTTTT
-GCTCGTTTGGACTCAGAAATTTTGAGACTTTTCTGAAAAGTTTAATGGCA
-GATCAAAATTTCGGAAAAAGGTGAATTTTAGCGAAAATTCGCCGTGGTTT
-TTCGAAATTTTGATCTGCCATTAAAGGTGGTGTAGTCGAATTTTTTTATT
-GCTTTATTAGACTCAAAATTGTCTGAAAACACCGAATTTCATAATAAAAC
-TTAAATGGCCTAAAATTAGCTAAAATTTGAAATTTGACCGACTTGTCAAG
-CGGCTGGAAACGTTTTTTTTTTGAAATAACCGTCAAATTTTGAATATACA
-GTGCAATTATCTTGCGTTTTCAACTTTATTTAGGTACTTTAAAGTCGATG
-AACGGCGAGATTTGTTTTTAATTTTTCACGAAATCTCGCCGTCCATCGAC
-TGTAAAATACCTAAATGAAGTTGAAAACGCAAGATAATTGCACAGTATAC
-TCAAAATTCGACGGTGTTTTCAAAAAAAAAAAAACTGTTTCCAGCTGCGA
-CGTCGGTCAAATTTCAAATTTTAACTAATTTTAGGCCATTTTTTGAGCCG
-TCATAACTTTTTTTGAGGAGTTTTCAAGAAGTTTTATTATGAAATTCGGT
-GTTTTCAGACAATTTTGAGTCTAATAAAGCAATAAAAAAATTCGACTACA
-CCACCTGTAATGGCAGATCAAAATTTCGAAAAACCACGGCGAATTTTCGC
-TAAAATTCACTTTTTTTCCGAAATTTTGATCTGCCATTAAACTTTTCGGA
-AAAGTCTCAAACATTTTGAGTATAAACGAGCAAAAACTAGTCATTGTTTT
-TGCCAATGGTATATAAAACATGAAAACCATCCTGTGAAAAAAAAACAACA
-AAAACACTTGAAATTCGTAATTTCAAAGTTCTCCAAAAAAAACATACACA
-CACCTCGATTGAGACTGTACCCACGCAGCCGTGTCTGTGATAACCATTCT
-GTGTGTTTCTGTGTTTAAGTGGCCTATTTATAGTCTTCTGCCAAAAGACG
-AAACCGCTTCTAAAATGAGATTAAATTGAGGTGGAAACGACGACGACGAA
-GAGGTGGAAGAAGTGAGGGTGAAAATCGAAAAAACAAAGAAGAGATCAAA
-GTTATTCCATCTTTAGAACTTTCTCCACTGCCAGCAATTGATAATAATAA
-TAAGATTTTTATGTTGATAACTCTTTCGGTATCAATACAAAAAGGGGTGA
-AAACCCGCCTCGACAAGCCTTTCGATCAGGCCATATATTTCTTTATCACA
-CTCTCCGCACATTTCGGAACAACTTTGACCTCCCCGGCAAGGGGGCAAAA
-GTTTCGAGAAGTTGTGTTGCGCGCGAAGGAGATGGAGAAGATGGAGAAGA
-TAGGCAAACACGTACACCTCCTCAAACAGTAGTAGTAGTGATAATTGATT
-TGATTAGTGATTCGGGTGGGCAAAACGAGAGAGATAGAAAGAGAAAAAGC
-GAAGAGGACAACGAACACGTGTAATCAACCGTGTGCCAAAGTTCTCGCCC
-TTTGGACTAATTGCAGTTTTTTTGGAGGAAATTCAATTAACACTGAAAAC
-TAGTTCGTTTAAGTGTTTACGCTGAATGGGCCAGGTTTTGAGGGAAAACG
-ATTTTCGAAGAACTTTAAATGTGGGGTACCGAAATCTGAAAAATATTTTA
-AATTGACTCCAAATTTTCCCCTGACTCCGAATATCGATGCGAAAAAATTC
-AAAAAAAATTTTCCTGATTTTATATTTAAGCTTGAAATCGCCGAATTTCA
-TTTAGAAATTCGCATTGGAGCGCGCTTGCATCGTTCGATTTTTTTTTCGT
-TTATTTTATTTATTTTCGCCGAATTCAATGTTTTTAAAGCCAGTTTCATT
-CATTTTTGTCGAGTTCTCATCGAAAATTTTTTTGACAAAAATTAATGAAA
-CTGATTAAAAAATTAAATTCGGCGAAAATAAGTAAAATAAACGAAGAAAA
-TCAAACGATGCAAGCGCGCTCCAATGCGAATTTCTTTGGGCGCGAAGTTG
-AAAAAATGGCCCGGGGCACAAATGAAATTCGGCGATTTCAAGCTTATATA
-TAAAATCAGGGAAATTTTTTTGAATTCTTTCGCATCGATATTCGGAACCA
-GGGAAAAATTTGGAGTCAATTAAAAATATTTTTCAGGTTTCGGTACCCCG
-CCTTTAACGGATTTTTTGGCTTAAAATTGGAAACTCTTGGTATAAAACTT
-GTAGAAACACCGAGTAAACTGTACACGTTTTAGACGATAATTCAAAAGTA
-TCGAGGGAAGTATCCAGAAGTTGAAAAATTGCGAAAAACAGGTAAAATAA
-GGAATTCAACGCGTGAATTTTGCATTTTTAGACTGAAAATAGTGTGGTAT
-TTCTTCAAATATAGACGAAAATATCGACTCGCACTGGTTTTCGATCGATA
-TTTATAGGTCGAGTTCATTGCTATGCACAACATTCCGGGAAAACACGAGA
-TTTGAGGAATTTCTGAGCAACTTCTGAGTAAAGCCAACAAAACATTTTGT
-ACAATTTTCTTGTTGGTCTTGCTCAGAAAATTTTCAATCAAAAACCAATT
-GGAAATCGATATTTTCTGCTAGTTTTGAAAAAACACATGATTTTTAATCA
-AAAATTGTTAAATTCATGCAATTTTCCAAAGTTTTACACGATTTTTTCTC
-TGGAATTCACATGCTTTTTAAAGCAAACGGCCGTTTCTCGTTGTTGGCTT
-CCACGCGATTCCATAGAAACACTGGGGCACCAGAGAAACCGGGGTCGAAG
-CAAATGACCAACAAACAACAAACGGATGTGTGCTTTTTCTTCGTTTTCGT
-CTTCACGAGGAACCACCACGCAAAATGGAACTACAACTACGATTGATAAC
-GAAAAAAAAAAAGAAGAGATGATGATAGTTTTTGCAGCAATAAAAAGAGT
-GATAACAAGATACACTCTATCTCACCCACACCTTTCCGTTCAAAGATAAG
-GAAATAAGATTCGGGGGGTTCAAAGTGTTGGAGCCAAAAACGGAAAACGG
-AGGGAGCAATTGTTCGTTGAACGAACAATAAAAAACCATCATCTGCGTCT
-CAAAAATACACGTGTAAGTGAGCGAGTGAGTGAGTGAGTGCCGGGGAATA
-AAACGAGTTATATGACCAACACAACGAGCGACGTTGCTGCTGCGTTTCCT
-CACTCTCTCCTAGTGAGCGTGTGTGCGCACCACACTCACATGAGCGCATG
-CAAGGGTGTATGCGCAAGTGGTACATCGACTCGGTATGAGAAGGACAGAG
-CAGTAGTAAGGAGCACACGTTATGTTGCTCCACTACTCACTGTTGCGTAC
-CGTGTAGCCTCTGCGGGCCACCGCGGTGCAAAGTACAGTGGAAGGAGGAG
-AGTTGAAAAATTGGTGTTTATTTTACTTTTAAACTCGTTTTCCTCCGGAT
-TTTGAAGAGAATTGGTTGACTTTTTGAATTTTAGGCGAAAAGCGCGGGAA
-AAATCGAAAAAAGATGTGAAAACGAGTGAATTTTAGGGCAAAAGTGAACC
-GACAATTGTTATGAGCAATCGGGCTTCTCGGTCGGAAAACAGATCACAGA
-AAAATCGGAAAATCCAGCAAAATACTCGAAAATTATGCAATTTTCTAGAA
-TTCCAAGCGAAATTTTCTAGAATTTGAGGCAAAATGATACGGAAACCAAC
-GAGAAATCCAGAAAAAAAAACTATTTTCATCGAATTCTAGGTGAAAAGCT
-CTGAATTATTCGATTCTCCGTCGGGGTAGACTCAAAAATTATGCAATTTT
-ATAGAATTCTAGGCCAAACATCGCAGGATCGCCTACACAATTTCCGGAGA
-ACGATGAAAATCGGCAAATCTGAAGCAAATAGGAGTGAAGGAAGAGGCTT
-CGGATCAGTTTTTCTGAAGAAAATACAAAACTTTCGCTTTCGCAAAACTT
-TCGGGAAAATTCTCAGAAAAGGCGTCAAAAGCTCAAAAAATCGACGTTGC
-ACGATTTTCGACGGAAAAATAGAGTAAAATATCCGAATTTCTGCTTTAAA
-ACTCGAAAAATTGCCCAAAAATCCGTTTGTTTTCGCCAAATTTCTCCTAT
-TTGGGGGTCACAAGGCGAGCGGGAGCCGCCGACGACGAGATGAAGAGCTC
-CACAGAGCCCCTGAGCCAACAACACAACACTCACCCAAAAATATTGGAAT
-TCTCCGGAAGGAAATCGTCGTACGACGACGGCGGCGGCGACGGTGCCATT
-TTTCATGGGGAAAATTAGAACCTTGTTCGAATTTGTGATTTATTATCGAT
-TTTCTATGTGCCACGTGTGCCCTATTGCGTGACCCACCTGATTAGTTGCG
-CGAGTATTTTGTCAGTGCGGTCGACGATCACCCGAAGAATGGAGAAATTG
-TCTGAAAAATGCGAAAATTGGCTATAAAACGACGGAAAAAGAAATAAAAA
-CAAGTGAAATGAGGCCGAGAGGCAGGTGAATTGTTTATGCAATTTTAGAA
-ATGTGATATTTTGGCGGTGTAGATCGAAAAAAATGCGAAAAACACGAAAA
-CAGGTCGAGAAATTCGCAAATTTTCGACGACTAAAATTCAAATGCACAAC
-GTTCGCGCGCGCGCCGAAGTACGGTAGGTCCCGCATTTTTGCGCGCGCGA
-AATTCAAATTTTAATTTTAATATTTTTTCTTTCTTCTTTTCTTTGATTTT
-TTAAGAATATTGTGCAAAAAATTCGTTCATTTTTCGAATAAAATTGTTAA
-AAAAGACGAAAAAAAAAAGAAAAAATAAGACAATTTCTCGGTGGCATACA
-AATAAATACAAGTTATTGTTCGGGAAAAAAATCACAATTTTACATTAAAT
-CCAGGTTTGTAATAAAATCAATTATTATTTTATTTTCTTCCAAATCCGGC
-ACATGGATTTGGGCATCCGCTGGTCATGCAGCAGCCACCTCCACTCCCTC
-CGAGACACGCCAACGACTCGCCGGTTGAGATGGCGAGAAGCACGAAGCAA
-ACGACCATGACCTGGAAGAAAATGTGTGAATGTTAAGGTCTCTTAATATT
-CCAATAAAATTATTTGGTTTTTTTTTACCGGTGTTCTTGCCAGAAAAGTG
-CAAAAATTAATTAAAACTCTAATCGTGGCGAGACCCATCTTAGAAACGAG
-AGTATGCGCCTTTAAAATTGGGCTACCGTAATAATCGAATTTTTGCAATC
-TTGCAATTGTTGATTTCCGAAGAGCGTTAACAAGAAAACATTTGATAGAA
-ATGACACATGAATTAGGTAAAATTTGGTTTTTTTTTAGATTCTTATAATT
-CAGATTTCTATTTTGGACACGGAGTTCTGGCCTTCCTCATTGAATTTTTC
-GCGCTCCATTGACAATCGCCTGCCGGACAACGAGTGGGAAAGTTGTGTAC
-TCCACACGGACAAATACATTTAGTTTAACAACAAAAATCGAGACGCGACG
-CGACACGCAACGCGCCGTAAATCTACCACAGATATGGCCGAGCCATAATG
-GCCTAGTTCGGCAAACTCTTCCATTTCAATTTATCGATGTCAGAGTGTCC
-CATTTCAGCTTGATCTACCTAGATCTACAAAAAATGCGGGAATAATACGT
-AGAGTTCTCAACTGATTTCGCATGGTTAAGTACGTGCTGACGTCACATTT
-TTTGGGCTAAAAATTCCCGATTTTTTTGTAGATCAAAAAACTGTGATGGG
-ACAACCTGACACCACGTGATTTATGAGGAAAGCCAGAAATCCGTGATTTG
-GAGAGCACAACAAAAAAAGAAATTCGGCCACTGATTCGCGGCCACGAGCC
-ACTGTGCCTTCTCAAGATATTAGTTAATAATTGACGCTGTGAGACCCACA
-GTTAAAGGCGCATGCTCAGCATGACTGGCCAATCTAATAGCATCTACAAT
-GATAATTGAAAAAAAAACTCACAGTTTGGCAAAGTTTAGCGACGAGTGAC
-ATAATTCTCCGAAAGCTTCAGCTGAACAATTTCAGGGATTACTTGCTGTT
-TCCCATCGCTTCACCGTCTTATATAGTGCCATCGCCGATTGGCAGAATGG
-GATACACCTGCCCCCAACTGCGCAGTTGAATACGATCCGTGTCTCTCTGC
-GTCTAGCGGTTCTCCACGATGTTTCTTTGGCGGCGGTGAAGCCGTGTGTG
-TGTGTGTGGCTCCTCCATTCTGATTGAATGTGTAACACTGCGGGCAACCG
-ATTGGTTTTGGCGGCGGCGGGAAAACGAATCCGGATATACTACATACACA
-AACACACACTCACACACACCGAAGGAACTTTTCAGAGAAACCTGAACTGG
-CTTTTTATGATTTAAGTGCTTCTGCTGCCAGCATGATGTGGTGGTTGTGT
-GTTGTCAATAGGATTTATGCTAATTCCTGACACATTCAAGAGATGAAACA
-TCAAACCGGGTAGGAACTTAGTCCACCCAACACTGTGAGAGATTAATAGA
-ACCTTTAAAAGTGGCACTTCTAGGCAGAATTCAATAGAATGGTGGGCGCC
-TTGGAGCCTAGTCGACCTGCGATGTGAGTGGCAAGGTTGGCAGAGCTAGG
-ATAAGCTTCTGGAACTGTAGGACTGTAACAAGCAAGGATCCCGCTCTGGT
-ACTGTAGTGAACTTTGAGATCAAATTAGGTTTTTCAATATTTAACTAGCA
-CTGTTTCCGGCCCTGATCTTAGAAAGAAAAGAAAAAAAGGATGTGAACCA
-GGCGTGGGCGGCAAACGATTTTTTTCCGGCAAATCGGCAAATCACTAAGT
-TGCCGGAATTTAAAATTTCCGGGAAATCGGCAAACTGACACTTTGCCAAT
-TTGCCGAACGGCAATTGCCGCCCACACCTGATGTATACATATATATGCTT
-TCACTCATGTGGTGCCAGAATGTCTCACTGCGGTTTGATCTACGAAAAAT
-GCGGGAATATTTTTCCAGAAAAATTGCGGCGTCAGCACGCTCCTAACCAT
-GCAAAATCAGATGAGATGTATGCGTCTCTTCTCCCGCATTTTTCGAAGAT
-CACAGCAAAATAGAACTTTCTAACTCCACGTGTCTACTGAGAAAAGAGCC
-GAAAGCTTATTTTCCACGTATCAGGGATCGGAATCCCACCTAGCTAGTTC
-ATCCTATTGCATCATTGAAGCATCTTCCGGATTCTCCACTTTGTTTGCTT
-TTCGAAATCGTTTCAAACTGAAAGCCGCGCTTTCAAGGCCGTCTTCTTCC
-GATTTTCCGATCTACCTTTTGTTGATCATCACGTGCCTGGCGATCACAAC
-ACTGTTCAACCGGAATATCTGAAGATGTTCCACCAAATGGATCGTTTTTC
-TCAGGACGGAAGAATACTAATTTGCAAAAAGTCTGTTCTGTTCTAAAAGT
-TCTGAATCTTCTGAAAAAATTTCAGACTTAGATCCTGTCATTACATGGGC
-AAGCAGTGGAGTCGGAGATTTTTTATCAAAATATATGGATAGGTAATCAG
-GGAGAGACTGGCTCCTTTGTTACAATATATTAGGTTTTGTTCTTTAAAAT
-GTTCAAATGAAGCTGAAGAGTTCCGGCTAAAAGTATATGATTTTTCAATG
-ATTTTTCAAAAATTTCAAGGTATAACTCTGAAACTAAAATTTAAAAAAGA
-AACTAAATTGGATTTTAATGTTAGTTAGTTTATTAACAGAAAGAGCAGTA
-TTTTTTGATAATTGTAACCTGAAAACTCTATTTTTCTAGTTTCGTGAAGT
-AAAAATGTTTTATTATGTGACATTTATTGAAATTTAATTATAATACACTG
-TTAGAAATATTTTATTATCTAAAAAAGTAAATTGGATTATAATGTTAATT
-ATTTTACTATCAAAAAGATCAGTATTTTGTGATAGTTTTAACCTAAAAAC
-ATTTCTGAAGATCGTTTTTTGTGAGAAAAAATTATTTTAATATGTGTCAT
-TTAAAGCAACTTTTAAAAAATTGCGGTTTAGAAATGTTCAGCTATCAAAA
-AAAAGTACATTGGATTTTGGTGCCAGTCAATTTATCAACAGAAAAAGTGG
-TCCTAAAATAATTTCCAAACTTATTAATGGTGGTAGCATTAAAAAACACT
-TTTTTTTGGATTTTTTGAAATGAATAGTGTATTTACAGAGACAATGGTAG
-ATCAACCTAAAAGAACAAAAAATTTGCAATTTTTCCAGGTAGGACACTTT
-TTTGCTACTCGAATATAACTAACCTAAAATAATTTCCAAAAGTTTCAATG
-GTGGTAGCACAAAAAAAAACAATTTTTTTGATTTTTGAAATGAATAGTGT
-AGTTACAAAGACGGTGGTACATTGACCTAAAAAAACGAAAAATTTACTAC
-TTTTTCAGGTAGGACACTTTTTTGCTACTCGAATATAACTAACCTAAAAT
-AATTTCCAAACGTTTTAATGGTGGTAGAATGTAAAATAACTTGTTTTTTT
-TTGGTTTTTTGAAATGAATAGTGTAGTTACAGAGACAATGGTACATTGGC
-CTGAAAGAACAAAAAATTTGCTATTTTTCCATTTTGACCAAAACTATTGG
-TTTTGTCCCCAAAAAATTAGTAAAATGACCCACAATCCAGTTATTTTGCT
-GTTTAAGCAGACACACTACACGGAATTATTTTCAGAAACCAGATGTATGT
-TAAGATTTTAGTAGTTTCGGTGCTGCAAAAACCATCAAAAAATACCAAAT
-TTTTCGGCGTTTGTGAAGCACGGCAATTTTTGAGATTTGCCGCACACCCC
-AGGTACAGAGACAATTTTATATCGACGTGAACGAACAAAAAATTTGCTAT
-TTTCTCAGGTAGGCCACTTTTTTGCTGCTCTAATTTCACACACCTAAAAT
-AATTTTCAAATGTTCATCCTACCCTTATATGTAGTAAGAAGATTTCAAAT
-TCAAATTTTCATGCATCAACTCGTCCCCACCGTTTTTGTTTCCCTGGCTG
-ACTCATCTGACCTTGTCACCCCACGTGTGTTTGTCTTTGTGCCCCCTCTC
-GTGCTCACCTTGTTCCAAATTCTGTGAAAACTCATCTCGAAGGCCATTTT
-CTTCGTTTATGAGTTTTGAAAAAAAAACGTTCAGACAACTGCAAATGACC
-TCCCCGGCGTCGAGAATCGGTGATAACCTTGTACTTCTTAGATGAGACCA
-GATACAAAGTGCACCAAAAAATTCAAATTCGCTTGAGAAGCGCTGGCGAG
-AGATTCGAAGCGAAAACGAGTTGATTGACAATCGGAACATATACACACAC
-CAGAAGACAAAGTGGGGGAAGAAAGGAAACAAAAAAGATAGAGAGGAAGG
-AGATTTTGAAAAACGACAATCTCTCTGTGTGTGTGGGTGACAGGTGAAAA
-AGTGAGAGTGAGAAAAACGTGGTGGGTACTGTATTGATGAACGATCAGAC
-CAAGTTGCATTCAAATTTCTTTGATTGGATTGTTTCCTGATCGGTTTGGT
-AGAAGGTGAAGTTGGATTTTGTTCACTGAAGTTATTGGATTTCGAGACAT
-GAGCAAGCTAGGTTCAGGATGACTGTAGTGGCCGGCTAACTTTCCGTACA
-CCTTTGGCCGACTAGTGAGTGCAACCAGGGCTAGTAAGGAGGTACATCCT
-GGTTACCGTAAGCTTATTAAAATTCTGAAAACACCCTACAAAAACTGATA
-TTTGTAAAGTTCTCCAAAACAGGTGCTAAAACTTCTGAGGCAAGAGTAGG
-CACTTGGAGTCAGAATGTCTTATTTCGATTTGATCTACAAAAAACGCGGG
-AGTTGAGACGCAGAAATCTCATCTGATTTCGCATGTTTAAGAGCGTGCTG
-ACGTCACAATTTTTCTGGAAAAATATTCCCGCATTGTTTGTAGATCAAAC
-TGTAATGAGACAGCCTGGCACCACGTGGGTAGGTGTCGGGATGCACGTGG
-TGTCAGAGTGTCTCATTTCAGCTTGATCTACGTAGATCAACAAAAAAAAA
-TGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTTGCATAGTTAAGCTC
-GCGCTGACGTCACATTTTTTTTGCAAAAAATTCCCGCATTTTTTGTAGAT
-CAAACCGTAATGGGACACCCTGGCACCACGTGGGGATGCATTAGTATGAT
-TACTGTAGATAAACCTTGAACAATATATATACATTAATTTCGTAATGCTT
-GAAACTTGGACCCAAAAACTATCTGTAACTAGAAAATCTGCAAAAATGAG
-TTTGCGACTTAAAGCTGGAAGTATACAAGTTGCGCAAAGACCTTTCCAGT
-GGCTTCAGCTAGCAACAAAAAAATTTGTAAATTTGCCGGTCCCCACACCA
-CATCAAACGTGCAAGACGGGCAACTTGGTACATCCAGTTCACCTGCACTC
-CAACTACTTCCCAGAACGCCACATAGTTGAATTATTACCCAACTTGGTAC
-ATTATTTTGTCGACTCGACACACCATCACCCCACCATAAACCCCTGCAAA
-TAAGGAAGCCGATCGCTATCTACTCATCTTTAGGGACCTTTTTTGCCGCT
-TTTTATTGATTTGAACAAAATCTCAGCAGAGCAGTCAAAAATTGCCAATA
-TTCCAATTTTTCAGTTGCCAAAGATTTTAGAGTTTCAATACCTACTAAAT
-CCTCCCGTTCCAGCCATCCGTTCTTGATATTCTCTCCATAAATTTTCGCT
-TATCTCCTCTCTTGTAAAACTAACGTTCACTTATCCACATAATAAATACA
-ATAAATGTATTATATACATATATATTATATATATATATATATATATATAT
-ATATATATATATATATATATATATATATATGTATATATATATCTCAAAAA
-ATCAAACAGGATCTCTCTTTTCCTCCAGGAGAAAAAGAAGATGCCGTTTT
-GCAGCCAACAATACTCTCACTCTCAATACACGACGCGACGACGTGGCATC
-CCTCCCCCCATCCTGCCTTTCTTCCCCGTTTCTCCTGTGTCATCGAAATT
-TCTAGGGCAGCAGCACACCGGATTGGTTGGCATGTGAAGCCGACGTGGAT
-CGTGATGGTGATGATGTGGCGGATTGTGATAGATCGTGTTTTTTATCCGG
-CGATTACTGCGAGAATTGTCTGAAAGAGTGGCAGGGCCTGGCGCCTGTCT
-TTCGGCTCTTTTCAGCATTTTGACGTGAATTTCCAAATTTCTAATTTTCT
-CATTTCTATAAATTTGCTGAAAATCAATCAAAGAAATAAAAAAAAAGTTC
-ACTCATGTTTTAGCATACGGCGCGAGAGGCAGGCGGAAATCGCCTTAAGG
-TCAGGCAGGCAGGCAGGCGTTTAACGCCTACATGGAAGCCCTATAGCACA
-CATCTATCTGAAACTGGGAATGTTGTTCCGAAGTGCATTGGAGTGCCTGA
-AATTATACAATGTTTGTTCTAATTTATCATTTACTGTATATAAAGCGCTT
-ATTCCGTGTGTCCATAGTTGGTAGTCTATGTAGTCTGAAGTTTTGGCTTC
-TGGAAGGATAGTGAGTTGGGGTTAGTGTAGGGATATGGTCGGGGAACTGT
-AGTGGTACAATAGCGGTACGGTAGCAGTACTGTAAGATTATGGTACTTTC
-AGAAAAAAAAGTTTTCAGCCCCAGAAGTCGGGGTCCGTGCCGGAGGAGCG
-GACAACGGCTGGTTATCAATAAAGAATACCAACATTTTATCACAGATCCG
-GTTACCGCTAGACAAGAAGGTAAAAATTCGCATTCTGAGAAGGACTACTG
-TAGCAGGTGTTTAGCGTGTGTCCGAGTAGATGTGGCGACTCTTAATTTAA
-GTTGTAGTTTCCTGGTGTCCCCTAATCGCGAACTTCACGATAATTGTAAA
-TATTTTAGTGTGGCCTATGTTTACAGGTTTTACGGACAGCCTAGCCCGAG
-AAAAACTCTGGAAAAAAATCCCAAAGCTCTTATCCAAAACTACCAAAGTA
-TTCTATGCAATTCCCTTTTTGCATTTCCTCACCCCGCCTAATAAGGCATG
-TTGTTTACCGCCGACTTTCCGCAATAATCTATTCTCGCAATCATGTGATT
-TACCTGACGAATCGAAAGTATACGGTAACCTTCACATTTGGAAGAGGAGA
-AAGGAATTCGTTGGAGCCTTGACCCATTCTCCCCACAGGCATAATTCAAA
-AAAATATTCACATCAAGAATGCGGATTTGCCACAACCCAACGGGTTCTCC
-CATCCAGCATCTCTACCTTTGCCGAGGCAGAAACTGAGGACCGATCTCGA
-TCTGCCGCCGCGTTCCGACAAATGTAATAGCAGCCCCCCGCGCGATAGCT
-TTTCACTTTTTCTTCTCTTTCTGGCTACTGCTGCTGCCTCCTCCTGCGCA
-AGGATGATGCTGCTAGGATGATACCCTACGAGATTACGGAACTATCCGAT
-AAATTAGCTTGATGGAGACTAGAGAGATAGTCCCGAAGCTCTGAAGGAAC
-CTGATCTTGTTACAGTCTTGGAACCGAACAGCTGATTGCGTCGTCGTATT
-ATCGTTATTCATTTCGTAAATAGATTTTCTCTAGGATTGATTCCCGGTTG
-AGCCACGTCACTGTCCGAGAACATTCCGGAATGTTATGCATATGTTCTTG
-TAAATAACCTTTCTCCTTCCTCCGGCCGGCCAACTACTTTCATTTCTTGA
-TGCGTCGAGATACGATATCCAAGGCCATCTTTCAAAATCGCAAGTTATCC
-ATCTTTTTTCGCTGATGACTCTCTCTCTCTCTACTCCTTCGCCCATCTCG
-TCTTCAGAATCACCTACCGCAAAACAATTGAATAAGTGAGTGTGGAAGTC
-ACGTCATGAGCGCGACGAAAAGAGAGAAAGAGAGAGAGAGAGAGAGAAGT
-GCCGAAGACGTCGGAAGAGAAAAGCTGGAGGAACCAGCGGCTGGATCGTC
-GTTTGTTGATGATGCCTCCTGCCTGCCATTGTTATTCGATATTCCGATAT
-TCGATTCTTTTTTGCCGCCGCCGCCCAAGAGGAGAGGAGAATCAGAGAAG
-CTTGCGCGCTCCCTATCAAAAAAAAAAGATTATCAAATTTGAAGCAGCAG
-AAGCTGGGAAATGGAAATAATAGCGGATAAACAAAGAGAGCGAAATGTTT
-TGGGCAATAAATTTGTAGTTTGATGATAAGAGTGGCATTTTGATATGAGG
-AAGCTTGCAGAATCTAGTGGTGAACAGGAAGCTTTCGCTATGGAGCAAAA
-TGGATTCCGTCATTTTTCTTAAAGAATCGGAGTCGAGATGAAACACCCAG
-CCGGAGCTGAAAAATTATTCTGCTGAAAAATCGAGGTGCTTGAAGTACCA
-GGGCGTTATACAAAAGATCCAGGGATCCTAGTTCTGCAAAAAAAATTTCT
-GCATAATGAAATGGAGAACAGGGCGGTGCGGCAACCAAGATTTTCGGCAA
-CCGGCATTTGCCGAAGTTGCGGAACCCAAAACATTTTGGTAACCGGCAAT
-TGCCGAAGTTGCCGAATTCAAAAAATTTCGGCAACCGGCATTTGCCGAAG
-TTTCCGAATTCAAAAAATTTCGGTAACCGGTTGCCGCACAGCTCTGATGG
-AGAACCCGGTGGTCAGCTCAGAGTTTGGATCACCACAACCCAGAAATACC
-ATCTTTCAGTGCCTCATACGTAGAAACACTCTAGCTCAAAGTGCCCCTGA
-GGCCCTGGGATCTATCCTTACCTGGAAAACTGTGTAAAATTTCGAATATT
-CACAGATCCTAGGTTCGTAGTTTCACAAAATGTTCCCACTCTGCCTTCGG
-ATCCCCAGGACGCATTGCTACAATATTTTGCACTTGGTACAGTACTCAGC
-TTTCCCTTTTTGCACCAAAAAACATTATTGATCCTTACGATTAGCGTCCT
-AGATAGGCTACAAGGCCATCGAGATCTCAAATATGCAAATTCTTAGGAAA
-GAAAGTGATGTTTCATCATCTTCTTGGATTAAAAATTTCCGAGGAAAAAC
-ATGGCAAAAATCAGGTTGATCGTGAAACTCGTCGGGGGCTCCTCTCACTT
-CTTCCCCATCTTCATCTCTCCTTCTCTTTCCCGATCCGATCTTTTTTCCT
-TTCTTCCATTTTTTCTCGTTTTTCCTTTCCATTTTTTCTTCTCCTTCTTG
-TGTTTGATTATCCATCCTCCTTGCCCTTTCTCCTTGTTTCATTTTTCTTT
-ATTCATTCGGATGGAATAGAGATATGGTTCCGTAAATTCATTCCAATACT
-AGAAGAATTAGTAAGACATTCGTAGGGGGGAAAATTCCGCGCAGAAAGCG
-ACAGGAGGTTCGGGATTGGGTAATCGTCGGAAAAATGAAAAATCGCGCGC
-GCCCGCCCGCGCAGATGGGATATATACTAAATCACATGGGCAGCGACATG
-ATATACGATGGATTGCGTGATCGATAGGCTTTTCAAGGAGGTACATTAGC
-ACTGGTGGGCGTCGGGATCCTTGAAGGAACAACGATCTTTGAAGGAGATG
-ACGAGGATGTTGTGAAATTTAATTGTGATATCATTCTATTATGTAATCCC
-TGGCCTAGAATATACATCATCTTTTAGAATTCTGGTCGGCTAGATGTTTT
-CGGGAAGTGCTTCTAAAGGATCGGCGCTGCCATGTATGTAGGAAGTGCTT
-ATGCCAACCCCAATCATCTTCTCAATCTACTCCTCAGAAGTTCAGTTCTG
-CCAATCCGCACGCTCCACCTTCGTCGCCTATCCGTTTCTCATGCGAGTCT
-CGGGTCAAGGCAAGTGTGCGTGTCCTTCAGTCGTGAAGTCCTATTCATTT
-ATTTTTGCTGCCAAAGTCCGAACAGTTTTTTCTAGCCGTGTCGGCAAAAG
-GGTTCTTATTGCGAATTCACCTCCTCCCCACTCGAGAAATCGCCCCCCCG
-CCGTCCTTGGTAAAACTGACCTAGAAAAATAAAAACAACACAAAGCGCCT
-CCCGCATCATCACGCGTATATATGTATATATATAAGATGGTAGGCGGGAA
-GAGGAATCGACGCAATATCGACTGAAGGTTGCGCAATCGAGATGGCTCTT
-CCCGGCACGGATACCTCCTCCTCGCGTACCAGGCACCCGCATATAGCTAA
-AGTTCTCCGCCCATTTCGTTACTTTTTTGTGCTTCCCATATCATCGCAGC
-AGCGCTTATGCCATTGCGCCCGACCCGATCCAACTTCTTATTCTTGTTCC
-TTAGCCTTCTCCCCCTCCCATGTCCTCCCGATATCCAAAAAGTGGGAGGA
-GCATGCCATAGTGAGAGGGCGGGGCCGGGACACACACAAGGCTGGCCCCG
-AGAAAACGAACAACACTTATGCCGAGGACAGTCTCGACAGTTGGTGGTCA
-CCCCACCTGCGCCTTGATTACCCCGCCCGTCCGCGCCCGCCGGGCTAAAG
-TATTTTGTTTGCCATTCATGTTCCTCATTCGACGTTCATCATGCTTCTGT
-TATGCTTCTTGGTGTTGGTCCGGTTCCTTTCTCTCTCTCTCTCTTTCTTC
-CTTGTGGATCAGATGCCATTCCGCCTTTTTGCTAGATAAGCGCATATTCA
-TCTCACTCTTCTTTGTTTTCAATTCAGCATTCTTTATATATCCAATATCC
-TACATCCTATATCCTCGTTCTCTCCTCATTTTCATTCATATGCCGATCCA
-TTTGGTACTGGTGGTGTCGTTCTTCTTAGTTTCGCTTTCCAATTCTTTTC
-TAGACAATTCCTTCTATTTCCAGAAACTTTTTTCTACACAATGCTCCCAG
-ACAGCCCATCCCCACGCGCTGCCCTTGCTCTCTCCGATCTTCAGCCACAA
-ACCGGCGCCTCAACGTTCTCAATTGGCAGTGGATCAGGCAACTGGTAAGT
-CGAGTTCTTATGTAACTAGTAGGATGGTAGACATCGAGATTAACGATGTC
-TGGCATTCGTTACGTAACGAACGGGTTCTCCCGCCGACCATCGAAGCGCT
-TAAGCGCCGAGATTCTCGGCTTCATCGCACCCCGGTCTAGCAAGTTTTCC
-AATCCATCCCAAATTACAGGTCGACAAGAGGTGTTGGTGGAGTTAATGGT
-GATTACATGGACAAATCCGGCGGAGGAATGTTCGGAAACAGCAGAAACAA
-CGTGAGTTATAAAAATATCTGGGGGGGGGGGGGGGGGGGGAAGTGTTGTT
-CTAGGCCAGGGACATTGAGAACCGCGTGATGAAGAGTACTTTTATCCGAA
-TTAAATCATAGGCAACGAAAACAAGAATCAGGTTCTTGTGCTTTGCACAC
-CATGTCGGAATATCCGTCTCAATCAAAACGAAAAAAGCCTAAGCTGGACC
-AAGTGTTAAATGCTTAAATGCCAAAAATGAACAATCTTTCAAATCACTTT
-CATCTTCCTGTAAATCAGAGAATCCTGAAGCGCTGGCGCGCACACTTACG
-AAAAGTGAAAGCCGATATATCAAGTTTATCACCTAGCGGGACTTCCATTG
-TCTCATTGTCTCTTGGCTATCCGCCCCACTTTCCCCCCGGATCATCCGCC
-CCCTTTAATCCAAGACTCTCGAACAGTTTCGCTTCATTCCAGGACCGATT
-CGCATTCGGCAACAACAGCTCGTCGTCCTCATCAGCAGGCTGCTTTTCAT
-CGAACAATTCGTCAGGCGGACTTTTTTCCAGTAAATAAGTTAATATGTGA
-GTTTTTTTTGTGTACATTTTCTTCTTTTCAAGATCCATTAACATTTCAGA
-ATGCGATCGGCAGCCGGTATTCTTATTCTAATCTCAATAATTATTCCCAG
-TGTATATAGTGAACCGAAGTTGCCCGATTGCGAGCAAATACCAAAAGTCT
-TGTGCTGTACCCAACGTGTCTTAGATAAATGTATGTCTGGTTGTATCGAT
-TATGTCACTGAGAAATGCCCCCACAAATTGGAAAAATACGAGACGATCGA
-TGAAGAGCCATCGACGAGAGCTCCAAAGAAGCAGGTGAAGCCAGCTAAGG
-CAACTAGCAACAGAGTTGTCGGAGCAGTTGAAGTAGACCATGAAGCCAAG
-GAGCAGTTCATCGACTCCAAGGATATCAGAAGAGCACCACGAGTCGGTGA
-TGCCAAGCTTCTCAGCCAGGAGTACCCGATCACCGAGGTCACCGACGCCG
-ATCTCTCCTCCGAGTGCGGAACCGAGAAGTCTCAGCCACCATTCTCACCA
-TGCTTGTCCCGCAAGTCGGCCGACGACGTCTTCCTCTCCTGCTGTCGCCA
-ACAGGTTCCATCCAACTGTCACAGCCTCTGCACCTACGAGCATCGTGAGC
-ATGTCGCCGCTGAAACTCTGATCCAGGCGATCCAGCAAGAGCACTGCGAT
-ATGAAGGTAAGAATAGTTCAATCTTCCTATTGAGTTTTTTTTTTGAGTTT
-TTCCAAAATTCATTCTTTCAGTACTTCTCCAAACTGCTCTACTGTGCCAA
-CCAAAACCGCGACAACCGCGCGTGCTGCTCCAACCTCGGCATGTCAAACG
-CGGAACTCGGCGTCGGCGATCGTTGCCTACGTATGTGCAACATCTCCCCG
-TCGGGAGACCGTGTAAGCTCTATGGAGAAGGAGGATCTCGTCTGCCTGTC
-CAACTGGAACGTCATCATGTACTGTGCCAGAGGTGGTCTTCGTACCATCA
-ACTAGACCATCATCCCCGTTCTCTTCTCCCGTAATAAGCTGGCTCAGGTT
-GTTAATAATAATTCGCCGCTCGTCTTAATAATTTTCCATTTTCCAATCTC
-GTCCCCCCTTTTCAACACTACCACATTTCTCAGTGATATTCATCTGAACC
-GCCCGACATACATCAGTTCCTCATAGTACCTAACAGGGTTCAACAAACCC
-ATCCACACACCGTCCCCCCACGTAACACCCCCCCCCCCCCCACTTAAGGA
-CCAAGTCCTAGTTACTGAATGTGCAACATTATGGCCAGAATGCAATACTT
-GTCCCATCTGAATCCATGTTATTTGATAATCTATGACAGTATTATACAAC
-CCTTTTTTTTCAAAACACAAGCCCCCTTGAAAACGAACTCATTGTATGTC
-AAACGGTATCCCTTATTACACGATTAATTGTGGAGTTTGAAGCGAATAAA
-TCAATCAATTTCTCGTTGGGTCCCACAGCGAAATGACTATTACCGGTACA
-GAGAGTGTGGATAGTTAGAGAGTGACAGACATCCGGGACCCAATGGGGCG
-GGGCGCGCGGAAGAGACGATTTGTGTCGATTTACGAAATGATGACAACGA
-GGAAAATTTCGTAAATCGACACAAATCGTCTCTTCCGCGCGCCCCGCCCC
-ATCGGGTCCCGGATGTCTGTCGCTCTCTAACTATCTACACTCTCTGTACC
-GGTAATACTATTGCAGTAATCGCAGGTTATTTCATAGCGATTTTTCATAG
-CTTCACGGATTTCTGGATTCCCTCATAAATTGAAATGGAAGAGTTTTTGC
-TGAACTAGGCCATTTTGGCTCTGTCATATCTGGGGTAGATTTACGGCGCG
-TTGCGGTTCGATTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGT
-ACACGACTTTCTCACGCGTGGTCCGGCAGGCGATTATCAATAGAGCGCGA
-AAAATTCAATGAGGAAGGCCAGAACTCCGTGCAGCTTTACTCGCGAATTC
-AGGTGTGTGTTTTAATTGTCTTTATTCAGTTTTCTGATAATGAATATACT
-TTTTTACAGAAAAACTGGAAAACTGATAAAAAAGTCCCCAGAAACTAGAT
-ATTGAAATTACAGTACACTTTAAAGGCGCACACATTTTCACAGTAAACAA
-AAAATTTGTCGTGCCGAGATATTTCATCCAGATTATCAGTTGTTAAAATT
-TGACAACACTCATTTTGAATATTTAATGAATTCGAATGGAAAATAGAAGA
-AAGCTGCCAAAAAGTGAAATTAAATTCTCAAAAACTTGATTTCCAGACTT
-TTTTGGCGATTTTCGACCAATTTCAGCAGAATTTTTAGCAGAATTTTACA
-AATTTTTTTATTTTAAAGCTTATTTTAATAATTTTTCTCTGAAATATATG
-AATATCTTTGCTTTCGATGGATCTTCCTCAAAAGTAGACACACATTTTTA
-TTTTTCTACAAAACTGTGCAAAGTTACGTCGTGGTGTTTGCGTACCTCGG
-CGGGAATTTAAAGAGAAATGGCATTTTTCACTTTTCTCGCAGTTTTTCTG
-ATTTTTTTTTCGTTTTTTCGTAGTTTCCTAATAAAAAATCGTTCCAATTG
-TTTCCAGGTAATGGCTGGATTTGAAATTCAAAGAGTCGAGTCCAAATTCT
-TCGACTTGGACGACATAATCGCCAAGTCAGACTCCACGTCTTGCACATTT
-GAGATTGGAGATTTGAATCCAGGTCTGAAATCGCATCGAAAACCTAAAAA
-TTCTAGTGATTTTTGTTCAGATTTCTTCCAGGAAATGCTGGGAGTTTCGA
-AGCCAACTCAAAATGCAGACGGATACGGCGTTGATGCTCCATACTGGCTG
-CTGGAATCCGTTAGAAGTTCATTTTCCGTGAGAATTTAGTTAGATTTGCC
-CCGAATTTTAATTGAGAATTCCAGATTCAACTGCCAAAAGCTTATAGTGT
-GAACATGCAAAATGTGCTGAACGCTGACAGCAAGAAATTGAATCTCTCCG
-GCTTGCAGCAACACTTTTACGGCAACGGGATGCAGTTATGCCGTCTGATG
-AAGGGCGAAAATCCGGACGGCGCGCTGAGCCTCGCACGATGCCTTGTCTC
-CACACTTACACAGCGATTAGGAGGTATTAATTAATATAATAAAGCACTTA
-TAAAATACAATTTCTGGTTTTTTTTTGTTGCAGAAATTGTGTCAACTGCA
-ACCCATCTGCAAAGCAAAGGCGAGAAATTTGACAGCCTCGAGACAAAAGT
-GTTCCTGGAGGGTAAACGGTGCAAAGAAGACATTGATACTTGGCTGAGAC
-AAGACAATAAGTGCTCGAGCAAGAAGCGTAAGAGACTTTCGTTATAAACT
-TCAAATTTCTTATGCTTGAATCTAATTTTATTTTTTTTAATTCGTCTGTA
-AATATAATTCAAACCCACCATTCTGTAATAATATTTTATTTTCTATTTTT
-TCACACTCATTTTTGTGTTTTATTGGTGTAATAAACCTGGTTTCATGACT
-TTTTTGCAAGGAATTTTGTTGAAAAGGCTGCTGCAAAAACTTTGCCAGCA
-AAAAATTTTGTGCAAGCACGCTCCATCGCACAGTTTGAACGTCGCGGGTC
-GAAGTTAGATGTGCAGGTCATATAGCAAAAAGAGAAACACCCCTTTTTTT
-CTCGAGAAGTTTCACCAATTTTGCGCGATTTTTCAACTATTTTTTTGCTT
-TTTTGGCTTAATTTTGGCTCAGATTTTCCTCAAAAACATGAAAATCCAAT
-CTAGAATAAGTAGTAATGGGTATATTCTAAGATTGTGCAAAAGTTAGCTT
-GAATTTCCTCGATTAAAGCTTTCCTACCAAGAAAAATGTGTGGATATTTT
-GAATTTACAAGTTTTTCATCTTTTTTTTGTAATATTCTCTTTGAAACTCC
-TGTTTCTCTCAAATTTGTAAACTTTCATAAACGTTTTTTTCAGGGTTACC
-ACATTAAACAATGACCGGAAGCACCGAAACTCGCCAGAAGGAAGTCAAGG
-AGGTTGGTTGTTCAAAGTGACGTCTAAAATATTTAAATTTCTATATTTCA
-GCCACAAGTTGACGTTTCGGATGATTCCGACAACGAGGCCGTCGAGCAAG
-AGCTCACCGAGGAGCAAAGACGTGTGGCCGAGGCTGCTGGACTTGGAGAT
-CACATCGACAAGCAGGCCAAGCAAAGCCGCTCCGAGAAGAAGGCCCGCAA
-GCTCTTCTCCAAGCTCGGACTCAAGCAAGTGACTGGTGTCTCCCGTGTCT
-GCATTCGCAAGTCGAAGAACATCCTCTTCGTCATAAACAAGCCAGACGTG
-TTCAAGAGCCCAGGATCTGACACCTACATCATCTTCGGAGAAGCCAAGAT
-CGAGGATCTCACCCAACACGCCCAGATGTCTGCTATTGAGAACTTGAAGC
-CAACTCGTGAGGCCCCACAACTCAAGACTGTCGAAGAGGACGAGAATGAG
-GATGTTGAGGTAATTCAGTAACTTAATCGGATTTATTACATTAATTGTAC
-GGTTTAAGGAGGATTCCACCGGCATTGAGGAGAAGGACATCGAGCTTGTC
-ATTTCCCAAGCCAACACCACCCGCAACAAGGCCATCAGGGCGCTTAAGGA
-AGCTGACAATGACATCGTCAATGCCATCATGAGCCTTACCATGTAGCTTG
-TTTCCTGATGACCTTGCAGATACTCTTGTTATCGTTGTATCTCTTGCTTA
-TCCCGTTTTCCGTTCCAAGTAAACGTTTATCAGTCTTTTTTAACTTTTTT
-GTTATGTTTAAAAAACAATTGCATCTTCGAATTGACCTACCTTTTACAGA
-AAAGAACAATTAAATCACTGTTTGTGTAAAACACCCCTCTATTGATCGAG
-AACTTTCACTTCTTCCAATTCTTTACTCGTATGACTGTGATTCATTTCAC
-CTGCTATCACTTTATCATGACATTCCAGTTTATATCAACAGCAAATACCA
-ATTGTGTGTATGTGAAAAATGCTATTGAATAGCAAGCGCGCCCCAACAAA
-CACGTTTGAATGCGCGGGCGAAACGGCGTTAGATGTGCAGGTCATATGAC
-AAAACGCATCGACCAGCAGCCAATGGCAAGTTACTGCGAGCTGTTATAGA
-TTTTTTCACATGGTTTCCAGTGTTATCAGTTGGAAATCGATCGATAATAC
-TGACTAGTAGTACTTAACATCTTCATTCCCACCGTTTCGCTGTCATTTGT
-GATACGTGGATTTATTTTTCCTTTCTCGCCGACTTTTCATTTCTAAATCT
-TTTCTGGAATTGCGAAATTTTCAGCCAGTTTCATGATCGAATGGCTCGTA
-ATGAACCATCATCTCAGCAGCCGAGTAGTTCCGGGAGTAATGGAACTCCA
-GCACAACAAAACGGGTCGGCAAAACCATCAAAAGTCACAGTAAAAGGTAA
-CAATTCGTAGATTTTTTGCATCTGTTCTAATAATATTTCCCCCTCTTAAT
-CATAGTCGTCAACGCGTCGTTCACCAAGGCAGCCGACTGCTATGTCGAAA
-TCACGAGTGACACGTCATCGGCGGCGCCAAAAAAGACGACTGTAAAGAAG
-AAGACGATGGCGCCCGAGTGGAATGAACATCTCAACGTTCATGCAAATGA
-ATCTTCGACAATTTCGTTTCGTCTATTGCAAAAAGCCAAGCTATTCGATG
-ACACGTGTCTAGGGATGGCGAAGCTGAAGCTTTCGAGTCTCACAAGAAAT
-GAGAATGGAGAGTGTAAGTGGTTTTATTGAAATTTTCTCAAAAAATCTAT
-TATTTCAGTCAAAAACGACATCAACAATATATCTTTGCTGGCCAAAGACT
-CCTCGAAAATCGGAACTCTCAACATAATTTTCTCCGGATATCCAGAGCGG
-AAACGAAGAAGCGCAGGAGTACGAGCTGAAACCGCCGCGTCTGCAAGTTC
-AGAGGCATCCACGTCAAATGGCGTTGCCACGTCATCCTCGGCGCGGAGAC
-CGGCGACAGCGAAGCGTGACACTTTGGCGGCTCCAACGGTAATCGTGACG
-AGACCCATTTTGAATTATTTAATTATTCATGAAACGCTCTACTGGAGTGT
-TCATAATTATTAGAGCGCGCTCGCGCGGCACCTCACGAACTCCAGAATTC
-GCGAGGACAGCAGTTTTTGGCTATTTTGGCTTCTATGGAAATTATTTTTA
-ATTTTTTGATTTAAAATATTGTTGAGAAGCATCATCCAAATTGAAAATGT
-GTAAAATTATGAAATTTGACCGAAAACTGAAGGTTTTACAGAGAGGAGTC
-ACCACGGCTTTCTTTAAAAAGTATCAGTACCGTCAGTATTTCGATTTCAG
-AGTCGTAAAATATGTCATTTTGTAGAGAAACGTCTGTTTCACAAAAATCC
-ATGTTTGATATTTTAATTGTTTAATTTCTAATATAAAAATATTCAAAAAA
-TCAACAAGTTTACGTTAAAATCGAATTTTTCAATCGTTCAGTTTTTAATA
-AGAACAATTTCATAATTTCAAACATGGATTTTTTTGAAACAGACTTTTCT
-CTACAAAATGACATATTTTACGACTCTGAAATCGAAAAAACTGACGGTAC
-TGATACATTTTAAAGAAAGTCGTGGTGACTCCTCTCTGTAAACCTTCAGT
-TTTCGTTAAAAATAATTTCCATAGAAGCCAAAAATAGCCAAAAACTGCTG
-TCCCCGCGAAACGAAATCCCGCGAATTCTGGAGTTCGTGAGGTGCCGCGC
-GAGCGCGCTCTAATAATTATGAACACTAGAGGAGAGCGTGAATGAGCGTT
-TTTTATTCTTTTCTCTGCATTTTTAATGCTACAGAATCATACACAAAATG
-TTGTCAAATACATGCATTACTCTACTACTCTTAATGTTTACTTTTCATTT
-GCAGAGTACCGCAGCGGCGGCAGCAGCAGCAACAGCAGGCGGCACCCCGG
-CCGCCGGAGCAGAAGAACAGCTTCCCGATGGATGGGAGATGCGTTTCGAT
-CAATACGGACGCAAGTACTACGTGGATCACACCACCAAGAGCACCACGTG
-GGAACGCCCGTCTACTCAGCCATTGCCACAGGGATGGGAAATGCGAAGAG
-ATCCGAGAGGAAGAGTGAGTTTTCCGGCGGAAAAAGCAGATTTAGCACGA
-GAAAAGCGTTTCTGATTATATTTTTGATGCGAAAATCATCAAAATTAAAA
-ATATCTACCGTAGCCGCGGATACCTGGACCAAAATGCCGAAAAAAGTGAC
-CTGATAAATTATTTTAAGGCTAAAATCTTGATTTTTACATAATTAGTGTC
-TTATTTTTGTTGATTTCTTGTCAAATTTTTGTAATTGCATCGAAATAGGC
-CAAAAATAAAGTAAAAATCAACTTCCAACACAGAAAAACTGACAAAATTG
-AAGATTTTTGCTGAATTCAGGCAATTTTTCGTAATTTTGATCCTCCATAA
-TTTTTTTTTTCGAGAAAATTTTGAAATTTTTTCTTTAAATACGGCCTGAA
-AATTAGGAAATTATAACGACGGATAAAAAATTCTGATTTTCTTTATTTTA
-ACCAAGGTCTCCAATTATTTGATAATCGAAAAAAAAAAAACTTTCCAGTG
-ATTTTTACTTGAAAAATGTCTAAAAATTCACGCCAGGTGCACAATCCATT
-TTCAGGTGTATTACGTGGATCACAACACGCGCACGACCACCTGGCAACGA
-CCGACAGCCGATATGCTTGAAGCACACGAACAATGGCAATCGGGAAGAGA
-TCAGGCGATGCTTCAATGGGAACAACGTTTCCTTCTCCAGCAGAACAACT
-TTAGCGCCGACGATCCACTCGGACCATTGCCCGAAGGATGGGAGAAGCGT
-CAGGATCCGAATACGTCGAGAATGTACTTTGTGAATCATGTAAATAGAAC
-GACACAATGGGAAGATCCGAGAACACAGGGGTATGTGAAAATTTTCAATT
-TTCCAATAATATTTCTATCAAAAATCACAGTTTTAATGTTTTAAAAGTTT
-CAGAGGCTCCGACCAACCTCTTCCGGATGGTTGGGAAATGCGATTCACCG
-AGCAAGGCGTTCCATTCTTCATCGATCACCAGTCTAAAACCACCACCTAT
-AATGATCCAAGAACCGGAAAACCCGTCGGCCCGCTCGGCGTCGTCGGTGT
-TCAAATGGCCATGGAGAAGAGTTTCCGGTGGAAAATTGCACAATTCAGAT
-ATTTATGCTTGGTAAGGGAGGGCGAGAAATTCTTTGATTTTAGCTATAAA
-TTGATGTAAATTTCAGTCAAACAGTGTGCCTAATCATGTCAAAATCACAG
-TATCCCGTAATAACGTGTTCGAAGACTCATTCCAAGAAATTATGCGTAAA
-AATGCAGTCGATCTACGCCGGCGGCTGTACATTCAATTCCGAGGCGAAGA
-GGGTCTCGACTATGGAGGTGTCGCCAGAGAATGGTTCTTCCTGCTGTCGC
-ACGAAGTGTTGAATCCAATGTATTGCCTATTCATGTATGCTGGTAATAAC
-AATTATAGTCTTCAAATCAATCCAGCTTCATTTGTTAACCCGGATCATCT
-TAAGTATTTCGAGTATATTGGACGATTCATTGCCATGGTGAGTGTTTTTT
-TTTAATTGAAAATCAGTTGAAAATTGGATGAAAAATTGCGAAATCGAGAG
-AAAATCGAGTTTTCCGCTTTTTACAATTGAATTTTAAAATTTTAAACGTT
-AAATTTTGCAGAAAATTCCAAAAAAAAGCACTTGGATCTAAAATTTTTGT
-TTTTTGATGAAGGAAATCCTTAAATATCGATTTTTTTTATTTTCAGCTCA
-AAAAACCTGGAAATTTCGATGATCTCAAATTTTCAGATCAATATATTTCA
-TTTTCTCCTAAAAATGTTATTTTTATTTAAACAAATAGTTTTTCTTAGAA
-AATTCCTTTATTTTCAAATTTCCAGGCGCTATTCCACGGGAAATTCATCT
-ACAGCGGTTTCACGATGCCATTCTACAAAAAGATGCTCAACAAGAAGATT
-GTTTTAAAGGACATTGAACAAGTCGATTCGGAAATTTATAATTCATTGAT
-GTGGATCAAGGATAACAATATCGATGAATGCGATATGGAGCTCTATTTTG
-TTGCCGATTACGAGCTGCTCGGCGAGCTCAAGACTTATGAGCTTAAGGAG
-GGCGGTACAGAGATTGCTGTTACCGAGGAGAATAAGGTGAGATTTTGGAT
-TAGCTAGAGCTTATAAAAATAATTTTTAAATAAAATAATTTAATTTAAAA
-AATCCCAATTTTCCAGCTTGAATACATCGAACTGCTCGTTGAGTGGCGCT
-TCAATCGCGGTGTCGAACAACAGACAAAAGCCTTCTTCACCGGCTTCAAC
-TCGGTCTTCCCGTTGGAATGGATGCAGTATTTCGATGAAAGAGAGCTCGA
-GCTGTTGCTCTGCGGAATGCAGGACGTTGATGTGGACGATTGGCAGAGAA
-ATACTGTCTACAGACATTATGCTCCACAGAGCAAGCAGGTAGGGGAGAAC
-ATTTGATTAAAACTTCTTTTTTTTTAATTAAAAAATACATTTATAGGTAA
-CCTGGTTCTGGCAATGGGTTCGAAGTCTGGACCAAGAAAAACGTGCCCGG
-CTCCTACAATTCGTCACAGGAACGTGCCGTGTGCCAGTCGGTGGATTTTC
-CGAGCTGATGGGCTCGACGGGACCACAACTATTCTGTATCGAGCGTGTCG
-GCAAGGAGAACTGGCTCCCACGGTCGCATACGTGCTTCAATCGACTCGAC
-TTGCCGCCATACAGAAGCTACGATCAGCTCGTCGAGAAGTTGAGCATGGC
-GATCGAGATGACGGAAGGATTTGGAAACGAGTAGTCTCCCGTTGTTTTTT
-TTTGGTTTTGCTGGCCGCCTAATTATTGTATAACCCTCATATTTCTTCTC
-ACCCACACCCCATTGATTTTCCTTTTTTTTCTCTCCATCAATTAATGTTT
-CTTTTTTTCGAATTTGTGTGATAATTTTCGTGTTGTGATACCACTTGCTT
-AGGTTCTCTCTCTCTCTTTCCTTTCCTTCTGGGTATGTACCTATATTTAG
-AATATAGACAAAGCATCTAGTTTTTTTGGATTTAATTTCCAAATTTCCCG
-TTTAATTCCAACAACAAAAAAACAATTCCACCACTTTTCAAATATTTTTT
-TTGTGTCCATTGCTTCATTGCTTTTCTTCTTCTCAACCATTTCAACCACC
-ACCACCCAATCTGCGCCTTATTCTTACTTGGTCCTTGTCATTCTTAGTTC
-CAGTTTTTTTCACGGAAGCAGCTCTCGATTATTAATTCAAATGCATCCCC
-CCAACCAATCCGTCACCCCCCGATTAGAACAATTTCTACTTTTTTTTTTG
-AAAACAAAAAAAAACACAATTCCTCGATTTGGTTGTAATGAATTTAATTT
-TTTAAATTTTGAGCCTTTTTTGTTGTTTTAGGTTTTCTTAACTTTCAGAA
-TTTCCATGCGGAACACACGGAGAGCAGAAGATCAATATTTTGAACCCTGC
-AGGAGAAGGACGGGACCCTTTGGTCACTCATGTCTCGGCTGTCTGCGTCT
-CTCCTCTCTCTCTGCACCAGCGGAGAGGATGGATAGCCTCATTCGTTTTA
-TTTCGGACTTTCGATTTTTCTTATTGCTCCACGTTTTAGCTTTTATCAGA
-TTCGGGGAGCTCTTGCTTTTTTCTTGATTTTTTCGTAAAGTGTTCTTGGG
-TCCCGCAGCGAAAATTAACTTTAAAATGATTTTTTAAAAACTTTCTAAAA
-ATTCATTTTTTTTTCCATTTTACGACTAGAAATTTCGAAATTTGAAAAAA
-AAAACCGTGTTGCAAATGCGCTCCAGCGTACAAAACAAAACCGCCACCAA
-AAAATTTAAATTACTGAAAAAAACGATGAAATTTTGAATTTGTTTTGCCA
-TTTTCCGGCAATGATTTTTTAAATAAAAAAAACTGTACAACAAATGCGCT
-CCAGCGAACTAACCTTCAAATTACCGAAAAAAATTATAAAAATTTGAATA
-TTTCCGATTAACCCAAGAAAAGAAAAATTCAATGATTTTCTTGAAAAAAG
-TTATTTTTTTCTCAATTTTTCGTCAATAATACTCAAAATTTGAAGAAAAA
-TTGTGTAGCAAGCGCGCTCTAGCGAACCAAACAAAATGTCTCCATTGAAG
-CGTTTCACGAGGTTCTGGCCTACCTCATTGAATTTTTCGCGCTCCATTGA
-CAATCGCCCGCCGATAACGCGTGGGAAAGTCGTGTACTCCACACGGACAA
-ATACATTTAGTTTTACTACAAATATCGAGCCGCGACGCGACACGCAACGC
-GCCGTAAATCTACCCCAGATATGGCCGAGCCAAAATGGCCTAGTTCGGCA
-AAAACTCTTCCATTTCAATTCATGAGGGAAGCCAGAAATCCGTGATCCAA
-GTAAAAAAAATCCCAAAAATTTCAATTTGCAAGGGCGCTCCATTGAAAAC
-TGTGGCGCCGATCGCAACTCACGGTCGAATTTGAATTTTTAGTTGAAAAA
-AAAACACCAATTTGAACTGAAAATTTGAATTTTCAATTTTTTCCCTAAAA
-TAAATTGTTCAGAGTTTCGCTGTCGAATTGTTGATACCCGCTCGTCAGAA
-TTGGAAATTGAGAAATTGAGAGAGAATTAGAGAAGGAGAGGAAGAGGAAC
-TGCTCACTGGTCCCCTCACTCCATCCGAAATTAGGCACTTTTTGCTCCGG
-CGGCACTAGAAGACGAAGAAAAAACGACGAGCAGAACACAATCAATTTCG
-TCTTCTTTTTTATTTTTTTTTGGTTTTTTCTTGTTGGTACCACGGATTTC
-TGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAAATAGGCCAT
-TTTGGCTCGGCCATATCTGGGGTAGACTAACGGCGCGTTGCGTGTCGCGT
-CGCGGCTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTGTGGAGT
-ACACGACTTTCCCACGCGTTGTCCGGCGGCCGATTGTCAAAGGAGCGCGA
-AAAATTAAATGAGGAAGGCCAGAACCCCGTGGTAAAACATGGTGCATCAA
-CGCAAAAATTTTTCATTTTTTGGAAAAACTCAATTGTTTTTTTTTCGCGT
-CGGGACCACCAAACCAGAGCTCGTTTACTAAATTGAATTTCCAAAAAAAA
-AAAAATTTCGCTCTGTTCAAAATTCGAAATTCAGTTTTCTTTCCCTAAAA
-CCTAATAAAATGATCTTGGCACAATGCTCACTGTGAGCTTTGGGTCTAGA
-ACGATGGCCTAGAAATGTTGAGATTTCCTCTTCCAGCGCCCTTGCCAATA
-TGACCTAGAAATTTCAAATTAGTATAACTCGGCCATTTTCCATCCGTTTT
-CGCCAAAACTACACCATTATAACATTTAAAACTTACTTTTCAATATGATG
-ATAATACTTTTCCAGTGGAAGAGTTTTCCGCATTTCTAAGCCACCAAAAC
-CTCTCCTCCCGACGTTTTATCAAACAAATGATATCACTGTGATTTGTGTT
-GTAAGTTGCGCGCATGATTGCACTTGCGCAATTAATTAAGACAATTACTC
-AAAATTTTGATCGAATTAACCCCATGTACATATAAAATACAAGATTTTTG
-TGTATTGTTCTTCAAAGTTTTTTGTCGTATTTATATAGAAGCAGTGTACA
-CCTAAATTTGGCTTATTACGACCTTTTTTTCCAAGGAAAATACTCATTTT
-TAGGGTTATAAACCCCTTGATTGATACGTGGCCTAGAAAACTGCAAGCGC
-TTTTTCCTGGAAGTTTTAGGCCACCAGTTAGAGTCTTGCAAAGACGGACT
-AGTTCTCACATGACCCAGAAAGTCTTAGTCCATCACGTATTTCTTACGAC
-GCCTAGAAATGCAAATCTTCGGCCACCAATTTTCATAGACATTCTAGGCC
-ACCCTTTTTGACGTGGCCTAGAATCTTTAACAAAATTTGTAATGAAAATC
-CTAGGCCACCATTCAGTTAGCTCTCATTTTTGATACTTCGCCTAGATTTT
-TAACACGTGGCCTAGATTTCTATTTTAACACGGGGCTTAGATTTTTATTT
-TAACAAGTGGCCTAGGTTTTTGCTACTAGGCCTAGATTTTTTACATGTGA
-CCTAGATTTTTATTATAGCACCTGACCTAGATTGTTGGCATTTGGCCTAG
-ATTTCTGTCATGTGACCTAGATTTTTTAATGCACCAAAAATTCTCCATAC
-AAATTTAACTCCTACACTCTAATTTGTAATCAGAACCTTCGATAAGAAGA
-ACATGGAGCTACTGCGGTGCTCAAATTCCGAACAAAAAACGGCTGAAAAA
-CTGAGGTATACGTGGTTTTTTTTCGAAACTGATAAAAGTCAGCATAAATC
-ACGATAAACTGAACGTCCTTTGGCCAAGTTTAGAGAAACCTAGGCCACGG
-GTAGTGGTGGCCGAATTTTAAAAAAACTGGGCCACGAGGTTTACGTGGTG
-TCAAATTGCCCCATTTTGGTTTGATCTTCGAAAAATGCGGGAGACGAGAC
-GCAGACTTTTCAACTGATTTCGCATGGTTAAGAACGTGCTGATGTCATTT
-TTTTCCGTGGAAAAATTCCCGCATTTTTTGTATATCAAACCACAACGAGA
-CACTCTAACACCACCGTCCGGCCGTTCAAACGAAAATTTAGGCCACGGCC
-ACTAGGGTGAAGTGGAATGCCCTACCCTTCTCTACAAAATTCATTGGAGA
-AACCTAGGCCATGCTCAAAGAAACAGTGGCCGAGAAAGGAAAAACTAGGC
-CGCGTTCGCTTTGTACCTCTCTTATAAAACACTGTCTGTTAGTTCATAAA
-TCAGAGTCTGCCCCCTATCACTACTCTCTCATTTACCTGCCCCTCTTAAC
-AAACAATCAACCCCCCCCCCCCCTCTAAATCGACTACTTGTTCCCCGTTG
-TACCTGTCTGCGTCTAGCTATTTCTGTTAAATTTTTGGAACGAAAAAGTG
-GTATGTGAATGTACGAAACAAAAATAATAATCAATTGAATACAATTTTTG
-CCCCCCCCCCCCCCCCCCCTCCACCCCGCTTGCCTGTCTCTAACCGGTTT
-CCCCTTTTTCACCTCAATCAGCCCCCCCCCCCCCCCCCCCCCCCCAATTT
-CATTTGACTGTACATTTTCCTTTACCTATCTGCGTATCTACACAATTTTT
-GTATTTTTTCCTTTTATTTTTCTAATTATAAACCCTGCAATTTGCAAGAA
-AAAATCTCTAAAACGCTTGGCCCCTTACCCGGAGTGCGACCGTGGCCTAG
-AAATTTATATTTCTTATAAGACCCCCCGGCTCTTCCAATTTTTCATTTTT
-TTTCTTTGAAAGCCTAAATTTTCATTTTTTCTTAGAGATCAATATATTAT
-GGGTTAGTAAAAAATTTCAAAAACAAGCTCCCCGTGGGCGTGGAAGAGTT
-TTCCAAATTTCTAGGCCATACTTTTCGAAGGCGTTGGGGTACGCTCGCAC
-CCTAGTACTAAAAATTGTAAATTATAAAATTATCATAAAATTGGCTCAAA
-GCATTTGAAAATAATAAAAAAAATTTTAGAAAAAAAAACACGAAAAAAAC
-CCCTATTTTGAACATGGTTCATCGACCGGGACCTATATACTTTGAAAGCT
-TATATCTCGCTTCATGTTTGTTTTATCAAAAATTTTTCAACCAACAAAGT
-GTTTATTATTTCTTTTTCTATATTTTTGTAATTAAAAACTTTTTGATAGC
-TTCAAAAGTAACTGAGATACATGTTGTCAAACAGAGCAAACTTATAGCTT
-AGCCCAATTATTTATTTTTTGCTGTGTAACATTTCTTGTATAAACTTTTA
-AAGTTTACGGTTTTTTTAAATTTCTAAAAAAAATTATTGACACTTTAAAG
-GGAGGTCATGTGGAGATAGCCTGTACAAATAAAACTGATGAACTAGGACG
-AACCGAAATTCATAAACCATTATTTACACAGGTGATTCTTGCCTTTTTTG
-GAGGGTTAAAAAGGTTAAAAATTATTTAAAGCTTGGAATGAGCATTTGTG
-CGGCCGAGTTTTTATTTTCTAGGCCATAATTTTTAAAACAATGGCCTAGA
-AGCACAAATTTCTAAGTAATTTGAATTTCCCGCCAAAAATTTTTTTTTCC
-ATAAAATTTAAATTTCCCGTCGAAAATTTTTTTCGGAAAATTTGTATTTC
-CCGCCAAAAGATTTTTTGTCTCAAAAAATTTGAATTTCCCGCCAAAATGT
-TTTCTCAGAAAATTTAAATTTCCCGCCAAAATATTTTTTGTCTCAAAAAA
-TTTGAATTTCCCACCAAAAATTTTATCCCAAATTTTATCGAACATTTGGT
-GGCCGAATTTCCATTTTCTAGGCCACCCTCAGTTAAATCGTCAAATAAGT
-TGACCTAATTAAATTAAAAATTAACAATTTGTAATGTCTCCGACCAAAGT
-TTCATAATTGTATAGATCATCATGGTGGGAGGCGGGGTAGCACTTATGAG
-TGAACTTACCGGTTGACCGCCCGTCTATACATAGTAGCCAACACCCGACC
-ATTTTCTGCCAAATACCTATAATATCGCTTCGAGACCCAACTATTGCACA
-GTTGTGGTTTATTTCGGTTGAAGACCCAATATTAATTTACCTACAGCTGC
-TAAAGCGTTTTAAGACCTAAAAAATTAAGCAAGGCCCAAAAATCCAAACT
-TAATACTATAGTACTTCTCGTTTCGAGACCCAAAATCCAAAGCTAGGCCA
-TATTCTTGGTGAGACCCACCTGTAATAAATATCACTTGAGTGAAAGTGAA
-CTCTTACTTTTTTCTTTCGACAGCCAAAAAAAATTGAGTCAATTAGCAAA
-TAATTCACGTCTCCCCCTTTCAATGTTTACATACACATTACGAACGAGAA
-AAAAAAACGAGAGAAAAATTGAGTGAAATGGAATCAAAATGTGTTCATTT
-TTACTTTTTATGAAAATTTGGATAAGCACATGGCGTCAGAGTGTCCCATT
-TCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGTGAAGAGACGCAGA
-GTTTTCAACTGATTTCGCTTTTTTTTGGGCGAAAATTTCCGCATTTCTTG
-TAGATCAAACCGCAACAGTGGATAAGCGCGCTCTATCGACAAACCCGGTG
-TGTACTACTCGCGGACAACCAGTATAGTTTTTTTTTTGAATTTTTGTTCG
-AAATTGAAATTGAAATAAGATGCCAAATTTAAATTTAAAAAATAACAATT
-TTTGAAATTAAATTTTTAAAAAAATTCCCCGTAAATCTACACTTAGTCGC
-GTAAATCGACAAGGCTATTTTTTTCAATTTTTGCCCATCGCACTTTTTTT
-GCCCAATCAATCATCGTCAATTGATCCATTGATCTTCTTCTTCTTCTCTT
-TCTCTTTTCTCACCACCGAAAATTTCATTTTATTTTTTGACACTGTCTGC
-GTCTCTCTGTACCCCCTATCTCTCGCCTCTCAAGGACTATTACAACGAAA
-AATTTGGGGAGAAGCCGTGATTTTCATTTTAATTTTGATGAAAAATTTTA
-ATGAAAATGAAAAAAAAAATTGTTTTTCAAAAAACAATCCCCTCGTAAAT
-CCACACCAAATTCAATATTCACCTTATTACAAATTGATTATTTTTCCCAA
-AAAACACACGACATCGGGCGCCCATCTATTGTTTTTTATTCCAAAAAATT
-TCTGCAACTGTCTGGGTCTCCGGTTAACACTGAGAAACAACAAATTTCAT
-TTTTCGATTCATTACATTCATTTTGAAGGTTTTTGGTTACAAATTCGACA
-CGGATTTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTGCTGAACTA
-GGCCAACTTGGCTCGGCCATATTTGGCATAGATTTACGGCGCGTTGCGTG
-CCGCGTCGCGCCTCGATTTTAGTTGTAAAACTAAATGTGAAGTGTCCGTG
-TGGAGTACACGACTTTCCCACGCGTTGCCCGGTGAGAGATTATCAATGGA
-GCGCGAAAAATTCAATGAGGTAGGTCAGAACCCCTTGAAAATTGAGAAAA
-AAAAATCTCACAACGATACTCCGCAAAGTGTGCGTGTTGTTTATTAAATG
-ATAAATTCAAAAGCAAATAGCGATTTTGTTTCAAAAATATGCCGAAAAAA
-AAGAAAAAAAATTAAAACAAAAGTTCAGCCACCAATTTTATTTCTCGGCC
-ATGGTTGTGTCGTTGTTTATTTTTTTGCGATCGTATTTTTTCTATAATAA
-GACTTAAAATGAAAAAACATTAATAAAAATCAGTTTTCCATGGCCACTGT
-CAAAAGTCGCAACGACACTCCCCTTCCAGGCTCCTCCCCCCCGCGTGTAT
-TTTAGCATGTAGTGTAAATTACGCGATTTTGTGTATAAAACCCTAATTTT
-TTAGAAGATTTGAGAAAAAAAACTTTTAAAAAATGGGAAAAAATCCCCTT
-TCCCTTTTTTGAAATACTTTCCGACAAAGTTTAGCCAAAAGTCCAAAAAA
-AACCAATATGGCCTAGAAAAAATCAAAAACTCGGCCATCCAAAAAACTAG
-GCTACACGTTCTTTCGACCTCTGCTCCCCACACCTATGCTGCCCATATCA
-AATGTCTCCCGGACCCCTCATTCCGTCACACATTTCTCAAAAAAATGTCT
-CTTTTTCTCAAATTCTCTGTCGAAAATCCCATATCTCTTCAGTGTTCAGA
-ACTGACTGTTTTATTTCAATTCTCATGATCTCATGTCTCCCGTATGACTC
-ATTCCTTCGATATATTTTTCTTTTTTCAAAAATCATTTTTCCTATATATA
-GACTTTGTTCGGTGGGAATTTCTCATTTCAAAATATTTATTGAGGTCGCT
-TGTTCCCTTTTTATATGGTCGTGGCCTAGGTTTCTAAAACTCGGCTACCA
-TTTCCAAGTTGTAGCTTCGAGCTCTTTGTCTCGGAGTAGAAAAAATTCAC
-GAAATAAATAAAAGTTCACGTGGCCGTGGCCTAGATTTCCAAAACTCGGC
-CACCAATTTTTTTTCTCTTATCAGTAAACCACGTAGAACTCCTTTTTTTC
-TAGCCATTTTTTAACTGAATTTCCAACATATTCGGTGGCTCCATCAATTT
-TACTGATAGTAATTTCCAATAAAAAAAGGTATTTCTGTCGATAGGAACCC
-ATTTTCATCTACTTTTTGTTTCTACTTTATGGGTTTTGCCACTTTCCCGC
-ATGCCTACGTGCCTACCTATCTGCCGACCTAATATACCTCGTAGGCAGAC
-CTCGGCCGCCTTGTGGTGAGATGCCAGTCGCTTTGTAGGCAGGCGTAGTT
-TGTCTTGCTGGTATGAGTAGGCCTGTCAGCCGCCCAGTAGGCAAGCGTAG
-GCATGATGCAGGCGTAGCAGGCTTCTTAACTAGGCATCGGCTGCCTTGTA
-AGCCGGCGCAGGTAAGTGAAGGTTTCTTCGTGGCTGGCATCCTTGCAGTC
-AGGCACAAGTCGTCGGCTTGAAGGCAGGCAGATGCCGCCTAGTAGGCAGG
-CATATTTTACTTATAGGCAGGTATTAATGATCCTCTAGGCTTGCGTTGGT
-CGGTTTGTAAGCTGTCGTAGGCTGCCTTGTAGGCAAATTGAACTCTCAAA
-CCAAACAACACAAAAATTCCAATATTTTTTGTACCTTCTGATTTTGATCT
-CTGACTCATGATCTCTTTATCAATCTCATATCTTCCATTTTTAGAAATAA
-ACAATTTTTCCCTTCTATTCATTGACTTTAATCCCTTTCAATATTCATTC
-AATACACCTATAATACGAAAAACTCTTATCTTTTTTCATTTTATCACACA
-TGGTGCATAATATTATAGTTAGTGGCTATTGAAAAAGCACATCATTTTAT
-CACTTTTTGTCACTTTTCCACGATTCTCAACGTCTTTTTTTTAAACACAA
-AACGTTTCCCGTCATTTTCTACAGTACTCCCGCATTTTCATTTTCCAGGT
-GAGACCTGAGATGGAGGGCGACGAGTTGGTTCATCGTCCGACGGTCCTCT
-CGACGACGGCTTCTGCCACGTCACGGCCGCGACACAAGACTTTTGAGCTG
-TTGGGTCCGGTGAATAATATCTCGTTGGCTGATATGTATAAAGTGTGCGG
-GAAGATAATTGGCAGGTTCCCGATTGCATTTATTATTGCGACGGTGATCA
-TGTGCAGTGGTGGATGTTAGTTTTTTTTGACGTAAAAAATACAGTTTGAG
-AAAATCTTTTTTTAGATCAAAAAAGAAGAAAAATATGGAAAAAACAACAT
-TAAAATATTTTTTAGAAATCAAAAAATGTAAAAACTGTATGATTTTACTT
-AGGGCCTCCATGGTAGACAGGCACGGTTTTAGGGCCTGACGCCTGCCTGA
-AACCCACGTGGAGTCAGAAAGTCCCATTTCGCTTTGATCTTCAAAAAATG
-CGGGAGAAGAGACGCAGATATCTCATCTATTTCGCATGGTTAAGAGCGTG
-CTGACGTCACAATTTTTCTGGAAAAATAATCCCGCATTTTTCGTAGATCA
-AACCGCAATGAGACAGCCTGACACTATTAAGCCGCAAAGGCAAAAGTGTT
-TGCCGTCTGAATTTTGAAACAAAAGGTTTAACCGGTGAAAATTGAAAAAA
-AGTATAATAATAATAATAATAAAAGTAGAACTATTTTCAGTATACTAAGG
-CAAAATGATTGTTTTATAAAAAAACTTAATTTTAAAATTAGATCTCCTAA
-ATGTTTCAAGCAGCACAACTTTCATGTGATGTCAGGCTGTCTCATTACAG
-TTTGATCTACAGAAAACGCGGGAATTTTTCTCCCAGGAAAATGTGACGTC
-AGCACACAATGCATAATCAGATGAGATTTCAGCGCCTCAACTCCCGCATT
-TTTTGTAGATCAAACTAAAACAAGACTCTCTGACACCACGTGAATTTTCC
-AACCATCAAACTATCACAAAAAAATTGGCGCCAAAAAAACTTCTTTAAAA
-ACTTCTCATTTCCAGTAGGAACAATCGGTCTCGAACTGAAGGATAATGTG
-CGCGACGGGTACACGCCGAAAAACTCGCTATCCCGACTGGAAAATCGCCT
-TTATCGAGAGTTCCTGAGTTCCGAAGGTGATCCGGTGATGACTACAGTTC
-TCATGACTGCCAAAGACGGAGGATCCATGCATCGGATCAAGTATTTGGAA
-GAAGCACAGAGGGTGAGTGGCATAACATATCGGATACCGTATTTCCTCTA
-TTAGTAAGGCATGCAAAACTGATTTTCGGACACCTAATTTGATGCAAAAC
-TAATAGAGGGTGCAAAACTAATTTTCGAACAGGTTTTTTCTCATTAAGTT
-ATATTATAATATCATCAATTTCAATAACAACTTCTGAACCAAAATGGGCG
-AATTTTACGACTGATACGCAAAAATTGTCCGAGTTGTACTCATATTTTGC
-CAGTTTTGACTTGTTATACCAAGTCTGTAAGAGTTTTCCTAATTTTCAGA
-ACGATTTTATAATGCAAATTTTGAATTCCTAAACATAGGGAACAAATTAA
-GGGGTGCAAAACTATTAGAGGTGCAAAACTAATAGAGAGTGGAAAACTAA
-TTTTCGATTAGTGATTTTTGATGCAAAACTAATGGAGGTGCAAAACTAAT
-AGAGGTGCCTAACTAATAGAGGAAATACGGTATATTTTTTTGAATAAAAA
-ATTTCAGCAATGGCTCTACATCTCCAAAAACCTATCCGCAGACGTTGGAA
-ACGGCGAGTTCATGAAATTCGGAGATTTCTGTGGCCACTACTGCCAAGCC
-AACGACATCATAGGATACTTCCTGGACGCCTACAAAACCAAGTCAGCTGA
-CCCAAAAATGGATGGCTACCAACTCAATTACCCAATTACCACAGTAATGG
-GTTATCAGCTTCATCTCGAGCGTAACTTTTTCGGGGTTACTGTGAATCAG
-TCGGATCCGGTCACTAATATTCAGAGTATGAAGGTTCTGACGCTTCCTGT
-GTTGTCAGAGGTACGGACGTTTGAGGATACGGATAAGCTGAACAAGTGGG
-AGCTGGCGGTTTATAACTATGCTACAGGATACTCTGCACTCGAGGGTGAC
-GATCATTTGGTGGAGATTAATGTGAGTGAATAAATTGGACCATTTCAAAA
-ATATTGGGCCAGCCCTAAAAAGACAGCGGGCCGGCCCATATCGACCCACT
-TAACAGGCTCAAAAAAGTTTAGTTCAGTTGTGTGCCGCAAATTTTGAAAT
-TTGCCGAGCTCGGCAAAATCGGCAAATTTGGTAAATCGCATAATTTTCGA
-GCTCGGCAAATTCGACAAGGCTAAATGTTTGAATTTTGCCGTTTTCGGCA
-AACGGCAAATTTGGCAAATTTGCCTTACACCCCTGGTTTAGGGGTTTCGT
-GTTTAATTTTCAAAGCTTAGATAAACCTCTTTTCCAGGTGATCGGTGCTG
-AAGTCGTCGACACCGAAATGAACAAGGACGCTCAGAAAATGGTGCCCTAC
-TTCATCGTCGGAATCGTCTCGATGATCATCTTTATCTTCTGCACCGTATC
-CATCTCTGCCTCCTACTACGGATACTTCTCCTGGCGAATCGGACTCATCG
-CCCTCGCCTGCCTCTTGGTTCCGATTCTCGCAATTCTCACTGCATTCGGA
-ATCAATAATATGCTGGGAAATCGAACGAACTCTCCGATGATGATCATGCC
-GTTCTTGATCAATGGAATCGGAGTCAACGATGCGTTTTTGACACTTCAGA
-ATTGGTTGCAGCATAGCCCGGATCTTCCGTCAGGGAAGCGGTTGGGGTAT
-ATGTTGGCTGAAGCTGGTCCATCGATCACTACGACCACTTTGACAAATGT
-CATTGTTTTTTTGATCGGGTGGATGAACCCAACGGAAGGTAAGGTTCAGT
-GGTGGACGGCAAACTACTTTTTCCGGCAAATCGGTAAATCGGTAAATTGC
-CGGAATTGAAATTTCTGGCAAATCGGAAAACCGGCAATTTGTCGATTTGC
-CGAATTTGCCGGAAAAAAAATTGCCGAACGGCAACTGCGCCCTGGTAAGG
-TGCATAGCTTTGGCCTCTAACATAAAAAAATTTGTCTATTCATCCTTTAT
-TCCAAAACGACATGTATTCCAGAGATGTCAATCTTCTGCCTTGGATGTGC
-AATCTCCCTACTCCTCGCCTACGTCTACACCCTCACGTTCTTCTGTCCGG
-TGCTAGTTCTTCTGCTTAGCGAACGCGTCAATGAGCCCAGCAAGCTCGAG
-GGCACTTTCAACAAGGTTCTCGGATTCTACGCAAAAATCATATGCAGCCG
-ATGGACATTTGCACTTCTCATCATCGGAAGTCTTGTCTACTGGGGTTTCG
-GTATCTATGGAACACTGGGGATCCGTGCCGTGTTGAACACTGCAAAGATC
-CTTCCCCTGGAGACGCCGATCCGCAAACCGAACAGGATTATCGAGGAGAC
-CGTGTGGAAAGAGTTCTACCCAGTCACCGTGATTGTGAACAGCCCAGTTG
-ATATAAGCAATGCAAATGCACTTCGAGCATTTGACAACCTCGTTCACGAC
-TTTGAATCGATGGAAAAGTGCCGGGGATCCGAGTACACCATATCTCCAAT
-CAGAGACTATCAGACCTATTTTTACGGTGTAGGAGCCGAGGACTTTGATT
-ATGAGGAAGAAACCGTGAAGAACACCTCACATTCTTTAGATTTCAGTGTA
-AGTTAGCAGTCCACGCGTTCCTATTAAAATCTACATATATGCCTATAACG
-TGTTTATCCACAGAAGAGAAAAATCGCCATATCTGCCGCGCAAATGAATC
-CGCGGGAAGAGACAAAACTACTGTAGTTTTTAACCAATTTGTGTAGATTT
-ACGAGCTATTGCGTCATCGTTGTATTTAATTTTGAGCCGCAATTTTTAAT
-TTTCAGGCGTTTCACACGTTTTTATATTGAAATTTATCTATTTATTGAAT
-AAATCTTAAAAGAAAACACAAAAAAATTAGAAAAATTCCGAAAAACGCCT
-GAAAATTAAAAATTGCGGCTCAAAATTAAATTCAACGATGACGCAACAGC
-TCGTAAATCTACACAAATTGGTTAAAAACTACAGTAGTTTTGTCTCTTCC
-CGCGGTTTCATTTGCGCGGCAGATATGGCGATTTTTCTCATCTCTGGATA
-AACACGTAATACCTACATATTTTGTGTGCCTAAAAACATGCCTAGCAGTG
-AAAGTAGACAAATGTAAGCACACAAACGTGAGTAGGGCTTAAATGGTATG
-CAGGCACTGTTTTAGGGCCTGACGCCTGTCCAGGCCTGTCTTGTACGTTT
-CATCAATTCAAGCCGTATATTTCCAGAAGCTCACCGGATTCCTTGCCAAC
-CCTATCTACAAGCATCACAAGGGAGGACTAAAACTTAACTTTTCAAATCC
-GTTAGTTCCTATCTGCCACCTTACCCTAAATCGAGTACCATTTTCAGTGT
-TCCAATCCGAAAAGTGCAACTGATATTCGCTTATGAAAACGTAACCTCGT
-GGGATGAACGGATTCAGATTATGCAGGACTGGCGGACCATCGCAAGTTCC
-CACGTGGCCCTAAATGTTTCAGTGTGGAATGTGAACGCAATGTTCGTAGA
-TCAAATGCTGAGCCTGAAGGGATTGGCGATCTCGGTAAGATCTCAATGGT
-TCCAGCGCCCTATAAATACCGCTTATTCTTTCAGAATGCCCTAGTCACCT
-TGGGATGTATGGCTGCCGTCTGTGTAGTCTTCATCCGCAACCCCCTCTCA
-GTTGGCCTAGCGACCGCTTCGATTTTATCCATCTCCATTGGAGTAACTGG
-ATACCTGTGCTTCTGGGACTTGGATCTGGACCCTGTGACCCTGTGCGCAG
-TAATTGTTTCAATTGGAATGTCCGTTGACTTTGTTGCCCATGTGGCCTGT
-CACTATCAGGTCAGGTATAAAGAGTTCGAGGAGAAAGGAGTATTGAAGAG
-GATTGAGATGAAAACTCCCGAATCTCGAGTCGTCAACTCGCTGTCCAATG
-TGCTCTGGCCAATGGTCCAGTCGGCTTCTTCAACTCTTCTATGTGTACTT
-CCACTTGGTATTCTACAGGTACCTACCAATACCTATACTTTACCGATAAC
-CCTACCCCTCAAACATTCCAGAACTACCTCCCAATGGTTTTCGTGAAAAC
-CATCCTGCTCGTCGTGATCTGGGGAATGTTCCACGGTCTTGTGCTGCTCC
-CGTGCATTCTTGCACAGTTTCCCCTGTCTGTGTTCAACAAGACGTTCGCC
-GACTTGTTGTTCGGCAGAACATCCTCTTCGTCTTGCTCTTCGGAGTCCGA
-TTCGGAAACCGACACCGGTGATGCTCAGGAGATGGTTCCGCTCGCTGGAA
-CCGAGAAGGCTTAAGATCTGAAATTAGTTGTTGTTTGTTATTATGTACAG
-TTGGGATACAAAGTGTATTATGTAGTCTGTAGTGTCGCAGTGCTACAAAC
-TACAAATTCAAAGCTACAAACTATAAACTCATTGAGATCTGGCAGAGCTT
-TATAGTTTGTAGTTTTATGTAGCAGCTACAAACTACAAATTTCGATTGTT
-GTAGTTTGTAGTATGGCGCACAAACTACAATGTACATTTTGCAAGTTTTC
-TAGATTTTTTTCTCACTCACACACACACACACACACCGTTTTGCTACGTG
-GCTGCGAAAATGGAAAACTCGGCCACGTCGCAATTCACACATCGCCAGAA
-ACTTCTAGCTTTACCAGTAGCTTTTCATGATCTACTCTTCTTTTTTTTCC
-CCCCTCAATTTCTATTTGAAATTTCAGAATTCCCTCAATTAGTCTTCTGT
-CACCGTGTCCTCCTCTTTTCCGCAAGCGGGTCCCCTTTTCCCCCCACAGA
-TCGGCTTCTCAGGGTTCCTATAGCACTTTTTTCTTCGATTCTTGTCACAC
-AAAAAATTGTACTTCCATCGCTCGACGTGTCCATTTTTTCTTGTATTTTT
-TAAATGCATTTTTTGATAAATTTGATTTTTTTTATCATCCAGAAAATGGT
-CAAAAATTCAGATTTTCTTGCTGGGATTTTGCTGGAATTTTTTCAAGCAT
-CAGACATGCAAAAACTTATGCAAAACTACACAACACTATCGATGGGGACT
-GTTCGACTCTTCACCCCAGTCAAACTTTTTTTCACTATTTTTTTTAACTT
-CTGTTTTTTTGGTACTTTTCTGGCCGTTTTTATGGAATTTTTTAACCCGA
-CATTGGAGTTTACCTTTTTTTGTTCAGGATTTTAGGAATTTCTGCGACCT
-TCTCACTCATGTCCTCCAGCCCCGCCTAAGCCTATGCCTTAACTCAAGCC
-TAAGCCTAAGCCTAAGCCTAACCTAAATCGCGTCAGAGATAACGTTCGCC
-ACTGACGCCAAGCCTCAACCTAAGCCTAAGCCTAAGCCTAACACTAAGCC
-TAAGTATAAGCCTAAATCTAGGCCTCAGCCTAATACTAAGCCTAAGCCTA
-AGCCTAAACCCAAGCCATAAGAAGACACTCTAAAAATGTTCAGATTATTA
-AAAAATTACATTCAAAGTTTTCTTCAAAATTTTGCTTTCGACTTTCCAAG
-TAATCAATACCATGTAGAATTCCAAAATCTTCATACAAATCCCTCCCCTC
-TTCACATCTTTCCCGACAGCTTGTACTATTTCTCCTCCACCCACTAGGCC
-AGGTCAACGCTGCGTCTCTCGTGTTTCATATGCTATCTCCCTTTTGTGGA
-ATCCGTTCATCGTTTCGGATCGCTTACTTCTTCCGCGCGCGTCGCATTTC
-ACTTTGAAATAAACTTCAGTTTTCCTTTCCAAAATTTAATTGGTGGAAGC
-GTTTGAACATGCGAAATTTGTTAATTATCGTGTGTATTCATTTAATATTA
-CTACTTGTACATTTTACCGATGCATGTAAGTTTTGGATGTATCAAAAAAT
-TAAATAAATTTCTTAAAGGTGGAGTAGCGCTAGTGGGGAAATTGCTTTAA
-AACATGCCTATAGTACCACAATGACCGAATATCATGATAAAAAAATTCAA
-AAAATTTTTTAAAATTTTATATGATTTTTTGAAAATTGGAAAAATCTCAG
-TTTTTGCCTAATTCCAATTTGAATTACCGCTAATTGGATTTGTTCGATGG
-AGCGCGCTTGCACGTTTTTAAATTTATTTATTTTATTTTTTGTTATTTTC
-CACCGATTTTTAATGTTTTCGGTGTATTTTTGCTCTAATTTTAGAGAAAA
-AGTCAAGATGAATGCAGATTTTCGATTAAAAAGCACGCTCACAGGCGTAA
-AAATGACAAAGTAACGATTTTAAACGGTTTCGAACCTGAATTAATTAATT
-TCACTGATTTACGACTGTAAGCGTGCTTTTTAATCGAAAATTTGCATTCA
-TCTTGACTTTTTCTCTAAAATTCGAGCAAAAATACACCGAAAACATTAAA
-AATTGGTGGAAAATAACAAAAAATAAAATAAATAAATTTAAAAACGTGCA
-AGCGCGCTCCATCGAACAAATCCAATTAGCGGTAATTCAAATTGGAATTA
-GGCAAAAACTGAGATTTTTCCATTTTTCAAAAAATCATATAAAATTTAGA
-ATTTTTTAAAGAATTTTTTTATCATGATATTCGGTCATTGTGGTACTATA
-GGCATGTTTTAAAGCAATTTCCCCACTGGCGCTACTCCTCCTTTAAAGTT
-TGAAGTTTTAGTAAAAAAAGAGTGTCGGTTTTTTAGTTAATAATATTAAT
-TTCCAGTCGCCGGAACAGTTCGACCATTTTTCACCACTCTTCCAGTACCT
-GGAAGAAATGTTCCTATTATGAGATTATTCGAGAACTATGCTGCATCGTG
-CCGACCAAAAAGTAAAAAGGACTTCAATGTTGATCAGCTGGCAAATGTAG
-GTTTTTTCCCGCAAAAAGTCGTATTTCGTGCAAAACCGGCAAAAGCAAAA
-ATTTTGAATACCGGCAATTGTCGGAGTTGCCGATTGCCGGAAATCAAAAT
-TGCGGGAAATAAAATTTTGATACTTTTTTGTAGATTTAGGAGCCTAAAAA
-TGCATTTTAATGAACAATTTTTAATTTTCAAGCTCAAAATGATTTAATCC
-TTTAAGGATTGACCGTTTTCTTTAAAAAAGACTAACCGAATACTATAAAA
-AAAGGTGAAATTTTTTCAATTTCCAAAATATAATTAATTTTGGCAACTGC
-CGATTGCCGGAAATTGCCGATTGCCGGAACTTCACAATACCGGCAATTGC
-CGAAATTGCCGATTGCCGGAAATTTCCAAAACCGGTAATTGCCGGAATTG
-CCGATCGCCGGAAATTCCCGATTGCCGCGCACCCTTGTATTAAAGGATAC
-GGCAAACGATTTTTTCCGGCAAGCGGCAATATCGGCAATTGCCGAAATAA
-AATATTTTCGGCAAACGGCAAACGGCAGTCAGCAACATGCCACTTCTCCA
-ATTTTCGGCAATTTCGGCAAACGGTCAATTTGCCAGAAATCATCGGAAAA
-TTGTGATCTTGCACATTTTTTCTGGAAATTTCAGAATTTCAATTTTAAAC
-AACAACATTGTACACATCCTATGAATGACACATATCTTAAAAAGCCAGTA
-AATTCTATAAAAAATATCTAGAGAAACTGGCAAAATAATTAAAAAAGGCA
-CGGATTCATGTGATTTTGATTATTGAAAATATCTTTGAAAACTTTCGGAA
-AATTGATATCCGGCAAATCGGCAAATCGGCAACTTGCCGATTTCCCGAAT
-TTGCCGAGCAATGAACTACACTGTTCCAAATCGAATTCGTAACCGATATT
-ATACTTAGGAATGATATTTGTAACTCGTATAAATATTAAATAATATATAT
-ATATTCCAGCTTCTCCAATCTCTCCAAATGGATGAAGTAGCCACAAAAGC
-CTACAACTCCCTATTCTTCTCAATGGCTGATATGCAAATCGAAAAGTTCA
-TGGGTAAATGGTACACAGTTGTTGATTCGAAAGAAGTTCATAAAGAGGAT
-TGTTCAATTTTCTATTGTAAGTTTATTTTCATTCTGAAAATGAGATGCAA
-ATTTTCAGTCGATATGGTACTTCAAACTCCATACACCGCAACATTCACCT
-CAAAGCAGTACGGAGTGATTAATAATGATGTCGTCACCAATGAGGGGTAC
-GGTAGTATGGTTGGTCCAGAGCCCGGAGCCGTTCTTATTACAACTGGTAG
-TGAAAGGGATCAGTGTCCATGTAAGTATTTTAAATAACTTTGGTCCGGTG
-ATATTAAGATACAAGTTTAAATACTTCCCGTTTCAAAAACTTCGAATTTC
-CCGCCAAAACTTTTCTCTGAAAATTTTAATTTCTTTCCAAATTTTTTTCT
-TTGAAAATTTGAACTTCCCGCCAAAATTTTGTAGTCAAAAAATTTGAATT
-TCTCTCCAAGAATGTTTTCTCAGAAAATTTGAATTTCCCGCCAAATTGTT
-AATGTCAGAAATTTTGAATTTCTCGCCAAAATTTATTTTCTGAAAATTTG
-GATTTCCCGCCAAAATTTTTTTCTCAATAAATTTAAATTTCCCGCCAAAA
-TTTTTCTCTGAAAATTTTAATTTCTTTCCAAATTTTTTTCTTTGAAAATT
-TGAATTTCCCGCTAAAATTTTATTGTCAAAAAATTTGAATTTCTCTCCAA
-GACTGTTTTCTCAGAAAATTTGAATTTCCCGCCAAATTGTTAATGTCAGA
-AAATTTTAATTTCTCGCCAAAATTTATTTTCTGAAAATTTGGATTTCCCG
-CCAAAATTTTTTTCTCAATAAATTTAAATTTCCCGCCAAAATTTTGTTAT
-CAAAAAATTTGGATTTCTCGCCAAAATTTTATTGTCAGAAAACTTGAATT
-TCTCGCCAAAGTTTTTTCTCAAAAAATTTGAATTTCCTGTCAAAACTTTG
-TAATCAAAAAATTTGAATTTCCCGCCAATTTTTTTTCTCCGAAAATTTAA
-ATTTCCCGCCAAAACTTTGTTATCAAAAATTTGAATTTCTCGCCGAAATT
-TTATTGTCAGAAAATTTGAATTTCCCGAAATCTCTATGAATAAAACATTT
-GCAGTTTTCCCTGTACGAATCGGTGGCTTGAGTGACGAAGGAGAATATCA
-ATACATGATCTTAAGTACACCACTGAAGTATCCAACGATGGTCTTGACAA
-GGTAAGTTTGCCTTAAAATTTGTTTTCTAATTATTCCAATCTAATATTCA
-TGTGATGTTGAAAAATGCAAACATGTATTTTAATACATTTTCCCCCTATT
-GATGCGTACCGAAAAATGTAGAAAAATGGAATCATTTTTTTGCATTTTTC
-GACATTTTCGACATTTTTGACATTTTCCGACATTTTTCGACGTTATTCGA
-CATTTTCACGCATTTTTCAGAGTTTGCCGAACTAGGCCATTTTGGCTCGG
-CCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTTGA
-TTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGACTTTC
-CCAGGCAATTGTCAATGGAGCGCGAAAAATTCAATGAGGAAGGACAGAAC
-CCCGTGTCCACAGGAAGAATTTTCTCTGCGTCTCTTGTCTTTAGCATTTA
-AAGTGGGGCGACGCCGATGTAGAAAAATGCTGAAAAATTTCGAAAAATGT
-CGAAAAATGCACAAAATGATGGCATTTTTCTACATTTTTCTGCATTTTTC
-GGCACGCAAAAAACATCACATGAATAACCCCATAAAAACTCCAATTTTTC
-CAGAGACCTAACCCTATTCGAAACGAAATGGAAGCGAGAAGTGTATGATT
-TTGTTGAGAAGAATGGTTTCATGAGTCCAATGGCAGCATTGAACACTCGT
-CTCCATTTCACAGATGTCGATGTTTGCAGAAAAGTGAATAAGTTATATGA
-GAATGGAAATGTTTGAGTTGAAGATTATCTTTTTTCTGATGATACGGCAG
-AGTTTTTGACGGGTTGTGCAGTGTTTATTTTTAACCTTCATGTGTATTTA
-AAAATAAAGATTAATTTAATTGAATCTGTGTTTAATATGAACTTTTAAAA
-CACAAAATTTCAGATTTTGGTTTAAAAACTGTAGACACTTGATACTTTGT
-TGAGTGTACCTAATTTGAATTTCGCGAAAAAATGACTGTCATATGATTCT
-TGACCGTGTACACCTCTCGGGCAATACATTAATATTTTAATATTATGGAT
-TATAAGCATTTTCAGTAGACTTTCCATATTTTCTCATGATTATTACTCAT
-TTTTATGACGAAAAGCATTGTTTGGAACTCAAAATTATCAACTTTAAATG
-TTAAAAAATATTCAGGAAAACATAATATTTGCCTATTAAAAAATTTCCCA
-TTAATTTTCCACAAAAAAGTTTCTTTTTTCTTTTTTTAATTTTTTCTCAG
-AAAAATCAAATCTCCCAACAAAGTTTTTCTCAGAAATTTTGAATCCACCG
-CCAAAAATTTTTCTCAAAAAATTTGAATTTCCCACCAAAAAAATTTTTCT
-CACAACTTGAAAATTTGAATTTCCCACCAAAAATGTTGTCTCAAAAATAG
-TAAGTTTCCCGCCAAAACTTTTTTTAAAAGAAAATTTGAATTTACCGCCA
-AAAATTACTTACCAGAAAATTTCAATTTCCCGCCAAAAATGTTTTCTCAG
-AAATTTTTAATTTTTGGTCAAAATTAAAATACTACTACGGTACCTTAATC
-CTACACCTCCACCCAAAAAATCATTTTTCAAAAACTACTACAGTACTACT
-CCTACAGTACTCCTACCGTACTCCTAAAGTACTCCTACCGTACTCCTACA
-GTACTCCGACCGTACTCCTACAGTATCACTACAGTACTCAAACCATATCC
-ACCACTAACACCAATCCAATATCCCTTCAAACGACAATAACTTTTTTATT
-CAAAAATACAGTAATCTTACTGTAGACAATCTTTTAAATTATAGTCTTCA
-TCCAAAACTATAACGGACTCCATCCCATAAAAAGTAAACGACAAGTCATA
-AAAATTGGAATTCGCGTAGTTTGCTCTTCCGTGAAGGCAAACACACGTGC
-TCAGCTATATTGATAAGAGATGAAAAACGAGAGGAATCAGTCGAGGTGTC
-TGATCTACTTCCAGGATGGTGACCGCTCTTCTACTCCTATTGGCTCTTGC
-AGCCACCTCTTTGGCGGCTCTTCCAGATTTGGGATATCCCGGATGGCAGT
-GCGATGCATCGCTTTATCAGAAGTAGGTGGCTTACTTTAATTACTAAAGT
-TTGAAATTTTCCTCGCTTTCAGGAGCAAAAATACCCCGACTTCTGCCCAC
-TCCGTCCGATTCACCGACATAAAAGTTTTGGGAGCTCTCGGAGACTCCTT
-GACCGCCGCCAATGGAGCCGGAGCACCAAAGGGAGACCCTCTGGCTGTGA
-TCCTTCAGTACAGAGGACTAGCCTTCCAGTGTGGAGGTGACCACTCTCTC
-GACGAGCATGTCACTGTTGCAAGTAAGCCATTTTTCTGGGGAATTGAGAA
-AACTGAGTTGTTGTAGATGTGCTGAAAAAGTTCAGCCCTAACCTAATGGG
-ATACTCCACTGGAATCGGAAGTGCCAACGTTTGGGAGGTCTCAAAACTGA
-ACCAAGCAGTTCCAGGAGCTGAAGCAATCGATATCATCACTCAGGCCAGA
-GCTCTGGTGCAAATTATCCAAAGCCACAAGGAGGTAGCCAAGTCCAAACT
-AAACATCAATTCCGATGCATTTCCAGATTGATTACAAAACTGATTGGAAG
-CTTATCAACGTATTCATTGGAGCAAACGACATGTGCGCCTATTGCAACGA
-CCGAGAAAATGTAAGATAGTCAAAGATCATTCCACACCCGTTTTATTGCA
-TTTTTATAGGGCCCACACTCAAAAGCAATCTGGAAGCAAAATGTGATCAC
-TGCCATTCAAATTTTAAAGGATAACTTACCAAGGTAGGTAAACTATAGGG
-ACATGACATTCTAAAGTAAATAACTATAATATTATGAAATTGTCACATAC
-CTATACCTACCTATAAATACCTACATGGTCCAGAGCTGTGTGGCAAATTT
-TGAAACCAGCAAATTCGGCAAATTTTCCGGGGTCGTCATACTTGGTAAAT
-CGCAACATTTTTTGGAGCTCAAAAAGTGCCAAAATTAACAGAAAATCTAA
-GTTGTTAAACATTTGTGGCAAATTCCAAATTTGTCCAAATTTTTGAAATT
-TGCCTTGCTCGGGCAAATTCGGCAAATTTGCCGTGGTTGTCGGACTCGGT
-AAAGCGCATCATTTTTTGGTGCTCAAAAAGTACCGAGTTGATGGAAAAAC
-TAAGTTGTTAAACATTTGTGGCAAATTACAAATTATGTCCAAATTTTTGA
-AATTTGCCTTGCTCGGAAACCGGCAAATTCGGGAAATTTGGCACACCCTT
-GATCCCATAGCAGTGGCGCAAAAAAATCTTTAAAATTGTGGCCGTTTCCG
-TGCCAATTATAAATTAAAGTTAAACATATTATCGAAAAAATACGATCGCA
-AATTTTTCTCGTAACTTATTTTTGATCTACCTTGTTGACTAGGCTCCTCC
-CCTTCCTTCGACAAGACAGCCACAACAAAATAACAACGGCAACAAGATTA
-TGGGCAAACACGTGGTGCCAGGCTGTCCCATTACAGTTTGATCTACAATA
-AATGCGGGAATTTTTCGCCCAAAAAAAAAGTGACGTCGGCACGTTCTTAA
-CCATACAAAATCAGTTGAGAACTCTGCGTCTCTTCTCCCGCATTTTTTGT
-AGATCAACGTAATTCAAGCCAAAATGAGACACTCTGACACCACGTGGGCA
-GAGTCAACTTCCAAAGGTAGATCAAAAATTAATTATGAAAAAAATTTGCG
-ATCGTATTTTTCGATAATAAGAGCCAACATTTTTCGGCTTTTTATGGAAA
-TTTTTTTTTCAAAAAGAGGAGTATGGTCCATAACTATGCCATCAATACCA
-AGTCCTTCCAGAACCATCGTATCCATGACCGGAATGTTCGACATGGCCAT
-GCTTCGCCAAATCGACCACGACAAGTATTTCTGCGACGGCCTCCATGTGT
-TCGAGTGCCCATGCGAGAAGAACAAGGACTTCCCGAATACCGACATCTCG
-GCTGCCTGCCATCTTTACATGGATGCTCAGCAGGAGATTCAAGACTCGGG
-AATCTTCGACTCAACAGATGACTTTACATTTGTCGTTCAACCATTCTTCA
-ATGGAATCACAGTTCCACCACTCAAGCCCGACGGAGAAGTCAATCTGGAT
-TGGTTTGCACCGGATTGCTTCCATTTCTCAAAACTAGGCCACGCCAATGT
-TGCCAAGCACTTGTGGAACAATATCGTTCAACCAGTCGGATCCAAGAACC
-ATCAAGTCAATCTGTCAGATCCTACCATTCCACTAAACTGCCCAGACACC
-AAGTGCCCATTCTTCAGAACAACTAAGAACAGTGTTGACTGCTCGAAATA
-TATGACTGCCTAGACTGTAGGAAATTGTGTTTGTGTGTGTAATTTGACGT
-ACTTATCGGGTCTGCAATAAAATGTTTTATCGTGTAATCTTTAATTTTTA
-ACGTGTGAGACATAAAAGAAAGAGCACCCTCAATAAAAATATCCACGTGG
-AGTACACAATATAGCTATCAATAGAGCGAGTAAATATTTTTGCAATAATT
-ATTTATTAGAAGAATGGAGATCAAGGTAAAGGAAGAGATCTTGATTTTGA
-AAAAAAGATACTGGAAATACTAATTGTTCACGGGATTTCATAGAAGGGGA
-TATATCACGACTTTTTCTTTGAAAAATAAAAACAACATAAAATTATTGCG
-GCTTCACAATCTGATCATCCGGTATTTCTCCAGATCTTTCCTTTTCCGAT
-TCGATCTTCTTCCACTTGGTACGCCGGTTTTGGAACCAGATTTTCACCTG
-GAATTTGAGAAATTTCAGCTATGCGTTGAGTGCCGCGTTACGTGCTGCGT
-TGCGTGCTGCGTTGCGTGCCGCGTTGCGTGCCGCGTTGCGTGCTGCGTTG
-CGGGCTGCGTTGCGTGCCGCGTTGCGTGCCGCGCTGCGTGCCTACCTGCG
-TCTCCGTGACATCCAATCGTTTTGCAAGCTCACTTCTGTCACTACTTGAC
-AAATACTTTTTCGCCTCAAACTGCTTCTCCAGTTCGAATACTTGTTTCCC
-GGAAAATGTCGTCCGCGCCTTCTTTCTCTTTGTTTTTTGACATTTTTCTA
-TAGGAGACTCTTTGGCTTGGTCGAGGCTGGATTCTGAAAAAATATTCTTA
-ACGGCTGATTATTTTTCTACGTGTAGCATTTTTCCGAAATTCATTGAACA
-AAATTAGTAAATTTCCAAAAAATTTTTTTTCCAAAATTTCGAAAACATTT
-TAATTTTTTTCAGATTTTCTAATATTTTAAAACAAAAATTGAGAGTAAAG
-GAAATAAAAATTGTGTCTTGTAATTTTTGTAATTTTTACTCAAAAAAAGG
-CCAGTGAAATACTATTACAGAAAATACGAATCGATGCACCATGTCAAAAA
-GAATAGTATTTCACCTCAAATGCACCATGCCCAAAACTAGTCTATTTTTC
-AACTACAAAACTTCATACACCTAATCCAAAGAAATCAACTTACTGCATCT
-TCCAAATTCATCAATTTCTCCATTAACAGTTGGTAAGTCAAGTATATCCT
-TTATCAGGTGACTAGTTCTTCTCTGAGGCTTCACATCAGACGTCAACAGT
-GCAAAATAGGGTTGAAGTAGTTGGAAGAGCAAGTCAGTTTCCATTTTGCA
-CGAATGAAAAGAACTTCTGAGAGACTTCTCTATACAGTAGGTCTCGAGGT
-CCCCGCCTTCTCTTCAATCAAATAATTGAAATTCTGGACTCTCGGGGGAC
-TTTTGACGGTTGACGACGACGACAATTTGCCAAAGTGGTCGACAATGATT
-GCGCAATTGGTGTGGAAAGAAGAAGAAGATGGGTGAGTTCTGAGATGATG
-ACAAAAAGAGCATGAGCCAGCAAATTGAATAAGAGACCGGATTTCGAGAA
-GGAGGAGGGGGAGAGGAGGATTGGTGGTAAGGGATGATACTTGATGCAAT
-TGAGGGAATGAGTTTCTCATACTTGACTATTAAATACTTTTCTTGAACTT
-AAATATTTGAATTGAAATTTTGGAGTAGCGGAGGCACATGTGATATTATT
-GTGCTAATTTGTAATACTTGGACTTTCAAATATAACCTCAATTATTTGAA
-AAAAACCTTTTGAATAGACCAGCAAGGTTGATCTACAATTTTTCATGGAA
-ATCGAATTAATTTTGTAAGGATGTCTACTGAGTATAAGCTTATTGTTAGG
-CTTAGGCTTAGGTCTAGACTTAAGGCTACACTTAAATTTAGGCCTAGGCT
-TAGGCTTAGGCTTAGGCTTAGGCTGAGGCTTAGGCTGAGGCTTAGGCTTA
-TGCTCAGACTTAGGCTTAGGCTTACGCTTAGGCTTAGGCTTAGGCTTAGG
-TGTTGGCTTCAGAATAAGCTCAGGCGGGGGTGAGGGAAGGGTAGAAAAAA
-AAGAAAGAGAAATTTCCAGAAATTCACAAAATCCAGAAAAAAACATATCT
-TTCACAAGTTTATATTTTTATAGCCTAAAAAATTACTTTTAAAATGAGGA
-TATGCAACCCGCACGCAAAAAAACCTTTTTTTTTTTGAGCAATTTCACGG
-CTCTTTTTTTTTTAATTTAAAAATACAATAAAAAAACCAAAAAAATTTTC
-CGAGCCCAAATTGCTCCCAAATGCTCTAAATTTCTTTTGAAGTTTGATAT
-ATTCCTATTAGAACTTGAGGAAAATGTAAAACTAGAGAAACATAATACTA
-CGCATGTTAAATGTAAATTACTTACTTTTAAAAAGTCGTACGTTATTTTG
-GAAAGTTTGAGGTTTTTGCATTTTTTCCGTAATATCACTGAACACTTTTA
-TTTAAATATCATCAATTATCGGAAGTTTATAGGTTGCAGGAGAAAAAATA
-TATTCTAGCGGGAAAATGAAATGAGACGGGGGGACATTTTTAACCAAAAA
-AAAATCAGAAAACAGTTGGTAATAAAATTATTCCAAGAAAGTATAAATTC
-ATGACTTCCATCTTGGGAACATTCTTAAAAAATGTCAACGAATAAATCTT
-TGTGGCAAACAAACTTTTTCCATAAATGTTTCAGACCTTATATAGCGGAC
-ATGAAAGTTGATTGCTTATTTGATATGTCTTGAGTTTATTTTTTTTTATT
-TCAAGCGAGGGGAGATTTATTTGCCTAGATATATATATAATTATTACTGG
-AACGAACTGGAAAAAAACTTGGGATCAAAAAAATCAAAAATTCAAATTCA
-AAAATTCAATTTTTCGAAACTTTTTCTACAGCTTTGTCGAGAAGCAACAG
-ACAAATACTTATAGCTAAAATTTTATTAATATTCTAGTTTTAGTCATGGT
-GAATCGAGAATTTGTCAATTTCCATGTGGTATCTTAAAAATAAACCGATA
-CACGTGGTGTCAGGCTGTCTCATTGCGGTTTGATCTACGAAAAATGCGGG
-AATATTTTTCCAGAAAAATTGTGACGTCAGCACGCAAAAATTAATAAGGG
-TCTAACCAAAAAAACTTGAATCTTGGAAATATTTTTAATTCACCCTAAAT
-TTTCCCCTGATTCCGAATATCTATGTGAAAAAATTCAAAAAAAATTTCCT
-GAATTTATATTTAAGCTTGAAATCTTTCATAAAAATTTTTTTTTTTTAAA
-TTTCATTTGTACTCGCATCACTTTTTTCAAACTCGCGCCCAAATAAATTA
-GCGCGCGCGTGCATCGTTTGACTTTTTTTCGTTTAGTTTTTTTTATTTTA
-GCCGAATTCAATTTTTTTAAAACCAGTTTCATTCATTTTTGTCGGTTTTT
-TTTTTCTGAAAAAAATGTAAAAAAACGAAAAAAAATCAAACAATGCAAGC
-GCGCTCCAATGCTAATTTATTTGAGCGCGTATTTAAAAAAGAGACCGGGA
-TACAAATGAAATTCGGCGATTTCAAGCTTAAATATAAAATCTGGCAAACT
-TGTTTTGAATTTTGAATTTTTTCACATAGATACTCGGAATCAGGGGAAAA
-TTAGGATTCATTCAAAAATATTTCCCAGATTTCGGTACCCCACCTTAAAA
-ATTTTTTTTTGGGAAAACAAGGAAAATTTCTAGCTTGAACTTATTTTATC
-AATACCTAAAATGCTGAACATTAAAACACACACACCCGTATGAGTATTAT
-ATACTTCCAAGGAAACATTTGAAAAATAAAGAGTTCTCCGCTTTGATTAT
-ACACTTGTGATATTCTCACGCCTGGCACTTGGCACCAGCTCAAAGTGCTC
-ATTTTGGCTATAATTGTTTGAAGGTATATGAAAAAGTGGAAATTGGGAGG
-AAAAATGGCATGTTTTGGCTTTCTCTACCTGGCCTATGTGTTAGAAAACT
-CTTCTATGAAAATTCAGTTTAATTTTTTAATTTTTCTTAATTTTTAAAAT
-TCTAAAAATGGCTAAACTTTCAAAAATATAATTTTTAAAAAGCCAAATAC
-TATAAAATTTCTTTGTTAATTTCTTTATAACCAAAATTAACGATTTTCAA
-AAGTCAAATTTTTCAAAATTACAAAAAATTTAAAATTACTGTAAGATGCG
-CAAAAATTACAGAGTTTTCAAAATATAAAACACTCTTGTGGCCGAAAACT
-TCCAAAGTTCAGGAAATAAAAATTCCAAAAAAAAATCAAGAAAAAAATGT
-ATCTCGAAAAATTACCGCTATTAGAAAATCGCCTTCTCTAAAATTTCCCA
-AATTTTGAAATTATGGAAATTCCCAGATTTTTCAAAAGCGATCTAGTCGG
-AGTTGTCAGAAAAAAAGTTCAAGAAAACTTTCTCTAGAAACTCAAAAGTT
-GGCCTGATCAGAACTTGTTGGATTTTTTCAATTTCCCAAAAAATTTTCAA
-AGTTGCCGAAAATTACCGAAACTCCAGGGCTCACTTTTAGACCTTAAAAT
-GAAACTTTTGCCATTTGAAAGAGGCTCTTTGAAAAAGGTCTCTGCAAAAA
-ATTTAGCGGCAGACGAGCACTTTGAACTAGAAAAATGTCGCTTTGAAATT
-GCTATCATTGAAATTTTTCACTACTATAGAGGCCGGTAAAATTGCTCCAA
-ATCATAATTTAAAATATTTTTTCATGATTTTTTTTTATTTTTTCATGATT
-TTCGAGGTAGGCAAATATTCTGGGAGCTTTTTTGGATATATTTATTTTTT
-TGGAAAAAAAAATCTGAAAAATCCCACATTTCCAATAAAAAAATTCCAAA
-AAGCTTTCAGAATACTTGTCTACCTCGAAATATCCTAAAATTCATAACAA
-TTTCAAAAAAAATATAATTTGGAGCAAATTAACGGGCTATTTCAAAGTCT
-AAAAGTGAGCTATAATGCATACATTCCAGAAAATGGAATAAAAAATAAAC
-TGAAGTCAATTTAATCTAATCTCATGATACCTCCTCCTCCTTCCCCCAAC
-AAATAATGCTCAATAGCCCCCAATCAACTCGTTCCAATTTGAATAGTGTA
-TTATTTAACAAGCTTCATCATCTCTTCCTCCTATTTTTTTTTGTCATTTT
-TATCGTCCCCTCGGCCGTTTGTATTATCCTCTCTTCCTTCTTCTTCTTCT
-TCTTGAAAACGAATTGAATTTCTTCATCCAATTCACTCAAATCACATCCT
-CCACGGACACATTCAATTAATCCAAACGTCCTTTTCAATTGAACACAACA
-ACAATCACTATTTCATAAAAATTGTTTTAAATGTACATATATCAAAAATT
-GCGACGGCTGGAAAAATTAAATTTTTACACCAGAAGAAAATTTGTAACCA
-TAGTTATGGTAGCTATAACTCAAAAAAGTAGGAAAATTATGTGACATGTT
-CTCAGGACTGCAGTGATCGCAATAAAAATAAATTCTGCTGATCCAATACT
-CTTGAAATAATAAATCGTTTCTGATTGATTCCATCATTCTCAGACAAATG
-GAGCTTGGTTGAGTGCTCAATTGGTCAATGTCGCTGTCATGGCACCAGGG
-TTGTGCGGCATCCGGATTTTCTGGCAATCGGAAATTGCCTTTTGCCGAAC
-TCTAATTTTTTTTCGGCGATCGGCATTTGACGGTTGCCGAAAAACTCGTT
-TTTTCGTTTTTTCGCCATTTTTCGGCATTTTTCGGCGTGCTTAAACTCTT
-TGAGGTTTTTTTTTTATTTTTTCTTGTATTTTATAAATCTAAATAATTCA
-ATTCCAAAGTTTGATAAGGAGTGTCTTGGTTTAAATTTTCTAGCACAGAT
-CAATTTCATTTATTAACGATCAGACTGGTAGGATAGTCAACGACCCCAGA
-GGCAAGAATGATTCAAAATAATTGCACACATGGACAGCAATAGACAAAAT
-CTTTGAGAGTTTTATGGTGGGGTGGCGATGTGTCGACCAAAAGAGTATAT
-CCACTATATGGCTAATAATTCAAATATGTTGTATTTTGGAAAGTGTTAGA
-ACACAAGTGACTTGAGTGTTTTCGGATACAAGAGACACAGAGATGTCCCT
-TGATTGTTCACAGAAAGCGATTTTTAAGGGTTTGACTACAATATTTGCGG
-ATTTATGTTTCAACGAATAAATGTAAAAAACTCGAATATCATTTACTATA
-TATAAAGCGCTTATTCCGTTTTTCCATAGTTTGTAGTCTATGTAGTCTTT
-GTAGTTTGCGTAGTTTTAGCTTCTGGAGGGATAGTGAGTTGGGGTTAGTG
-TAGGGATATAGTCGGCGTACTGTAGTGGTACAATGGTGGTACGGTAGGAG
-TACTGTATGATTACGGTAGTCTCAGAAAAATTGGTTTTCAGCTCCAGAAG
-TCGGGGACCGCGCCGGAGGTGCGGTCCACGGCTGGTATATACATATGTAT
-ATGTATGTATATATGTATACATATATTCAATTAAATTTAATTTAAAAAAT
-AAAAAAAACATTTCTCACAAATGCCGAAAACACCGAAAAATGGCGAACAT
-TTTTAGGCATTCGCCGATATTTTGACCAACTATTTTTTTTTGGCGAACGG
-CATTCGCCGTTTGCCGCACAGTCCTGCATGGCACCCCGACCGGTTTCGTG
-ACAATAGTTTTGACCTGAACGCACTAGGAGTCAGGAAGTTATAGGGGTCA
-TGGGTGCTTTAATGACCCCCTGTAAAAAGCACATATATTGACAACAAAAT
-TTGCTCGCTGTTTTTTGTATTAATTTTTTGTCTCCCCTCGATGCGCATTT
-CTAGTAATGATGCACATATTTATTTTTTTTCATGTACATATCTAACAAAA
-TCATAAAACTGAAAATTGCGCTTTTGTTCAAGTTAGCAAGACAACCATTA
-TAAAGCTTTCCAAATAGCAAATTAGCAAAATAAAGTGAGAAGCTAGAAGA
-TAATGGGGAGTCCCTATAATCTTTCGGGCACACCTTCAGACTTTGTGACT
-ATAATAGCCCAAACCCACAGTTTACTGAAAACTAGGGCTTCATTTGCTAT
-ATGGTACCCCTAAACTCTTTCAGTAATCGAATCCCAAGAAACCTTCACAT
-CTGTAACCTGGACAAAAAACACACAATTTCAAAAATATAGAATTCTTTAT
-TCAAGAATCATCATCATCATTTTTTTCAATTTGTACAGACAAATGCCGAC
-CATATTTTTTGTCAGGGGAATGGCAACGGCGGGAACCCAAGAAAATCAAA
-CAAAAATATGGAGAGAAAAATGAGCCAGAGAGCCTGAGCAACCATGCATA
-AATAATGAGGAGTTGGTGAGATGAAGAAAAAACAGATAAGTTACGACGCG
-AGGAACTATTTGAAAAATAAACTGCTAAATACTATGTGCTTAATCCTCCC
-AGGTAAGCGAGTGACGGTTCTCGTATCTCAGCTGGCAGTTTCTCTTTCCG
-TACCAGTTGACGTAGGCGAACTCGGCGTCGGAGACGATGGCGTTGAAGCG
-TCCTCCGAACTTGGCCGAGGCGTCTCCCTCGATCTTTCTGGCGGCCTCGA
-GGTTGTCCTGGAAGGTATCAGTGATTGGATTTGATTTATAGTTCTTCTTT
-TTTTTCTTTAATTTCTTGCTTGTAATTCTAAAGCAACTAGAAAAAAAAGT
-TTCGGAACGCATCTATCATGCCAATTTACATAACCGGTATGGGTTTGCGC
-GCGCGGGGGGCTTGCAACATTTTCTTAAATGACATTAAGGTATGAGAGGG
-GGGGGGGGTGTTGTAAATAGGTATCCAGTTCTTGTCTGTCCCCGTTATCA
-AGTTTCTCTGGTGACGCAACGCAAGAAGGCAGAAAACAAACCTTCTCGTT
-CTTCAAAGCGGCCTCAACGATGGCGCGGAGCTCTGGATCGTCGCAGTTTC
-CCTCGTCTCCTTCCTCATCGGCGTACTCGACAGCTTCGTTGGTCTCCTGG
-AAATTTAGAAATTAGATTTTTCTCGAAATTTGGCCGAATATTAAAAAAGT
-AATACTAAGAATTTCCCCACGAAAGGCTGAAAAATTGAGGTTTCCTGGGA
-AAAGTGAAATCCCGGTCTCAAAATTTTTTTTGATTTTTGAGCTCCGTTGA
-ATACCGACAACAAAAATGGCTCTGGAATTTGAAAATTACGGGGAACTGAA
-ACGCAACTTCTACTGCTGCCAGTATGTCTCTCCCGCATTTTTCGGAGGCT
-CAATCGTAGATCAAAGTTTTCCGAATAAGTTACTATTAGGTTTTTATCGA
-GAATTGGTACTAGACTATGTTGACAAATACCAAATATCAAATATTTACCC
-AGATGCAAGTTATGGTGCTTTGAACTAGAATTCCTGGGAACTGATTGTAA
-GTGTCAAAACCTCAGCCAACCGACCTAAGCCTAAGCCTAAAAAGGTGTAT
-CGAACTTAAATTTCGACATGGCATGGCATTCAAATGGGTATACCGATGAT
-TTTGTTTCAGCAAAATTTTTAGGGTCGAATTTTTAAGGTAGAGCAAAATT
-GGGATAATTTTAAAGACTATTAATTGTCCAAAAATCCAACAAATCCAACT
-TCAAATGAGCTTAAACTTTAGATCACCTTCCCAAAAACCCACCTCAACAG
-TATCAACTTGCTCGGTGGCGGTCTCGGTGGCGGTGGATGGCTGCTCCTCA
-ACAATATCATCATAGGTGCTCTCCTCCTTGGCAGCGGCAACTGGAGCCTG
-AGTCTCCTCGACAACTGGAGCTGGAGTCTCTTCAACGACAACTGGCGCCT
-CGGTCTCCTCGATCACAACTGGAGCCTCGGTCTCAACGACGGCTGGGGCT
-TCGGTCTCTGCAACGACGACTGGTGCTTCAGTCTCAGCGACGATTTCTGG
-AACGATTTCCTCTTGGACAGTCTCGACTACGGTTGGCTCTGGTGCTTGCT
-GTGGTTCTGGTGCTTGTTCTGGTTCTGGTGCTTGCTGTGGCTCGACAACA
-GTCTCGACGACCTGCTCGACTGGTGTTGGGACTGGCCCCTGGGTGTATGT
-GGCGACTGGTGCGACTTGCTCGACAACTGAAGTGTGGGTGAGGGTGAATG
-TGTGGGTGGGAGTGGTGCGAATCTGACTAAAAACTGTAAAAACTAACCTT
-GAACAGCCTGGTGCTCTGGTGGAGCTTGGTAGTTTCCTCCCTGAGAGACT
-TGGGTCACCTGGATAGAGCTGACTGGTCCCGATTGGTATCCTCCTTGTTG
-AACTTGCTCGACTGGGGCAGATGGTCCGGCGTTGTAGCCTCCTTGTGGGG
-CGACTGGGGCTGGTTGGGAAGCTCCAGCGTATGAGGGTCCTCCTCCGATT
-GGTCCTTGGGATCTAGCGTATGAGGATGCTCCGACAGCTTGGGAAGCTCC
-AGCGTATGATGGTCCAGCTTGCGATCCAGCGTGCGAAGATGCTCCTCCTC
-CGATTGGTCCTGGACCAGCTTGGTAGGCACCTCCACCGACTTGTCCTCCG
-AATCCTTGTGGTCCCTGGGAGTACGAGGCTCCTCCGACTGGTCCAGGTCC
-TCCGAATGGAGCGGCATATCCGGCTCCTCCACCGATTGGTGCCGGTGGTG
-GTGGTGGTGGGGGTGGAAGGGCAGGCGCGGCGGCATAGCTTCCGCCTCCG
-CCTCCGGTTGCGTAACTGTAAATGAACACATTGGGAATAGTATGGAAGAG
-GTGGCTAAAGGGGGAAGCAGGTTTTAGTTTTGGCGGCCAGCAGCAGGAAA
-AAGGACATTTTGCATGAATGGGGTGGCAAGTAGAATGGACTTTGTCGCTC
-CTTAAGGAAGACATCAAAAGAACTTCAGAAAGAAAGAAATTATTTTTGGA
-ATCAGGAAAAAGCATTTGAATAGCAGTAGAAAAAATATAACAATATAGTC
-ACAAAAATACAAAAAAAAAGGCAAAATCTTACCTCGAGCTAGAGCATGGT
-GGAGCTCCTCCTCCGCACGATGGCTGGGATGGTGGGCAACATCCACCGGC
-GCTTCCGGCACCTCCGATACACGCTAACGCAGGCGACACGGCCAATAAGA
-CGGCTACCAAGACTCTCATCGTTTTTGAGAAGGCAGAAATCGCAATGGAA
-TGCTGAGTAACTGTCGTCGAATGGCAACGTAGGACGTGCCTTTTCTACCT
-GCCACCCCAAACTAACTCCGCCCATGGCCGTCTGGAGGGGGCACGCGCGC
-GCACGAAGCCTTCCGAAAGACGCCCGATCGCGTTTTATCGATGATGATGA
-TGATGATGATGAGATGAAGCCTCTCTCTCTCCGTCGGAGGGCACCTTGCG
-ACATTCACCTTGTGTGCGTGTGTGTGTTGCAGAATAGGGGGAAGAAGAAG
-CGATCGCGTACAAATGGGGTTCGTGTTCATTTCCGAATGATCCAATGATC
-AGCTGGAATATTCCTATTAATGTGACTCGTGCCACGTCATTGTTAATGAT
-CTACTATGTTTGAGTGATTGGATATGTGTTGTTTCCTTTTCTAGTTAGAT
-TCCTGAACAGTTCACCTTTACCTAATCCGTGATCGATGTTCCAATGCTTC
-TTCCTTTCACTTCCACTGCGGCACCTAATCAGGCGGAATAACATGCTTTC
-ACTCTGCCGGTAAAGTGTGAAAATCCTAAAGTTTTAGATTTCAAAGATTT
-CAAAAACGATCGTTGATCCTACCGCGCTTCCGCATCAACTGATATCAGGT
-TTTTTTTAATGATAAGATTGTGGAGGAATGAACTGGTGAACTTTTAGGCT
-GATTTAGAGCCACGTGGAAACTTCCAGCTTTTACCTAGGTGACTACAAAC
-TACGGAAGATCAAATTACATACATTTTGTAAAAACATACATCACTTTCAA
-AAATTTCGGTTTAGTTCAAAAAATCACATTTTTACTGTTTTGAGATTTTT
-TTTTTCCCAAAAATGTCGATGCAATTTTGATGTCGATGCACCACGGGCGA
-TTTAAAGGAAATTATCAGTTTTCTGAATATTTTTGTTTTGTATGTCTTGA
-TTATGGGTTTTGTAGGCTTCGATGGCAGGCAGGCGAGGTTTCGGGTCCTG
-GCGCCCGTCTGAAACCTGCCCGCTTCACGCCGGCCTTTTGCCTCTTTTTT
-GCATTTTTACGTGGTGCCAGGCTGTCCCATCGCAGTTTGATCTACAAAAA
-ATACGGGAATTTTTCGCCCAAAAATATGTGACGTCAGCACGTCTTTAACC
-ATACGAAATCAGTTGAGTCTCTTCTCCCGCATTTTTTAGTAGATCTGTGT
-AGATCAAGCCGAAATGAAACACGCTGACACCACGTGTGTTTCTCATTGGA
-AATTGGAGGCCTAGAAAATCAAAAGTTAGGCCATCAACAGATTTTTGTTT
-CAGCAAAAGGCGCGGATTGAGGCGAGGTCGCTTTAAAGTCAGGCAGGCAG
-GCGGTTAACGCCTACAGGAAAACTTTAGGTTTTAGGTTATCTGTATGTTT
-CCCTTTTGTGTGTTTTTTAGACGTCCAAAGAATCGTATCAAAATGAATAG
-GTATTTTCTCGTTTTATGCAGATAGGTAAAGGTCTGTAACCTGAAAATCC
-AGAGCCTTATAATCCACACCTACATAATCATCAATTAAAATATTCAGATA
-ACTGATAATTTCCTGAAAATAAGATATCTGTAAATTGAATCAACGCCAAT
-TTTAGACATGGTGCATCAAATGCAACATTGTATTGATATATAAACTTTGG
-CAGTCAATACATGTTTTCTTATGCATTGTTCTCAGTGCACCTTGATCAAT
-TGAGTAGACTTCATCTATTCTTGTCCACTTCCTAAACATGAAATCAATCA
-CGGCACCCCATCAAAAAGCACTAAAAAAGTACATTTAAAAGAGTACATTA
-TTATTGCCCGTTCAATCCTCGTAATGTATCTTTGCAAGTTCCTTCTTCCT
-CTGACATTTCCCGTTCCAATTCTCCGCCATACCTGATATGCTCGACTTTT
-TCGATCATAGACGCGAATTGCGCAACGCGCGAAAATATCTTGCGCAATGA
-ACAAGGAGAAGAAGAAGAAGAAGAAGTAGGAGAAGCCAAATAAAAGATAG
-GTGATAACCGAGATGTTAAGCCAAAGAGAAGGAGTGTAATAGCTGAACAA
-GGCCTATTTTTGTGTAACTCCCCCCTCTGACAGCTTCTTCACTTTCCCTC
-CAACCGTTTTTACTCTGTATGGTAATTGTTGATGGATCGCCATGGAAAAG
-CCCTAATGGTCATGAATAAGCTGTAAAGCAGCGGGGGTGAGCTTGAAGGA
-CGATCGGACAAATGAGATATGAAGCGTGAAAAACGGAAAGCATGCTTAGA
-GGGGGAGATATATGTAGATTTGGGGAAAAGCTACAAGGTCGATTTTTATC
-CGGTGTCAGGATTATAGAGGTGTTTTGAAGTAGAAGCAAGGCACTGAAAT
-TCACCACTTCCTCTATTAGAATTGCACATTTTTTAAAACTATGTACCTGT
-TTTCTTAAGAATTGCTTGAAAAGTTGAATTTGAACTAGTAGTTCTTGCAA
-AAAGGCCAATTGAACTATCTGGTTTAGTTGCGTCCTTATTAATATTGCAC
-TTTTTAATTCCGGCAAAACGCCGGTTTACCGATTTGCCGGGGATTTTCAT
-TTTTGGCAAATCGCCGATTTGCCGTTTGCCGAAAAAATTTTTAACAGACG
-GAAAAACTTAAAACTGTGTCATTTTGAATTTATTACCGTTTTCTTTAGAT
-ATTTTCATAGAATTTGCTAACTTTTGAAAATAGATGAAGGAACATTTATA
-TTATTTGAAATTGAAATTCTGAAACTTCCAAAAAAATAAGTTGCAAAACC
-ACAATTTGCCGAAATGCCGTTTTCCCGGCAAATTCGGCAAATCGGCAATT
-CGCCGATTTGCCGAAAATTTCAATTCCGGCAATTTGCCGACAAAGCAATG
-TTTCATAATACATAAAATGTTTCTAATTTTTAAGAATGATTTTTTTAATT
-TTGACAAAGTTTTTTTATAAAAGAGCCGAATTATTTTAAATTCCCGCGCA
-AATAAGTGACGCCATTTTTTACATTATTTGTATTTTCTGGCTAAATTAAT
-TGGTTTATGTATGTTTTTTCTTTAGTTTATAACTTGAGTAAAATTCACAG
-TAAAAATTAATTTTGAAAAATCGATTTTTAGTTTAATTTCAATTTCAGAG
-TTTCGGCAAATGTATTCTCAATTAACAAGTTTTCCAAACGGAAAAAAATC
-TGAAAATTGACAAACCACGGTGTAGATCAAGCCGAAATGAGACACCCTGA
-CACCACGTGTGTTTCCCCTTGGAGGCCTAGAAAATCAAAAGTTGGGCCAC
-CATCAGGTTTTTGTTCGACTCAATTGGTAAACTTTGCAGACTAGGCTGAA
-ACGTGGTATTTGCAAAAATACAATTTTACACATTTATTTTCCACAAACCG
-AATAAAATCCTTATCTCAACAGTGTTATATAATTTTTTTTTTCAGATCAC
-TATCACGACATTTTAAAATATATTACAGCACTCTCTTCTTTAGGTTTTGA
-ACGTTGATGCTTCGAGGATAAACATGAAAACCAGATCAGCTTTTCCGTGA
-CCTCACATACTCATTTTCTCAAATTCTCAAAAATGTTCTGCCTTCTCCAA
-CGGTCTCTAAAAAAGCTTGGAAAACCCACAAAAGGTGTCTTGGGACACTT
-CTGTCTCTCTCTTTATCGATGACCGGATCGCCCGGATAAACGGGTTTTGC
-GGACTGACACCAGCAGGTGGAAATGGGCACACTTGTAAAATAAAACGAAA
-AATAATAATAAAAATAACACGGAATGCGGAGAGAAGTGGCAAGATCGGAA
-GAATGGTGGGGGGGGGGGGGGGGGGGATTACATAAAGATGGCGGCATAAA
-GTGCGTTTCATTAGGGGGATATTGGGGTTTTTATAGGGGGAAACTTTGAT
-TTTTTTGAAAAAAAAATTAAGAAAGAAGCGACAACAACCAACAACAAGGT
-CATTTTTAAAAGGAAAATTTGGCATGAAATTTACATTTTGGGATGAATTA
-TGAGGATATACTCATATAACCTAATTTTGTCACAAAAAAAACGTCGAAAT
-TTTTAAAAATGACTACATTCTGCAATTTTGAAAAATTTGGTGGTCCTACC
-ACGAAAAATCCATGGTTTTTTGGTATTTTGACGAAAAACTGATTTTTTGT
-GTTTTTTTTCTGGTATTTTGAAGCCGCTGTACTTCAAACCCTTTTCATAT
-TCTAAAAATATCTTTTTGCAAAATTCGGTTTTTTCTAAAGTTCAAAATAA
-ACCACTATTTTCAATTTTTAACGGAAAATCTGCAAATAAAATTTCGGAAA
-ATTCCGGCAATTTGCCGATTTGCCATAAATTTCAAGTTCCGGCAACTTGC
-CGATTTGCCGATTTGCCGTAAATTTCAAATTCCGGCAAATTTGCGAATTG
-CCGTCCTACCATGAAAAATCCTTTTTTTTTCTGGTATTTTGAGACCGCCG
-TACTTCAAACAATTTTCATATTTTACAAATATCTTTGAGCGAGCGGTTTT
-TTTTGAATTTCAAAATAAACCAAAAGTCTACTTTTTTTGGTTTGTTTTTG
-TAATTTTTTTTTTAGAAATTTCAATTTTTATCGGCAAATTGGCAATTTGC
-CGGTTTGCCGGAAAATTTCAAATCTGGCGATTTGCTGCTTTGCCGATTTG
-CAGGAAATACCTATCCCTGATGTAAATTACCAGAATTAGAAGTTTGGTAC
-ACGATTGGCACACAATTTTTTGGTACAAAACACGCTAAAAATTAAATGTT
-TTTGAAAAAAAAAATTCTTTTGAAATTGTTTTAGTGTGAATTTCCATGTA
-TTCAATTTTTATCATTTTTAGCCTGTTGCTCCAAACTAGGTTTTCTCCCA
-CGTGGCATCTCTCATTACACATAAAAATACCTGCTAACTCAAAACATTAA
-TCAGAGATCCATATCCATGTCTTCCTCACTTTCCAACTTTTTCCCTCTTA
-GCTTATCTAGATATATGTAGGTATATCTATATCTACAAACAACTTTCTCT
-TTTCAAACATCCAGTTTATCTTCTGACCTTTGCAACATTTTTCCTTTATT
-CCAAACTTCCGCCAGATTGCATCTTATTCAATTATTACATTCAAAGAGTG
-TCTAAAGTTTTGCTTAGAAGAAACAAAAGGTAAAATGTCAGATATGTTTA
-GAGAAGGTTGTAAAATTTGGCAATTTATTGTAAAAATTCGCAATTTTGAA
-ACTCCTTTAAAATGGTTAATTTTGTAGTTAGAGGACTCAAAATTAATGCC
-CGAGAACTAAAAAGTTGTCATTTTTCATTTATCAATGATTTTACTTAATT
-TCAAAAAAAAAATTTTGCCCAAAAAAGGACAGTCATTAGAAAAAAAAACG
-GAAAAATGATATGGAGTGATTCTTTTTTATTTTATAAAATTAATCAGCAT
-AGTCAAATGTACCAGAAAAAAGCAAATAAAATGTACTAGATTGACCGGAA
-GATTATTTGAAAAATTGCAGAAAATGCACCAAAAGCTGCTTTTTTCAAAA
-ATTCAAAAGTACGGTAAAATCATACGGAGCTATTCTTTTTTATTTCATAA
-AACTCTTCAGCATAGTCAATAATACCAGAATATGTCAATCAAAGTATAAT
-AGCTTGTACGGAAGTATCTTTTTAAAAATTGATAAAAATATATAAAAGCT
-GTTTTTTTCAAAAATTCAAAAGTATGGGAAAATCATAAGGAGTCATTCTT
-TTTTATTTCATAAAACTCTTCAGCATAGTCAAAAATACCAAAATATGTCA
-ATCAAAGTATAATAGCTTGTACGGAAGTATTTTTTTAAAAATTGATAAAA
-ATATATAAAAGCTGTTTTTTTCAAAAATTCAAAAGTATGGGAAAATCATA
-TGGAGTCATTCTTTTTTATTTCATAAAACTCTTCAGCATAGTCAAAAATA
-CCAGAATATATCAATCAAAGTATAATAGCTTGTACGGAAGTATTTTTTTA
-AAAATTGATAAAAATATATAAAAGCTGATTTTTTCAAAAATTCAAAAGTA
-CGGGAAAATCATAAGGAGTCATTCTTTTTTATTTCATAAAACTCTTCAGC
-ATAGTCAAAAATACCAGAATATGTCAATCAAAGTATTATAGCTTGTACGG
-AAGTATTTTTTTAAAAATTGATAAAAACAAATAAAAGCTGATTTTTTCAA
-AAATTCAAAAATTCAAAAGTATAGGAAAATCATATGGAGTCATTCTTTTT
-CATTTTATAAAATTCTTTAGCATAGTCAAAAATACCAGAATATGCCAATC
-AAAAGATAATAGCTTGTACGGAAGTATTTTTTTTTTAATTGATAAAATAT
-ATAAAAGCTGATTTTTTCAAAAATTCAAAAGTACGGAAAACTATATGGAG
-CGATTCTTTTTTCTGTTATAAAACTGTTCATCATTGCCACGTATACCTGA
-AACTACCAGAAAAAGTATGCTAGCATGTACGGAAGATTATTTGAAAAATT
-GCAGAAAATGCACCAAAAGCTACTTTTTTCAAAAATTCAAAAGTATGGAA
-AAATCATATGGAGCGATTCTTTTTTCTTTTATAAAACTGTTCAGCATAGT
-AAAATGTACCAGAAAATACCAAAAAAAAGTATGCTAGATGTTCGAAAAAT
-TGTTTTTATAATTTTTGAGAGGAGTTTCAAAATTGTGAATATTTACAAAA
-AATGGACATTCTTGCCACTTTTTACTAATTTTTGATGGGCTAAACCTAGA
-TTTTCTAAATTTTACATTTATGAATTACCCGTTTTCGACGAATTCAGGCA
-AATTTTTATTTTTTCCTATTTTTTTCAGCCATTTAATCAGCCATAATAAT
-GAATGTCCTTTTTTTTTGGGCAAAAAAAAATTTTTTAAGGCTCGAAGACC
-AATTTTAAGTTCTCTAGCTACAAAATGAACCATTTTAGAGGAGTTTCAAA
-ATTGTGAATTTTTACAAAAATTGCCCAAATTTGCCACTTTGTAATGGTTT
-TTGGTGGGTTAAACCTAGATTTTCTGTATTCTGCATATATGAATTACCCG
-TTTTCAACAAATTTTGACAAATTTGTATTTTTTCCAAAATTTTTTTTCAG
-CCATCTATTCCTTTTTTTTGTCTGTTTTTTTTTCGGGCAAAAAAACCTTT
-CCCCACTGGTGCTATACCACCTTTAACGGTAAATTTTACTGGTCTAAAAA
-TCGGCGAAAAAATGAAACTTCAAGTAATATAATGGTAATTGAGTTTTTTT
-TTCTATTTTCTTTGTTCAAAATATCAATTATGACAAAAAACGAGAAAATT
-ATATTGACACAGTTAAGCGGATATAAATAATAAAACATCACAAGCACATT
-TAATTTTTCAAACCCCCTCAGGAGTCATGAAGAAATCCTTCTCTGCACAT
-CTACCTTTCTCCACATCCAACTCCTGATTTATTTTCTCCGCAAACTCCGT
-GTAACTTTTAATTGCAACATTCAAAAGTTTTGTATGATGCTTCAAGTGAC
-CCAAGTCGATTACACAATCCCCGCAAAGAGCTTCGCTGCGAATTTTGTCA
-ATTCCCTCTTCTAAATTCACTTGTTCTCCAAACTTCACTGATTTCCTTAG
-GATCCCAGTGCTCAGGCAACAGTTTGTGCAAATTCTCAAGGTTTTTGATT
-TCAGTTGGCAAGCGGTGCAGATAGGGCTCTGGAATTTTAAATTATTGATT
-TTTTTAAAAATTATTAACTCACCTCGTCGCTTTCATGTGCTCTTCTTGGA
-TTATGGTCATATGGAACTAAGAATCTCGAAAGTTGTATTAAATCCCACAA
-AGATCGATTCACATTTTTCCTTTCAAACGCATTTTCTCGTTTACAGTGTG
-GACATCTCTTGTTCAGTAGTTGGAGTCGGCATCTGTCGCAGATAGTGTGA
-CCGCAAGTGCCTATACAAGGGATTTGGGTATCATGATCTGGAAAATTTGG
-TGTGTAGGGCTTCCATGGTAGGCAGGCGCGGGGCCTGGCCCGCCTCACAC
-CGGTGAATTTACAAATTTTTGATTTTCTCGTTTTTGTCATTTTGATGAAA
-AACATTGAGGCAGGCGGAGGTCGCCTCAAGTTCACTCGGCGTTTGCCGCC
-AGCTTCCTACCCAAAGCTTTGCAACTTCTTACCCAAGCCTTGCCCAAAAA
-ATAAAAAGCTTAAATATCAAAATTACTCAATTTTGTGTCATTCTACTAAT
-TTTCTGAGAAAATTTGAATTCCCGCCAAAAATTTTATTGGAAAATTTGAA
-CTACTGGCCAAAATTTTTTTTGGCTGCGCCAAAGATGATCTTAGAAATTT
-GAATTCTCGCCAAAATTTTTCCCAGAAATTTGAACTTCTTGCCAAAAATT
-TTTGTTGGATAATTTGAATTTCCGGCAAAAATTATCTTATAGTGAGGACA
-CAATCAATAGTTTTGGTCAAAATTGTATTGTCAAATTTTTGATGTGTGTT
-GGCAATTTTGGCAAATTTGCCGAGCTCGGCAAATTCGGCAAATTTGCCGA
-GCTCGGCAAATTCGGCAAATCTACTTTTTGAAATTCGCCAAATTTGGCAA
-ACGGCAGAAAAAAGTACAATTGAGATTTGAGGTACACAAGACTTACATCG
-AAATTAATCTAATTAAAAGAATATCACTTACCATATTCATCATAGCATAT
-ACTGCATTCAGTAACCTTCATCGCAAAAATAGTCTAGACACTGACCAAAC
-ACTACACACTTGATGCTATTTATATACTTTCTATGCTGAGCAATACAGAA
-CATGCGATGTGAGGAATCTTAGGTAGCAGAAGTACAAAAAGATTGACATG
-TGATTAAATTCCTAATTTGTTCCTTATCACATTTCCCATATGTCAATTAA
-TTCGTAGATAGATGCTATTGATAAAAGTTTTTCGAGAATTTGTAAGATAT
-GAAAATAATATTCCTCATTTTTAATTTAATGATACAGTACTTTGAAAATT
-TCAACAATTTCAACAATTTTTAACACCTATGTTATCATTCATATACAACA
-ATTTGTTTAATACAGTAATACATTTCCACCCACGTGGTATTAATACAGTG
-TTAAGCTTGTTATTTTTTAAGGAAAAATTTAGAAAATTTTTCTTCCTCAT
-TTTGCTTACTTTTCAAAAAAGCGTGCAACTCCCTCATTTAAAAAAGAAGT
-GTCGTCGCTGAGGAAAATGTTAAAAATTTCTCTCATGGTGCTAAAATTAC
-TAACTAAAAACAGTAAGTATCGTAGCGAAACATTTCAAAAATTTTCAAAA
-TTTTTTATTTATAGTCAACAGTTTTGGAAGTCAATTAAAAACATTTTTTA
-CTATTTTTAATATTTAAAAACGTTTCAGTTGCTTGTAACTTTATAAGTTT
-GCCTACCGTACATTTACCGTAAAACAACCTTAAAAATGTAAGCTTTTCTC
-CCGATAAAAATCTTTACTCAGGAGTTCGCGACTCTTCTCTTACATTAATT
-TTTTCTCTAATATATTGAGCTCAAACCTAGCTGTAAAATTGAACATACAT
-ATAACTTTGAGTGCAATTTAAATTTCAGAAAACTTTCACAAACCCAAAAA
-TTGAGAATGCTCAGGACAGTTTGACCTTTCAAGAAAATTGCTTCGAGAAA
-ATTCCAAGCTTCACAAAATTGCTCATTGCCAAGTTATTTCCTTTAGTTTG
-TGGCCAACGCCTTAAAAAATACAAATTAAAAAAAAAACTCTGACACCACG
-TGATGATGCAATCAGACTCACGAACTCACGGGGTTCTGCCCTTCCTCATT
-GAATTTTTCGCGCTCCATTGACAATCACCCGCCGTACAACACGTGGGAAA
-GTCGTGCACTCCACAAGGACAAATACATTTAGTTTTACAACTAAAATCGA
-GCCGCGACGCAACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCAA
-GCCGAAATGGCCTAGTTCGACAAACTCTTCCATTTCAATTTATGAGGGAA
-GCCAGAAATCCGTGCGAACTGCGAGCCTAACGCTCTTTTTCAAAATATCG
-TATAACTCGGAAAACAAGCCATATTCCCAGTTCCTGTTTTATTTCGAAAA
-ACAGATAATACAAAAGAAATATCTGAAAATTAAGAATAACATGTTTTTAT
-TAAATACTTCTTTGTCTATATTCCATATAAAAAGAACCCCATGCGAATGA
-AACACTCACTATACATTCAAAATGAATTTCGCCATCTACCTTCTCGCTTT
-CATCGCCTGTCTCGCTAACTTTGGATTTTCACAGGGTAATCCAGGACTCT
-CATTTGATCCAGAAGAAGATTCAGTAAATATTGTAAGTTTTCGGATTAAT
-GGTTACAACATCTATAAGATTGTTTAGAATGGCAAAGTGCCAGTGGGAGC
-AGTGAAGACGTTGGTTAATGATCTTGTGAGCCCTACTATTGCAATTGTGG
-AGAAAACATTATCCTCATTGTCAGTTTAAGGAGCTACGGGAGGGCTCCAT
-CCATCTCAAATGTTTCAAATAACTCATATTGTTCTTTTATCTGGGAGTAA
-ATAAATTACATATTGGGAATCCTTTTCTTTTTGTTGTTAACCAAGTTGCC
-GGTTGCCAAATTTTTTTGGGTTCGGCAACTTCGGCAACTGCCGGTATCAA
-TGTCAAACATTTTGAAGCTTAGAAAAAAGCATTCAGAGAGCCTGAAAAAT
-TCTATAATTTCACTTTAAACGAAAAAAATACCATACTTTTTTACCAAAAC
-GCTCAAAAATATAATTTCAACAAAAAAACATTGAAACCTGGTTGCCGAAT
-TTTTTTGGGTTCGGCAATTGCCGGTTGCCGTTAACCTCGGTTGCCGCACA
-GCCCTGATGTGGAACTCTGCAGGCCTAGCGGCATCCATGTGAAGGAAGCG
-TATTGTATTTATTTTTAAACATAAATTAAAAAATCGATAAAACCTTCATA
-TATATAAATTGTTTAGACCGGTGAATAAAATGAGACGATGCCACGCGAGT
-TGGCGAACGCTTTTCTCCGAAGATCCAAGTCAGGACGTCGTCGATGGGCG
-GGACCCGGTGGGCGGAGCTTAGTCGGATAGCGCAGCAGACAAAATACGGG
-CGGTGCGTCGAGATCAAGTGCGTACTCCTCGACGGAAAGGGAGCTTGACG
-CGTGGATTGCGTTCTCGTCGGATGAGGAAAGATCTTCTGAGGAGGCGACC
-GGAGCCAGTGGTGGGAGCTCTTGTAAAAGGCGTTCTCTGAAACAAATAGT
-GGTGTTAAGGGGAAATGCGATGGGAAATCCGAGTAGTTGATGTCCGCGGA
-ATTAATTTTCTCGGGGTTTCATGGAAATTTAATTCCGCGGATTTCAACTT
-GCCGAGTTTTTATTCGATTTTATGAAAAAAATTACACGAGAAATTGTTTT
-TTTTAATTAAAGTATCCGAAATCCCCGGAAACAGATTTCCATAGAGAGAG
-GTCACTAGAGGTTTCATGGAAATATGTATTCAAGGTCTTAAACTACCCAA
-TTTTTTTACCTCGATTTTAACAAATTTCAAGTAAATTTGAATAATTCTAA
-CCAGTTTTGTTGTTTTACACAAAAATTCGGGTTCTTTAATCCGCGGAAGT
-AGCTTTCCAGAGGTTTCATGGAAATATGTTTCCGGAGATTTCAACTACCC
-GAGTTTTTTATCTCGATTTCACACATAATCGGCATAAGAAACTACAATTA
-TTTGTTTTCGGGGAAACTTTAAAAAACCCCAGAAAGTTGAATTTCTAGAA
-ATTAGCTTTCCCGAGGTTTCATGGAAATTTGTTTTCGCGGATTTCAACTA
-CCCGAGTGTTTTACATCAATTTCATCATAATTGACATAAGAAACTACAAT
-TATTTGTTTTGGGCGAAAGCTAAAAAATCCCCGGAAATCTGGATTTCTAG
-AAACTAGCTTTCCCGAGGTTCATGGAAATTTGTTTCCGCGGATTTCAACT
-ACCCGAAATTTTAATTCAATCTTTAAAAAACATCCAGTTTTTGTGACATG
-TTCTTCAGTTAAAAAAAATCAGAGTGTTGGAATCCTAAATTTCTAAATTT
-TCATAGTTTCCGCGGATCGAATTTCTAGAAATTACCTTTCCCGAGGTTTC
-ATGGAAATTAGTTTCCGCGGATTTCAACTTCCTGAAGTCTTCATTGGATT
-TCAATATAATTCGCACAATAAAAAAAGCCAAAACGCGAGGATCCCTGGTA
-GTTGAAATCCGCAAGAATAGTTTTCTCTAGTTTGAAAAATTTACTGAAAC
-CCTTACTTTTGCTTTCCCAAGAATTCGAGTTGTTCCTCGAACAATTGCTT
-TGCAGTCCCAATATTCGGCGAAAATTTCGATGGTTCACTATTCCGACGGT
-GCTCTTCAATTTTTCGCAAGTTTGCTGATACCTGAAAAATCGATATTTCA
-GACTATCTGTGCCAAAAACTAATTTATTAATTTACCTTCTGACTAGCATC
-CTCCAGCTCAACAATGTTATGAATGGTGGCTTTATACTGTTTCAGCTTCT
-CCTCAATTAAAGTCTGAACACAACCCGTTTGCCGTGCCACGTCATTCAAC
-TGCTCCTGAGCATGAGCACTATCTTGTCGGCGGAGCACACATGGCCCGAA
-GATCAGAGCCAAGTTGTTGCAGCCCATTTTGTTGACGGCTTCCTGGTCGG
-CGACACGTGCCAAATGATACATTAGGCGATCGAGCACGGCGCGGTTCGGT
-TTTGGGAGAAGCTCGATCATTACGGAAAGACAACGGACACGTTCACCCAT
-ATCCTCCACTTCTGTAATTTTTTTTTTTGGACGAAAAAAAACAACAAAAA
-ATATCATTTTGACAAAATGTTAACTTTCAGAAAATTTGAAAATTGATTTA
-TTTTTTTTGTTTCAATTTTTAGGTTTATGAATGAATCCGATTTTTTTTTG
-TCGAAATTTTTAATAAGAGCCCTAGTAGGCATGTGGTGTGTGTGTGTCTC
-ACTTCGGCTTGATCTACGTAGATCTACAAAAAAATGCGGGAGAAGAGACT
-CAGAGTTCTTAATGGATTTCGCATGGTTAACAATATGCTGACGTCACTTT
-TCTGGGGAAACAATTTCCGCAATTTTTTGTAGATCAAACCGTATTGAGAC
-AGCATCTCTGCCTGGCTGCGGACGCCTCGTTTTTCCCTTGGAATTTTTTT
-GGCGCGAAATTCAACTTTTCAAGTAAGTGCGAATATTTTCAAGTGAGACT
-GTTCAAAATTATTTTGCTGCCAAATTTGAGTTTGCAAATAAATTATTGAG
-CAAAATTCAAATGTTCAAATATTTTCTTTCGAAACGTAATGAAAAAACTC
-AAAGTTACAAATAATTTGGCGCGAAATTTGAGTTTTCAAATATTTCTAGT
-GCAAAATTTGAATTTTTCGAATAATTCTGGTCCAGAATTCAAAAATTAAA
-AAAAAATTAGTTTGAAGCGATGCTCAGGTTTTCATAGAGCTTCCATGTAG
-GCGTTAAAACGCCTGCCTGCCTGCCTTATGCCGCGCCTAATGCTTGAATA
-TACGTAAACTTTTTTTCATTTCTTAATTTGATTTTCAACAAGTTGATAGA
-ATTGAGAAAATTATAAATTTGTAAATTTACTTAAAAATGCAAAAAAATAG
-GCAGGGTTCAGGCAGGTGCCAGGCCCTGAAACAGCGCCTGCCTACCATGA
-AAGCCTATCGTAAAAAATCCAAATTTAATTTTTAATTTTACTAAAATTTC
-GATGGCTCGTTTTTTTTCAAACATCACAAACCTGAAACATTCAAAAAATT
-TTCATAGAGATCAAAAATGATAATTGGTTCGGCGAGTTCTCGGAAGAACG
-CCTTGACAAGTGTAGTTAGCACATGAACTCCAATATCCTCAAGATTCACA
-GAATCCGCATCTGAAACTCCGAATTTGATTTTTTTTTTTTCAATTTTTCT
-GCAGTTCAACAATTACCTGCAGTCGATTCAATCACTTTTCTGATACTTCG
-AACTTGGGGTAGAGATCCACTTTTTCTGAAATTACGGGCGCAAAAATTTC
-AATTTCAAAGACCTTCAGGTATTTCCGTACCTATAAACTCCTTCCACAAA
-CAGGGCACGTGTCTCAATTGCAAAAAAGAGTCGGTCCAAGAGTGTTGGCA
-CAGTATGATCATCATCGACAATTGATACTAAAGAGGCGCCAAAGAATCTT
-CCACCATTTGTCTGAAATTCAATATTTATAATAGCATTATAATAGCATAT
-TTGGCTGTAGTTTGTAGCAGGGGTCAGGCAAATTGCCGATGTTGCAAATT
-TCCGGCAAATCGGTAAACCGGCAAACTGCCGGTTTGCCGAATTTGCCTAA
-AAATTTTTGGCAACTTTTTTTTGGAATTTTCAGAATTTCCATTTTAATCG
-GCAAAATTTTACGCATCGTATGAATTTTCTTACATTTATTTTGAAAAGTA
-AGCAAATTCTATGAAAACATCTGAAGTAAACGAGAAAAAAAAATTCAAAA
-AGGCACAGTTTTAAGTGTTTCCGTCTTATAAAAAATCCCTCTAAACATTT
-CCGGCAAATCTGATATCCGGCAAATTGCCGGAATTGAAAATTTCCGGCAA
-ATTTTGATTCTGAATTTTTCAAAAAAACTGTTGGCAAAATACAAATTTTA
-TTTTATTTTCAAATATGTTTTTTTTTTCAGAAAAGTAAATTTTTTGCCGG
-GAATCAAATAATTCTTGAAAATGTTTCAAGATTTTTTTGCCACGAAATCA
-GACGTTTTCAGAACAGTTTTAGCGGAAAGTTAAAAAAAAATTTCAAAATT
-TTTGGCAGGAAGTAAATATTTTTCAGAACATTTATCCGAACAGTTTTGGC
-TGTAAATTCAAATGTTTAGTTTTCAACAACTCTTAGCGGAGAATCCAATA
-TTTTTCAGAATTTTGGAAATTAAAAATTTATCGAAAATTAATTGCAATTT
-CTAAGAAAGCAGTTGTAATTTTTTTTTTCAAAAAGCTACCGAAAAAATCT
-GGCAAATTTGGCAAATTTGCCGAGCTGAGCAAACCCGGAAAAACGCAATC
-ATTTTCTATACTTTTTGGATCATCAAAATTACTGAATTCCTACAATTAGT
-ACACGTCAGATTTTTCTATAAGCTCCGTTTGGTCTACTTGTATAAAGCTC
-GAAATATCTCAATGTTATGTTATTTTACTAGATTTTTTTGGAACAAAATC
-AATAATTTCGGTTAAATTATATTGTTCATTTTGTGGTGTGTGCGTGAAAT
-TTCAAAATTTGCCGAGCTCGGCAAATTCGGCAAATTGCCGCACACCCCTG
-TATTACTCACCTTCGGATCAATCGCCTTTCCAGTCATCTGACACGGATGT
-GTGACCTTCGGCTGACACTTTTTATGACACGATATCCGGCACGCAACACA
-AGTGTACAGCTTCTCATGGTGCCATATTAACTGATTACACACTTCACAAT
-AAGTCGGCACATGGACTGCTTCGGCACGGAATCGGTGACCAGCATGTACC
-TGGAATATTGGAATTGCGTGGGCAGGGGAAACTAGTTTCATTGAAAATTT
-TTTTTTAACTGCTGAAATTAGTCCAAAATGACATGTTATATGTACTTTTC
-TCAAAATGTGTGAAAATTGCACACTGAATTAATAAATAATATTATTTTTG
-TAAAAACATAAAAAGGGGAAAAGTCAGCGGTAAAAAAGTAAAAACACTCA
-GAGTTAGATCTTTTGACCTCCAAAATCCATGAAAATTTGCTTCATTTTTT
-TCATAGCTGTGACGTCGTGGGCGGCAATTTCCGTTCGGTAAATTTATTTT
-CGGCAAATACGGCAAATTGCCGATTTGCAGTTTGCCGGATATCAATTTGC
-CGGAAGTTTTAAAAGGGATTTTTTAAAAATTCCAAAACACTTAAAACTAT
-ACTTTTTTGAAATGTATTTTTACTATTTTCTCTAGATATTTTCATAGAAT
-TTACTTACTGTTCAAGCCCACAGCTTGCCGAAAATTTCCGGCAAACTGTC
-GGTTTGCCAAAATTGCCGAAAATTTAAGAAACGGCAATTTGTCGGTTTTG
-CCGTTTTCTAAAAAAATTTAAATTTCGGCAATTACTGTATTTGCCGTTTG
-CCGAAAAACTAAATTTGCCGCCCATCGTCACACAATACAAAAAAATTGCG
-CGGCTTCTGGAGATCAAATCTGACAGCTTACTGTATTTATAACTACAAAT
-TCACGCTGTGTTTTTCTCTAATTCACGTGGTGTCAGGGTGTCTCACTTCG
-GCTTGATCTACGTATATCTACAAAAAATGCGGGTGAAGAGACGCAAGAAT
-GTGCTAACGTCACTTTTTTTTTGAAAAAAAAAAAATTCCCGCATTTTTTG
-TAGATCAAACCGAACCGTAATGGGACATCCTGGCGCCACGTGCTAATAGT
-AAGTCACTACATTCTTACCGCCGCTACATCTGATTTTACACGCTTCTTTC
-CAACTTTCTGAATACCAATATTTTACACAATTTTCTCGGATTTTGATATA
-TAATACTTTCGCGGGCTTCTGGCTTCCCTCATATTTTCAAATGTAAGAGT
-TTACCGAATTAGGTCATTTGGGCTAGGCTACGGCGCGTTGCGGCTCGGTT
-TTCATTGCAAAACTAAATGTATCTGTCCGATTGTCATTGGAGCGCGAAAG
-GAAAGCTAGAAGCCCATGTATTAAAAAATCGACTTACCTTTATCATTGAT
-GACTTCTCCTTCCCGCGCTTCTTTTTCGATTGCACATGAACGTATTCGTT
-CAGGAAACCTCTGGAATTGAAAAAAATTGTTTTGTTACAAACGCGCCCTA
-ATAACAATTGATCGTGTATTCCACGTTGGAAATTATACAAAATACAATGG
-AGCACTTTTGCTCGAAGCCTAACATTTTCTAAATGTTTTCTCACCTAAAA
-GCGTTAACGCCAAGTGTTGTCGGAAAGGACACACTCTCCTCGAGACAGAC
-TTTCGTTAAAAGTCCCTCGAACATTGTGATGACGTCACGGTATTTAAGCA
-CGGATTGCTCGACCTGAAATGATATGTTGCTAATTACACTTGCGTGGCCG
-TGAACCCCAAAAACTAGGCCACCTTTTGCGCCCAATTACCGATAAAACCG
-CCTCATATCCCAACAGCTCCATATGGAAAGCTCTTAGCGACTTTTTGAAG
-ACCGCATCCACTACAGTATCCCTTTTGGCATTACTCTCGTTTAGATGACG
-TGTCTTGTTGAAAATAAAAATACTGAATTGTCGGAGATCGTCGGTGGATT
-CTACAAGCATGTTTCCAGGGTCGATCTGTAAGTATTGTTTAAGTACAAAG
-TACTACTGCTTCAGTAAGCATTGTAGTTTATAGTTTGTGGTTTGTGTTTT
-GTAGTTTGTGGAGTTTTTAGTATGTAGTGTGAAGCTTGATATTCATTTTG
-CAGTACATTGACTTGGATTGGGGTGTGCTAAGATATAATATCAAAGTACA
-AACAACGAGTGACAAATTAAACATCTCAATCCGAAAACTACAAACTAAAC
-CCTACAGACTACAAACTACAAACTATATCCTACAGACTACAAACTACAAA
-CTACAAATCACAAACTACAACCACGCAAAAGAACGTTACCTACCTGTTGC
-TTGGTTTTTGTTAAACTGAACGTGCCGGTCGATGGAATTGGTGAGGAGGA
-TTGCCGCTGCTTGTGGGGCCTGGAGTTTCAATTTTTTTTTGTTTCAATTA
-AGATTTTCCTCAAATGTTCCTTACATCAAATCCCATGGCCGTTTCGGTGA
-ATGCAGCCGAGTTGGTGATCGAACTGGTGACGTGGGATTGCACGGGATGG
-AGGAGGCGAAGACGAAGCATTCCTTGTGCAGGCACATTTTGCATCCTGGA
-AGAGTTCAAATTACGGCTTCTAGGTCATGGTGGCCGTGGCCGAGGCTTGA
-AGGGATGCTAGGTCAAGTCTGACGTCACATGTGGTTTTTCTAGGACACGT
-TACAAAGATTTCGAAGCGCCCAATTTTCGGAGAGGTTTCTAGGCCATGAA
-AATGTTCTAAATTTCAGGTTTCTAGGCCAGTAGAGAATTTTGAGGTTTCT
-AGGCCAGTAGAGAATTTTAGGCCATATCTGACGTCACACTTTTTGGGACG
-CGCCTAATAACGATGGTGGACCTCTATTCTAGGAGGAGCAACACATTTTT
-TACGAATTTCTAGAAGATGCAACTTCTGCTACTAGGCCACTCATGTGGTG
-CGAGGCTGTCCCATTACGGTTTGATCTACAAAAATGCGGGAACTTTTTGC
-CCAAAAAAATGTGACGCCGGCACGTTCTTAAACTTGCAAAATCAGTTGAA
-AACTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATACGTAGATCAAACCA
-AAATGGGACCACACACACACACAAAACCCACTCTGACACTTGTGCGCCTG
-TGAGATGAAGTTCGTCAGGTGCCGATTGCAAAGAGCACATATCTCCTGCC
-GATGAAGTCGTGACATCTTGAATTGATGGTCTTTTGCGACGAACACGTCC
-GGCGTCAGTTCACTGGCAAAACTTGGTCCCGGAGACGGTTCATCCTCGTC
-CTCGTTCCTGCCAAAAAGTGCCTTCAAATTCTTTTTTGCCTTCTGGAATC
-CCAACTTTCCAGCGCCTCCTTTCTTTTTGGAATGTGTTGGGCTTAGCTGA
-AAATTCAAAAGTTTTTAATATTATAAGTAGAACCCTTACCGTGAACGAGT
-CATCACATCTTGACATTGAGAAATTGTTGGATTCGGTACTATTAGCCCTC
-CGTAACATTTTTAATTTGGTGGTTGAAGCCGTAGGGGCCAGAGATTGCCG
-TCTATGATGGGATAGATCAGCTCCTTCAATGAGCTTCAACTTTGTGTCTT
-CCAGGATAAATGTGGCGTCCACGTCGACGGCGTCATCGCTGAAAAAAGGT
-TTGCGTGTTACGGTAAGCGAGAATTATGGCAGAGGTGGGCGGAAATTGCC
-GTTCGGGAAATTTTTTGTCGAAAAATTGCCGGTTTGCCGAAAATTTGAAT
-TCCGACACTTTGTCGGTTTGCCAGAAATTTTCAATTCCGGCAATCTGCCG
-ATTTGCCGGAAAATTTCAATTTCAGCAAGTTGTCGATTTACCGGAAATTT
-AAATTCCGACAATTTGCCAATTTGCCGGAAATTTCAATTCAGGCCATTTG
-CCGATTTGTCGGAAATTTCAATTCCGGCAATTTGCCGATTTTCCGGAAAT
-TTCATATCCGGCAATTTGCCGATTTGCTTGGAAAATATCAATTCCGGCAA
-TTTGCGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCAGATTTGCCT
-GGAAATTTTCAATTCCGGCAATTTGCCGATTTACCGAAAATTTCAATTCG
-GCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCCGATTT
-GCCTGGAAAATTTCAATTCCGGCAATTTACCGATTTACCGAAAATTTCAA
-TTCGGCAATTTGCGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCAG
-ATTTGCCTGGAAATTTTCAATTCCGGCAATTTGCCGATTTACCGAAAATT
-TCAATTCGGCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGGCAATTT
-GCCGATTTGCCTGGAAAATTTCAATTCCGGCAATTTGCCGATTTACCGGA
-AATCTCAATCCGGCAATTTGCGAATTTTCCAGAAAATTTCAATTCCGGCA
-ATTTGCCGATTTACAGGAAATTTCAATTAAGGCAATTTGCCGCTTTACCG
-GAAATTTCAATCCGGCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGG
-CAATTTGCCGATTTGCCTGGAAAATTTCAATTCCGGCAATTTGCCGATTT
-GCCTGGAAAATTTAAATTCCGGCAATTTGCCGATTTGCCGAAAAATTGCA
-ATTCTGGTACATTGCCGATTTCCCAGAAAATTTCAATTCCGGCAATTTGC
-CGCTTTACCGGAAATTTAAATTCCAACAATTCTGGCACATTGCCGATTTG
-CCAGAAAATTTCAATTCTGGCAATTTGCCGCTTTACCGGAAATTTAAATT
-CCGGCCATTTGCCGATTTGCCAGAAAATTTCAATTCTGGCAATTTGCCGC
-TTTACCGGAAATTTAAATTTCGGCAATTTGCCGATTTGCCGAAAATTTAA
-ATTCCTAAGAAACAGTGGCCGAGATCAGTTTTGACGTCACTTCTCTTCCA
-GAAAATGCACTAAAGTGATGTGACGTCATGACTGAGTTTCTAGGCCACGT
-TTCGTTTGATAAAATTGGCGGAGGACCTAATTTCCAATGGAAAATAAATT
-CAATTTTTTTAAATTTCATAATTTTCTGAAAAACTCACTCCTGAAAAGCA
-TCACTCTCTTCCGAAATATCATCATCAAGCCCATCCTGCGTAGACTTATC
-ACTATCCGAATCATCATCCGAAAGAGCAAAAGCCGCCAGAGAGCTCGGAT
-CACTCAAGTCGAACTTTGTAAGATTCACAGCATGAACCTTCCGAACTCTA
-AACGGTGACTTCTTAACGTTCAAGGCTCCATTGCCCTTTGGAATCTCGCC
-GACTCGCTTGCGAACCGATGCTCCGCGATACGCAGACTGCAGAGCTATCA
-CCGATTCTCTTATCGATAAATATTTCTGTCGTTGCTTGTACTTCTTCCAA
-TTACACTGTATCGTTTGAGCTGCTAAGGCTTTTTTCCGAACTTCGGCTCT
-TGCAAATGATCCTCGAATCAATGCTTGGATCTTGATAATACCCTCTTTCA
-TTCTCAAATATCGCTTTCTAGCCAACATTGTCCTGAACCATCGTTGAAGT
-GTATCGATTGATTGCATAATTGTCCGATGCAAATGATCATCGAGTATCAA
-CTTTTCAGCGTCTCTCATAAAAATCTTATTGGTTCCATATTGAATATTAT
-CATTATCAATCGATGCATGGGAATGTATGTACTCTTTCACATCGTCCACA
-GTACTATCCCTTCCGTTTCGCAAAAGAATTCGGTATTGCTGGACAAAGCT
-TGGATACTCAATTCTCACAGAGTACCCGGCTCTCCGAATTCGAACGGTCT
-CGAGCATTCCGGTGTAGCGGAGCTGGCGGAGGATTATGTTGTCGTCGAAG
-TGGTTGGCGATCTATAAAATTTTAGGTGAGTGGTTTTTGTCAATAATTTC
-TACTTATATTCAGTCATATAAATAAAAACACATATAAGAAAAGTACCAAA
-AATTTCGATCACCTAATTTTTTTAATTTTTTCTATACTCTTACTAGTATG
-AAAGAGCAGGATACAAAAATAACTCCACAAGTGATAAACCACCTTTAATT
-GGATTAGTGTGTATCACTTTGAGTAAGCTAATATTGAAGGTTTAAATGTG
-GACTACCTAGCCTAGCAAGAGAGGTCCTGTAAGTAGACTTCAAAAATATA
-GATTATCTTATGAACATATGAACTTATAAACAAACGTTGGTCAAAAAGTA
-GGTGTTCAAAGATTCCACCAAAGTTTACAAACTCACCTTATCATTATTAC
-TCTTAATACACCTTATAAAATACGGCGTCGCGTTGGCCAGTGTGCTCATC
-AACCTCGTCAACGAGTACTCGAACTGCTTTGAAACCGACGATGGCTTCTT
-GGCAAGCCTCCGTCCTCCGATAGCCTCCTTCAGAATTTGCAGCGATTTCA
-GCAAGCTCATTTTGTCGTCAGACTTTCCCGCCGGGGTACGCCGTGCTTGA
-TTTCTAATCGTGTTGAACATGCTGGTATCACAAAAGTCTGGAACTTCACA
-GCGAAGTTCGCCACGTAGAAATGCGGAGAGAGCAGAGTCCGAGCCACGAC
-GGGGAGACGTTACGATGGAGTCCATTACTCGGAGATGGCCGGCGGATTCT
-GGAAATGTTGAATAATTATATTAAGGGCAGGATAGCTCAGTCGGTAGTGG
-TGGCCGCTAGCAATCTGGAGGTCACGAGTTCAAGTCCGCCTTCAACCCCT
-AGGTTCACCAAGCCTCTATTGGAAAATGGAGCAATCCACGACTGGATTAT
-AAGCCACAGCCTTCGGCTAGGACGTGGCTTAAATTGTAGCCCAGTGGGAG
-CACCACCAGGTAGTGTACCTGACTCCCAGATCCGCAGATACACTCAAAAT
-AAAAAAACTGCGTGGCGTGTACTGCAGAAAACCTAATATTTAGGCCCCGC
-CTTTTTCTCGTCCACTCACGGAGAAAAGGCAACAATTTTGAACCCAACCA
-ATATCAGGCCGCCGACATCTCACGGGTTCCGCGCGCCGCTGCGTTTAACT
-CGCTGTGGGCGTGGCGAGCTGTCTCCGCTTGCTGCGAGTTAAACATTGCG
-GCGCGCGGAACCCGTGAGATGTCGGCGGCCTGATATTGGTTGTGGTCAAA
-ATTTTTTGCCTTTTTTCCGTGAGTGGACGAGAAAAAGGCGGTGCCTAAAT
-ATTAGGTTTTCTGCAGTACACGCCACGCAGTTTTATTATTTTGAGTGTAC
-TTGAAGAACGGATCGTCCTTTAATCCTTTAATTATACATTGCATTTTTTT
-TCCACTTCTACGACTTCGAAGGGGCGCATTTACGCGCGATGGTCCCGCCA
-CCCACCCCAAAAATCAATGGGTGGCGCGTGCCGAGACCATCGCTCGTAAA
-TGCGCCCTCCTTTAAAGTCGTAGAAGTGGAAAAAATGCACTGTAGAAATG
-AAGAATACCATACTTTTTGTGTTAATTTTTTCTATAATATCGTAGTTGTC
-CATTTATTTAAATCTTCCCACTTATTTAACTAAGGACTTCTAACGCTTAT
-TCCAGTTATTGGTTCCGATTAAATCTACGAAAACTTGCCACTTTTCTGCA
-GTTTCCTTGTCGATTGCTTGAACGCGTTCATCGCCCGAAACACACTTCTC
-AGCACATTCCACCTGTGCACCGCCACCGGATCGATTCCCAGCAGGGTCTT
-CATCACTGAGCTCGTACTGGACTTCAGAGCGTTCAACACATCCTGTCTCA
-TTAGGTCCTTATTCTTTTCTCGGAAACCCTGAAATTTAGTTTTGACGTGA
-TGATGGAAGACGTTTTTTTTGGAAGTTGTGTGTTTACCGTAATTTGATAC
-TTGACTTTTCCAGCATAATGAGCCACGATGAATGCCGGCTCCTTCTTCTG
-TGGGGTCTCATAGTATTCGTTGTTCTGGAAATTTAATCATGGAACTAGTC
-ATGTAAAAACATTTGAAGGAGTTAAGGTATGTCCCGGAGGAGTGAACATC
-TTAAGCCTGACCTAGAAGTTGATCCAAGTGGCAAGCCGACTGGCCTGAAT
-CCTATTAACAGGCCTACATGTGAATATTAAAGGTGGATTAGCGCCAGTGG
-GAATTTTGTCTAAATACACTTATAACGATGCCAAACGATCGAATATCATA
-ATAAAACACTCCAAAAACTTTTAGATTTTTCATAATTTCCGGTCAAAGTT
-TTGGAACATTGACAAAATTTTGACAAATTTGAGCTTTTGAGGACATCAAA
-ATCAATGTAACATTTTTTTGGACCCCTACAATGTCTTTTTACGAAAAATT
-AAAACAAAATTATAGTATAACAAATAGAGAAAAAAATTTTTTTTAGTCGA
-ATTTGTGTCACTTTTTGACTGTAAATAAAAAAATTTTGAAAAATTTTTGA
-AAAGTTTTATCATGAGATTTGGTCATTTTGGGAGCATAGGAGTGGTTTTT
-AACAATTTCCACCACCGGCGCTACTCCACCTTTAATCGATAATCGATTGC
-AATTTTTTCATACCTTCAAAAACTGATTTAACTTCGCCAGCATTGAGTCA
-TCTGTTCCATTATTGATATTACTCTCCTCATCGACTAGCCTGAGAATTCC
-ATATGGTTTACTCTGAAAATTCATCGGAATTTATATATATGGATATATAT
-ATATATATATATATATATATATATATATATGTATATATATACATGTATAT
-ATATATATATATACAGTGTGGGAAAGTTCTATAGGACCCCCCCTAATTTG
-AAGGTTTGAGGAACTTCCGAAAATTTTTTTGAAAAACTGCTAATGCCATT
-CGTTTTTAAATTGAAAAAAACCTATATACATTTTTTTCCAGAAGTTTATC
-TCAAAAACTGAGGTCGCGCTGGAAAAAACGTCAAAATCCAGTGTGAAACT
-TCTATAGGACCCCCCGTTTTTTTTCACGATTTTTACTAAAATCAACAGAT
-TTTGGAATTTTTGACAAAGCTCAAATCAAGTTTGAGTTAGAAATGAGTTC
-AGATAAGCAGTTTTGACTTTAAAAAATTAATACGAAATGTTCTCGTGGGA
-TCTCCAGACTGGTTCTGATTCTTCCGAACTTTGATGTTCAAGTCTGTTTC
-AAGCTTCCTGGTGCTCTCGGTAATGCCAAAACTTGATAAACTCTCTTTAA
-CAAGTTCCTACTAAAATTCCTAGCACACACACCATAAAAATTTTTACGCC
-ATCCCCAAGAAACCAGTCAGAAACAGCGTATTAACAAGTTGCAGTTATTT
-TTGATCAACAACAGAACATTCATATACTAAAATCAAGAAAGGATCAATAG
-TTAATCGGGTTTCCTTGTGTGCGGATGATCTCAAACAGTCTGTCCTCCAT
-TGATCTGACCAAACTTTTCAGCTGGTTGTCCGGAATAGACTTCCAAGCGT
-CGAGAATTCCTTGCTTCAACGATGCAACTGTTGGGTAAGTCTTGTTCTGA
-GCATACACGATACGGACAAGAATCCCCCACAAATTTTCGATTGGATTGAG
-ATCAGGACTTCGAGCTGGCCAATCAAGAAGGTTGATCTTCTTGAGCTTGA
-AATAGTCGCGGGTTGAGTTGCTCACATGGATTGTCGCATTATCCTGCTGA
-AATCTAAAGTCTTTTCTGGAGTAGTGACGAAGATATTTGGAGAGCTCCAG
-TTCCAAGACGTTCTGATAGTCAGTGCTGTTCATCTTGCTACTGACGAACT
-GTATCTCAAGCTTCTTCTTCTCCGTGAACGCTCCCCAAACCATCACCGTT
-CCTCCTCCAAAATTACGTCTCGAAAAAACCATTGGTTCCTTGCGCAAATC
-GCGCCAATAGTAGCGGCAACCGTCAGGCCCATCGAGATTGAATTTCTTTT
-CATCGGAGAAGACAACCTAAAACAATGATCCTAATTATTCACTCTTGCTT
-TTTTAAATTCTCACTTTACTCCAATTCGTTCCCATATTGTTCTTAGCAAA
-TTCCAATCGCTTGAGTTTATGGTCTGCAGAGAGTAACGGAGCAGGGCGAA
-GTTTCTGACGAACGATTACACCAGATCGTTTGATGACATTGAGGATGGTC
-CTTTTTGAAGCAGACAATTGAAGCTCATTGCGAATATCTCTTGCCGTCTT
-ACAGGAGTTGGAGGCAGCACGAATCACATTTCGTTCGTCACGCACGGAGA
-GAGCTTTGCGACGAGGAGCTCTTTTAGATGTACCGTAGCTCACCGGATCC
-TTCAGATACTCGCGAATACAGTGTCGAGAACGGGAAATTTTCCTACTCAT
-TTCATGCAGGGACACATTGAGCAATTTCATAACATCCAGCTGAGCGCGTT
-CAGTGTCCGAAAGGGCAGATCCTCGAGGCATTGCAAGTTAGACTGCTTTC
-GAAGTAAGCTTTCCAGCCTCTATATGTGTGCCACAACACATGCCACAATT
-CCACATTTAATAATTCACGCAAAAAATAGTAAATAACATCTGTGAGGGAC
-AATTTAACTTGAAATATTGGTCCCATGGAACCTTGTAATCAAAGAAAAAC
-GATTTGATTCCTGATAAGCCTTCCATTGTTTCCTGCTGCATATTTTGCCA
-AATCAGCTTGACTACACAGTCGAAACATCTAAAGTGCGTGCTAGGAATTT
-TAGTAGGAACTTGTTAAAGAGAGTTTATCAAGTTTTGGCATTACCGAGAG
-CACCAGGAAGCTTGAAACAGACTTGAACATCAAAGATCGGAAGAATCAGA
-ACCAGTCTGGAGATCCCACGAGAACATTTCGTATTAATTTTTTAAAGTCA
-AAACTGCTTATCTGAACTCATTTCTAACTCAAACTTGATTTGAGCTTTGT
-CAAAAATTCCAAAATCTGTTGATTTTAGTAAAAATCGTGAAAAAAAACGG
-GGGGTCCTATAGAAGTTTCACACTGGATTTTGACGTTTTTTCCAGCGCGA
-CCTCAGTTTTTGAGATAAACTTCTGGAAAAAAATGTATATAGGTTTTTTT
-CAATTTAAAAACGAATGGCATTAGCAGTTTTTCAAAAAAATTTTCGGAAG
-TTCCTCAAACCTTCAAATTAGGGGGGGTCCTATAGAACTTTCCCACACTG
-TATATATATATATATATATATATATATATATATATATACATTTGAAACCC
-AAAAAGGACTTATTGGACTTACCTGAAACAGCTGCACACACTCCGTATTA
-TCAGTATACTCGATATTGGTCCAAGAAATGCCCTCCTTCAAGTACTCCTC
-TTGTTCAAATTGGAAAATATGTTGATTGAAATAGGACTGAAGTTTCTCAT
-TGGCATAGTTGATACATAACTGTTCAAAGCTGTTGCATTGAGACCCAACG
-TCTTCAAATCCGAATATATCCAAGATACCTGAAAATTACTTCAATTTTTA
-ACAATTGATAATTAATCTAACCTATATAATATCCCTTCCCAGCTGAGAAG
-TCCTTCTTCAGCAATGCCTGATTAATCCTGAGGACTATATAGTGAAACAA
-AGAGTTGTATATGCACTTTGCCATGGCATCTCGGGTGTTGGTGGCCTGAA
-ATTAATTTTTTTATCTTAAATTCTTAATTTCACTTCTGTATATATATATA
-TATTACCTCAGAGACACTATATCGCAAAACTACAGTTTCTGTCTTCATAA
-CATGTCGTTTCATAGTGAGAGCCTGCATGAGAGTGTCGGTTTTGATGTGA
-AGCAGATTTGCGACTAAATCCACGACTTCTTCATTTTCAATATACCCACT
-TTCATCGCTATGGTAGCCATGTCTCTGGAAAATTATAGGAAAAATAAAAA
-AAATTTGATGATGTTATTATATTAGGAATCCTCTAAACAAGGGTTTTCAG
-GTTTTTTGGTTTTACGATTATTCAAATTTTTATGGAAATTATTATAATTC
-AAATAATTTTCGTCACTATTATAGCCATGTTGTTGAAATAATATGCTATT
-TTTAAAGGTGGAGCACCGAAATCTGGAAACTATTTTTAAATGAGTCCAAA
-TTTTCCCCTGATTCCGAATATCTATGCGAAAAAATTTTAAAAAATTCATT
-TATCAAATTTTTCAAATTTTTCAAACGCCGAATTTTCGCGCCAGAAACGC
-CGTGTGCACGTGGTATCAGAGTGTCTCATTTTGGCTTGATCTACGCAGAT
-CTACAAAAAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGAGTTCGCAT
-GGTTAAAAATGTGCTGACATCACATTTTTTTGGCATTTTTTGTAGATCAA
-ACCGTATTGGGAGAGCCTGGCACCACGTGAGTAGGCAGGCATTTTTTGCC
-TGACTGCTTGCGGGTGCCTCGTTTTTTCCTCAGAATTTTTTGGCGCGAAA
-TTCAAATTTTCAAATAATTTTGAATATTTTCGAGTGAAGCTTTAAAAAAT
-TGTTTGTGCCAAATTTGAGTTTGCAAATAAATTATCAAAAAATGTGCTGA
-CGTCACGTTTTTGAGCAAAAAAATCCCGCATTGTTTGTAGATCAAACCGT
-AATAGGACAGCCTGGCACCACGTGCGTGTGTCGATTTACGAGATTTGTGT
-ATATTTACGAAATTTTTTATCTTTATCAGACTCTGATTTCCGTTTCTCAA
-CGAGTTTTCTTCATTTTTGTATGTGATTTTTTTAAGGTCCATTAAATATT
-TTATCATCAAAACCCTAGCAAAATTTTTGGTTTTCAGTCGGTAAAATCAT
-ATAGGTAATTGGATTTTCCGTCAAGTTGTGACCTAATAGTAAGCATTGGA
-AATTTTGCCAGTTTTAAATAATTAATTGACCCTAAAACACACATTTCAAA
-AAAAAACCGATAAAAATTAAAAATTCCGTAAATATACACAAATCTCGTAA
-ATCGACACATGGCTCTAGCGCGAAAATTCAAAAACTCTTGGGTGTACAAA
-TAGCGATTTCAAGCTCAAATATAAAATCGTGGAAATTTTTTAAAAATTTT
-TTTCACATAGGTATTCGGAGTCAGGGGAAATTTGGAGTCAATTAAAAATA
-TTTTCCGGATTTCGGTGCTCCGTAGAACTCTCTGAATAAAATTTTAAAAC
-TATGGCAATAGGCAATTATTCGGTAGTTAACTTCTGAGTTGTATTTCTTT
-TTGAATCTAAACCGTCCCAATCATTTACCTTGATATATGTGATATTGCCA
-AGAAGCAACACTGCCGAAATAATCCCGAAGATGGTCTGCTGGGTCTTTGC
-ACAAAATCCGACGGAGCTCATTGCATGCCTCAACCTATCAAACTCATTCC
-GCTCGTTCACACCTTCCAGTGCAAATGGCTCGTTCTGGAAATTTTTAATT
-TTTTTTTAATTTTTTAAAAAATCGCTTTGAGGTCAGCGAATGTATCCCAT
-ATTCGCTCCAAACTTTTCCCAGCTCACCTGATTCAAATACTTATAATCAT
-GTGGCTTCAACAAGAAATATTTCTTCCTTTCTTCCTCGTCTGCACCCTCC
-AGAAGGTAGTAGAATACGTGGTAGTTTCTGAAAAAAATATTAAAGTCCAA
-GTGAGACACCAAGGGAGTTTATGTACCGTTCTCCTTTAGTTTGAAATATG
-ATGCGTGATTTTTCCAGCAGGTAGATCTCCACGTTTGCTCTGAAAAGTAC
-AAGTATAAGGCATTTTTTGTGGTATAGACATCAGGAGAAGGCTTCAAATT
-TTACGTTCAGGTCAATTTAGGTCATAGTGCCTAGTAAGTATGGTACCTAT
-AAGCTTGATTACTGCCAAAGTAAAAATTTTCCAATTCCGGCAATTTGCCG
-ATTTGCCAGGCATTCCAATTCCGGCAATTTGCCGATTTGCCAGGCATTCC
-AATTCCGGCAATTTGCCGGTTTGCCGGATTGCCGGAAATTTAAATTCCGG
-CAATTTGCCAAATTTTTTTTCATTTTCGGCAATATACTGGATTGCCAAAA
-TGTTACGGCAACTTGCCAATTTGCAGGAACTTTTCATTTTCGGCAAATTG
-CCGGTTTGCCGATATCCCAGAAATTTTCAGGTCCGGCAAGTTGTTGATTT
-GCCGATTTTCCCCGGAAATTTCAGTTCCGGCAACTTGCCGATTTGCCGGA
-AATTTTCAAATCCGGCAATCGCGGGAAATTTCAATTCCGTCAAATTACCA
-ACATGCCGGATATTCCAATTCCGGCAATTTGCCAATTTGCCGAGCATTTA
-AATTCCGGCAATTTGCCGAATTGCTGAAAATATCAATTCTGTCAAATTGG
-CAATTCGCCGGACATTCCATATCCGACAATTTGCCGATTTGCCGATTTCC
-CAGAAGTTTTCAATTCCGTCAAATTTCTAATTTGCCGGAAATTTCAATTT
-TACTAAGTCGCCTGCTAGCCTCCTAATCTCACCCGGAAACCATTCCATTC
-TCCCGATAGTTGATTTTGATGAATTTTCCAAATCTGCTACTATTATTGTT
-CGTTAATGTGACAGCATTTCCAAAAGCCTCTAGAACAGGACCAGCTGACA
-GAAGTGTCTGCTCAGTACTGCAGCCTGTTGAACCTTTCTGTGATAGCGAT
-ATCAAATGGGACATCAGATGATTCGTGGATTCCGTTTTTCCCGAACCACT
-TTCCCCGGAGATTACCACGCATTGATTTTCCTTGATACGGAGCATGCTGA
-AAAAATTGTTTTTTTAAAAATTAGTAGTGACATTTAGTTAATCCAGCATC
-AGAATGTATATCTCTGAAATTTTTTTTTTTTGAAATCAAAAGTGCTTTGA
-GGGTCTTGAAACGAACACATAACTGCAAAAAAATTGGTGGCCGAGTTTAT
-AATCGGCCACTTGGCAAATATACAAGCCAATACACAAAGTGAGCACCTAC
-GTGGCCGAGTGAAGAGAAAACTCGGCCACCGATTTTTTTTGGTCACTTGA
-AATTTCAAAAAATAGTAACTGGGTTCCGGTAAGAACTTAGAACTCACTTG
-TGGTAACAGACATCGGCGATTGCAAAAATGTGCGGTGGTAGTGAGCCGAG
-CCGCTTACTTTGAAAGTATAGCCTAGCATATTTTGGGTTGTAGATCGGAA
-AAAAGCAAAACGGGTTCACGGCTACTAGAATTGGACCGATGTACGTGTAA
-ATGTGCCCATTCGCGAATCTTTCCCGCAAATTGTCCAAGAGGGTTTGCTC
-CGTGAGCTCTGGCAAGTTACAGAGATCGGCGTACTCGCGGTCCTGAAAAA
-TTTTAAGGTTTAAAATTTTTTTAAATATAAAAATATTTAAAGGTGGAGTA
-CAGGAAATCTTTTTTAATTACTCCAAATTTTCCACTGATTCCGAATATCT
-AAGTAAAAAATTTTGAAAAAATTTCCCTGATTTTGTATTTAAGCTTGAAA
-TTACGATTTTCATTTGTGCCCGCACCACTTTTTTCAAATACGCCCAAAGA
-AATTCGCATTGGAGCGCGTTTGCATCGTTTGATTTTCGTCGTTTATTTTA
-TTTATTTTCCACGGGGTTCTGGCCTTCTTCATTGAATTTTCGCGCTTCAT
-TGACAATCGCCTGCCGGACAACACATGGAAAAGTGTCGTGTACTCCACAC
-GGACAAATACATCAGTTTTACAACTAAAGACAAGCCGCGACGCGACACGC
-AATGCGCCGTAAGTCTACACAAAATCTCTCCGACCCAAAATGGCCTAGTT
-CGGCAAACTCTGCCATTTCGATTTATGAGGGAAGCCAGAATTTCGTGATT
-TTCGCCGAATTCAATTTTCTTGAACCAGTTTCAATCATTTTTGTCGAGTT
-TTTGCTAGTTTTTTTTTTGACAAAAAGGAATGAAACTGGTTAAAAAAACT
-GAATTTGGCAAAAAATAAATAAAATCTTTAAATGAAGGAAATCAAAGCGC
-GCTCCAATGCGAATTTATTTGGGTGCGCATTTGACAAAAACACGTGGTGT
-CAGGCAAGGGTGTCAATGTCCCGTAAAAATTTCGAAAACGGGACAACGGG
-AATTCCCGTTCCCGTGAAAATTTTAAAAACGGGAAAACGGGAATTCCCGT
-TCCCGTGAAAACTTCAAAAACGGGACAACGGGAATTCCCGTTTTTTTGAA
-AACACTCAAAAAACGGGACAAACTGGGCGGTTTAAAAAAAAGAGTGCATA
-GTTGGCGTAAATTTTAGTGTATTCGAGGCAAATTATAAAAAAAAACTGCA
-TTATAAACATTTTTATCGATTTTTTCAATATTAAACAGATATTTAAAAAG
-CCAAAAAATGAGGGAAAATGTCCCGTTCCCGTGAAAATTTTAAAAACGGG
-ACAACGGGAATTCCCGTTCCCGTGAAAACACCCCAAAAACGGGACAACGG
-GAAAAACGGGAAACGGGAATTGACACCCTTGGTGTCAGGCTGTCTTATTT
-CATTTTTATCTACAAAAACAGCGGGAATAGTTTTCCAGAAAAATTCTAAC
-GTCTCTTAACCAGGCGAAATAAAATGAGAAGTCTGCGTCTCTTCACCCGC
-ATTTTTTGAAAATCAAAAAAAGAGACCGGGCACAAATTAAAATCAGGGAA
-AATTTTTTTAATTTTTTCACATCTAAATTCGTAATCGGGGGGCAAATTTG
-GAGTGATTTAAAAATATTTCCCAGATTTCGGTACCCCACCTCAAAAAAAA
-ATAATTAAAGAATTGCCTTACCTGTGGCTGAACCAAGAATTTCGTAAGAA
-AAGCGTCAATCGATGAGGCGACCTCTGCACTTCCAAACCGAGTGCCGCCG
-GTTGCCGCCCGATAACCGCGGTGTCGAAAAACAAATCGATTTTTTGGAGT
-GGCACTGTCCACCACTACAGGCAGTCTTGACCAGATGGCCTGTACCGCGA
-CTGGGTATTCCCCGGGGTCTAGGCGGCGTTCTTTATAGGTTTGACCGTCG
-GGGGTGCCCATCATTTCGAAGAGGTCAAAGTCTTGTACCGACTGGCCTTC
-TAGTTCTGGAAATTTTGACTTTAGAAAAGAAATCATTTTTTTCCTTTTTT
-TTTTAAATTAGCCCGTGGCTTTTTTCAAAATTAAAAGAAAATTTGAAAAA
-ACATTGCATTAGAGCGCGTTTGCATTCACTCCATGCAGTCCAATTTTGCT
-GGGAGCTTGAGTGTCTCATTCGACTTGATCTACACAGATCTACTAAAAAT
-GCGGGAGAATAAAATCCACTGATATTGTATGTTTAAGAATGTGCTGACGT
-CACATATTTTTGTGCAAAAAATTCCCGCATTTTTTGTAGATCAAACCATG
-ATGGGACAGCCTGGCACCACGTGAGATTGTGTCGACAAATTTTTGTTGAA
-GATGTATGGCCAAAAACGGCACATTTAAGTAATTTATCAGTAGAGCGCGT
-TTGAAATTTTTTTAAAAATTCTTTTTAAAAAGAGTTCCCACTACCCCAAG
-TCCTCCGATTTTTCTAAAAACTAAGAGAAGGGAATCTACGACCCTGAGCC
-TTTAAAACCTTACCAGCTCTCCCGGCGAGCACTTTTTCGATGAGCTCCTC
-CGTCGTGCACCGCTTATGAACCTCCAAGTGTACCGTATCATTTTCACAGT
-CGGGATTGAAGCTGTGCATATAGACGGCTACCGTATGTGTGTGTGCATCG
-TCTGTCGCGTTGATTGTGTGAGCACGTCGGGGAAAACATCCCGTCGCTCC
-AGCTGATATTGAGTCAAATGACATTTAGTTAATCCAGCATCGGGATGTAT
-ACGTCTGTAAAAAAAAATTTTTTTTGAAAGTAAAAGTGCCTGGAGGATCA
-TGCAACGAACACAAAAATTTCACAAGACCGCGAAAAAAATTGGTGGCCGA
-GTTTTCTCTTTCGCGGTCACTTAGGAAATACTAAAATCGCACGGATTTCT
-GGCTTCTCTCATAAATTGAAATGGAAGAGTTTGCCGAACTAGGCCAGTAT
-AGCTCGGCCATATCTGGGGTATGTTTACGACTTTCCCACGCGTTGGGCGA
-TTGTCAATGGAGCGCGAAAAACTCAATGAGAAAGGCCTGAACCCCGTGAG
-ATCGAAATGAAAATTTGCTAAATGGCCGAAAATTGAAAACTCGGCCGCCA
-ATTTTTCCACACGGCCACAGGAAAAATCGTAACAAAAATTGAGAGAAATT
-TATTAGAAAAAATCTGAAAGTAATTTTTATTGCACCGTGGCCGCAAAATG
-TAAAAACACGGCCACCGATTTTTTTAATGTGGGGAAAAAGTTGGTGGCCG
-AGTTTTATATTTTGCGGCCACTTAGAAAATATTTAGATCGAAGGGAAATT
-TTGTTGAAAATACGTTTAACGAAAACCAGTCAATTTTTGTTACATGACCG
-AAAATTGAAAACTCGACCACGGATTTGTTATGCTTTATAAATTTTTGAAA
-CTATTATTTTTTGATTCAGAAATTTTTGGAATTGAAAAAAACTCGGCCAC
-ATTTTTTTTCTCACGGTCACAATTTTCTTTGTGATCGTAAAAATGGAAGC
-TCGGCCATGGTGGCCGAGTTTTTTTCGCTGCCACTGGTAACACGTGGTTG
-GGTGAAGAGAAAACTCGACCACCGGTTTTTTTTGGCCACTGAAATTTTTA
-AATTTCAAAATATTTTAAATTTTGCTGCAATCTTTCACCACAACCGCGAA
-AAAATGAAAACTCGGCCACCAATTTATTTATTTTCACTGGGAGAAAAAAT
-ATTGTTAGCCAAGTTTTCTTTTAGGCAACAGAAAATCAAAAAATGAGCGA
-TTTTTGTTACGTGGCCGTGAAAAGAGAAAACTCGGCCACCAATTATTTTT
-AATTTGAGGCACTGTTGTAAAATCTTATAAAAAAACAGGTTTAGTACATT
-GAACTCAAAAATAAGGAAGATTTTTGGAAAAACAAAAATTGCTGGCCGAC
-AGCTGGAAAAAACTCGGCCACCAACTTTTTCCGGTCACACAGCAAAATCT
-CTCGATTTTCGATGTTTGAATATTGAAATCTGGGTTGGATTTTTTAGTAT
-CATTTCATTTCCGGTGGAGAAACGAGGGAGAGAAAAAGAGAAAAAAGATT
-TGTAGTGTCCCGGGAAGCTCTCTTTCTCATGTGGGAAGAAAGTGGAAGAA
-GCTTCTGCAGCAGCAGCAGCAGTGGTTCACGAAAGAGAGAGAGAGACATG
-TTGGACATGAAAATGATGAAAAATAAGAAGATGAAGAAGAGAATTACACA
-CTACCACCACAACACAGATTATTTTTATCACGTTTTGAGGGGGCGCTTCA
-CACAATTTTCATGGCCTAGAAATTTAAATTTGGTGGCCTAGAAAATACTA
-TATTAATTATATTAATTATTCTACGAAATTTCAATAATTTAAACGGGAAA
-ATTTATTTTAAAAAAGCCTAGAAGAGGTTTTGAAATTGGTGGACTAGGAA
-ATGAAAAATTGTGTTTTTGGAATTTTCTAGGCCATTTGAACTTCCTGACG
-TCCACAATTTTCATGACTTCGAAATTTGAATTTGGTGGCCTAGAAAATCA
-TAAAAACTAAGAAATCGAGAAAAAAGCATGGATGAAATTTTGAATTTTAT
-AGGTCATTTGAAATTTGTGGCCTAAAAAATGAAAAATGATTTTTTTTTTT
-TTGAATTTTCTAGGCCACTTGAATTTCCTGACGTCCACAATTTTCATAGC
-CTAGAAATTTAAATGTGGTGGCCTAGAAAATAATTAAAACTAAGAAATCG
-AGAAGAAAAGCGTGGAAGAAGTTTTGTATTTTCTAGGCCATTTGAATTTG
-GTGGCCTAGGAAATGAAAAAAAGATTTTTTAGGAAATTTCTAGGCCACTT
-GAAGTTGGTGGCCTAGGAAATTAAAATTTGTGTTTTTGGCATTTTCTAGG
-CCATTTGGATTAGGTGGCCTAGGAATTGAAAAGTAGTTGTTTTGGAATTT
-TCTAGGCCATTTGAATTTGGTGGCCTAGGAAATGAAAAAATATTTTTTAA
-AGGAAATTTCTAGGCCATTGAAGTAGATGGCTTAGGAAATAAAAAAAGGT
-TTTTTAAAGGAAATTTCTAGGCCATTGAATTAGGTGGCCTAGGAAATGAA
-AAATGATTTTCTTAAAATTTTTTAAGCCACTTGAATTTGACGGCCTAGGA
-AATGAAAAATGGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGGTGACC
-TGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCCACTTGAATTTG
-ACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACTTGA
-ATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCC
-ACTTGAATTTGACGGCCTAGGAAATGAAAAACAGTTGTTTTGGAATTTTT
-TAGGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTA
-ATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTC
-TTGGAATTTCTAGGCCATTGAATTAGGTGGCCTAGGAAATGAAAAATGAT
-TTTCTTAAAATTTTTTAAGCCACTTGAATTTGACGGCCTAGGAAATGAAA
-AATGGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGGTGACCTGGGAAA
-TGAAAAATGATTTTCTTGGAATTTTTTAAGCCACTTGAATTTGACGGCCT
-AGGAAATGAAAAATAGTTTTTTGGTAATTTCGAGGCCACTTGAATTTGGT
-GGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCCACTTGAA
-TTTGACGGCCTAGGAAATGAAAAACAGTTGTTTTGGAATTTTTTAGGCCA
-CTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCGA
-GGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAAT
-TTTTTAGGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTT
-GGTAATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGAT
-TTTCTTGGAATTTTTTAGGCCACTTGAATTTGACGGCCTAGGAAATGAAA
-AATAGTTTTTTGGTAATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAA
-TGAAAAATGATTTTCTTGGAATTTTTTAGACCACTTGAATTTGACGGCCT
-AGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGACCACTTGAATTTGAC
-GGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACTTGAAT
-TTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACT
-TGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAG
-GCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTGTTTTGGAATT
-TTTTAGGCCACTTGAATTTGGTGGCCTAGGAAATGAAAAATGATTTTCTT
-GGAATTTTCTAGGCCACTTCAATTTGGTGGTCTGGGAAATGAAAAATGAT
-TTTCTTGGAATTTTTTAGGCCGCTTGATTTAAGTGGCCTAAGAAGTTAAA
-AATAGTTGTTACGGAATTTTCTAGGACATTTGAACTTGGTGGCCAAGGAA
-ATGAAAAACTTTTTTTTTTGGAATTTTCTAGGTTTCTGTAATATTAATTT
-ATTCATTTAAAAAATTAAAAAACATTAAATTTTTTTTAAATTTCGTGTTT
-CAAAAAAAAAATCAAATTTGCCCAAAACTTCAAAAATAAGCTAAAAAATT
-GTAAAACGATACAGAACGGCTAATAAAACTTGAAAATAATAAGCGTGATG
-AGTCGGAAAGAGCCGCCGGCTGGGACCTTCTTTTTCTCTTTTTTTCTCCT
-CTCCCATCCCGAGCAGGAGCAACACAACGAGAGAGCACAACAAGAAGAAA
-AAGCAGATAGATATATAGATATATGTTGTCTTCTCTTCATATTCTTTCTT
-TTATCTTTTCATTCGAAACAACACTTGGTTCATTTCTCCCGTTGGACGGG
-GGGGGGGGGGGGGTGACGCGGGAGACGAAAAAAAAAAGAAAAATTGGGAT
-GGGAGTTGGAGAATGTTTGGAAAAAGATTGATTGATCAATCAATTTGCCA
-GCCGAGTCTCGGCTATTTTCGGAAATCGGGGCTATGCAAATGCGCCCTAC
-TGATAAAATGGGACGTGTCATTTAAACTCCTTGGTTTTTTAAAAAGAAAC
-GCAAAATCGGCAAATTTCCAGTTTGCCGATTTGCCAGAAATTTTCAGGTA
-CAGCAATTTTCCGATTTGCCGATTTGGCGGAAATTTCAATTTCGACAAAT
-TGCCGGCTTGCCGAAATGCCAAAAATGTCCAGGTCCGGCAATTTGCCAAT
-GTTGATTTTTGGCAAGTTGCTGGTTTGCCGGAAGTTTTCATTTTCGGCAA
-ATTACCGATTTGCCAAAACGCCAGAAATGCTCAGGTTCTCTAAACCGCTG
-GTTTTCCGGAAATTTTTCATTTTCGGCAAATTGCCGGCTTGCCAAAATGC
-CGGAATTTTTCAGGTCCGGCAATTTGCTGATTTGCCGGAATTTTTCATTT
-TCGACAAATAGCCGGTTTGCCGAAACGCAAGAAATGCTCAGGACCGGCAA
-TTTGCCGATTTGCCGGATATTTTCATTTTCGGCAAATTGCCGGTTTGCCG
-ATATGCCAGAAATGTTCAGGACCGGCAATTTGCCGAATCGCCGGAATTTT
-TTATTTTTGGCAAATTGCCGATTTGCCGAAAGGCCAGAAATGTTGCGGTC
-CGGCAATTTGCCGAAATGCCATAAATGTTCAATTTCGGCAATTTGCTGAT
-ATGCCGGAGTTATAAATTTCGGCAAATTGCCGGCTGGTCGATATGCCGGA
-AATTTTCAGGTCCTGCAATTTGATGATTTGCCGAAAAATTTATTTAAAAA
-AAAAATTAATTTTCGCCAGACAGGAAGTCTCTAAAATCTCATTTAATAAG
-AAGAAACAAAAGAAACAAATAATGGCCTAACAAGTTTCGAGTTACAGAAA
-CCTAGGCCACTTTGAACACCGGCGTGGCCTAGAAACCCAGTTCCACAAAA
-ATAAGAAAAAATTAAAACTCGGCCACATAATCTAGGCCAGGAGCATACAA
-ACACTCCACGAATATTAAAGACTCTTTCTAGGTTAGTGGCCGTTAACGAT
-GGAAAACTCGGCCATCTGCCAATTTTGTTGCTTAAAATTGGAAAAATAAA
-GTTTTTTTAACTTCAAAAAAAAAAGATCAAAAAGTGAAAAGCGGGGATTT
-TTCTCACACAATTTAATAAATCTGTAGCCGAGTAGCGGAGAGCTCTCGGA
-GCTCAACGTGAATTTCTATTTGGACGGTAAACATACTCAGCCACCCCACC
-CCAGCCCACCGTTACTGTCTTTTTTTTTCTTTTTTATTATCAACCAGCAC
-TTATCACCTTTATCTTTGTGTGATCCCGCGCCGCGCAAGAACGAGAGAGA
-GAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGA
-GAGAGAGAGAGAGAGAGAGAGAGAGAGGGATATTGGTGAGACGCAGACAA
-TTAGAGTCACTCGTGGGCTCTTTCACACATGTGATATTGAACGAGAAATT
-GCGCACCTAGGCCACAAAAAAAACAGTGTATTCGATTTCATGATAGGGGA
-GAAGCTGGCACGGTGCCAAGTTTCAGAAAAAATATGGAATTTTTGCTTGA
-AGCATGGTGAATCAGACGTGCTTACGTCACAATTTTTCGGGATAAATATT
-CCCGCATTTTTTGTAGATCAAACCGCAATGAGACATCCTGATACCACGTG
-AGGTTAATTAAAAGTATTGATCGGGATTTTGAGCGTCAAATATGGTGTAT
-TTACCGGCAACCCTGATGCGCCAGATTTGACGCGCAAATCCTTCATTTTA
-ATAAAGTTGGGCGTCAAATGTGATGCCTGAATTTTCAATTTTTTGAAATG
-TTTTGATTTCGTGAAAAATAACGGCGAATTTCAGAAAATTTATAGAAAAT
-TTTCATTTGTTGCGACCAAAAAATCTTAAAAACGACCAAAATTCTCAGGA
-AATTCACATTTTTCGCCGAAAAAACCATTTTGCGCGTAAATTCTGATGTA
-TTTTGCCGTAGGCTATGTGTGAAAACACTGCCGGTAATACGTCATATTTG
-ACGCGCAAACCACAAAAATCCTCGAAATTATTCCGGGTGCACAAAATTCT
-GAGAATGCGTACAGCGCAACATATCTGACGCGCAAAATATCTCGAAGTGA
-AAAATACAGTAATCCTTTTCAAATGACTACTGTAGCGCTTGTGTCGATTT
-ACGGGATCTCGACTTTCGAAATGGATTAAAATATATTATTTATCAATAGA
-ATATTACAAAAAGAAGTTAATTTCGTAAATCGAGCCCGTAAATCGACACA
-AGTGCTATAGTAGTAATTTTAAGAATTACTGTAGTTTTCGCTACGAGATA
-TTTTGCGCGTCAAATATGTTGTGCAGTACGCATTCCCAGAATTTTTCGTT
-CCCTTTCACAAAAATCTTCAAACTTGCGCGTAAAATTTGGTGCATTGGTG
-CCTGTGAGGGGTTCACCTATACAAGTGGTGCCAGGGGCTGTCCCATTACG
-GGTTGATCTACAAAAAATGCGGGATTTTTTTGCCCAAACCATGCGAAATC
-AGTTGAGAACTCTGCGTCTCTTCTCCCGCATATTTTGTAGATCAACGTAG
-ATCAAACACTCTGACACCACGTGGGCCGATGATGTAAGTGCACCAGATTA
-CACGCGCAAAAACTGAAAATCTGAAAAAAAAAAAAGCGAAAACTGTCAAA
-TTTGAGCGAGTTTTTTATTCCACGAATCACAAGAAAAATCAATAAAAAAT
-CGATAATTAAAAAGTGAGTATCATATTATTCGACAACAGAATTTCCAGTT
-TCATCAGTGAGCATTGTAAGTATACGATGAGCCATCGACGGTCCAACACG
-TCTCCCGTTCTCTGCCACAAGTTCGCCAATCTCTTGAATAGCGAGCGAGT
-AGTCCATTTTCGAGTATTTATCGATTGCGGCAATCGGATCAGGGATTAGT
-TCGAGAATTGCACGTCGCTGAGCATCCGACAGCCGATCGATTGTTGTGAG
-CATTTTCGACCACCAATCCGTGACGATTTCCGAGCGACTTCCGATCACAA
-TTCCCTGGAAAAAAATCATCGGGGTTTCATGCTTTTGATCTATTTGATCT
-ACAAAAAATGCGGGAATTTTTTGCCCAAAAATATGTGACATCGTCAGCAC
-GTTTTTAACCATGTGAAATCAGTTGAGAACTCTGCGTCTCTTCTCCCGCA
-TTTTTTGTAGATCTACGTAGATCAAGCCGAAATGAGACATTCTGAGTCTT
-GACACGACAAATTCCCGTTAATTACATACGGATGTGAGCCTTTGTTGGAT
-GTGAGAGAGTTTCCAGGTTTTTCTCGAAAGCTTTTCTTAAAATTTCATTT
-AAAAAATAATTTTTTAACGAAAAACTACAAAAAATCATCCGAAAAACCTG
-GAAAATCGATGAAAAACTCTGTGACAAATACAGTACTGTTTAAAGGCGCA
-CGCCAGTTTGTGTTCTGAGAATGCGTATTGCACAACATATTTGACGCGCA
-AAATATCTAAACTACAGTAATTCTTCAAATGACTACTGTAGCGCGCTAGT
-GTCGATTTACGGGTTCGGCTTTCGACAAATTTCGAAAATCGAGCTCGTAA
-ATCGACACAACCGCTACAGTAGTAATTTAAAGAATTACTGTAGTTTAGAT
-ATTTTGCGCGTCAAATTTGTTGTGCAGTACGCATTCTCAGAACTTTGCGT
-TTTCGTGATTTTTTTTTTCAAATTTTAACTGCAGTAAAAAAATAAAACAA
-CATAAATTTCATTTAAAAAAAACGATTTTAGCGCTCTTTAAAGGCGCACA
-CCCGTTTGTGTTTTAAAAAAAAAAAATGTCGCGTCGAGACCAGATTTCTG
-CAGATTTCGCGCCAAGACCCAACCTTATCCCCCTGATACTGTAATTTGTG
-GCCTCCTGCCCCTCCTGCACCACCACCACCGCCCCCATCACTTCCAGCGT
-CGAGCTTCTTCTTCTCCTGTCTCGCCAAACTTCTCAAGTACTGAGCAGTG
-AATAGTGCCAGCTCGGCGATCGTTTCGATTTGCACAATTTGTGCACGATG
-TTGCTCGTAGATTTGCAGCGATAAATTGTGCAATTTCTTCTTTTTCGCAA
-TTTCTGCCCTGCCGAATGAGACGATGAGCATTGTGCAGCGGCCACCGTTT
-TGAAATCCGGATTTTTGCTGGAAAAATAAAATTTAAATGAGATTTTTTTT
-AGGTCTCGCAGCGATTTCTCTGGCTGTTTCAATTACGGTTTGATCTACAA
-AAAATGCGGGAATTATAAAAAATGTTTGCCCGGTAAAATGTGACGTCAGC
-AAAGTTTCTTAACGCTGCGAAATCAGTTGAGAACTCTGCGTCTTTTCTCC
-CGCATTTTTTGTAGATCTACGTAGATCAAGCTGAAATGAGACACACTGTG
-TGTGCAAACACTATCCACAATACATCATATTTGACGCGCAAACTCTAATT
-TTTTTTTCGCTGCGAGACCTAAAAAATCTCAAACTTTCCAGTGAAAATCC
-GGATTTTCTTCATTTTAAAAAAGTTGCGCGTCAAATGTGATGTGCCTGAA
-TTTTCGCTTTTTTGAAATTTTTTATTTCGTTAAAAATGACGACGAATTTC
-TGAACATTTATAGAAATTTTAAAAATTTTCATTTTTTGGGTTAAAAAAAT
-CTTAAAAACAACCATAATTCTCAGGAAACTCAAATTTTTCGCCGAAAAAC
-CCATTTTGCGCGTGAAATCTGGTGTATTTTACCGTGCCTAGGCTGTGTGA
-GAACACTGCCGGTCATACATTATATTTGACGCGCAAACTGCAAAAATCGT
-CGGAATTATTTCGGGAACACAAAATTCTGAAAATGCGTATCGCGCAACAT
-ATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATTATGTAAAT
-GACTACTGTAGCGCTTGTGTGTCGATTTAAGGGCTCAATTTTCAAAAAAT
-CGAGATCCCGTAAATCGACATAAGTGCTATAGTTGTTATTTAAAGAATTA
-CTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAATG
-CGCATTTTCAGAATTTTGTGTTCCCGGAATAATTCCGACGATTTTTGCAG
-TTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCCCACATCGCCT
-AAGCACGGTAAAATACACCAGATTTTTCGCGCAAAATGGGATTTTCGGCG
-AAAAATTCGAATTTCCTGAGAATTTTGGTCGTTTTTACTATTTTTTAATC
-CAAAAAAAAATGAAAATTTTTAAATTTTCTATAAATTTTCTGAAATTCAC
-CGTCGTTTTTCACGAAATAAAAAAATTTCAAAAAATTGAAAATTCCGCCA
-CATCACATTTGACGCGCAACTTTTTTAAAATGAAGAAAATCCGGATTTTT
-CTGGGAAATTTGAGATTTATTTAGGTCTCGCAGTGAAAAAAAAATTAGAG
-TTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCCCACATCGCCT
-AAGCACGGTAAAATACACCAGATTTTTCGCGCAAAATGGGATTTTCGGCG
-AAAAATTCGAATTTCCTGAGAATTTTGGTCGTTTTTACTATTTTTTAATC
-CAAAAAAAAATGAAAATTTTTAAATTTTCTATAAATTTTCTGAAATTCAC
-CGTCGTTTTTCACGAAATAAAAAAATTGATAAAATACACGATAAAATACA
-TCAGATTTTACGCGCAAACTGGCAAAAAAATTGATTTTTTGGCTTTTTCG
-GACTAAACATTAGAAAAAAGACTATACTCCAACAATTTTTTTCAGTTTTT
-TTTTTGAAATTTTTTTTTTTTCAGTTTAAAATGTTTTCATCGCTTTGTTC
-GTTTATTTTTGTCTGTTTATTGTGATTTTGTGCGAAATTAATGTAAAAAT
-TTCCATATCCAACACTGTTGTGTGATTAATTCGGATAGATAAAAAATGTT
-CAGCATGTTGAGTTTAGTTTTCGTCGTCCAATTTAGCTTTTTTTTGATTT
-TCAGTCAAGATTTTCTTTCGCCTTCCGCTTTTTGACTTTTCTATGCAGTA
-ATGACCAGTCTTGATTTCTAGCTTTTAGTGTTTGGTTTACCATTCTGCTA
-TTACATGAGTCACACCTTATCACTAATATAAATGCAGCATAATTTCAGAG
-TGAGCAAGCCGCGAGTATTAAACCAGCGCTGTTTTAAACTGATAATGATT
-GCAGTTTCCTTCATTCTCACCGAATATCAATTTTTATTCATTCCAGAGTC
-TCTCGAACTATGGAAAAACAACTAAAAGCTATGTCCGTCTCGGACAAACC
-TGCTGCCCCAGCTGCCCAAAAGCTTGGTACCGCTCCGCTCGCTGCAAAAA
-AGACGAGAAATGAGGAGTGGGGAACCAAGGTCAATATCGATACCAACATT
-CGCAAATTGAGTAAGTTTTTATTTTACAATTACCAGTCGTTCGAGCTTAT
-ATATCAATATTTTTTAGCGATCAAACCGAATCAGCCAATTTACAAGTACG
-CTGTGCAAGTGAACTACGTCTTCCGGAAACCTGATGGAACTGAGGCGACA
-ATCGAAATGTCCAAATCAGCCAAAAAGGGAACGGAGCACGACAACGACAA
-AACACGCTGCCAGAACGTTTACAATGAGGCGATCAAGCGTTACGATGAGC
-TGAAAACCGGAGGACCGTTTTTCTACGATCGTCAAGCCTCTTTGTACACT
-CTGACCAAATTGAAGAATGAGGTGAATTCGATTTTTTGCTTAAAGTTTAA
-TATTTTGCGTTTCAGAGCATCTCTTTCGTTGTTACTGACAAGATTTGCAA
-GCGACAAAACTTCAAAGAGGCACAGTTTGTTCTCAAAAAGGTGGATCAAT
-CGTTCCAGTCAACATCGAATGACGTCATCAAGACAACCAACTCGTGCCCA
-GCCAATGCCGACAAAACTTTGCTTGAGGCAATGAACATCATTGTCTCGGG
-ACCAGCGTTCGAAAAGTATGCCGCTTTCAGAGATAATCAAGCTATTTCAT
-CTCGTTTTCAGCAAAAATGTTATCACCGTTGGAGCATGCGTTCATTACCT
-CATCGACCCAACTGGAGTCGAGTAAGAAACTTTAAGAAATTATCATATTA
-GTATTTAATTGTTTTTTCCAGCGTCGCGTACAAGGAATACCCTGAAGGAC
-AACTCTACTCAGGAGTTGGTGTTTCAAAGTCGGTGAAGACATTGGAAGGA
-ACGGACAAGAAAGTTCCATCACTCTTCATGACAACTGAAAGTTAGTTTTT
-CAGAAAATCTAGATTTTTTTCAAAATGTTATAAAATTGTTAATTTTCAGT
-GAAGACAACATTGTTCCATCCGGATTATGCCCCACTTGTGGAACTTTTGC
-AAACGTTCAGAGGTTTCAGCACAACTCTCAAAGCGAATTCTCCAGCCGCG
-CAGAGAATTGAGAAAGCCTTTGTTGGACTGGATGTTGTCTTGAATTACGG
-TGTGCACAAGGGTCTCGGAGAGGATGGTGTCGTTATGAAGATCCGTCGAT
-TCCACACGTCAGCTAAGGAGACATGTTTTGAAGTTGAGAAGTCAACTCGT
-GAATTCACGAACGTCTTTGACTACTTCAAAAAGAAGTATGGAATCACTTT
-GAAGTATCCCGATTTATTCACCATTGAAGCGAAAGGGAAACAAGGAAAAA
-TTCATTTCCCTGCGGAAGTTCTCCTTCTCTGTCCGAACCAGACGGTCACG
-AATGATCAAATGATCAACAATGAGCAGGCGGACATGATTAAGGTAATTTT
-ATATTTTAAAATCTGAATAATATCCCGAATCCTTTTTCAGATGTCAGCCG
-CACAACCACATATCAGAAAGACGACAACTGATACTATCGTGAGAAACGTC
-GGATTGGCTTCCAACAATATCTATGGCTTCATCAAAGTTGAAGACCCAGT
-CAACCTTGAAGGAATGGTTCTTCCAAAACCTAAGATTGCGTTTGCCGGTA
-ACCGACTCGCTGATTTGGCAAATCCGAAGTCTAGATTCCCCACCGACTTC
-AATCGTGCTGGACAATATTACGATGCCAAGGAATTGACGAAATGGGAACT
-GGTCTTTGTTCAAAACGAAGAAGTCCAGTAAGTTTCAGTTTGTAATTTTT
-CATTTTATTGACTCAATTTCAGAGGACTTGCTAAGCAGCTCGCCGATGAA
-ATGGTGAATAATGGTATGAAATGCAGCAACCCAACGATGAGTTTCATCAT
-TAGAGGTGATTTGGAACCAATCTTCAAGAAAGCGAAGGCTGCTGGAACGC
-AACTTCTCTTCTTCGTTGTCAAATCTCGTTACAACTATCATCAGCAAATC
-AAGGCGTTGGAGCAAAAGTATGACGTGCTCACTCAGGAGATTCGCGCTGA
-AACCGCCGAGAAAGTCTTCCGTCAACCACAAACTCGTCTTAACATTATCA
-ATAAGACGAACATGAAACTCGGAGGACTGAACTATGCTATTGGGAGTGAA
-GCGTTCAACAAGCCAAATAGATTGATCGTTGGATTTGTTACTTCTCAACG
-AGTTGGTGGAAATCCAGATGTGAGTCATGTGTTACAGCTGCATAATCATA
-TTTCATTTTTTCCAGTATCCAATATCAGTTGGATTTGCTGCAAATATGCT
-CAAGCATCATCAAAAGTTTGCTGGTGGATACGTGTATGTTCATCGCGATA
-GGGATGTTTTCGGATCCATCATCAAGGATACTCTCTTGACAATCTTCAAA
-ACATGCACTGAGCAGCGCGGAAGACCAGATGATATCCTTTTGTATTTCAA
-TGGAGTTTCCGAAGGTCAATTCTCAATGATCAACGAGGAATTCAGTGCCC
-GAGTGAAGGAGGCGTGCATGGCATTCCAAAAGGAGGGAACCCCGCCATTC
-AGACCACACATCACCATCATCGCCTCATCAAAGGCTCACAACGAGCGTCT
-GTACAAATCCGACAAGGGACGTATTGTTAATTTGGAGCCGGGTACGGTCG
-TGGACCATACCATTGTGAGCAATGTCTACACTGAGTGGTATCATGCCTCA
-GCTGTTGCTCGCCAAGGAACTGCAAAGGCTACCAAGTTCACTCTCATCTT
-CACCACTAAAGCAGGCCCACAAGCTGAGCCATTGTGGCATCTCGAGCAAT
-TGACCAATGATCTTTGCTACGATCATCAGATTGTCTTCCATCCGGTCGGA
-CTTCCCGTCCCACTGTACATTGCTGATCGTTACAGTCAACGTGGAGCAAT
-GGTTCTTGCCGCCAATCAAGGGTAAGTGACAGTAAAATGTATACGACATC
-TCATTTATTATTTTCAGTCCAATCTACAATGAAGGACAAATCGATCTCGC
-GGCTACCAACAGTGCATATGGCTACGGAGAGAAGAAGCTCTTCACCACTC
-GTTTCAATGCATAATTATCTGTACTCCTCCGTTTCTTTTACTTGGCTGTA
-TAATGTTTTATTTCCGTCAACCCAGAATACTTTCGCTATGATTGTATATT
-TTTTAGCATTTGGTCATTGTAATTTGTAATTATTGTCGGAATGGATAAAA
-TGATTTAAGAATCAAATGCATCGCTTCTTGGACAATTCCTGTTGATAATC
-TCATTCTGATATTTTCAAAAGTTGTGGTATTGATTTTAAAAATTAAAATA
-TTTGCAGCTGCCGCTGTGACTGGAGAAGTTGATGTTTTATTTCTTCCAAT
-TCAGCTGTTTGTACCTGTTTTGTAATGTTATTACTTTCTTTCGAACAAAA
-TGTCATTCTTTTTCTGGCAGAAAATTCCGCTTTTTAAAAATTATTTTTAC
-AACATTACAGATGGATCCTTCTGTTGTGTCTCGATTGGAGAATGTTGCGA
-ATCGAATGGAGAATATATTGCTGAAATATGACTCGAACAAAAAAGGCAAT
-TAAATAATTGTTCTCGAAATTATAAATTTCAAAAAAATCGCTTTTTAGAA
-ACTCCGGTCGGCGCGACGCCTCAAATCATTAATCTTTATGACGATGCGAT
-CTGTGAGAATCTCGTCTCGTTTTATGATTTATCTGCAAAAATTGGAGGAG
-ATTTGAATCGCCTTGGATGCATGGTAAGGAAATATATAATATTTAATTCA
-AATTTTATCGAAAATTATGTTTCAGACTAAGAATCTATTTTTCACGCTTT
-TTTCGATGTTTTTTGTGGATTGCGTGTGGGCGCAAAAAAGCGGACAACGA
-CGAGTTCGCGACTCTTGTGAACGATTTGACGACGGAAATTGTTGCATTTT
-CCGATTTCAAGGAGAAAAATCGAAAATCCGAATTCTATAATCATATTTGT
-GGACTTGAAGCTGCGGTTGGAGGTGAAAATTTGCCCCTGATTCCGAATAT
-CTATGTGAAAAACTCTTCATTATTTTATATATTTCAGCTTGAAATCGCTT
-GTTCATCCATTACTTTTTTCAAGCACACGCCATATTCTCATTGGAGCGCG
-CCGTGTTGTGTCGATTTACGAAATTTTCCAATTTTTTCAATTTCAGTTTT
-TAAACGAGTTTTTATTTTTGTGGGCTTTATTTTTGTGGGTTTTGCTTTTT
-GGGTTAAAAAAAATCTTAAAAACAATCATAATTCTCAGGAAACTCAAATT
-TTTCGCCGAAAAACCTATTTTGCGCGTGAAATCTGGTGTATTTTACCGTG
-CCTAGACTATGTGTGAGAACACTGCCGGTCATACATCATATTTGACGCGC
-AAACTGCAAAAATCGTCGGAATTATTTCGGGAACACAAAATTCTGAAAAT
-GCGTATCGCGCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTA
-CAGTAATTATGTAAATGACTACTGTAGCGCTTGTGTGTCGATTTAAGGGC
-TCAATTTTCAAAAAATCGAGATCCCGTAAATCGACACAAGTGCTATAGTT
-GTTATTTGAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCA
-AATATGTTGTGCAATGCGCATTTTCAGAATTTTGTGTAAAAATTTTTGTG
-TTTAGTGATTTTTGCAGTTTGCGCGTCAAATATGATGTATGACCGGCAGT
-GTTTGCCCACATCGCCTAAGCACGGTAAAATACACCAGATTTTTCGCGCA
-AAATGGGATTTTCGGCGAAAAATTCGAATTTCCTGAGAATTTTGGTCGTT
-TTTACTATTTTTTAATGCAAAAAATGAAAATTTTTAAATTTTCTGAAATT
-CACCGTCGTTTTTCACGAAATAAAAAAATTTCAAAAAATTGAAAATTCCG
-CCACATCACATTTGACGCTCAACTTTTTTTAAATGAACAAAATCCGGATT
-TTTCTGGGAAATTTGAGATTTATTTAGGTCTCGCAGCGAAAAAAAAATTA
-GAGTTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCACACACAT
-AGCCTAGACACGATAAAATACATCAGATTTTACGCGCAAACTGGCAAAAA
-AATTGATTTTTTGGCTTTTTCGGACTAAACATTAGAAAAAAAGACTATAC
-TCCAACAATTTTTTTCAGTTTTTTTTTGAAAAATTCCATATTTTCTGAAG
-TTCAAATAAATATATATTTTTTTAAAGTTCAAAAAATTCAAATTAGCGCG
-TTAAAAACGACGTATTCAGGCATCACATTTGACGCGCAATTTTTTTTTTA
-AAGAAGGATTTGCGCGTCAAATCTGGCGAATTAGGTTTGTCGGCGGAATA
-CACCGAATTTCACGCGCAAAATTTCAAACCTCAATGATAAAATCGGAGAG
-CGTATTCGAGGAAATTACGTCTTTCAACGTCTCCGCCGGAACCACGACAG
-CGAACAAGTTTTGTGTTGACTGAAAAAAAAATTAAATTTTTCGACAAAAA
-AAATTAAATTTTTCAACGAAAAAAAATTAAATTTTTCAACGAAAAAAATT
-AAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAAT
-TTTTCAACAAAAAAAAATTTAATTTTTCAACAAAAAAAAATTAAATTTTT
-CAACGAAAAAAAATTAAATTTTTCAACGAAAAAAATTAAATTTTTCAACA
-AAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAA
-AAAATTTAATTTTTCAACAAAAAAAAATTAAATTTTCCAACAAAAAAAAA
-TTAAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAA
-ATTTTTCAACAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAAATTT
-TCAACGAAAAAAAAATAAATTTTTCATCAAAAAAAAATTCAAATTTCCGC
-GGAAAGTGCAAAAAATTTACAGAATATTCAAATCGTTCACTTCTCCCGCT
-ATCATCTTCACGCAATTCGACACATTTTCGTCGCCATTCGATGCGGGTTC
-CCAGTGATGTATCGATTTTCAGTTGATTATCGATTTTTCGCTCCACGTAC
-AGTACACTGAGTTCCGCTTCGAGGCCATCTGAAATTTTTTTTTTAATTTT
-TTTAACGATTTTTTTTTCAGAAAATCAATAAATCTATTCAGCTGTTTTTT
-TTTAACTTTTACACAATTTTCCGTTTGAAAATGTCAAAAAAATGTGTTTT
-TGAGCCACATTTTATTCAAAAAATTTTGAAAAATTCCCTGCATTTTCGCT
-GTGGGACCCAAGAAGTGCGTGTGCCTTTAAGAATATTTCAATTTTTTTAA
-AACTTAAAACAAAGATTTAAAAAATTCTGCTTTCTAAAAATAAATAATTA
-TTTATTTTTTTGTGTATTTGTTTGGAAAAAATCAATATTTATCGATTTTT
-GTGAATTTTTTTGAAAAAAATCAATATTTATCGATTTTTGTGAAATTTTT
-TGGGAAAAATCAATTATTATCGATTTGTGTGAATTTTTAAGAAAAAAATC
-AATAATTATCGATTTTTTGTGATTTTTTCGCAAAAAAATCAATAATAATC
-GATTTTTGTAAATTTTTTAATCGAAATTCGGCTTTTTCCGGTAAAAACAT
-CAAAATTTCGCAAAATTAATCTGATTTTTTCTGCGAAAAATTTAAATTTC
-TCATAAAACTTTCGAAAAATCGAATATTTTAAAAATCAATAATTTCGATT
-TTTGGTTAATTTTTTTGGAAAAAATCAATAATTATCGACTTTTTGCGATT
-TTTTTTTTGAAAAAAATCAATAATTATCGTTTTTTTTTAATTTATTGGAA
-AAAATCAATAATTATCGAATTTCAGTGAAATTTTTGGAAAAATCAATAAT
-AATCGTTTTTGTGTGATTTTTTTCGGAAAAAATTAAAAATTATCGTTTTT
-TGTGAATTTTTTGAAAAAATTAATAATTATCGACTTTTTTTGAATTTTTT
-TTTGGAAAAAATCAATAATCATCGATTTTTTTGTGAATTTCTTGGAAAAA
-AATCAATAATTATCGATTTTTCCGATTTTTTCCAAAAAAATCGATAAATC
-AATAAATTTTCCTTACGCCACGTGTCAATTACAGTCTTCCCCACGTGGCA
-AAACGTGTAGAGCTCGCATTTCGAATTGGTTGCCGCCGAAATTTCGCGTT
-CGATTTTTCGAGTTTCCTTGTCTTTCTGAAATTTTTTTTTTCTAAATTTT
-CTGAAAAATGTTCTTCTGTAAAACCTCTTTTTCCTCTCTTCTCCGCGCCA
-TTTCGCTCTTTTTTTTATCCTTTTCCAGCGTTTTTCTCTCTTTTTCAGCT
-TCCCGAGCTCGTTTCGCATTTTCTCGGAGTTCCTGAATAAGTTTTAAATT
-TTTAAGGGGAAATTTGCTATTTGGAGAGTAAATATTTTCGCTGTGAGACC
-CGTGGACCTGAAAATTTTGATTTTCCGCTTAAAATCAACTGAATTTCGCT
-TAATTGTGATGTTTTAAGCTGAAAAAGCTGAATTTTGATTTTAAAAAATT
-GAAAAAAATTAATATTTTTAAAGGCGCATTTATTGATTTTTTTTCCAAAA
-AAAATTTACAAAAAAATTGATAATTATTGATTTTTTCCAAAAAAATTAAC
-AAAAATCGATAATTTTTTTTCCAAAAAATTCACTGAAAAATCGATGATTA
-TTGATTTTTCCAAAAAAAATTCACTGAAAAATCGATAATTATTGATTTTT
-CCAAAAAAAAAAATCACAAAAGTCGATAATTACTGATTTTTTCCAAGAAA
-ATTTTAAAAAAAAACGACAATTATTGATTTTTTCCGAAAAAATTACAAAA
-AAATCGACAAGTACTGATTTTTTCTGAAAAAATTACAAAAAATCGATAAT
-TATTGATATTTTACAAAAAATCGATAATTATTGATTTTTTACAAAAAATT
-CACAAAAAAATCGATAATTTTTAATTTTTTTCAAAAAAAAAATCACAAAA
-AATCGATAATTATTGATTTTTACCAAAAAAAATCACAAAAATCGATAAAT
-ATTGATTTTTTCCAAAAAAATTAACAAAAATCGATAATTATTGATTTTCC
-CAGAAAAAATTCACTGAAAAATCGATAATTATTGATTTTTTCCGAAAAAA
-TTCACAAAAAAATTGATAATTTTTTAATTTAAAAAAAAATCACAAAAAAT
-CGATAATTATTGATATTTTACAAAAAAAAATTACAAAAAATCGATAATTA
-TTGATTTTTTACAAAAAATTCACAAAAAATCGATAATTTTTAATTTTTTT
-CAAAAAAAAAATCACAAAAATCGATAATTATTGATTTTTTCCAAAAAAAA
-TCACAAAAATCGATAATTATTGATTTTTAGGCGGAAAAGCCGAATTTTTA
-TCAATTTTTCAAAAAAACAATCGATAGTTTTAAAGGCGCATGCGCTCTCC
-TGGGTCTCACAGCGAAAAGTGGATTTTTCAAATTTTTTGGATAAAATTTC
-GCTGAAAAACGTATTTTTTTGACAGTTTTAAAGGGAAAATTGTCTAAAAT
-CAAAAAAAAATTGTTTTTTCAACAATTTTTTCAGTTTTCGTAAAAATTTC
-AGTTTTTTTTTCGCGAGAAAAAAACCAATTCTCGATTGAAAAATCAGAAA
-AAATATTTTGGTATAAAAATATTTTTGGTATTACGATATTTTGGGTCCCA
-CCTCGAAAATTTAGAGGATTTTTCAAATTTTTAAGATTTTCTTCAACTTT
-TAACAATTTTTTTCGGAATAAAAATCGATTTTCGCTGCGAGACCCAAAAA
-AAATAGATTTTCTCGAATTTTGCGATGGAACTTTTGATTTTTCGGTGAAA
-TTTTCCAAAAAAATCGCAAAATGTATCAAAAAATCAATACTTTCTGCGTC
-TCCTTCTCATCGTCGGTTAGTTTCCGTTTTTCGGGTCTCGCCACGACATT
-TATGTCAGTATTCTCTTGTGAGCTTGAGCACAACGAGTATGAGCTCGTCT
-GATTCTGACGGATCATTTCGTCAAGATTGAGCATTCCCTCATCCAGCCAT
-GTTTTTGCCGCAGCTGGAATTGCATCCTTATTCACTGCGTCGACGATGGA
-AAAGCTCGCGGAGTACCTGGAAATTATCGATTTTTTATTGATTTTTTATC
-GGTTTTTATCGATTTTTTTGATGGGGAAAAATCGGAAAAATCGATAAATT
-TCGATTGGAAAATTCAAAAAACTTCGGGTCTCACAACGAAAATTGATTTT
-TTTTCTTGGATTTTCAAATTTTTAAACTTTTGTTGTAACAACAGTGGAAA
-TTTTTCGAAAAAAAATCAATAATTATCGATTTTTTGAAAAAAGGCAATAA
-TTTTCGATTTTTTGAAAAAAAAAATCAATAATTATCGATTTTTTGTGAAT
-TTTTGAAAAAAATCAATAATTTTCGATTTTTTGTGATTTTTTTTCGAAAA
-AATCAAAAATTATCGATTTTTTGTGGATTTTTTGAAAAAAATCAATAATT
-ATCGATTTTTTGTGGATTTTTTGTAAAAAATCAATAGTTTTCGATTTTTT
-TTGGAAAAAATCAATAATTATCGATTTTTTGTGGATTTTTTGAAAAAAAT
-CAATAATTATCGATTTTTTTTTGAATTTTTTGAAAAAAATCAATAATTTT
-CGATTTTTTGTGATTTTTTTTCGGAAAAATCAAAAATTATCGATTTTTTG
-TGAATTTTTTTTTGGAAAAATCAATAATTATCGATTTTTGTGATTTTTTG
-TAAAATATCAATAATTATCGATTTTTTGTGATTTTTTTCGGAAAAATCAA
-AAATTATCAATTTTTTGTGATTTTTTTTTTGGAAAAATCAATAATTATCG
-ATTTTTGTGATTTTTTTTGGAAAAAATCAATAATTATCGATTTTTGTGAA
-TTTTTTGTAAAATATCAATAATTATCGATTTTTTTGTAATTTTTTCGGAA
-AAAATCAATAATTTTCGATTTTTTGTGAATTGATTTTTTTTGGATTTTCA
-AAATTTTAAACTTTTAAAATAAATTTTTCCATAGTTTTTTGTTGAAAAAT
-TCCTGAAATTTTGAAATTCAATTAATTTTTTCTTTAAAAAAATCGTTGAA
-AAATTAGTTTTTTGGAAAAAAAATCAGCGAAAATAGATTTCGCTGTGAGA
-CCCAATTGGGCTCCTCAAAGTCCCTGCGCCTTTAAAATATCGTTTTTTTT
-TTGTTAAATTTTCCCGCGAAATTAATCAGATTTTTTCTGCGAAAAAGTGA
-AATTTCTCAAAGAAACTTTTGAAAAATCAATTTTTTTAAAAAGAAAACCC
-CTAATTTTTCCGTTTTTCCCGCTAAAAAAACATCTAAAAAATTTGAAAAA
-TCCACAGAATTATCGCTGTGGGACCCAAAGTGCATGCGCCTTTAAGATTA
-TCGATTTTTTTCAAATTTTTCAATCGAAATCAGGTTTTTTTTTTCAGCAA
-AAATCATAATTTTGCGAAATTAATCTGATTTTTTGTGCAAAAAATTCAAA
-TTTCTCTTTTTTTACGTTTTTTCGCCAAAAAAACCATCTAAAAAATTCGA
-AAAATCCAGAGCATTTTCGCTGTGAGACCCAAGTCCGTGTGGCTTTAAAA
-ATATCGATTTTTTGTTAAATTTTCCAATCGAAATTTGGCTTTTTTTCCGG
-TAAAAAATCATAATTTTGCGAAATTAGTCTGATTTTTTGTGCGAAAAAGC
-GAAATTTCTCATAAAACTTTTGAAAAATTGATTTTTTTTTTCTGGAAAAA
-CCTATTTTTGTCGTTTTTTCGCTAAAAAACATCTAAAAAATTCGAAAAAT
-CCCCAAAATTTTCGCTGTGAGACCCAAGGCTCCTGAAAGTCCCTGCGCCT
-TTAAAAATATCGATTTTTTGTTAAATTTTTAATCGAAATTCGGCTTTTTC
-CGGTAAAAACATCAAAATTTCGCAAAATTAATCTGATTTTTTCTGCGAAA
-AATTCAAATTTCTCATAAAACTTTCGAAAAATCGATTATTTTCCGCTAAA
-AAATCATCTAAAAACTCGAAAAATCCAGACAACTTTCGCTGCGAGACCCA
-AGTCCATGCGCCTTTAAAAATATCGATTTTCTGTGAAATTTCTCACAATT
-TCTCCAAATTTCCCGCCGTCACATTCGTCGTTTCCTCAATCATAATACAG
-TCCTCATCATCATCATCATCCGAGAGGACTACAATCGCCTCGTCCATCTG
-AATAGTGGGAAAATATCGATTTTTTGTAGAAAATCATATATTTAAATTGA
-TTTTTTTACAATAAAAAAAATTTTGGGGATTTTTTTGGAAATTTCGGGTA
-AATCGTGTAAATCGTGTAATTTAAATTCATTTTTGTTTCAAAAAGTCAGG
-GGGGGGGGGGGAAAGAAAAAATTTTTGACAAAGCGTGGAGCGAAAAAAGG
-AGTAAATATACAGTCGCGAAAGAACGATCGCTCCGCCAATTTTGCATGCG
-GCAAAGGGGCGTGGTTTATTGGGGGCGGGATTCCGGCGCAACCCTGCGGC
-ACGCTTTTTTCTCGCTTTTTTCGTGCGGTAATTTTCAGTTATTTTTATTC
-GTTTTCTGTTCGAAATTTCACGATTTCGCTCGATTTTGTTCGTTTTTTCG
-GATAAAAAAGTGTCCAACTATTTTTTAAATGAAAAATAACCAAGTTTTCA
-CAGATTTTACCCGAAAAATGCTTTGTTGGTCTCTCTTTCTGTAAATTACG
-ATTGTTAAGAGAGAAAATGGGGGAAAAAAAGGAAAATGTGAAGAGAAAGC
-GTTTTTTTAACGTTTTGCTTCGTATATTACAGAAAAAGAGACAAACGAAG
-CATTTTTTCAAGTAAAAACTGATAAAACTTGGTTATTTTTCATTTAAAAA
-TAGACACTTTTTTATCCGAAAAAACGAACAAAATCGAGCGAAATCGTGAA
-ATTTCGAACAGAAAACGAATAAAAATAACTGAAAATTACCGCATGAAAAA
-AGCGAGAAAAAAGCGTGCCGCAGGGTTGCGCCGGAATCCCGCCCCCAATA
-AACCACGCCCCTTTGCCGCATGCAAAATTGGCGGAGCGATCGTTCTGTCG
-CGACAGTATGTAACATGTAAGGTAACAAGGTGGGTTGGTTTTCATGAGAA
-AAGGGGGATTTTTTTCCGATTTTTCAGGTGCAGAGCCCACGCTCTCCTCA
-AAGCCGAATAATTATTAGAGCGCGCTTGCAGCGACTCGCGTTTCTGCATC
-CGCGGTATTTTGACTTTCCACTGAAGAAAGCAGATATTTCAGATTTATCG
-AATTTTTAGGTTTAAAATTTTTTTTTTCTGTATTTTTCGAACAAACCTTT
-TGTCAAACAGTAAAAATCGAAATTAAAATGACTAAAATGAACTTTTTTTG
-TCCACTGGTTGTGAAATGGTTTGAATTTGAAGAAATCAACGGGGTTTTTC
-GTATTTTCTGAATATTGTTCTATTAAAAATTGGTTTTAATACATTTTTGA
-CTTAACATTAGGGTCAAAAAATGGTTTAAAACCGATTTTTAATAGAAAAA
-TATTCAGAAAATACGAAAAATCCCGCTGATTTCTTCAAATTCGAACCATT
-TCGCAACCAGTGGACGAAAAAAGTTCATTTTAGTCATTTTAATTTCGATT
-TTTACTGTTTAACAAAAGGTTTGTTCGAAAAAAACAGAAAAAAAAATTTA
-AAAGCTAAAAATTCGATAAATCTAAAAAAGCTGCTCATTTCAGTGGAAAG
-GCAAAATACCGCGGATGCAGAAACGCGAGACGCTGCAAGCGCGCTCTAAT
-AATTATTCGGCTTTGAGGAGAGCGTGGTGCAGAGCCCCAATTTTAAACAA
-AAAATAGCGGAAAAAAATATTTAAAAAAACGAGGATTAAATAAAAATTAA
-ATAATGTCAGCAATGTTCATTGGCATCTCGTCGATTTGTGTCGAGTAGTA
-CTGCTCAATGTCGCGGAGAATTCGTACGTCGTCCTGTTTGACGAAATTGA
-TGGCGACTCCCTTGCGGCCGAAACGTCCCGAACGGCCGATACGATGGATG
-TAGAGCTCACGGTTGTTCGGCAAATCGTAGTTGATTACCTGGAAAATTTT
-TTGATGAAAAGCTGATTTTTGCGATTTTCGCCATTTTTTGACCTAAAAAA
-TTGGCGAAATTCGGAATTTTTAAACAAATTTTGACGTAAAGTAGGTTAAA
-ATTCCAAAATTTTACGGTAAATAGCCTGAAATGCTTTAAATTGATCCTTT
-TTTGCACAATTTTAACAATGAAAACCTGTATTTTTCGCTACTTTTAGTTG
-AAAAAAGCTTCCAAAACGAGTAAAATTGGCAAATTTTATCGATTTTCGCA
-AATTTTTCACCTAAAAATTGAAGAAATCGGTATTTTTAAACAAATTTTGG
-CATAAAGTAGGTTAAAATACCAAAATTTTACGGTTTTTAGCAATTTTTGA
-GTCAATTTTCAAAATGTTCCAGTATTTTTGCAACTATTTGGTTTTTATTC
-ATCTATGTTCTTTGAAAATTCTTTTTTTTAAGGTGAATTAGGTTAGAAAG
-GGGTCGATTTTGCAGAATTTTGACAGATTTCGCATGAAAATTTGAATTTT
-CAGGCGAAAATCATCAAAAATATGATTTTTTGCTACTTTTAGTTGAAAAA
-AGTGTACAAAACGAGTAAAATTGACAAATTTTTATCGATTTTCGCCATTT
-TTTCACCTAAAATTTAATTTTTTTTTTCTAGTGAAATAAGTTAAATTCAG
-TGTTAAAATGTATCTATTTTCGCTCAAAATTTGAAAATTTTCAATTTTTC
-ACTGAAATCCATGAGAAACCAGTGAAAAAATTTTTTCAATTTGAAAATTT
-GCAGTGAATTTTATTTTTTCTGCTAATTTTTCGGTGAAAAATGCACTTTT
-TCACGAGAATTAGCGGGATTTTTGTATTTTCAAAGTTTTTAGGTCAATTT
-TCAAAATGTTTCTCGCTGAAAATTGATTTTTTGTCAATTTTTCACATATT
-TTCTATGAAAAATTCCACCTTTTTGCAGAATTTTGACTAAGAAATACGAT
-TGTCGCCTAAAAGTTTGAATTTTTCAATTTTTTTTTGCTGAAAATCATCA
-AAAATACGATTTTCAACAGAAAATGATGAAATTTTCGCTATTTTTCGCGG
-AAAATCATTGATAACCTGATTTTTTCGCTACTTTTAGTTGAAAATAGTTT
-ACAAAACGAGTGAAATTGGCAAATTTTATCGATTTTCGCAAGTTTTTAAC
-CTAAAATTTAGTTTTTTTCTAGTAAAGTAGGGAAATTCAGTGAGATTTTT
-TAATTTTTCACTGAAATCCATGAGAAATTAGTGAAAAAAAAATGTTTTTG
-GCCAACTTTTCACATATTTGATATGAAAAATGCCGTTCTGAACAAAAAAA
-GCTGTGGAAATTCAACTTATTGTCAATTTTCCGCTGAAAAATTCATTTTT
-TTTTCTCAAGAATTCGCATTAAAACTGCGGAATTTCTTGTATTTTCAGCA
-GAAAATGATGAAATTTTCGCTATTCTTCGCGGAAAATCATTGAAAACCTG
-ATTTTTTCGCTACTTATAGTTTAAAATAGTTTACAAAACGAGTGAAATTG
-GCAAATTTTATCGATTTTCGCAAGTTTTTAACCTAAAATTTAGTTTTTTT
-TTCTAGTAAAGTAGGGAAATTCAGTGTCAAAATTTACTTATTGGGTAAAT
-GGAAATTGTGAATTTCCATTGTAAAAATTTCTGCTGGGAAATTCATTTTT
-CCCAAATTTTTCATATAATTAGGCTGAAAAATGCAATTTTTCACAAGAAT
-TCGCATTAAAACAGCGGGATTTTTTTTGTATTTTCAACGGAAAATGCTAT
-TTTTTGCGGAAAATCACTGCAACTTTTTCCTCACGAGGGCCAAGGAAAAG
-TGGTTTCTAGGCCATGGCCGAGGGGCCGACAAGTTTCAGCGGCCATTTAT
-CTTGCTTTGTTTTTCGCCTGTTTTCTTTCGTTTTTCACAGCTTTTTCCCG
-TTTTTTCTTATTAAAACTGATAAATAAATATTTTTTGCAGATGCTAAAAC
-AATTTCCAAGTAAAAAAAATTATGTATTCAGTCGGCAAGCAGCGGTGAAA
-GTGGGCAATGTAAAATGATGGATTACGGGAATACAAAACCTGAAATTTTT
-CTGAAACATGATACATATGCTGCTTAGATGCTGATACTACCTGATTTTCA
-TAACGAGACCGCTGAAAAGTTTTGAGGTTTCCACAATTCAACTTTTTTGG
-TGAAAAAATCGAGATTTTCGCACAAAAAGTTGAATTTTGAAAACCTCAAA
-ACTTTTTCAGCGGTCTTGATATGAAAATCAGGTAATTTCAGCATCGAAGC
-ATCATATGTATCATGTTTCAGAAAAAGTTTAGGTTTTGTATTCCCGTAAT
-CCATCATATTGCATTGACCACTTTCACCGCTGCTTGCCGACTGAATACAT
-AATTTTTTTACTTGGAAATTGTTTTAGCATCTGCAAAAAATATTTATTTA
-TCAGTTTTAATGAGAAAAAACGGGAAAAAGCTGTGAAAAACGAAAGAAAA
-CAGGCGGAAAACAAAGCAAGATAAATGGCCGCTGAAACTTGTCGGCCCCT
-CGGCCATGGCCTAGAAACCACTTTTCCTCGTCCCTTGTGAGGAAAAAGTT
-GCAGTGGGAAAATGCTATTTTTCGCGGAAAATCGAAAATGTACCAAGGAC
-ACTTGCGGAACATCAAGTCCTCTCGCCCAAACATCAGTAGAAATGAGGAC
-ACGAGTGGTTCCAGCTCTAAACTCCTTCATAACCTCATCACGATCCTTCT
-GCTCCATATCTCCATGCATCGATGAGACGGTAAAGTTGGCCTCCTTCATC
-TTATCAGTCAACCAGTCCACCTTTCTACGTGTATTACAGAACAACACCGC
-CTGAGTGATGGTTAAGGTGTCGTAGAGATCGATAAGCGTGTCGAACTTCC
-ACTCCTCCCGATCAACTGCGACGAAGAACTGCTTGATGCCTTCCAGTGTC
-AACTCGTCACGCTTCACAAGGATCCGAATCGGATCCGTCATGAATTTACT
-CGTCATCTCCAGAATCTCATGAGGAAGCGTCGCGGAGAGCAGCACCACCT
-GGGCTCCGGGCGGTAGATAGCGATAGATATCGTAAAGCTGCTCCTTGAAC
-CCCTTGTTGAGCATCTCGTCGGCTTCATCGAGCACGAGAAGCTTGATGGC
-GCGGGTGCGCAGGTTTCGACGGCGAATCATGTCGAAAACGCGTCCCGGAG
-TACCGGAAACCACGTGCTGGCCGTAGTCGAGCTTTCGGATGTCCTCGCCG
-AGATTGGTGCCTCCGATACAGGCGTGGCACTGGACATTCATATAGTCGCC
-GAGCGCCAGCACGACTTTTTGAATTTGAACTGCCAGCTCTCGTGTCGGCG
-AGAGAATCAGAGCTTGGGTCTCGCGGACCTGGGTGTCTAGCGATTGGAGT
-ACGGAGATCGAGAATGTCGCCGTTTTTCCTGTTCCGGATTGAGCTTGAGC
-GATGACGTCACGAGCCTTGAGAATTGCGGGGATGGCGCGTTGCTGGATGG
-CAGATGGCTTTTCGAAGCCGTACGCGTAGATTCCACGAAGCAAGTCTTCT
-CTGGAAATCGAAAAAAATTTTGAATTTAGTTTTATATTTAAAGGTGGTGT
-AGTCGAATTATTTATTTCTTTATTAGACTCAAAATTGTCTGAAAAAAAAG
-TGTACAAAACGAGTAAAATTGGCGACTTTTATCAATTTTCGCCATTTTTC
-ATCTAAAAAAATCGACGAAATTCGGAATTTTAAACAAATTTTGACGTAAA
-GTAGGTTAAAATTCCAAAATTTTACGGTTTTTAACAATTTTTCCACCTTA
-AAGTTGGTGTAGTCGAATTATTTTTTTCTTTATTAGACTCAAAATTGTCT
-GAAAACACCGAATTTCATAATGAAACTTCTTGAAAACTGAAAACTTTTCA
-AAAAAAAGTTAAGGCCTCTTGAAAAAAGGCCTAAAATTAGTGAAAATTTG
-AAATTTGACCAACTTGTCTGTCAAGCGGCTGGAAACAATTTTCTTTGAAA
-TTGTCGTCTAATTTTGGGTATACAGGTCGATTACCTTGCGTTTTCAGCTT
-TATTTAGGTATTTAAAAGTCGATGGACGAAGAGATTTGTCAAATTTTTTT
-CACCAACTATCTTCGTCCATCGACTTTTAATACCTTAATAAAGCTGAAAA
-CGCAAGATACGACCTGTATACCCAAAATTAGACGACAATTTCAAAAAAAA
-TTGTTTCCAGCCGCTTGACAGACAAGTTGGTCAAATTTCAAATTTTCACT
-AATTATAGGCCATTTTTCGAGCCGCCATAACTTTTTTTTGAAAATTTTTC
-AAGAAGTTTCATTATGAAATTCGGTGTTTTCAGACAATTTTGAGTCTAAA
-AAAGCAATAAAAAAAATTCGACTACACCAACTTTAAGGTGGAAAATTTTT
-TAAAAACCGTAAAATTCTGGAATTTTAACCTACTTTACGTCAAAATTTGT
-TTAAAATTCCGAATTTCGTCAATATTTTAGATGAAAAAATGGCGAAAATC
-GATAAAATTTGCCAATTTTACTCGTTTTGTACACTTTTTTCAACTAAAAG
-TAGCGAAAAATCATGTTTTTGATGATTTTCAGCTGAAAATTCAAATTTCA
-GGCAAAATTCTGCAAAAAAAGGGTAATTTTTCAGAGAAAATATGGGAAGA
-ATTGAAAAAAAAAACTGTTTTCAGCAAGAAAAATGTTTGAAAATTTACCT
-TTAAATTTTTAAAAACCGTAAAATTTTGGAATTTTAACCTACTTTACGTC
-AAAATTTGTTTAAAATTCCGAATTCCGTCGATTTTTTTAGATGGAAAAAT
-GGCGAAAATCGATAAAAGTCGCCAATTTTACTCGTTTTGTACACTTTTTT
-CAACTAAAAGTAGCAAAAAAATAATGTTTTGAGGCGAAAATTTGTTTTCA
-GCGACAAAATTCTGCAGAAAAAGTTCAATTTGAAGCTTTTCTGGTTATTT
-ATAGAGAATTTTCCGTTAAAATCGATAATTCAATACCTCAAGCCCATTTT
-GTCAAAAGTTGGGATAATTGAGACCTCCTCAGACGACTCGAACTCCACAG
-TCGCCATATCGTCGTTTTTCTTTTTATTTTCCGCCATTTTTGAAGGAAGA
-ACTCTGTAAAATCGATAAAAATGAATATTTTCGAGCATTTTTGCAGAGAA
-ATTCAGCATTTTTAGGTGGAAATTATCAAAATCAATGAATTTACATCGAA
-AAAATCAAGAAAAACGTGTAAAAACGATAAAATTGATTATTTTCGGGCAT
-TTTGCAGAGAAATTCAAGATTTTTAGGAGGAAATTAACAAAATAAGTGAA
-TTTACATCGAAAAAATTAAGAAAAACCTGTAAAATCGATAAAAAACTAGT
-AAAAGAGCAAGATTTCGAATGTTTTCGAAAATACCCTGTTTTTCGAGCAT
-TTTTGCAGAGAAATTCAGCATTTTCAGGTGGAAATTTACAAAATAAACGA
-ATTTACATCGAAAAAATCAAGAAAAATGGTGATTTATCGGCTATTTTCGC
-TCATAATTCGTAGGATTCGATTCGAAACTAAAATTCGAAATTCGAAAAAC
-ATGGCCGTGGCCTAGCGTTCCCCTCCTAGTCCACGGCCGCGCACGATTTA
-CGGAGAGCACGATTATTGATCGATGACACATGGTTTCCGACTGTTTTTCC
-TGTTAAATTTACCCTTAAATCACAATTTTCCATAGAAAATGGGTGGAATT
-TTCTCGAAAAAAGAGAAATCACCAAAATCGGCGCCGGTTTCCGATCAGGA
-TAATGCGATTTTGGTTTGTTTAATGAGGTTTTTCACATGGAAATTATTAT
-TTTTTTGGTAATTCCAGGCGCTCAAAACACAACGGGACAAAATGAAGCAA
-ATGATCAAGCGAAAAGAGAATTGTTTGGAGAAGGAACGACAATTGGCAAA
-GCAGCTTATAAAGGATGGCCGGAAAGAGTAAGAAATTTCAGAAAATTCAG
-TTTTTTTTATTAAAAAAAAAAAATATATATATAAATTTTTAACTAATTTC
-AGCCGTGCTTTACTGCTTCTGAAGAAGAAACGCTACCAAGAGAAGATTAT
-CGATCAAACCTTGAACCATCTTAGCAAAATCGAGCAAATGGTATTGAAAA
-ATCAGAAAAAAATAAAAATTTTCCAGCAAAAAAATCAATAAATTTCCAGG
-TAAATGACCTAGAATTCGCAGAAGTTCAACAGCGAGTAACCGATGGCCTT
-CGACAGGGAAATGAAGCGCTGAAAAAGATGAATCAACTATTCGATATCGA
-TGAAATCGACAGGATTATGGAAGAAACCAAAGAGGCGGCGGAATATCAGG
-AAGAAATCTCGAATATGCTGTCCGGCCAGCTTTCCAACACGGATGTCTCG
-GACGTTGAGAAGGAATTGGAGGATCTGTTGGCGGCGGAATGGGGCACAGT
-TCAACTTCCAGAGGCTCCGAGCCATGAGCTGCCTGAAGCAGAGCGGGAAC
-GGCAAAAAGGTTGAGATTTGCCGAGAAAATTCCTAAATTTTCCCTAAATA
-AATAATTTTTTTTCAGAAAAAGAGAAGCCACGTCGCGAGAAGATTGCTCT
-GGAAGCCTAAATATTGCTTGTTACTGTGAATAAAATAAATTCATTATATT
-ATTATATTTTTTATACAATTTTGTCTTACTGGCGTTGTTCTGAACGAAAA
-ATTCGTTTAAATAACGCTGTAACAAAAAATCTCATTTTGCGCGTAAAATA
-AAATGCCAGTGACGCAATCACCACGACGAAAAATCGCACAGTTTTGGAAA
-ATTGCGGTTTTTCAAACTTTTTTTCGCTTTTTTCGGATGCTATTCAAGCG
-GCTATAGACTGTTCAAATAGAGATAGAACGGTCAGAAAATGAGAGACATA
-GACAAATAAAGAGACAATTTATTGACTTTTTAGGCTATTCTTTGTTGGAA
-ACCAACAAATTTTGTGTTCCCAGGCTTTTCTTTGCAAATTCTGAAGGGTT
-CTTCTTTGCAGATGCGTCGACGTGTAGCTCTGGACAATGACGAGCATGAT
-GGTAAGTTAAAAAATTGGAAAAAAAAACTTTGGTTTCTATTAAATTTTAT
-TATACTTATTCCCTTTTTATAATTAAAGGCGTCTAGCTCATTCAAGCTCA
-TTCACGACGTTAGTTGACGCATTCCTCCTTGCACGCATGGCCTAGTGGGT
-TAAGGCGCTGAACATCACTCAGAAGTCCACAAGTTCAAACCCAACGAGGC
-TCCCCCGCTTTTCTAACCCTAGCTTGAGCAATCAAATCGGAACGCGTCGG
-AGCTGTCTCGGAGCCAGAAGCCTCATCAAATATTTTGATTGCTTCCAAAC
-AATCTATCGCACGTTTGTGCTCCTCATTTCCGTAATGACGTGTGCATGCG
-TAAGCTTGATCTTTCCAGTTTTCTAGGTGACTCATTAGAGCAATCGAGTG
-AGCAACTCGTTCATTCGGTATTTCATGAGCCAATTGCTATGCGGGACGCG
-GGGCTTCTGGAAAAAAATTAAACAAATATTTTTCGTTTTTTTTTCCACAT
-GTGTGGATCTCAATTTATTTCTTCTTTTTTTGTTTACCTCATTTTATAAA
-ATTCTCCTTTTTTTCTCATTAATTTTTCTGTGGCTTTTTCAAAGATCTTT
-TTCAGATTTTCATCTATTTGTTTTAATGTGGAGCAAAATTGAAATTTGTC
-TGGTAGATACGGTAGCTTTAAAGGCGCATACTAAATTTAAAGTGACAAAA
-TAAATATTTAGTTCCATATGGAATTTCAATTTTTGCTGCCAGGCTGTCCC
-ATTACGGTTTGATCTACAAAAAATGCGGGATTTTTTTTGGCCCAAATAAT
-GTGACGTCAGTGCGTTCTTAACCATGCGAAATCAGATGAGAACTCTGCGT
-CTCAACTCCCGCATTTTTTGTAGATCTACGTAGATCAAACCAAAATGGGA
-CATTCTGACACCAGGTATTCGCCGCGGAACCAGTTTTATACCGTATTTCG
-TATGCGCCTTTAATTCTACCGTACCCGCTTCTGGAAGTTTGGAAGTTTGA
-AAAACTATTAAATAGAATTTATTAATTTTTGCATATTACTTTGTGCAGAA
-TACCTCTAAAAATATTAAAATCCAGATAAACATGGTTTTTAAAATGTTTT
-GCACAAAAAGCGATGATTTCGCTTCGAAGCCACTTTTATAAAACGCCTTG
-TGCGCCTTTAATTCCACCGTACTCGCCAAAATTAAACTGAATGAGCGAGT
-TTTGAACTAATTTTTACGAAAAAATCACGTTCTGATCGGTTCTGGTCTTC
-CTCTAAAATCGGTTCTGGTCTTCCTCTTTGAATTTTCGCGCTCCATTGAC
-AATCGCCTGCCGGACTGGGAAAGCCGTGTACTCCACACGGACAAGTACAT
-TTAGTTTTACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGCCGTA
-AATCTACACCAGATATGACCGAGCCAAAATGGCCTAGTTCGGCAAATTCT
-TCCATTTCAATTTATGAGGGAAGCCAGAAATTCGTGTATTTTTACAAAGA
-AATGTGAAAAAGAAGCTAAAATTTCAATGAAATAGAGATTTTTCCCGGAA
-TCTCACAGTTTCGCAAAATACTATGGATTAAAAAACGCTGAAACCCAAAT
-TTGCGCGTAAAATTCAATGTATAGCGAACATTCACGGATTTCTGGCTTTT
-CTCATATATTGAGATGGAAGAGTTTGCCGAACTAGGCCATATCTGGGGTA
-GATTTACGGCGCGTTGCGTGTCGCGTCACGGCTCGATTTTAGTTGTGAAA
-CTAAATGCATTTGTCCGTGTGGAGTACACGCGTTGTCCGGCGGGCGATTG
-TCAATGGAGCGCGAAAAATTCAATATGGAAGGCCAGCACCCCGTGTTAAC
-ATTTAAAAATTACAAGATTTGCCCCCTCAAACATCCCTGGAAAAACTAGA
-AAAACCTCGTGTGCTTGCCTGACAACAGCTGTTCACCGACAAAAAGATGA
-CGGGGAGGGCTTCAACAGAGCTTGTGTTTCCTCGTCAACTCTTTCGAGAA
-CTGACAGCACTTTTCATATAACTCATCACTAACTTTCGCTGCTCGTGGCG
-GTTTTTTTTAGTTCCCCAGTAATGAGTCAATTTTGTCTGTTGCTCAGAAC
-TCTCAATTACCGATGCTATTAGCGGAAGGACTTTTGGAGCGCCGGAGCCA
-GAGCAAAATTCATTTTTATTTGAAAAATGAGTGATGAGTTTTTCTCTCTG
-TTTTTCCATGTTTTTCTCGTTATTAGGCTGTAACTTTCCACATACACTTG
-GTGTCAGAGAGTCCCATCACGGTTTGATCTACAATAAAAGTGTGACGTCA
-GCACGTTCTTAACCTTGTGACAATAGTTGAAAAATCTGCGTCTCGTTTCC
-CGCATTTTTGTAGATCACACCGTGATGGGACTCTCTAACACCACGTACAC
-ATGAAAATTTCGCTGAGAACAAATTTTTGCGCGTCAAATCTGATGTATCC
-GGACTGTACCGATATCAATACATCGAATTTGACGCGCAAACTCCGTTTTC
-ATGGGGAATTGTTGAAAAAATTGTTTAACTTCCGGAAAATTAACATTTTT
-CAGAGAAAATCAAAATTTTTCTGTTTTTCCTTAAATTTCTAGGAAAATTG
-TAGCAGATTTTGTTGAAAAAATTCAAATTTCCACTGAAAAAAGTGAAAAA
-AGAAGACGATGTGTAAGCCTAAGCCTAAGCCTAAGACTAGGTCTAAGCCT
-AAGCCTGAGCCTATGCCTCAGCCTGAGAATAAGCGTGAGCCTAAGCGTGA
-GCCTAAGTCTAAACCTAAGCCTAAGCCTAAGCCTGATCCCAAGCCCACAT
-GGTGCCAGGCTGACCCATAACGGTTTGATCTACAAAAAATGCGCGAAATT
-TTTTGCCCAAAAAATTTGACGTCAGCGCTTTCTTAACCATGCGAAATCAG
-TTGAGAACTCTGCGTCTCTTCTCCCGCATTTTTTGTAGGTCTACGTAGAT
-CAAGCCTAAATGGGACACTCTGACACCACGTGAAGCCTAATCCTGAGTCT
-AAGCCTTATCCAATTTCCGAAAAATCAATAAAAATGCAAATAACATAGAT
-ATTCCCGCCTAAAGTTCAATAAATTATTTTTTTTTTGAAACTTTTTTCAA
-AACTTGCGAATGCATAGTACCAAAAAACGCCATATTTGACACGCAATTTT
-TGGATTGACTTTTTTTTGAATTGATATGTCATGAGCATCACTCAAGTGGT
-TCCAAAAAGGCGTCAAGTACTTGAGCCCTCCCTGAGCCACCACCGTCTCC
-AGAGAGCAGCCGAAACCAAAAACAAATAGGGGGAAAATGAACAGTTCTCT
-CTGTTTCAAAATCTATATATTCCTGTTCTTTGTATTATCTTCCGTGCGGC
-TTCAGCCCTCTACTGCTGCTCCAATTCTTTTCCATGTTATTTACCGTACC
-GATTAGACGAATGAACAGGACCCCCTTTTACCGTTCAACCGATGAGCCAA
-TGTGCTCTTTGTTGGCTAATTTGGGTGTTTTGCTCATTTGGAGGAACACT
-AACTTCCCTCTCTAACTACACACTACGTGGAAGAGTTTTTTCAGATTTCT
-AGGCCTCGCAACTTTCCTTGGTGGCCCAGAAAAACGCTTAAAACTTCAAG
-GTCAAAACGTTCATTTTTGTTGAAAAAAATCGGTTTTTACTTGAATTTTT
-GTAAGTGGAAGAGTTTCCTAAATTTCTAGGCCATGTGCTTTTTCCTGCTT
-ATCTGAAAATTTTGTTCAAATTTTCTTTTTTCACTTAAATATTCCCCGAA
-AATCTTGTCCACAAAAAGAAATTTTTGAACATTCAGATCATTTTTTTAGA
-ATGGAAGAGTTTTCCAGATTTCTAGGCCACATGGCTTTTCCTGGTGGCCT
-AGAAAATTTTCTGTTGGAAGAATCAGGTTTTTACTTGAATTTTCGTAAGT
-GGAAGAGTTTTTTACATTTCTAGGCCACGTGATTTTTTCCTGATGGTCTA
-GGAAACTTGTTTTCTCTAATTTTCCCCGATTTTGGATAATATTTGTTTAG
-TGGAAGAGTTTTCAGAAATTCTAGGCCACGTGGTTTTTTTTGGAAAAGAA
-ATATTTAGATCACATTAACATGTACTTTTATCAGATTTTTTGCCAAAATA
-CCAATTTTACAAGCTATTTTTTTGTTATATGTAAATTTTGTGGAAGAGTT
-TTTAAAATTTCTAGGCCACCTCTAGATGCACGTGGTGTCAGAGTGTCTCA
-TTTCGGTTTGATCTACGTGGATCTACAAAAAATGCGGGAGACGAGACGCA
-GAGTTCTCACCTGATTTTACATGGTTAAAAACGTGATGACGTCACATTTT
-TTGGGCAAAAAATGCCCGCATTTTTTGTAGATCAAACCGTAATGGGACAG
-CCTGACACTACGTGTACGTGCAGATGGCCTAGAAATGCTAAAATCTGTTT
-TTTAAATGTAACTTTGAAAGTGAAAGAAACAATTAGAAACAAGTTGGCTG
-TCGCCCCCAAAAAGTCTGTTCTGGCTATGTGGTCGCGAAAAGAGAAAACT
-CGGCCACCAATTTTTTTCCACGGCCAGATCTATGACGCTATGACGTCACA
-TTATCAGCTTGTTTCCGATTTACACACACATACACGTACACTTTCTCCGT
-ATCACTTTCACTGATAGCTTGAAACGAGATTAATCATCATTCCAGCTATT
-CTTTTTTATTTATTAGGTTAATGCCACTACTACTATTATTTTTTCATATT
-AAAAATACAATGAACTATGTAGACATAAATTCAAATGAGATGCCAAAAAG
-TGAGTTCGAACTTGTGGAAAATGTGTGTTTTTTAATAAATTTTTCAAAAA
-TATAGTAAATTTCTGAGAAATTTTGATTTGAATTCCCGCCAAGCATTTTT
-TTGAAAATTTTGAATTTCCGCCAACCATTTTTCCTTTTTTTTCAGAAAAT
-GTGAAAAAATTTTCTAAGCAAATTTGAATTCCCGCCAAGATTTTTTTTGA
-AAAAATTTCGAACTCGCGCTAAAGTATTTTCTAATAGCAGGATTATTGGA
-ATCCCCGCCAAAACATATTCTCAGAAAATTTGAATTTCCGCCAAAACTTT
-TTCTGATAAAATTTAAATTCCCGCCAACCATTTTTTCCTGAGAAAATTGG
-AAGAACATATTTTCAGTGAGAAAATTTGAAAATATTTTTTTCAGAAAGTT
-TGAATTCCTGCCAAAACATTTTCTAAGAAAATTTGAATTCCCGGCAAAAC
-TTTTTCTGATAATTTTTTGAAATTCCCCGCAAAAATTATAGTAAATGAAG
-ATGATTTGAGCAAAGTTATGACGTGGCCGCGGAAAAAATTGATGGCCTAG
-TTTTCTCTTTTCGCGGCCACGTAGCCAGAACAGACTTTTGGGACCGTACA
-ACCAACAAATATTTCTTCCCCTTTCAAAAATACATAAAAACCAGATTTTG
-ACATTTCTAGGCCATCTAGAGGTGCCTCGTGGCCTAGAAATTTGAAAAAC
-TCTTCCAGAAAATTTGTTCTGTATTTCTTGAAAGTGCTCCAACAAATCTG
-TGCAAATTTTAAAAACGTTTCAAAATATTTATTGAATAAATTCTTTTGTT
-GCACAAAGAGGTATCAAATCAGACCACCAGATTCGACCGTTGATCATTGT
-TTCAGTTGATAGGTAGGCAGGCGTGGTTGCCTGAAACCTGCCGGCCTCAC
-GCTGGGCAAGAGGCAGGCCGCCTTAATGTCAGGCAGGCAATGCCTACATG
-CAAGCCCTACTTCTACGATTATCTCGAAATTTAGCGAGTTTTTATTTGTC
-CAAAAAAAATCGCAACTGAACAACATGAAAAAGCCGCCAAAAACTTTCAT
-AAAATTCTGTCCGTAGTTTGCCGTTTCTTGCGTCTCATGCTTAATCCCTA
-CTGTAATTATGCTGAGATTTTCGATCTTTTTCACTTTTTGAAAATTTTTG
-GCAATTCTTTTTAAGTTTGTTGAGATTGTAACTTATGACAAACAGTAACT
-AAAAAGCGTGGCCGCCAAATTTTCTAGGCCATCAATATCAGTTGCGTCAT
-TTCTTCACCATACTGGACCGAGAAATATTCTAGGACATGTGTTTGCGTCA
-TTCCTCTTCCATTCCTAGTCCCAAAAATTCCAAGACCACTGGTAAGTTTG
-GCCGAGAAATATTCTAGGCCATCGATGTTAATGACGCCATTTCATACCCG
-AATTGGCCACTAAAATTCTTAGGTCATCAGTGACGTCACACCTCTTCCAA
-GCCTTGGAATGAGCATTTCTAGGCCCTCTAATCTAGGCTTGGCCGTCAAA
-TTTCCTAGGCCAGGTGACGCCATCCCTCTTCCATGCTCGACCACTAGGTC
-AAATGACGTCACTTCTCTTCCACCTACCGCACTTTGATTTCCTAGGCCAC
-CATGTGACGTCACTTCTCTTCCATCTAGGTTTCCCATGCCCTTCTCCTCT
-CACGTGGTATCAGAGTGTCTCATTTTGGCTTGAATACGTTGATCTACAAA
-AAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTCGCTTGGTTACG
-CACGTGCTGCCGTCACATGTTTTTGGGCAAAAAATTCCCGCATATTTTGT
-AGATCATACCGTAATGGGGTGTCCTCTTGTTAAATATCGAAATTTCACTC
-AAAAATTTTGAACGTTGAGCTTTTTGTCTCTGGTCAATTGGTCAGCCGCG
-CAGTGTTCCGGTGTTTGTGCTCATGTTTTCGTGTGCACATTTGTGCTGCT
-GCTAAGGCGTATTTTGTTCCGGGCGGGGACAGGGGGGAGAAGCAAAAATG
-TGTCAAATTTTGTTTGTTTTGCCATTGATATTGTCCTTCTGCTCAGAGGA
-TTTCCTCATTTTACGCCGTATGTGCAAAAGCATAATCACCACAATAATTT
-TGAATATAAGTTTGCAAACGCGCCCTATTGATAATCCTCGCCCGTGTAGT
-CTGCGTGCACGTGGTGTCAAAGTGTCCCATTTTGGTTTGATCTCCGAGAA
-ATGCGGGAGAAGAGGTGCAGACTTTTCAACTGATTTTGCATGGTTAAGAG
-TGTGCTGGCGTCACGTTTTTCTGGGGGCAAAAATTCCCGCATTTTTTGTA
-GATCAAATTGCAAAGCGCCCTATTGATAATCTTAGCCCGTGTAGTCTCTT
-GTTTAATTTTCAATTTTTCTGGTTCGGCACCTAAACTGTAACTACGACAC
-TCGGCAAAGTTAGACTGTTAAACTCCGCCCACTTAATGGCACCTTTTTTG
-CAGAAATGTACCCAACCGACAAAGAGCAGACACGGACCACATTTGAGACG
-AGAAGTCGGCGGAAACGGCTGGCGCAGGTCGCCGCCACAATTGCTAGCGT
-GATATTACTCTTGTTGGCAGGTAAGTAAAAAACTACGACACTCCGAGACC
-AAGAAAAAAATCGATAATCGAAATATTGAAAATTGCAAAATTTATTTCGC
-CGGATCATTTTCCATATCGATTTTCTGAATGGTATGGTGATAGCAATCCT
-CATCGTAGGCACATCCCTGGTGAACCACGTACTCTTGACCTGAAAAATAG
-GTTTCGTTCGGTGGAGCACATTTGCATACACTGACCTTTAATCGGGTGGC
-GACACGCTTTACACTTGAAACATGCCATATGCCAGTGGACATTGAACGCC
-GACACGCATCTCTCAAAAGTCGGCAATTTGCACGCGTGGCATTTTGGTGA
-CTTGGCCGCCCGGTGACAGTCCGCGCAACGGAGCGCGTTACCGTACGGCG
-CGGGCATTGGATAACACGGAGTCATGCCAATGACTGTCTGGAATTTTGGA
-GAAATTTATTGATTTTTTGACGGAATTTAATGAAATAAGGAAAAATCAAT
-AATCGACATATTTATTTCGCAAAAAAAAAAAAACATTATTGATTTTCACG
-GATTTCTGTCTTCCTCATAAATTGAAATGGAAGAGTTTGCCAAACTAGGC
-CATTTTGGCTCGGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCG
-CGTCGCGGCTCGGTTTTTGTAGTAAAACTAAATGTATTTGTCCGTGCATG
-GAATTCTGGCTTCCCTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGG
-CCATTTTGGGTCGGAGAGATTTTGTGTAGATTTACGGCGCGTTGCGTGTC
-GCGTCGCGGCTCGTTTTCAATTGTAAAACTGCTGTATTTGTCCGTGTGGC
-GTACACAACACTTTTCCACGCGCTGTCCGGCAGGCAATTGTCAGTGGAGC
-GCAAAAATTTAATTAGGAAGGCCAGAACCCCGTGTCCGTGTGGAGTGCAC
-GACTTTCCCGCGCGTTGTCCGGCGGGCGATTGTCAATGGAGCGCGAAAAA
-TTCAATGAGGAATGCTTTTTGCAAAAACAAATTACATAGGCTTCTGGCCT
-TCCTTATTGCATTTTTCGCGCTCCATTGACAATCGCCTTAAAGCAGGGGA
-GTGTGTGTGTGTGTACTCCACACGGACAACTTAAAATGAAAACCGAGCCG
-CGACGCGACACGCAACGCGCCGTAAATCTACTCCGGCCGTGGCCGAGTCA
-AAATGGCTTAATTCGGCAAATTCTTACATTTCAAAATATGAGGGAAGCCA
-GAAACGTGTGTCACATGTTATAAAATTAATTTTGAAAAAAAATTATTAAA
-TTTCGCAAAAATAAATTATCGCTTTTTGTAAGAATTTATCGAATGAATTG
-ATTAAAAATTTATCGAATTTTAGCGAATCAGAAAATATCGATTTTCACTA
-AGAATTTATCGAATTTTTCGATTTTCGCTAAAATTATCGATTATTGCAAT
-GTTTTACCTGACAAACCGAGCATTTCAGGCATGAAATATGATACATCTCG
-TCTTGAATTTTGATCACTTTTCCCTGCAAAAATCGATATTTTCAATTGAA
-TATATTTCCAAAAATGTGCTCACAGTTTGAGCTTCTTGACGAGTCAGCGT
-TGTTGTGCAGCCTTTGCAATGGATATTATATGGAAGAACAATCTTTTGGA
-GACGTTTATTGTTCGACGAGAACAACATTTTTCGAATTTTTGAAATGATT
-AATTTAAAAATTTAAAAAGGAGAAAATTGAAGAGAAACGTGGGAAAACGT
-ATTGATTTTTCAAAATTTTATTGATTTTATAATCACGGGGTTCTGGTCTT
-CCTCATTGAACTTTTCGCGCTCCATTGACAATCGCCTTCCGGACAACACG
-TGGGAAAGTCGTGCACTCCACACGGATAAATACATTTAGTTTTACAACTA
-AAATCGAGCCGCGACGCGACACGCAACGCGCCGTAAATTTACCCCAGATA
-TGGCCGAGCCAAAATGGCCTAGTTCGGCAAACTCTTCCATATGAGGGAAG
-CCATAAATCCGTGTATAATCAAACGCGCAATTTAAAAAAATCGGTAGTTG
-AAATTTATCGATTTTCCCTCGATCTTATCGATTTTTTAAAAGACTTATCG
-ATTTTTATCCAAATTTATTATTTGAAAAATCAACGTTTATTGATTTTTGT
-CATGATTTATCGATTTTCTCAAGAGATTATCGATTTTTGCTGTCGATGCA
-CCATGTGCAAACTTCGCCACGTTTTTTCGCGGCGAGACCCAAATTTTTTG
-AATTTTCAGTTCTCGGTCTGGTATACGGTAGCTTCTACCTCTACCGTCGA
-TATGTGACAGATGCAAATGATAAACGGGATAATGATGAATATTTGCGAAA
-ACTCGTTCGTCAAGTCAATGACTCGCCGGAGACCACGTGGAAAGCCAAAT
-TCAATAAGTTTGGTGTCAAAAATCGATCTTACGGATTCAAATATACGAGA
-AATCAGACGGCGGTCGAGGAATACGTGGAACAAATTCGAAAATTTTTCGA
-GTCTGATGCGATGAAGCGGCATTTGGAGTGAGTTAACTCAAATTTGAGCG
-GGAAACAACGATGCTCCGCGCTCTCGCCGCATGTAGTTTAGCGCGTAAGC
-TGTGATGCATACGATAGTCCTGCAATGCATCATATTTTACACGCAAATGC
-AGAAATTACCAAATTTCGAGAAAAATCTATATTTTCCTTTTAAAAATTAT
-CGATTTTTTAAACAAAACTTCTGAATAATTGGATTTTTCCAGAAGTTTTA
-AAAAGTTTTGGGTACAATTTTAAAAAGACAGCAAAATGTTCGTAAAACAC
-CAGGAAAGAATTTTGCGCTTAATATCTGATGCTTCGTAAACTCCACGGGC
-TTCCGGCCTTAAAGCCGAGCTACGCGCCGTAAATCTACCCCGGCCGCAAC
-GCGCCGTAAATCTACCCCGGCCGTGGCCGAGCTCAAGTGGCCTAGTTCGG
-CAAAATCTTCCATTTCAAAATATGAGTGAAGCCAGAGGCGCGTGAATGAT
-GACTTCCACACGGTTCGGTAGAGCGCATTTACACTTATGTACCCTTTGCC
-GGGCTGCGTTCAAAACCTAAAAATTTGAAATTTTGCGCGTAAGATCTGGT
-GCATTGGGTTCTGAATTATTTCGACAAAACATGGTGCATCATCCCAAAAA
-TTGCAATTTTGCAGTGAACTTGAGAACTTTAACAGCTCCGATGTTCCGAA
-AAACTTCGACGCTCGTCAGAAATGGCCGAATTGCCCGTCAATCTCGAATG
-TTCCAAATCAGGGAGGATGCGGGAGTTGCTTCGCGGTCGCCGCCGCCGGT
-GTCGCCTCCGACCGTGCCTGTATTCACTCGAATGGAACTTTTAAGTCACT
-TTTGTCCGAGGAGGATATTATTGGATGCTGCTCGGTGTGCGGAAATTGTT
-ACGGCGGAGATCCACTGAAGGCCTTGACCTATTGGGTTAATCAGGGACTT
-GTTACAGGTAAGCGGTGACGTCATAGGTGGCCTAGGAACCTTTGATCTAC
-AATGTGATTGAATTTTATATCACGCAATTTGTAATAATTTCTAAAAAAAA
-TTATCGATTTTTCTGAAAATTAACTTGTTCCAAATTTTGAACGAATTTTC
-TAGAAGATTTTTGCAATTTATCGATTTTTGCAAGCTATCGATTTTTCCCG
-CAAACTATCGATTTTTCTAGAAAATTATCGATTTTTCTAGAAAATTATTG
-ATTTTTCTAGAAAATTAACGATTTTTCTAGAAAATTTTCGATTTTTCTAA
-AAAAAATTATCGACTTTTTTCTCAAAAGTATCGATTTTTGCAATTTATCG
-ATTTTTTGAAATTTATCGATTTTCCCTGCAAATTATCGACTTTTTTGAAA
-ATAAGCTTTCCCCAAAAATTTGAACGAATTTTCTAGAAATTATCAACTTT
-TGCAATTTATCGATTTTTTTTTTGCAATTTATCGATTTTTTGCAAATTAT
-CGATTTTTTGCAAATTATCGATTTTTCCAAACAATAACGATTCTTCTAAG
-CCCGTGGAAGAGTTTTTCGAAAACCTAGGCCATCTCTATTTCCAGGTGGC
-CGTGACGGTTGCCGTCCCTACTCGTTTGACCTGTCGTGTGGAGTCCCGTG
-CTCGCCGGCCACGTTCTTTGAGGCCGAGGAGAAGCGAACATGTATGAAGA
-GGTGTCAGAATATCTATTACCAGCAGAAATATGAGGAGGATAAACATTTT
-GGTTAGAGATATTTTTTTTTAGAAAAATAGAGAAAAATTTCTGGGATCTA
-TTCAAAAATGGCAAACTTTTTGGAAATTATCGATTTTTTCCGGTAAATAA
-TTATCAATTTTTTTCTCGGAAAATATCGATTTTTTCGGAAATTGACAATT
-TTTTCGAAAATTATCGATTTTTTCCGTTAATGATCGATTTATTCGGAAAT
-TATTGATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATTTTTT
-CCGATAATTATCGATTTTCCGGTAATTATCGATTTTTTCCGATAATTATC
-GATTTTTCGGATAATTATCGATTTTTTCCGATAATTATCGATTTTCCCGA
-TAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTATCGAT
-TTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGATAAT
-TATCGATTTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATTTT
-CCCGATAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTA
-TCGATTTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCG
-ATAATTATCGATTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGA
-TTTTTTTCCGGAAATCATGAATTTTTCCAATAATTATCAATTTTTTCCGA
-TAATTATCAATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATT
-TTTTCCGATAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGTAAT
-TATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACTTTT
-CCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTTCGATAATTA
-TCGACTTTTCGGGTAATTATCGATTTTCCCGATAATTATCGATTTTTCCG
-GTAATTATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGA
-CTTTTCCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTCGATA
-ATTATCGACTTTTCGGGTAATTATCGATTTTTTCCGATAATTATCGATTT
-TTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGATAATTA
-TCGATTTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATTTTCC
-CGATAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTATC
-GATTTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGAT
-AATTATCGATTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATT
-TTTTTCCGGAAATCATGAATTTTTCCAATAATTATCAATTTTTTCCGATA
-ATTATCAATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATTTT
-TTCCGATAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGTAATTA
-TCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACTTTTCC
-GATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTTCGATAATTATC
-GACTTTTCGGGTAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGT
-AATTATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACT
-TTTCCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTCGATAAT
-TATCGACTTTTCGGGTAATTATCGATTTTTTTCCGGAAATCATGAATTTT
-TCCAATAATTATCAATTTTTTCCGATAATTATCAATTTTTCCGATAATTA
-TCGTTTTTCCCGATAATTATCGATTTTTCCGATAATTATCGATTTTTCGG
-ATAATTATCGATTTTTCCGATAATTATCGATTTTTCCGATAATTATCGAT
-TTTTCCGATATTTTTTTTCGGAAATGGCTGCCCCATCGCGGTTTGATCTA
-CAAAAAATGCGGGAATTTTTAGCCCAAAAACATGTGACGTCAGCACGTTC
-TTAACCATACGAAATCAGTTGAGAACTCTGCCGCATTTTTTGTAGATCTA
-CGTAGATCAAGCCGCAATGAGACACTCTGGCACCAAGTGTCTGTAATTGA
-CTTCACGGAAGAAAATATATTTTTATTTAATGCGCAAAACTAAAATTCAA
-AATTTCGTTTCGACCAATACACCATATTTTAAGCGCAAATTTCAATTCAA
-ATTTTTGCAGCAACCTTTGCCTATTCAATGTATCCCCGCTCAATGACAGT
-ATCCCCCGATGGAAAGGAACGAGTAAAGGTGCCAACAATCATCGGTCACT
-TCAACGATAAGAAAACCGAGAAGCTGAACGTGACCGAGTACCGTGACATC
-ATCAAAAAAGAAATTCTACTTTATGGTCCCACCACGATGGCGTTCCCAGT
-TCCCGAAGAATTCCTTCATTATTCGAGCGGAGTGTTCCGCCCGTATCCAA
-CTGATGGTTTCGACGATCGAATTGTGTATTGGCACGTGGTTCGATTGATC
-GGATGGGGAGAATCAGATGATGGAACACATTATTGGTTGGCTGTTAATAG
-TTTTGGTAACCATTGGGGTGATAATGGTGAGTTTTCGTGCAAATTGCGCA
-CGGCCCGGCAAATGGTACATCCATACAAATGCGCTCCACTGATAATTTGA
-GTTTAGCCAGGTTTGGGCGCGTTTTAAGGAAAACGCCTTGGTCCAAAAAA
-TTTAGAATTTGATTTCGGACATTTTTTATATGCATCACAAAAATGTTGGA
-CGAGCCGTTTTTGAGAAAAAGCCCAGGTATACGGTAAACAAATTGCGTAC
-AGGTGCCACTTCCCGGGCCGTGATGCGCGTTAAATATAGTGCTTTTTAAG
-AATGCGTGTTGCGCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAA
-CTACAGTAATTTTTCAAATGACTACTGCAGCGTTTATGTCGATTTACGGG
-CTCGAAAAAAAAGTTACAGCGATATTCCATTTTTTCTCATTTTTTGCTTA
-TTTTTATTTAGTATTCTCACGGTGTGTCATTCTGTCCCATAACGGTTTGA
-TCTACAAAAAATGCGGGAATTTTTCGCCCAGAAAAATGTGACGTCAGCAC
-GCCCCTAACCATACGAAATTTGTTGAGAAATCTGCGTATAAATTCCCGCA
-TTTTTTGTAGATCACGCCGAAGTGAGACACTTTGACACCACGTGTATTCT
-ATCTAAAAATAAATTATTTCAAAAATAGAGCCCGAAAAAAAAAATCGACA
-AAAGCGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCGCTACGAGA
-TATATTGATATTTTGCGCGTCAAATATGTTGCGCAGTACGCATTCTTAGA
-ATTTTGTGTTGCCGTAAATAAATTTGGACGTCAAATACAGTGCATATTGC
-GGTCGATCGGCTACAATATATTTTGCGAGCAAATTTGGAAGTTTTGCGCG
-TCAAATATGATGTAGCCGATCGGTCATGTTACAAAACACCATATTTGACG
-CGCAAAACTTTAATTTTGGACAAAAAGTCAGAGAATTAGTATTGCGTAAA
-AAACTGGCAATTTTTTTCAGAACATTTCTGAAATTTTCAATATATTTTCA
-AACTTTTCGCGTCAAATATGGTGCATCAAGTCGCGAACCAAATACACTCT
-AACACGTAGTGCCAGGCTGTCCCATTATAGTTTGACCTACAAAAACGCGG
-GAATTTTTCGCCCAAAAAAATGTGACGTCAGCACGTTCTTAACCATGCAA
-AATCAGTTGAGAACTCTGCGTCTCCTCTTCTCCCGCATTTTTTGTAGATC
-AACGTGATTCAGGCCGAAATGTGACACTCTGACACCACGTGGCCCTAATT
-AACTCGTAAAAATCACCGTTTTTTTTCCAGGACTCTTCAAAATCAACACA
-GATGACATGGAAAAATATGGTCTAGAGTATGAAACAGCAGTCGTCTAATT
-ATAATTCGGCAAAAATTTTTTGTAAATAGTTAAATATTGTCCACCTATTT
-CATCCCCACCCGATTGCATCTCAACTTGTCCCATTTCCGAGAAAAATCAA
-TTATTTATTTTTATTCGGCCATCATTTATTAGCTCCCTCATTCCATAGTT
-TTTTTTTAATTAGATTTTTTTTGGATGCTAAAATTTGCCATTCTCATAGA
-CATTTTCAATATTTGTGTAAAATAAATCATTTTTCTGGTCTTCAATTGAT
-GGAAAAAAACAAAAAAACAATGCGCGTCAGGTTTGGTGTATTGTGTGCAA
-ACACCGAGCGCATATTTTGAAATTTATTTTTTTTTCGAATTTATTAAAGT
-TGCTGATTTTCTTTAATTTCAGGCTTAAAAATGTCGGATTTTGTGCCAGA
-AACCGAGGAAAATGAAGAAGAATCTCAAAAAATCGATGAAATCCATGAAA
-TCCCAGCTCAAGCAATTATCATCGACCAAAGTGAGGAAAATGCTGACTTT
-ATCAATTTTCAATTACTTTTTGCATTTTTTCTAGGTTTTTCTCGACGATT
-TCTCAACAATAAATGGTACGGAAAGTACGGCGAAGATGGGGATCTTCTGG
-AGCACATCGACGAGGACTGGGAGCCCGTAGGCCTCGACGAAGTGGAATTT
-CTGAGCCAACTGTGGTTTGAGCAGGAGGATCAGGAGAAAAAAGCTCATAG
-GCACTATGATTGGGATGAAGAAAAGAAGGAATGGGTGCCGAAGGCCAAGC
-AGGAGGAGGTCAATGAGGATTTTATCGCAGAATATCAAGCGAATTACGGG
-GTTCAGTATGATGATATTTATAAAAAAATGGACGAAGAATTGCAAGAAAA
-AGCGGCAAAAGCTCAAAAAGAAGATGAAGAGAAGAAGGAGAAGAAGCGGA
-AGAAAAAAGTTGGCTTGGGAGCCGGGGAAGACGCTAAAGAGGGCTGGCTT
-GACCTAGGAGATAAGGTTCATGCGGTTTATGTGTCAAATCTTCCGGAAGA
-TATTACAGACGAGGAATTCCAGAAATTTATGTCAAAATGTGGAGTTATTC
-AGCCGGATATTCGAACGAATAAGCCGAAATGCAAGCTTTACCGGGAGGAA
-AACGGCAAACTCAAAGGCGACGGAAGATGTTGTTATATTAAGAAGGAATC
-TGTCGAGCTTGCCTGTAACATTCTCGATGGAGCGAACTTAAACGGGCGGG
-AAGTGAAGGTTGAGGAAGCTCGATTTGAGATGAAGGGCGATTTTGATCCG
-GCGAGGAAGCGGCGGAAATTGACTGCGGCGCAGAAAAAACGATATATGGA
-GCAGCAGAATAAGTAATAAAAAATATTTGGTGAAATTTGAAATAGCTCGT
-AAATCGACATTAAGCTGAAAAAATGAAAAAAAACCAAAAAAAATCGTATT
-ACGGGAACACAAAATCCTGAGAATGCGTACTGCACAACATTTTTTTTTTT
-TTTGACGCGCAAAATATCTCGTAGCGAAAACTAAGACTACTGTAGCACTT
-GTGTCGATTTACGGGCTGCTCGATTTTCGAAATGAATTAAAAGAATTTAT
-TTATGTGATATTGAAATTGGGCAAAAAATAGGAAAATAATACAAAAAAAT
-CTAAAAAATTTATTTCAATAATCGAGCCCCCGTAAATCGACACAAGCGCT
-ACAGTAGTCATTTAAAGAGTAGTTTTCGCTACGAGATATTTTGCGCGTCA
-AATATGTTGTGCAATACGCATTCTCAGAATATTGTGTTCCCATAATATAT
-CGACGAAAAAATTGGCCCAAATCGTGGATTTTTGTCCGAATTTGATGACA
-AATGGCTTTGAAAATCACAAAATTTCAGAGAAAAATTTCGATTTTTGGTT
-TAAAAAAACAAAAATTGAAACCCAACAAAATTGTTAACTTGAAAACCTGC
-TGAAAATCTTAGAATTTTCAGATTTCACCCAAAAAATACCAGATTTAACT
-CGAAAATTGCGAATTTTAGGCCAAATTCCTTGCATTTTTCATAGAAAAGA
-TAAACTAACGACACAAAATCAAATGAAATTGACTAAAAAACTATTGAATT
-TTGTAGAAAAATCCCGATTTTTGCCTAAATTTGCAAAAAAAATATTTTAT
-TTTAGCATTTATTTTTCTTAATTTTCACACTAAAAATTACGAAAAAAGAC
-AAAAAAAATTTTTTTCATTCAACAATTTTTTGGGCTAAAATGTGTAATTT
-TTGCGGGAAGAATTCGAAAAATTATTAAAAATCGTAGAGACTAACTGAAA
-ATCAATTTTTTAGGGACCAAAAAGCCAACTTTTGCCGATTTTACTCAAAT
-TTTTCCGTGAAAAATCCGGAATTTTTAAATATTATTTAATTGCGAAATTT
-TACAATTTTTACACCTAAAATAAGGGTAATATGGTAGCTGGTCTCGACAC
-GACAATTTTTTTGTTAAATTCTAAAAAAGGTGTGCGCCTTTAAAGAGTAC
-TGTAATTTCAAACTTTATGGAATTTTTTTTTGATTTTTCAAATAAACTAC
-GAAAAATCGAAGAAAATTCCACAAAGTTTGAAATTACAGTACTATTTAAA
-GGCGCATACCTTCTAGAATTTTACAAAAAATTTGTCGTGTCGTGACCGGC
-GACCGTATTACCCTAATTTTTGGTGTAAAAATCGTAAACTGTCCGGATTT
-TTCACTACGAAATTCAAATTCGAGGAAAATCGAAAAAAATTGGTTGTTTT
-GGTTCCTAAAAAATATATTTTCAGTTATTTTCTACCATTTTTTAATAATT
-TCTCGAATTTTTCCCTCAAAAATTACAAATTTCAACCAAAAATTCTGATT
-TTTCCTTTCCAGAATCTTCGAATGGACGCCCGATAAGCCACGTAACTACC
-GTCCAAAGTCGGACTGTACGGTTATTGTCAAAAATCTGTTCACTCAGGAA
-ATGATGAACAAGAATGCGGCGTTGATGTTGGATTTGAAAGAGGAAATGAC
-ACAAAGTTGTCAGAAATATGGAATTGTTAAGAAAGTCGTCGTTTATGCGG
-TTGGTATTGAGGAAATTTGTGGAAATTTCGATTTTTGTAAAAAAAATTTA
-TTCTAAAAAAATAAATTAAAAAAAAAAGATTTAAAAAATTTAAAGCTAAT
-TTTCGAAAAATTGAAGCTAATTTTGGAAAAAAAACCGAAAATTTTTTTTT
-TTAGAAATGTCGATATTCATAAAAAAATATTCTAAAAACGGGATCAAAAA
-TTTTTGAAGCTATTTGTCGGAAAAATTTTTAAAAATGTAAAGCTAATTTT
-CGAAAAAAAACCCAAAATTATTGGATTTAACAAATTTTCAAAAAAATTGT
-TCTAAAAAAGATAACCTTTAACATTAAAAAAATTATGGCTATTTTTCGAA
-AAATTAAAAAAAAACAATTTTTAGCTAATTTTCGAAAAAAAACCGAAAAT
-TTGTGGAAATTTCGATTTTCAAAAAAAATTTATTCTAAAAAAAAATAAAT
-TTTTAACATTAAAAAATGGCTATTTTTCGAAAAAACCGAAAATTTTTGGA
-AATTTCGATTTTCGAAAAAAAAGTATTTTAAAAAAACAATGAGAAATGGT
-TATAAATTGTTCTTTCAAAAATTTTTTACAGCTTTTTTTTTCGAGAAATT
-TAAAAAAAAAACAATTTTTAGCTAATTTTAAAAAAAGTAAAGCTAATTTT
-CAAAAAGAACCCCAAAATTGATGCATTTATCGATTTTTAAAATAAATTGT
-TCAAAAAAAGATAAATTTAAAAAAAAAGTTATTGGATTTTTTAAAGTTAT
-TGGATTTTTCAATTTTCAAAAAAAAATCATCAAAATGTATAAATAAATAA
-AAACTATGGATTTCGAAAAATTAAAAAAAACAATTTTTAGCTAATTTACG
-GAATTAAAACAACAAAAAATTTCGGAAAATCGAAAATTGTTGGTTTTTTT
-TTTCGATTAAAAAAATTCAAAATCTTCTGAAAGACATTTTTAAAATTTCC
-AAAAAAAAATTATGAGTATTTTTCAAAAAACAAATCGAATTTTGATTAAC
-TTCCGATTTTTTTGACATTTTTTGAAATTTGAAAATCATTAATTCAAAAA
-TTTTTATTGAAATAATTCAAAAATTTTTATTGAAAAAAAACGAAAATTTT
-TGATTTTCGCTTGAATATTTCGGAAAAAACAATCGATTAAAAAAAAAATA
-GGCTTCTAGTTATTTTTCAAGAATGCTTTTTTTTTGACAAACTGCTGATT
-TTTTGTCAGTTTCGTCGATTTTCGTTGTAAAAAATCAAAAATTCAAAATT
-TCTTCTATTACGAGTGCACAAAATGCTGAGAATGCGTATTGCACAACATA
-TTTGACGCGCAAAATATCTCGTAGTGAAAACTACAGTAATTCTTTAAGTG
-TCTACTGTAGCGTTTTCGGAAAAATTCCACTTTTTTTATTTAAAAAAAAA
-AACGAAATATTTTGATTTTTTTTTATTAAAAAAAACGAAAAATTTTGATT
-TTTTATTAAAAAAAACGAAATATTTTGATTTTTTATTTAAAAATGAAAAA
-TTTTGATTTTCCAAAAAAAAAGGCTCCTAATTAAAAAAAAAAAATTTTTT
-TGAAAAAGTGCAGATTTTTGTCTTAAAATTTAAATCAAAAATTTTTAAAT
-AGACTTTTTCCATCAAATTTCCCCAATTTTCAGAACCACCCGGACGGCGT
-CGTATCGGTAACCTTTCCAACGACAGAAGAATCGGATATGGCTGTAAAAT
-ATCTTCACGGACGAGTAGTTGACGGTCGGAAATTGACAGCCGAGCTCTGG
-GATGGCCGGACAAAGTTTAAGGTCGAGGAGACGGAAGAGGATGAGGAGAA
-GCGTCGGAAAGAGTACGAGAAGTATATTGAGGGTGGAAGTAGTGAGACGA
-AGGAGGAGAGCGACGACGATGATGACGATGAAGCTGAAGATAATTGATTG
-ATCTAAATTTTTTCTGAAAAATTATTTTTAGTTTATACATTTTTCCGAGA
-GGAGCAACCGATCAATTTTTACCAAAACTATGTTCAAAATCGCCCAAAAA
-TATCAAATTTAGTGAATTTTCGTTTTCATGGATTTTTCGAAAATTAGCTT
-TAAAAATGTTTGCCAAATTTTTCGACGATATCGCGATATTTTAAAAATTT
-CGAACAAAAATTGCCTAATTTCAATTAAAATCCCTTTTTTCGAAATTTTC
-TAATTTTCTGGGCCAATTGGGTCGTTTAAAAAGAAAAATGGCCAAAATTT
-GAGAGTTTTAAAAAAATTCTAAAATTTCAATCCTACGATTTTCCGGGAAA
-AAAATTTTCTTGGAAAATTGCTTTTTTTTTGAAAAATTATTTTTAGTTTA
-TACATTTTTTTTCCGAAAATAGGAACAACCTATCAATTGAAATTTTCAAA
-AAAAAATTAATTAAATTTGGAAGCATTTTCCGAAAAATTGCATGTTTTCG
-GTTTTCTAGAAAAAAAAAACTAAAAGAACGAAAAATTTCACCAAAAATCA
-AATATGAAAATACTTTCCTAAAAATCTGAAAAAACCAGAAATTTTCAATT
-TTCCCTATTCAAAAAAATTCAAAAAAAAAACCAAATTTCAGTTAAAATCC
-CTTTTTTCGAAAATTTTAAAATTTTCTGCGCCATTGTGTCGTTGATTTGA
-AATTTTTTTCTAAAAATCCGTGAATTTTTGAAATTAAACAAAAAATTTGA
-AAAATCAAAAATTATCGATTTTTCAACGAAAAAAATTCAAAAATTTCAAT
-CTTACGATTTTCCTAACTAAAAAAAAATTTGAAGTAACGAAAATGTTCAA
-TTTTTTCGAAAATTTTCGAGGTCATTTAGAGTTTTTTCTGTGAAAATTGC
-ATTTTATATACTCATTTAAATTAATTTTTATATATTCCTTTCCCGAAAAC
-TTCAAAAAAAAAACCCAGTGATACAATTAAAATCGAGATAATCACAGACA
-AAGTAGGCAGTAGGCAGGCAAAAAACAGGCACATATTAAGGTAATACAAA
-ATTCTGATAATGCGTACATCGCAACACATTTGACGCGCAAAATATCTCGT
-AGCGAAAACTACAGTAATTCGTTAAATGGATACTGTAGCGCGCTAGTGTC
-GATTTACGGGAATCTTAAAGAACCTAAAGAATTGTAGGAAAAATGGAGAT
-CCCGTAAATCGACACTAGCACGCTACAGTATCCATTTAAAGAATTACTGT
-AGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTTCAATACGCA
-ATTTTAAAATTTCGTGGTCTCATAATAATACACAATTAACTAGTAAATCT
-ACAAAATCTACAAAATTCTCTTCATCAACTCTTCCACAGCTCGATCGACC
-TGTGCATGAGTCTCCTCGTACGCCCACAGAGAGCACAACGCCACGTTGCT
-ATTGTCGAGACGTTCCTTATTCGAAATCTGTGACGACATGCGATCCTTGG
-CCTGATCTTCAGTCAGGTTATCCCTCGCAACGACTCGACGGACGGCTTCA
-TCTGCTGGCACGAAGACGGTCCACGTTTCGGCGAGCGTTTTGTGCCATCC
-GGCTTCGATTAGTGCGGCCGCTTCGATGACTGAATGAATTTTTTTTTCAA
-CTTTTGCAGAAAAAATTATGATTTTGCAAAATTAACGGGGAAAATTGGCT
-GTTTAAAAAATATTTATTATTTTCGCGTTTTTTTAAAATAAAAATCGATG
-AAAATTCTGCAAAGTTTGAAGCTTCAGTACCCTTCAAAGGTGCACACGTT
-TTAGAATTTAGCAAAAAATTGGCGTGTTCACGATTTTTTGGTTAAATTCA
-AGAAAGTGTGCGCCTTTAAGGAGTACTGTAATTTCAAACTTGCTGAATTT
-TCATCGATTTTTCACTTTTTTTCCACGATTAGTAAAATTTGTGTTATTGT
-AGATTTTTTAAATTTAATACCAAATTTTCCAAAAAATCGAAAAAAAAAAG
-AAAAAATGTAATTTCGTTATTTTCAAAAAAATAAATTGAAAAATTGAAAA
-AAAATCCAAATATTCGATTATATTTTTTCAGAAAATAAAAATGAAAATTG
-GAAAAAAACATATTTTTGGGTTTTTCGATTTTCCAAAAAATTTAAACATT
-TAAAAAATCTAAATTTTCGATTTTTTTCAAAAAAAAAAAATTAAAAATCG
-CACAAAAACCAAAAAAAAACATTTTTGGCCGATTTTCCAAAAAAAAAAAG
-AAAAATAAACAAAAAACAAATATTTCAAAAAAAAAAACAATTTTTTCCGA
-TTTTCCAGAAAAACAACTGAAAATCGGAACAATAATTTGTTTTTTCTATT
-TTTCAAAAAATATTGAAAAATAAAAGAAAAAACGGAAATTTTCGATTTTT
-TTCCGATTTTCCAAAAAAAAAAAATTCAAAATCTCACAAAAACCAAAAAA
-AAAATGAAAAATCAAAGAAAAACGAAAATTTCGTTATTTTCAAAAAAATA
-TCGAAAAAACTTTTTTTTCTTCCGATTTTTCTGAAAAACACTGAAAATTG
-TGGAACAATAATTTTTTTCTATTTTTTTGGTCTCCACGATTTTTCGCGAA
-AAATTTCAAAAATTAAAATTTTTTTTTAAATCCAAATTTTCACTTCCCCC
-CCCCCCCCCCCCTCACCAACAACTTTCGCCGTCGACTTCTTCACAATCTC
-CATAGCTTTCTCTTTCACCTCCGGCCAAACAAGCTCACTCAGCTCGCGGA
-GCTTCACCTTATCCGAAAACACAATCGTTCCAAGCTTCCGGCGGTCTACA
-ACTCCATCGACAACGACATCCCCTCCAAAATGTTCGCCGATTTTTCGATT
-CAACGAGCTTCCCCGTTCATAGCACGTGTGTGCGAGCTTATCACAATCGA
-TAACATCGAAATTATGCGTTTCACGGAGATATTTCCCGATATGACTTTTT
-CCCGACGCAATTCCTCCGGCGAGCCCAATGATGTACGGGGCGCCCGTTTC
-TCTTGGAACCGCCCGAGCTGGACGGAGCAAGTGACCCAGATCCTCTCGTC
-GTCTGGAGCTTGAGCTGATCTTTGTCTCTTTCAGGATCTCATCGGATCCT
-TCCACCAGCTCGACAATTATCACATCCAGCTGCGACATTCCTTGCTCATT
-TCTCTTTTTGTTCACCGCATCGGCACCTTTAATGGTCTCCCGGGACACTA
-CTATCGCTTCGAGGTCTTTTATTCGTGTTGAAGGACCGAATGGGTCGATT
-ATTGGCTCCGCGAGACATTTTGCCTGGAAAATTATGGGGGTTCTATTGAG
-CAAAAATGACCATTTTTGGAAAATTAGAAAATCGGAAAAAAAAATTTCCC
-GAAATTTTTTATTTAGAAAAGTTTTTAAAAAACAGAAATTATATATTTTT
-TGAGTTTTCCAAAACAAAAAATCGAAAAAAAATATTTCGATTTTTCGGAT
-TTTCCAAAAGAAAAAATTTAAAATATCGAAGTTTTTAGATTTGCAATAGA
-AAAATTGAAAAAAAAAACGGAAATTGTATTACGGGAACAGAAAATTCTGA
-GAATGCGTATTGTACAGCATATTTGACGCGCAAAATATCTCGTAGCGAAA
-ACTACAGTAATTCTTTAAATGACTACTGTATCGATCAAGCCCGTAAAGCG
-CTACAGTAGTAATTTAAAGAATAACTGTAGTTTTCGCTACGAGATATTTT
-GCGCGTCAAATATGTTGTGCAATACGCATTCTCAGAATTTTGTGTTGCCT
-TAATGCAATTTCCGTTTTTTTTTCAATTTTTTCTTTTGAAAATCTGAAAA
-TTTCGATTTTTTCCAATATTTTCTTTTGGAAAATCCGAAAAATCGAAACA
-AAAATTTTTTTCTATTTTTTAAATTTTTTTTTTTGGAAAATCGGAAAAAA
-ACCAAAATTTTAGTTTTTTAAAATATTTTATGGACCAAAAATATCGATTT
-TTCCTAAAGTTTTATAGAAAACTGAAAAATTTAAATATTTATTGTTTTTA
-ATTTTTAAATTTTTATGGAAAAATTTCGATTTTTTTTTTTGAAAAAAAAG
-CTTTTTTTAAATTTTTCTTTATTTTTGGAAAATCGAACATTTGCTATTTT
-TTTCGATTTATTAATTTTTTTGTTGGAATTTCTAAAAATCGATGTTTTTT
-TTTCAAAAATCAGCGGTTTTTCCGAAAAATGGCAAAAATTTTTTTAAAAA
-ACATTTATTTCTTTTCCTATTTTTCGAAAAATAAATAATTTTTTCTGGCA
-ATTTTTAATGAATTTTTGATCGGTAAACTCTTACAGTCCCGGAAATATCC
-TCTACAAAATCGACAACTTTCTTAATCCGAAACTCCACAGGCTCAATCAT
-CTCGAATAATGATTTTTCTGGAAAAAAACCAATTTGTTAAAAGTTTTATT
-TCCAAGCTATAATCTAACTAATAATCATATCCTTATCGGTGACCCCCACG
-ACAATAACATCAGAAGCGAGCTCGGCAGCCTTGTTGAGCAACACTTTGTG
-CCCATTGTGAAGCCGATCGAATGTGCCGCCCAACACGACTTTTTTGTACT
-TTTTCGCCGCCGCCAATTTTTCCGCGTTCTCCAGCAGCTTTTCCTCGCCG
-ATTAGCACATAATTCTCGGGATTTCCGCGGATTTCCGACACAACTAGACG
-GACGTCGAGCTTCGGGCATGAGCTCGCCGATGTTAGGTAGATTTTCGAGA
-CTAGCTCGTCGGTTCGCGGCTCGTCCGGGTTTAATCTGCAAGGAATCCTT
-GTTAACCTTGATTTTCGAGCCGGGAAAAAGCCCAAAGCACTTTACCTCAC
-ATAAAGCTTCGAGCTTAACGCGGCGGCCGCAGACGTGAGCAATTGCTTCA
-GTTTTTGCACATTTTTGCTATTTAACACGAGAAGTCCGTATTTCGAGCTC
-ATTGAGAATGATGAGAAATATCAGGGAATATTCCTCAAATTTTAAATAGA
-AAAATTCGCTGCCACGTTCGCTGCTCTTATCGGCTGCGCGTCTCTATTTC
-ACACACTGTCTCATCTCTCGTCTCGCGTCTCTCGTCTCTAACGCGTGACG
-GTGGAGCGCACTTCCCTCCTTTTTGCTGTAAAATCTTTCAGACATGCCGG
-AAACAAGAAAAACAAGAAATTATTGAACTGAAAATAATGTAAACGTACTC
-ATCGTATTTTTAGCTTCAAAATAAGATATCTTAGAGCATATAATATTGCT
-TCTAAACGAAAACCAAAACATCGCTGAAAATGTTGTGAATTTTATGAAAA
-TCTAGGATCATTTTTCCCATTTTTATGAAAAACAACAATAAAATGAGAAA
-AATTACATGGGAAAACCGAAGAAACTTAAATTTCGCGGTCAAAATTCGAA
-TAGAATTACTGTATTTTTCGCTCAGAGATATTTTGCGCGTCAAATATGCT
-GCGCGTGCGCATTTTCAGCGTTTTTTATTTAATAAAACAGTAATAAAATG
-ATTAAATGCATTTTGTGTGATTTTCAGCCCAAAATGTTTGAAATAAATTG
-TTGTTGTTCAAGCCAGCATTTTTAAAAACTTAAATATATGGGAAAACCAT
-AAAAATAACACAAAAGTTTGGCAAAATTTTGGAACTACAGTACTCTTTAA
-AGGCGCAAGCCCTTTAAGACAAATTTGTCGTGTCGAGACCGGACAAATAT
-TCTAAATTTCTTTTATACATACGCAGATTTAAAGTACAGAAGAGCGCATT
-TGCACATTGCGCAATTTCTAAATTTTTTCTAACAATAAAAATTAAAACCA
-AAATACTTTATTCAATACCACAAATACCACAAGTTCATTTATCTTATTCA
-ACCTCTTCCGCCGACGTCGTCTTGTTGTTGCTCTTCCCCTTCTTCTTAGA
-CTTCTGAAATTTTCTCATATATGCAAACGCGCTCCGATCTAACAAAAAAC
-CTTCTTCTTCTTTTTCTTCTTGTCTACATCTTCCTTCTTTGGCTGCTCTC
-CAGATTCTCCCCCGGCTCCCGGATCGCTCTTCCCAAAGTCCATCTCCGGC
-TTCAGCCCAACCTCAGGCGGCGCGATCATCAGTACCTGCTGGTATCCAGG
-ACCCTTGTAATCCGTCATACAATCCCAATCTGGTGGCTCCTGGGTATTTG
-ACTTAGACTTCTCAAACAGCTTCTGGATCCCATCAGCGATACGATCGTAC
-TCCACAAACTCAGCGACATCCTTGGGCTCACGGATGATGGTCAGAAGATC
-AAAGAACCCAGCAGTGGTCTCCGGAGTGGTTCTCCAAACCGACGCGACCA
-TCGGTGCAGTGATGCGACGTTTCAAGTGGAGCACGTCCTGTTCGCTTTCC
-TTGTTGAGCAGTGCCCATGGGAGAGCTCCGAGGAAGAACTCGAGCACCAT
-GTACCACCAGGACTCCATGTCGTCCTTGTAGCCGAGATTTTTCTGGGAAG
-AAAAAAGTTGTTTTAAAGAAATTGTGAACGGTAAGGTTACCCCCTGGTGA
-GCATGAACGCTCGCGTACTTGACGACTCCTCTGTAGTGAATCGCATTCTT
-TCTCATCTGCTCCTCAGCTTCGTCGTTCTTCTTGACGAATCTTAATTTTA
-AAAAAAGTTTTCGGGGTAGATTTACGACGCGTTGCGTGTCGCGTCGCGGT
-TCGATTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACGCGAC
-TTTCCCACTCAAAATAGGATGGAATTGAATTCGGAGGTGTCACTGTTGCA
-AATTCGGATTGTCTGAATAAATATAAAGTGAGATTTTGAATTTTGCTCCA
-TTGATAATGGTGTTTTTTTTTGAAATTCTGCAAACATTAATTTCTAGAAA
-ATTTGAGTTTCCTCCAAAATTTTTCACAGAAAATTTGAATTCCCGCCAAA
-ATTTTTTCTCTGAAAATTTGAATTCCCGCCAAAATTTTTTCTCTGAAAAT
-TTGAATTCCCGCCAAAATTTTTTTCAGAAAATTTTGAACCCCGCTTAAAT
-TTTTCTGAACTAGGCTATTTTGTCTCGGCCATATCTGGGGTTGTGGTTTA
-CGGCGCGTTGCGTGTCGCGTCGCGGTTCGATTTTAGTTGTAAAACTAAAT
-GTATTTGTCCGTGTGGAGTACGCGACTTTCCCACGCGTTGTTCGTCAGGC
-AATTGTCAATGGAGCGCAAAAACTGCCGACCGCTCCAAATAACTACTTTT
-TGCACTTCATTGCATACACACAGCAGCTCGCGGCGTCGGCATGAGGCCCG
-CATTTCGCGCCTCACTGGAAGCCCCAGATGCCAAAAAATCTACCTCGGTC
-TCTTGCACAACCCGAAATCCAACAGGTAAACCTGATGGTGCTGTCCGTCA
-ATCTCTCTTCCAATACAGAAATGCGATGGCTTGATGTCGCGATGAATGAA
-TCCATTCCGGTGGAGGTCACGAATCGCGGCCAGCGTCTGCTCGGCCAAGT
-GAAGACCCGTCGCCATGCTGAACTTGCGATCCTTGTTCGTGTTCATCATC
-AGCTCGTATAGGTTCTCGCCATACTGAAATATGGAATTTGGCTGAAGTTA
-GGCAACGAAAAATGGTACCAATGGCATCACAATGAAGAGGAAGCGATTTG
-GAACCGTGCCACGTTCCTCGATATTCGTGAAGAATGGAGATGGGTGGTGG
-ATCGACGCGAGGACAACTGACATTTGACGAAGAAGCTGGAATTTTTTTTG
-CTCTCTAGAAACGGTTTTCACGGCGGCCGACAATTTCCGAGTTTGGAAAC
-TCACTGCACTTAGTCATGTAATTTTATAATGAGTGGCTAAACTCGGAAAT
-TGTCGGCCGCCGTTAAACCACAAGACAGTTGGTTCCTTCGCCGCGACCGA
-CACTTTCCGGGTTCCGCGCCGCACTATACAGAAGGCTGGCTGCGCGAGGC
-AGGCTAGACCGCGGCAGGTGTTTTGGCGCCTACATGGACTTGCTAGCTTG
-TCAACAAGGCAGCCTAAGCGTGCCTGCAAAAGGTAGGCAGGCACGCTTCT
-AAAACCGTGCCAACACACCATAAATAACTCACCGAGCTCTTCATGTTCAA
-CGCCTCGCATTTGACCGCAAAAAACTTCCCATCACTCTCGCGTTTTACCT
-TGTAAATCGAGCCGAACGTGCCCGTCGCCAGCGGTTTCGTGACTTCATAG
-GTGCCGTTTTGTGCTCGAATGAGCTCCTTTTGCGGTTGTCCAGGTCCGAC
-TGACGTCATTGATTTAACACCGAAATGTCACGATTATTCGGAAGTGAATC
-GATAATCGAAAATCGGAGACTCGAAACTTTTCGAAATAGATTTTATTATC
-TTTGTAGGGTTTTTGGAGTTTATGATGATAATGAGGAGGGGGGATTTTAT
-GTGGATTAAGAGGCTACGAGGAAAATATTTATTTTTTAAATATTTTATTG
-TCATTCTTTTCTTTTCTAGATTTTCACGTTTCTTATTATTAAAAAAAAGT
-TTTTCAGAATTTATTTCAAAATCCCGAACATAATCTGAAATTCAGAAATA
-CTACAAAAGAAAAACGAAAAAAAAACTGAGAAAAATGGTCCAGATTCTCC
-AGTATTGTTAGGCGTACCCCCCCCCCCCCCCTACCTACCTACCTTCCTTC
-CTCGCCTACATGCATACCTGCCTACCTACACGCCTGAGTGCCTGCCTACC
-TTCCTGCCTACGTTTATGTCTACATTTTTTGCCAGCCTTTTGCCAGTATA
-CTTTACGTGTGTTCTTAATTACGTGCCTATCTACTTACCTTTCTTCCTCG
-CCTACATGTATACCTGCCTACCTACACGCCTGCGTGCCCGCCTCCTGCCT
-ACCGACTCACCTACCTGTTTGCATACATGCCTGCCTACCTTCTTGACCAT
-GCCGAGGCGCCTATCTTACTACTTGCCTACCTACACGCCTGTCTATTGCC
-TACCTGTTTGGTTACATGTGCCTGTGCCGTACCTGTGCCTCAAAAACATC
-TTTATTTTGTAATAAATAATTTTAATAAAACTTTATAAAACAAAAAAAAT
-ACAAAATTGAAAATAACCTAACAAAAAGTCTTTTCAAACCCCTTCGAACT
-GCTCAACTGATAAAAATTCGTGTTATACTTCAACAATTTGAACTGCAAAT
-CCGATTTGACACAGCTAAACTTGTATTTTGTCGCTTTATTCCTGCACAAA
-TGTGCTCCTGGGCAATTGAGACTATTCGAATCGGTGTAGTAGGTGGTGAA
-GCTCTTTGAGCATCTTATTGTAGAGTGATCTTCTCGAAGACGGCCCAGAA
-TTGCGGTGATTGAGGGATTTGTGATGGTTCTGGGGATTTGATGTAATAAA
-TTTAAATTGTGTGGTTTAGATGCAGAAAAAAAAACTAAGAATTCAGACTA
-AGACTTGAAAAAGAGCCAAGAAAAGGGCGGAGCCTATTATCGATTTTTCC
-ACTTGCCGTTTATGAAGTTTATCTACACTTATATAGTCTATTATCAATAC
-TAAGTTAAACAGTATATGGTATAATAAATACTATGACTGCAAGAAAAATC
-AATAATAGGCTCCGCCTCTATATTTGTTTTTTCTCGTTTTAAATCCAAAC
-TTATTCTACGCCGAACCTATATTCTTTTATATTTTTTGAAATTATATATC
-CTTCTATTTATAAGATTTTTCCAGCCAAATTTTTTTTTCTCAGAAAAATT
-GAGTTTCCCGCCAAAATGGGTTTCTCAAAAAATTTGAATTTCCCGCCAAA
-ATTTTTTTTCTCAGAAATTTAAAATTTTCCGCAAAATTTTTCTCAGAAAA
-TTTGTATTCCCCGCCAAAAATGTTTTCTCATAAAACATGAATTTCCGTCA
-AAACTTTCTCATAAAATTTGAATTTCCCGCCAAAATTTTACGAGAAAATT
-TGAATTTCCAGCCAATCTTTTAATGAGAAAGTTTGAATTCCCACCAAAAT
-GTTTTTTTTTCTCAGAAAATTTGAATATTCCGCAAAAATGTTCTGAGGAA
-AATTGAATCTCTAGCCAATTTTTTCTCATAAAATTTGAATTTCCGGTCAG
-CTTTTTTCTGAAAAAGTTTGAATTTCGCGCAAATTTTTTTTCTCAGAAAT
-TTTAAACCTCTGGCTTTATTTTTCTCAAAAAAATTAAAATGTCCTGCCAT
-TTTTTTAAAAAAAAAATTCACAGAAAATTTGAATTTTTAATTTTAAAATT
-CACAGAAACTGACTTCCTTATCGACATGCCAATTGTCACACGATCCGCTG
-ATTTCAGAGCTTCACCGCCCGTAAAATTGCCACGTATCATTGAATCCACG
-TCAGCAGAGTCGGGAATTTCAAAAATTTTACTATCATCCATTTGTTTGCT
-GGAAGCGTTAATTATCGATTTTTATTTTTTTATTCGTTATATTAATTTTA
-TTCATATTTTTTGAAAAATAAAATCAATTTCACTCTCGGATTTCTGGCTT
-CCCTCATAAAATGAAATGAAAGAGTTTGCCGAACTAGGCCATTTTGGCTC
-GGACATATCTGGGGCAGATTTACGGCGCGTTGCGTCGCGGCTCGTTAAAA
-ATAGATTTATTTGTCCGTGTGGAGTACACGACCTTCTCACGCGTTGTCCG
-GCAGGCAATTGTCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAAT
-CCCGTGTTCACTGATTTTTTGAATTTACAATTTTTAAAGTATCGAATAAA
-AATTTTAATTGAAAAAATCGATTTTCAAAAAGTTTTAAAATTTTTTTAAA
-ATTTGAATTTAAAAATCGATTTTAAAAATTATTGATTTTCGAGCAAACCT
-TTTCAATTTGTACGGATGTTCCACGGGCTCATTGAGCCAAACACTATCGA
-TTAAAGATGGGCGTGTCACCACTTTTGCCACGCCCCTTTCATTCCGATAT
-TCCAATAACCCGACGAATATCTCTGATTCGTAATAGTTGGCGAACTCGGA
-AAAATAGGAATCGAACGATTTCGGCACGAGAAGATCAGACCACTCGAGAA
-ATGTGATGAAGCTCCCCGAGCTCTGAAAGTTTGGATAAATAGAGTTGTGA
-GCCTAGTGCAAGTTGAAAAAATCGATAAATTATCGATTTTCTGATTGTAC
-GAATTTAGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTC
-AAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAAA
-TTTTGGCGGGAATTCAAATATTCTGAAAAAAAATTTGCCGGGAATTCAAA
-ATTTCTGAAAATAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAATTT
-TGGCGGGAATTCAAATTTTCTGAAAAAAATTTAGGCGAGAATTCAAATTT
-TCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAAATTTTGG
-CGGGAATTCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCACATTTTCT
-GAGTAAAACTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAG
-AATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGAA
-AAAAAATTTGCCGGGAATTCAAAATTTCTGAAAATAAATTTAGGCGAGAA
-TTCAAATTTTCAGAGAAAAATTTTGGCGGGAATTCAAATTTTCTAAGAAA
-AATTTTGGCGGGAATTCAAATTTTCTGAGTAAAACTCTCTGGCGGGAATT
-CAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAA
-TTTTGGCGGGAATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAA
-ATTTTCTGAAAAAAAATTTCGGCGGGAATTCAAATTTTCAGAAAAAAAAT
-TTTGGCGGGAATCCAAATTTTCTGAAAAAAAATTGGCCGGGAATTCAAAA
-TTTTTGAAAAACATTTTCGGCGAGACTTCAGGGGTTCTCATAAGAATTCA
-AATTTTCTGCAAAAAATTTTGGCGGGAATTCAAAATTTCTGAAAAAAAAT
-TTGCCGGGAATTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAAT
-TTTCTGCAAAAAATTTTGGCGGGAATTCAAATTTTCTGCAAAAAATTTTG
-GCGGGAATTCAAATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTC
-TGAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGA
-GAATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGA
-AAAAAAATTTAGGCGAGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGA
-ATTCAAATTTTCAGAGAAAAATTTTTGGCGGGAATTCAAATATTCTGAAA
-AAAAATTTTGGCGAGAATTCAAATTTTCAGAGAAAAATTCTGGCGGGAAT
-TCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGTAAA
-ACTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAA
-ATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGAAAAAAAAT
-TTGCCGGGAATTCAAAATTTCTGAAAATAAATTTAGGCGAGAATTCAAAT
-TTTCAGAGAAAAATTTTGGCGGGAATTCAAATTTTCTAAGAAAAATTTTG
-GCGGGAATTCACATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTC
-TGAGAAAAATTTAGGCGAGAATTCAAATTTTCTGAGAAAAATTTTGGCGG
-GAATTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAATTTTCTGC
-AAAAAATTTTGGCGGGAATTCAAAATTTCTGAAAAAAAATTTGCCGGGAA
-TTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAATTTTCTGCAAA
-AAATTTTGGCGGGAATTCAAATTTTCTGCAAAAAATTTTGGCGGGAATTC
-AAATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGAAAAAT
-TTTGGCGGGAATTCTAATTTTCTGAGAACATTTTTGGCGGAAATTCAAAT
-TTTCTGAGAACATTTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTGTG
-GCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTC
-AGAGAAAAAATTTTGGCGGGAATTCAAATTTTCTAGAAATCAATTTTTTC
-AGAATTTCAGAAAACACCACCCCGGCTATCAATGGAGCGCATTTTCAAAG
-TCTCACTTTATATTTATTCAGGCAATCCGAATTTGCAACAGTGACACCTC
-CGAATTCAATTCCATCCAATTTTGATTTCCCATAAAAATCTGGAAACGAG
-TCAACTGATATTCCTTTGAGACGCTTCAACTCTTCTAGAAATTCGAAAAA
-CGGGCGACTTGTAGTTGCCACGTATGTTTGGAGATGGCCGCCGAAACTGG
-AAAAAAAATTTAAAATAAACTGACAAGTCTATATATTTTTTCTTTAAATT
-TTTTTAATCGAAAAGCACCCCTATTATATAAATTCTTTTTTAACCTACCA
-TTTTTAATAATTGATGGCCGAGTTTTCTTTTTTAGGCCATGTTCAAAAAG
-CCGGTCGGTACCGGTTTTTGGTGACCGAATTTTCAAATTTTCTAGGCCAC
-GTAGAAAAACCAGGTCTTCTTTTCACACATTGATTGTTTAATTTTCTCAA
-AGAACCCCCTCTCCTATAAAATCACGGTTAATAATGGGCGATAAGTCGAT
-GGCCGAGTTTTTTTTATATATTTCTAGGCCATGTAGCAAAAACTGACCCT
-TTTTAACCCCAGAATGTTCTCAAAAATCGTATTTTTTAATTGTGGAAAAG
-CCCAGAAAATTATGTATGCTGCAAAATCACAAGTCGGCGGCCGAGTTTTC
-TCTCTTCCTAGGCCACGCTGCAAAAACTAACCTTCCGTTTACATATTGAC
-TTTTTCAAATAATTTCAAATAAAAATTATTCACTTATAAAATCATTTACT
-TCATGATTGAAAGCTTTTGCAATTGGTTAAAACCGGAAATAAGTCGATGG
-CCGAGTTTTCTCTTTTCTAGGCCACGTACCAAAAGTGTCCCTTTTTTACC
-CCAGAATGTTGTCAAAAATCGTACTTTTTATTTGTGGAAAAGCTCGGAAA
-ATTATGTTGTAAAAAATGAGTCAAGTCGGTGGCCGAGTTTTCTCGTTTTC
-TAGGCCACGCTGCTTAAACTGACCTTCCATTTACATTTTGGCTTTTAAAT
-TCAAATAAAAATTATTCCCTCATAAAATCGTTTACTGTCATTGTGAGAGC
-GGTTAAAAACAGGAAAAAAAATGGTGGCCGAGTTTTTTTTTCTAGGCCAC
-ATAGCAAAAAACTCACCTAGTATACACATGAGCAGCTAACAACACATTCT
-GCCATCTAACATTATTATAAATAGGCGGAGTACATACAACCAAATCCTTC
-GGCTTATTATCCGCCGGCAAATATCGAATTTTCGCGGTATGCCCATTCAC
-AAGAAGCTCCAGCTCCGTGAGCTCTTCCTCAAGCACTATAGTACCCACAA
-GTGTCACGTATTTGCATAAATTATGCGGAGTTGCTCTGTGAATTTGAAGT
-GGTTCGAGTACGGTTTTTGTGTCGTCACTTCGGATTGCGATAATCTTACG
-ACGTTCCCAATGTGCATCCCGAGGCGCGATAAAGGTTAGTGTTACTTGGT
-TTTTGTAGAGACTGAAAAATTTCAAAAAACTTAAAAACTAACGTAGTTTA
-AAACATTATTCTTCTTTTTTTATTCTGAGATATTTTGATTTTGAAAAAAA
-AAAATTTTTTTTACGAAAAAAAAATTGGCAAAATACCTCAAAAACTGTGA
-GTTTGTTGAAATTTAGTTTTTACAACCACGGGAATTAATTTTTTAAATTA
-AAAATATTTTACGTGTAGTCCTCTCGAATAATTTTGAAAAATATATGAAG
-TGTTGAATTCTGCCGAGTTTTTTTGTCCGAGTGGACTACAAAAGTGCAAA
-GAATTTGGAATTTTTCAAACTTTATATTTAACAGCAATCATCAACAACTT
-AAAAAAATTTAGATTAAAAAATTTTTTTTGGAAGTTTTCGAAAAAAATTT
-TGGAAAAATTTTTAATTTTCAGAAAAAAAAACCAGTTTGATTTTTTTCTT
-AAATTCTTTTTTGAAAATTTGTTGAAACTTTTTTTTAAATGCTAGACTTT
-TTTTTTGAATTTTCACGCGGTTCTGGTTTCCCTCATATTTTGAGATAGAA
-GAGTTTGCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTT
-ACGGCGCGTTGCTTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAA
-TGTATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTAGGCGATTAT
-CAATGGAGCGCGAAAAATGCAATGAGGAAGGCCAGAACCCCGTGAAAAAT
-ACATTTTAAAAAATACTTGAAAAATGTTTAAATTTTCTTTTTAATTTTAA
-ATTTGAAATTTTGTAACTTTACAAAAAAATAATTTTTCGAAATTTTTTTC
-AAATATTTTTTTTCGAATTCTTTTTGTTGAAATTTCAATTCTCTGTTCTA
-AAAATCAATATTCCTTACCTGTATCCCACTCCATAATAGTACGCAGAAAC
-AAAAAATAGGTCTTTCTCGTCGTTATCCAATTCTTTAATCTTATTAGTGT
-ATGAATTTCGAACACGTCTTAATGCAGGCAAGGGATGTATTGAAATATGT
-ACAAATGCTAATAATATTACAAATAGATATAGGGTCCTGCAACGAATTAT
-CAACTGCTCGTAGAGTACGGAATAGGGTTTGAATTGAAAATTGTTCAGTT
-TCGTGTCGGAATTCATTTTTATTATGGGGAGGAAAACAATCTAGTGTGGT
-GGTAGTGGTAATGACAATCGCTATTTGAAATCATGTTGAATAGCTGCGAT
-AAGTATCGGGCGCCAGCGTGGCCTAGGATTTGGGAAAACTCTTCCACCAG
-AAGCTAGTCGTGGCCCAGGCTTTGAAATTTGATTATTTGATCAAGAAATT
-TACAACTAAATTTAAAATCAACAGTTAAGACATTTTTCATAGACTTTTCG
-AAAAATTTCTGATTTTTCCATATCAAATAACCTCGGTACGCATCTAACCG
-TCAGTTGCCTCGTGGCCTAGAACTTTTGAAAACTCTTCCACGAGAAGATC
-ACCGTAGCCTAGAAAGTTTTGAAACTTGTGTAGTTCGCTTGGAATTTTTT
-TTTGGTTTTTTTGTCAACTAACTAGGTTCAATAGCTATTAAAAAGTTGCA
-AAATTGGGCAATTTTTGTAAAAATTCACAATTTTGAAACTTCTCTAAAAT
-TATTAATTTTGTAGTAAGAGGACTCAAAATTGATCTTCAAACACTAAAAA
-ATAGCCCCTTTTTAGAATATAGTGGTTTCGAATATTTTTTGAAAAATTAT
-TTTTTTTTACCCAAAAAAAAGGACAGTCATGGCTGAAAAAAAATTTGGAA
-AAAATAAAAAAATTGTCTAAATTTGTTGAAAACGGGTAATTCATGCATTC
-TGAATTCAGAAAATCTAGGTTTAACCCATCAAAAACCATTAAAAGCGGCA
-AAAATGGGTATTTCATTGTAAAAATAATGCATATACAATAAACAATGTAG
-AGGAATGTTCAAAATCTGTAGTTTTTTTGAAATTTTTTTTTTATTTTTTG
-GTTATTTTTTTTGCAAATTTTCTCGTATATTTAATTAGTTAGTTTGCATG
-TTACATGCTAATGAAAAGGTTTTTTTTGCATCCTGATACATATAAAAACC
-GAGAAATTCACAATTTCACAATCAGTAAGGTATTTAATTTTTGTTAACTT
-TAGTCTTCTGCTCCTCTAAAGCTTCTGGAAGAGGACACTTTCTAAATTTT
-CAAAATATTTTTTGCGCCACTTTCCTGTCAAATTTCTGGCATTATTACAT
-CCAAAACCCAATAAAAATCGGAATTCCATAGCTACGACAACGTCAGCAAA
-AGCGGAAAGAAATTTTGTTTGCCTGTCTAACGAGTCACAAAGCATACACT
-GACGTTTCTATCAGAAAAGACAGGATTTCGTATCAAAACAAAAATTGGGT
-GCGATTGCTCGATGCACCATGTGATATTTTGCTTTTTTTAAAAATTATTT
-TGCTCGTAATGTATGGTGCACTTATTCCGTGGCTGCAGAATTTGCACGCG
-GTGTCATAATGCCCATTTCGACTTGATCTACGTAGATCTACAAAAAAATG
-CGGGAGTTGAGACGCAGAGGTAGGGCTCAACTGATTTCGTTTGGTTAAGA
-GCGTGCTGACGTCACATTTTTATGGGCAAAAAATTCCCGCATTTTTTATA
-GATCAAACCGTAATGGGACAGCCTGACACCATGTGAATGCAAACTTTACG
-CGAAAATTTTTAGATTTTTAATAATCTTAGAATTAGCTATGGTTTTATAG
-AATAATATCAAAATTATCCAAAAAAAAAAACACATTTTTTCAAAATTTTA
-GATTTCCAGTTTCTATTTGAACTTTAAAAGACTAATCCAAATTTTGTTTT
-GTTTCAACGATTTTTCATTGATCTCTCCAAAGAATTCATTGAAACACATC
-ATTCACAAAACTAAAAACTCCCCGACTTGGCTTTCATTCCGAGATGACAA
-ACTTTTTGGTGGCAAAGGTTCTTTGGGGGCATAGTATCCAAGGAGACAAA
-GTATCCAGTAGACAAACTGGGGTGTATCTTGGGGGGCATATCTTTGGTGA
-CAACCTTTTTTTCGACTAGATTTTTATATGTATTTTTCAACTAATTTTTG
-TTCACATTTTTCTGGAATAAGTTTTTTAATGCAATTTTCAATCGATTATC
-GGTTATAATTCCCTCACAATTGAATGTATGAACGATGGTCTTTTGGGAAA
-AGCTGTAAAACGTCCAACTAACTTGGAATATCGTGAGGCTCTTCCTGATG
-GTCTGATCCTTCAGCTCCGAAGGATCACATGGGTACCTTCTGATGTTCTG
-ATCCTTCAGATAAGAAGGATCGTAAGGGTACCTCCTGATGGTCTGATCCT
-TCAGATCCAAAGGATCACGAGGCTCTTCCTGATGTTCTGATCCTTCAGCT
-CCGAAGGATCACATGGGCACCTTCTGATGATCTGATCCTTCAGATAAGAA
-GGATCGTAAGGGTACCACTTGATGGTCTGATCCTTCAGCTCCAAAGGATC
-ACGAGGCTCTTCCTGATGTTCTGATCCTTCAGCTTCGACAGATCATATGG
-ATTTTTGACAAAATTTGAAAAAAAAAATTTTGAAAAAAAACTCGAAATTT
-TTTTTTGTTATTCTTCATTCTTTAAAGAATAGTTCAAATTTATCATGATA
-GGACCGAAAACTTTCAAGAAACAGTATAACTATACATGATAATCAGCTTC
-TACCAAATAATGATAAATTCTCCGCGATGACAAACTTTTCGGTGACAAAG
-TATCTTGGTGGACAAACAAAAATTACCGAAAACTGATGTAAGGAATAGTG
-AAATAGAGTCCTATGGACTATTAAACATGTTCAGTAGGTGTATTCAGGAC
-TGTCCGTCAAAATAAAAAAAAGTTTGTCAGACGAAGTTCGAACCTGGGAC
-CTGTAGGATGCAAAGTGCGCTCACTACCACTACACCAGCTATGCGAAAGT
-CGGCGAGCCTCATCGAAGGCTATTATAAAACTTAGTTCGCACGAGTATGA
-TCGACATTCAACAAACAGTAATATCTCTCAACAAGAATTTCTTCATGGAA
-TTGAGGTCATTTGACTATTTTTATCGGTTTTTCAAGTTGAGCATAGGGTC
-TTTTAATTTTTTGAGCATAGAAAATCATGAAAGCTGCCTGTTCCTTGTAT
-CCTGGATCGAAATAGACGTATCTGGCCTAAAATATTTCCTGAACAGTGAT
-CATTTCATGTCCATTGTGTGTTTCTCTGTATTTTGAACCAGAAAGTTGAA
-CAAAAATGATAATATTATATCGAAAAATGGAACAAATACAAATAATTTTT
-AGGCCTAATCAAATTTCCTCCGGATATTGTTTTTTTTGTCATGATTATAT
-GTGTCTAAATTTTTTATAATGTGTTTTATAACAAAATTCGTCATTATTTC
-CTTCATTTCAAGCAAAATTTAACAGTTCGAGCTTAAAAATAGATGTTGCA
-AAAAATTTAATTCGTTTCGATGAATACGGTATACGGTCGGTGTTTGCGTA
-CTTTGGCGTTTGCGTATGAAGCATCCTATTTGACGCACGAAACTTTCAAT
-GAAATTTAATGCAAATTCTGCATCGAAAAGGACATTACGATGGAAATAAT
-GACGAATTTAATTATAAAACACATTATAAAAAATTTAAAAACATATAATC
-ATGACAAAAAAAACAATGTCCGGAAAAAATTTGATTAGGCCTAAAATTTA
-TTTTTTATTTTTTTCCATTTATCGATTCAATATCAACATTTTTGTTCGAC
-TTTCTAGCTCAAAATTCATAGAAACTCACGATGGACATGAAATGATCACT
-TTTCAGGAAATATTTTAGGCCAGATACGTCTATTTCGATCCAGGATACAA
-GGAACAGGCAGCTTTCATGATTTTCTATGATCAAAAAATTAAAAGACCCT
-ATGCTCAACTTGAAAAACCGATAAAAATAGTCAAATGACCTCAATTCCAT
-GAAGAAATTCTTGTTGAGAGATATTACTGTTTGTTGAATGTCGATCATAC
-TCGTGCGAACTAAGTTTTATAATAGCCTTCGATGAGGCTCGCCGACTTTC
-GCATAGCTGGTGTAGTGGTAGTGAGCACACTTTGCATCCTACAGGTCCCA
-GGTTCGAACTTCGTCTGACAAACTTTTTTTTATTTTGACGGACAGTCCTG
-AATACACCTACTGAACATGTTTAATAGTCCATAGGACTCTATTTCACTAT
-TCCTTACATCAGTTTTCGGTAATTTTTGTTTGTCCACCAAGATACTTTGT
-CACCGAAAAGTTTGTCATCGCGGAGAATTTATCATTATTTGGTAGAAGCT
-GATTATCATGTATAGTTATACTGTTTCTTGAAAGTTTTCGGTCCTATCAT
-GATAAATTTGAACTATTCTTTAAAGAATGAAGAATAACAAAAAAAAATTT
-CGAGTTTTTTTTCAAAATTTTTTTTTTCAAATTTTGTCAAAAATCCATAT
-GATCCGTCGAAGCTGAAGGATCAGAACATCAGGAGGTACCCATGTGATCA
-TTCGGCTCTGAAAGATCAGATCATCAGGCAGAGCCTCATGTTCTTTTGGA
-GCTGAAGGATCAGAACATCAGGAAGAGCCTCATGATCCTTTGGATCTGAA
-GGATCAGACCATCAGGAGGTACCCTTACGATCCTTCTTATCTGAAAGATC
-AGATCATCAGAAGGTACCATGTGATCCTTCGGATCGGAAGGATCAGATCA
-TCAGGCAGAGCCTCATGTTCTTTTGGAGCTGAAGGATCAGAACATCAGGA
-AGAGCCTCGTGATCCTTTGGAGCTAAAGGATCAGACCATCAGGAGGTACC
-CTTACGATCCTTCTTATCTGAAGGATCAGAACATCAGAAGGTACCCATGT
-GATCCTTCGGAGCTGAAGGATCAGACCATCAGGAAGAGCCTCACGATATT
-CCAAGTTAGTTGGACGTTTTACAGCTTTTCCCAAAAGACCATCGTTCATA
-CATTCAATTGTGAGGGAATTATAACCGAAAATCGATTGAAAATTGCATTA
-AAAAACTTATTCCAGAAAAATGTGAACAAAAATTAGTTGAAAAATACATA
-TAAAAATCTAGTTGAAAAAAAGGTTGTCACCAAAGATATGCCCCCCAAGA
-TACACCCCAGTTTGTCTACTGGATACTTTGTCTCCTTGGATACTATGCCC
-CCAAAGAACCTTTGCCACCAAAAAGTTTGTCATCTCGGAAAGAAGGCCCC
-CCGACTTTGCGCGTAAGATATGGTGAGACCCTAATACATCATATTTGACG
-CGCAAAATATCTCGTAGCGAAAACTACAGTAATTTTTTAACCGTCTACTG
-TAGCGCTTTTGTAGATTTACGGGATCTCGATTTTTTTAATGATTAAAATT
-AAACAAAAAATGAGAAAAGAACACGAAGAAACGAAGAAAAATGAAATATC
-GATGTCACTTTTCGGAAAAAAAATTAATTTCAAAAATTGAGCCCGTAAAT
-TTACACATGCGCTACGGTAGGCATTTAAAGAATTACTGTAGTTTTCGCTA
-CGAGAAATTTTGCGCGTCAAATATATCGCACAATACGCATTCTCAGAATT
-TTGTGTTCCCGGAATAATTTATTTATTGGTTTTTTTGGTTGTATTGGTCC
-CAAAAATCAACAAAAAAAAATTTTTATGAAAAATTTCTGTTTTCTTCCGT
-TTAAAATCAAAAGTTGGTTTTTTTTGTTGCTTTTTTTGATAAATTTTTGC
-AACCACCCTGATTTATATTCCCATAAATATTTAATGTCCCGCTTATGATA
-TCTACTGCTTCTTTGCAAAATTCCTACCTGCGGACCAAATACACCATACT
-TGACGCGCACTTTTTTTTTGATTTTCAGCTGGACAAACACATTTTCAGCA
-TGATTCTGACTTATTTATTTAACTCTTATCACTCTTATCGTTAAAAAACG
-CCCTTATAATCATCAACCTATTTTCATTGTCATTCAAAAAAAAAAACTAT
-TTCGTACTCGTCGATCGTACTAATTTGTCATCGTTCCGTTCCGTCGAGCA
-AAAATCAATGTAGTTTTACGTTTTCCGTTGAAAAAAAATCCAAAAAAAAA
-TCCAAAAAAAATCCAAAAAAAAATTCCTTGTTAATTAAAACCGTGAATAA
-AAAATTCAAATAAAAAGTTCAAACGTTTCGTTATAAAAATGTACACCGGT
-AAGCTCAAAAATATACATTTCAGATTCTAACAATGTGCGACGATACGCTC
-GCATTTTGTAGTCCAGCTCCATTCAGTGATGATGTAGAGGTTATTAAACA
-ACGTGAGGCGATCGATTATTCCACACAAATCACTCTGGAAGATGCGATTT
-CTGGGAACGGTAAGTGCGCTCCGTTGTACTCATAGTTCGCTGAATGAAGG
-CATGTATAAGTTCTCAAATTTTCAAATGAAAATTGCCAAAAAAGGTTTTT
-AGTTAAAATTTAAAAAATTATCGATTTTTAAATTTATGAAAATTTTTTCG
-AAAAATTTGTGTTTTTTGTTTTTGTTTTATTGATTTATTGATTTTTTGGC
-GAAAATGTGAAAAATCGAAAAATTATGGATTTTTTCTTGGAATTAAAAAA
-AAAAAACTTTATCGGCTAAGCGAAACTTGCTTTTTCGGTTTATTGATTTA
-TTGATTTACTTGAAAAAGTACTTGAAAAAATCAATACTTTTATCACGGGG
-ATCTGGTCTTCCACATTAAACTTTTCGCGCTCCATTGAGAATCGCCCGCC
-GGACAACGCATGGGAAAGCCGTGTACTCCACACGGACAAATACAATTAGT
-TTTACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGCCGTAAATCT
-ACCCCAGATATGGTCTGGTCTAGTTCGGCAAAAACTCTTCCATTTCAATT
-TATGAGGGAAGCCAGAAATCTTTGTTTTTATTTTATTTTGAAATCTCTAA
-ATTATCGATTTTTTGGAAAAAAAGTTGTTTGAAAATTCGATAATTTTTTA
-ATGATTTTTTGGAAAAATTAAAATTTTCGCTTTTCAAAAAAATCAAAAAT
-TATTGATTTTTGAAAAAAAAAACACGGCATGCAATTCCTAGACCACCAAT
-CAAAAACCTCTTCCAGTGACTCGTCCGGTCCGTGTCTACGCTGACGGTGT
-CTACGATATGTTCCACTACGGCCACGCGAATCAATTCCTGCAGATCAAAC
-AAACTCTTCCGAATGTCTACCTTATTGTTGGCGGTGAGTTCGGCCCGCGA
-AATTCAAAATTTTTAATTTAAAAAAAAAACGATTTTTTCCAGTATGTTCC
-GACGAAGAGACTATGAAGAATAAGGGGAGAACTGTGCAGGGCGAAGAAGA
-GCGGTACGAGGCGATTCGGCATTGCCGGTACGTCGACGAGGTGTATAAGG
-CGTCGCCGTGGACATGTCCGATACCGTTTTTGAAGGAGTTGAAGGTAAAT
-TGCGCGTGAGATTCGGTGTTTGCACAGTTTTATCTCCAAAAACGAAGGAA
-ATTTTATACCTAAATTTCGGAAAAAAATCAATAAATTATTGCCTTTTTTA
-AACGTCACAAAATCGATAATAATTTGAAAATCACAATTTTTTTTTTATTT
-TCAAAATTTCGTTGTTCTATCACGGGAACGCAAATTTCTGAGAATGCGTA
-CTACACAACACATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTA
-ATTTGTTAAATGACTACTGTAGCGCGCTAGTGTCGATTTACGGGCTCTAT
-TTTAAGCTCAATTTTAATTTCTATCGATAAATATATGATACAAAATATTG
-ATCCCGTAAACCGACACTAGCGCGCTACAGTAGTCATTTAATGAGTCACT
-GTAGTTTTCGCTACAAGATATTTTGCGCGTCAGATATGTTGCGCAATACG
-CATTCTCAGAATTTTGTGTACCCCGTAATAAAAATTCGAGTTTTTCTAAA
-CAAAAAGTTTAATTTAAAAAACCTCTAATATTCGAGATATTCGATTGGCG
-ATTTATTGATCTATTGATTTTTCGATAAATATTGATTTTTCAATTTTTAC
-AATATTCGAAACAATTATCGAAATTTCAAAAAACTAACAAAAAATATTTG
-CGGAGGAAAATCGATAACTTTTCAATGTATATTTTCTGAAATTCCATAAA
-ATTGATTTTTCTAAATTTAATTTGTTCGATTTTCGGGTTCTCGGTTTTCC
-TAATTTCTGTAATTTTGAGTCGATAATTTTTTGTTTTTTTTTTTCAATTG
-AAACTTTTATTGATCAAGGATTTCTGGCTTCCCTCATAAATTGAAATAAG
-AAGAGTTTGCCGAACTAGGCCATTCTGGCTCGGCCATATCTGGGGTAGAA
-TTACGGCGCGTTTCGTGTCGCGTCGCGCCTCGATTTTAGTTGTAAAACTA
-AATGTATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCA
-GGTGATTGTCAATGGAGCGCGAAAAATGCAATGAGGAAAGCCAGAACCCC
-GTGATTGATTATTGAGTTTTGGAAAACTATTTTAAAAAACCTGATTTGAA
-AGAAAATATCGGTAATTTTTCGGATTTTTAACAAGAAAAAGGTTTTTATT
-TCCGGAAACTTTCATTTAATAATTATTTATTTATTGATTTCTCGGAAAAA
-TTTGCCGAAATCTATCGAACTATAGTCGAACAATTGGACGAAAAGTCGAA
-AAAAAAATTCTAGGCCACGAATTTCCTCTTCCAGGTTGACTTTATGTCAC
-ACGACGCTCTGCCATACCAAGGTCCCGCCGGAGAAGACATCTACGAGAAG
-CACCGCACTGCTGGCATGTTCCTGGAGACGCAGAGAACCGAAGGAATATC
-GACGAGCGATTCGATTTGTCGAATTATCCGCGACTACGACACGTATGTCA
-GAAGAAATTTGCAGAGAGGATATTCGGCCACCGATTTGAACGTTGGCTTT
-TTTACAGTGAGCCTGGCCTAGAAAGGGGTGGCCTAGAAAGAGGTGGCCTA
-GAAAAACAAAACTCTTCCATTTTTTTCAGACCAGCAAATATCGTCTGCAA
-GACACCGTAGTGGGAATAAAAGAAATGGGCCGTGGCCTGCTGCAAACGTG
-GAAAACGAATGCGGATTACTTGATTGAAGGATTCTTGACGACATTTGCCA
-TCAGTGATCCGAAACCGTTGCCGAACAACAAAAGTGCCGATGAAAATGTG
-GAAAATAGGGAGAATATTGAGAATTTTTAGAAAAAATTCGTGTAAATTAT
-GGGAATAAAAATTTGAATACTCGTGAATGTTTACTGAATTTATGCAATTT
-ATTTTTTGAAATTTTCAATTTTTTTGGAAAATTTTTTTTTCTTAGGCTTA
-GGCTTAGTCTTTGGCTTTGTTTTAGGATTAGGCTCAGGCTTAGGCTTAGG
-CTTAGACAAAAACTTAAGCTTAGGCTTAGGCTTTTGATTAGGCTTAGGAT
-TAGTCTGTCTTTCACTTAGGTTTGGCGTCATTGGCGAGCGTTAGCTCGCT
-ATTTAGGCTTGGGTTAATTAGGCTTAGGCTTAGGCCTAGCTTTAAACTTA
-GGCTTAGGCTTAGGCTTAGAATCAGGCGGGCTAGGGAAAAAAAGAGAAAT
-TCCAAAAATTCCAGAAAAAAGGAAAAAAGGTACATCCCGAAGTCGGGTCA
-AAAAATAAAGTGAAGAAATGAAATTTTCACGAAAATGAATGAATATTTTT
-GAGTCTCGCGGATTTATTTTCATAATCATATTCTGAACGTATTATTGACT
-CGTCGTGTGGGACATTTCAATGGATTTTCCGTAAAAATCTCTGTAGAATT
-CCGCATCGGTCAACGATTCTTCACAAGAGCCAAACTCGGCGAGTCGGTCA
-AACAAATGTTTGAGCTCCTGAAGAGTAGTTCAAAATTATATATGAATTGA
-TTTATCTTGCAAACCTTTCTCCGTTTGTCGGTAAAAAGTCCTTCGGGGCA
-GATTTCCGTATCAATCAGACGATTTGCAATGTATACAATCCACATGAGAT
-TTGTTCGCCTTGAGAATTTCTCCCAGTTGCCCCTGGAACGTTAATTTTTC
-TGAATTTCTAGAAAGGATATAGAAATAGCAACAAAAAAAAAAATTTATCC
-AAATAATGAGCTATTTAATGTAGTTTATATTACTACAAATACTTTTCTCA
-TAAGAACGTCTTGTTCTTGATAAATGTGTGCTTTAAGAAAAAAAAAAGTC
-AAAAATAGAGTCCTGAGATGTCGGGCGTTGTACCTATTAGGGGTGTCAAT
-AAGTTCCGGGTCAAAATTCATAACTTTTTTCGTAGCAAATCGATTTTCTT
-GAAAATGTGGGAATTTATGTTATCAAACATGGTCTTTCATTTGACGGCAC
-TTTCAAAAAGTTTTGACCACTCCATGTACCCTAGCTCGGATCCACTTTTT
-TCAGGCGTATGCCCGATCTCGCTTCTTTGTAACTTTCAATTGAGACTTAT
-GTGCGGATTTTGATTTATTAAGTATACAATGTAAGAATACAATAAAAATT
-TGAGAAAAAATTCGTTCAAAAAAACAATTTTTTTGATCGGCAAAAAACCC
-TCGAAAAAAATTTTGTCGAAAACTCTTGATTTTTTGTACAGGAATGATGC
-AACCAATTCTGAACAATTTTTTAACACATAAAAGTTTTGAATTTAAGGCG
-TCACACACAAGCGGCAATGGAAAAAATGATTTTTTAGTGAATTTTTTGAA
-ATTTTTGAGAAATTCTCGAAATCTAAATATTAAATTCAAATGTTTTGTGT
-GTTGAAAAATTGTTCAGAATTGGTTGCATCACTCCTGTACAAAAAATCCA
-GAATTTCCGACAAAAATTTTTCCGAGGATTTTTTTGACGAACCAAAAAAA
-TTTGTTTTTTTGAAGGAATTTTTTCTCAAATTTTTATTGTATTCTTACAT
-TGTATACTTAATAATTCAAAATCCGCACATAAGTATCAATTTAAAGTTTC
-AAAGAAGCAAGATCGGGCATACGCCTGAAAAAAGTAGATCCGAGCTAGGG
-TACATGGAGTGGTCAAAACTTTTTGAAAGTGCCGTCAAATGAAAGACCAT
-GTTTGATAACATAAATTCCCACACTTTTAGAAAAATCGATCAGCCACGAA
-AAAAGTTATGAATTTTGACCGGTAACTTATTGTGCTACATGCTTGTTGCG
-AAATATACCTATTTACCTATACCTATACCTATACCTGCAATTTTCTCTCA
-TCTCTCGATATACTTCAAATTGTGGAGCATCTGGTCCTTCAAAAATCGTC
-GTATCCTCTTCCAAATCCCAGTAGATAGTTGTCGAATCTAAAATTATATA
-TTTTTAATTATAAATTGTATATTTTTTTAATTTAAAAAATAACAAACCTT
-TCGAAATGCGGCTAAGTGTGAAATCAATAATATTGACCTTAATTCCATGG
-GTCCTCAGTGGAATTTTCTGCCCATGCACAGTGTAGGAGAGCTCTTCCAC
-TCCGTTCCGATCGATCAGCACATTACTAAGATTTAAGTCCCTGTGCTCGA
-ATTCAAGAGCTGCTTCAGCTGCAACCATTGAGAGAACGAGCTGGTGAATG
-ATGGAAAATAGTTCATCTTCACTTTCAAGGACAAAATCTGCCAGCGAGAT
-TCCACCATTTGCCGAGACGAAAAGGATAAAGTTTTGATGTTCTGAAGAAT
-AAACATCTGGCCTCAAATGTTCGGATTCATTGAGCTTATCGTAGGCATCC
-CAAGCTCTCAGTAATCCCTTAGGATATTCCCCCATGACTATTTGGGCTGA
-AATCATTTCGATAAAATTCGGCGTAGAATTCCAAGAATTTGGGTCTCTCA
-ACGCCGACAGTTCCTTCATCACAATCACCTCTGACAAAACGGCGTGGGTT
-GTTGGAATTTCCACGGATTGATTTCCATAGAAACATCCGTTGTTTTCGAA
-TGGCAAAACTTTGATAGCAACCGGTCTACCATTCCAGACAGTTGAGAAGA
-CTTCACCGTACGCTCCTTCGCCGAGCTTCTTCACTTTTCGAGCATCTAGC
-GCCGACGTTGGTAGGCTACCCCATGGTTTTGCTTCTTTTTGGCCAACAAC
-ACGGAGAAGTTGTGCCATGGACGGATCTTTATTGTGAAATGTGATACTGC
-CAATGGGGATATTTCTAGAATCAGGATGAGCTGACCGAGCACTTGGAGCT
-CTTTTGTTCAGTTCAGCAAGCATGCACAGTTCGAAAGCATGCACAGTGCG
-AAAATGACTTTTCTGAAATTGTCATCAAAAGTTCATTTTGAAAATTCGTT
-TCGGCAAAAAATGCAAATGCATTTCTGAAACTCACCAGTTGTCTCTGAAA
-TCGTCGTTCGTTGGTCATGTCGAGTGCAAGAACGGTGGTGGTGACCACTG
-CCGTCTTCGTGAACCGCATCCAAGACATGTTTCGGGAGATAACTATAGAA
-ATGAAGTTTTGAAAAAAAAACTCAAGACCACAATTATTGAAACACGTTAT
-TAGGCCAATAACTTCACACGTGAATTAATACATTATTCATGTATTTTTCT
-TTGACTGTTATCACGGGTTTCTGGCTCACGGTAGTTCAGCCACGGTAGCA
-CAGAAAATAGATGACCACGTTCATGATAATCAGTCTGAAACCTATATTGG
-CTGCTATCTCGAAAACTCTCTAAAAACGCGTTTTGAGAAATTATTGATTT
-TTTGGAGAAAATCAGAAATTATTGATTTTTTGGAGAAAATGGGAAATTTT
-TCATTTTTATTGGGGAAAATCAGAAATTATTGATTTTTGGAGAAAATCAA
-AAATTATTGGTAATTTGAAGCAGGGGTGGGCAGCAATTGCCGTTCGGCAA
-ATACGCAAATTACCGGTGTGCCGATTTTCCGGGAATTTTCATTTTCGGCA
-GTTTGCCGGTTTGCCGATTTGCCCGACATTTTTCAATTTCGGCAATTTGC
-CGGTTTGGCGATTTGCCCGAAATTTTTCAATTTCGGCAATTTGCCGGTTT
-GCCGATTTGCCCGACATTTTTCATTTTCGGCAATTTGCCGGTTTGCCGAT
-TTGCCCGAAATTTTTCAATTTCGGCAATTTGCCGGTGTGCCGATTTGCCA
-AAAATTTTCATTTTCGGCAATTTGCCGGTTTGCCGATTTGCCGGAAATTT
-TCATTTTCGGCAATTCGCCGGTTTGCCGATTTGCCCGAAATTTTTCAATT
-TCGGCAATTTGCCGGTTTGCCGATTTGCCGGAATATTTCATTTTCGGCAA
-TTTGCCGGTTTGCCGATTTGCCCGAAGTTTTTCAATTTCGGCAATTTGCC
-GGTTTGCCGATTTGTCGAAATTTTTCATTTTCGGCAGTTTGCCGGTTTGC
-CGATTTGCCCGAAATTTTTCAATTTCGGCAGTTTGCCGGTTTGCCGATTA
-GCCCGAAATTTTTAAATTTCGGCAATTTGCCGGTTTGCTGATTTGCCAGA
-AATTTTTCAATTTCAGCAATTTGTCGATTTGCCATTTGCCGGAAGTGTTC
-AGAAGGATTTTTTTATAATAAGGAACCACTTAAAACTGTGCCGTTTTGAA
-ACTTTTCCCCGTTTTTTTAAGATGATTTCATAGAATTTGCTTACTTGGTT
-TGCCGAATTGCCAGAAGTTTTTCAATTCCTACAAGTTGCCAATTTGCCGG
-AAACTTTTTAATTATGGCAATTTGCCGGTTTGCCGATTTGCCAGAAATTT
-TTCAAATTCGGCAATTTGCCGGTTTTCCGATTTGCCGGAAATTTTTCAAT
-TTCGGCAATTTGTCGATTTGCCGGAAAATTTTTATTTATGGCAATTTGCC
-GATTTGCCGGAAAAAAAATCGTTTCCCGCCCACCCATCAGTTGATGAGTT
-CATCTTTTTTTTGTGTCTCTCCCATCAATCTTAAACTCGACCCGGACTGG
-CAAACGCATATCTACAGTTTTCTCTTCTTAAAATGGTGGTCTTAAGTTTC
-GAAGACTATGCGTAATTTCTAGCGAAGTGGCGAATTTATGATGATTTTGC
-AATTTATCAATGAAAAAAACAAAAAAAGCATTTCCGCGTGGCAAATTATC
-ACTGTTGTGCCGCGAATAGTACTGATATAATTTTTTTTTAAATTGAATCA
-GTTTGGAATTTCGAATTTTTGAAACAACCGCCGGCAAAATGAATAATATA
-CTGTGAGTTTTCAAAGATTGTTCCCCGGTTTTCTTGTAGATTTTTGTGCA
-ATTTCAAAATTTCGACTTTCAGCGGAAACAAAAATACAAAAAGGTCGAAG
-AAGAAGGACGGAAAGTTTACGAGCAACACTGCTACTGATCTTGTTGAGGC
-CCCAAAACCAGGTGGAGCAAAAGGATCCAAAAAACCAAAACCATCGAAAG
-GAAATGACGACAGGGGACGCGGCGAACCGGAAATGACTGCACAATCCAAA
-AAAACCAAGAAAGCAAAAAAAGTGAGACAGAAGAGAGATACAAAGGCACC
-GGTGAGTTCAATTTTATAGTTTTATAGATATAATTGTATCAGGGGTGGGC
-GGCAATTGCCGTTCGGCAAATTGATTTGCCGCCAAATTCGGCAAATCGGC
-AAATTGCCGGTTTGTCGATTTGCCGGAAATTTTCAATTCCGGCAATTTGC
-CGGTTTGCCGATTTGCCGGAAATTTTCATTTTCGGCAAATCAGTTTTGCC
-GGAAATTATAAGACGGAAACACTGTCTTTTTGAATTGTTCCCGTTTTTTC
-TACATATTTTCATAGAAATTCATAGAGACAATTTGCCGAAATTTTTCGGC
-AAATTGCCGTTTTTCCGGCAATTTACCGATTTGCCGGAAATTTCCATTCC
-GACAATTTGCCGATATGCCAATTTGCCGGAAAAAATCGTTTGCCGCCCAC
-CCCTGAATTGTATCCCTTTTTAGTCTCCTGCAATGTCACCTCGATCACGT
-GAAATGCTGTCAGACAACAAAAAGACGACCGTTGAGGATGATCCAGCAGT
-TCCAATAACAACAAGTGTCGCTGGAGCAGTCACTTCTACGATTCCTGCTC
-TCATGTCCACTGAAAACGCGTTTCAGCCACCCAAAGACCTTATCTCGGGA
-AGAAAGCCAAAAGGTGCTCCGAACTTGTCTGGCAGCGTTCCACTTTCACA
-CAAGAGCTCACTGACTGGAGGTGCAGATAAGTGGGTTGGAGAAGCCGTGG
-CAAAGAATTGGATGGATTCGATCGGTTAGCATCCTTTTTTTTTTGATTGG
-AGGCCCCGGCGGCGTAAAAATCGTGCCAGAGTTGCAAGAGTGGGCGTTTT
-TTTTTGTTTTTCTGTTGTTGGTGGGGCCTTATTATTATTTGGTCGATGGT
-GATTTTACTTTACTGGTGGAAATCCGCTAATAAAACTAAAAACATCGGGA
-TATAAATAAAAACCCAACTTTAAAAAGCGAACCAATCAGCAGTTTGCTCC
-GCCCACTATTCAACCAATCCAATGATTGGTTCGAAATTGGGTACTCATTT
-TAGAGGGAATTCAAACGGAAGATTAGCAAGTTCGGTTATTGTTTCATTAG
-AATATCATTGCTTATATATATATTTAAAAAATAGTGTACGTCATCAATGG
-GCGGAGCCTCTCCCATCGTGGTGAGACCCATCGTGGTGAGACACATCGTG
-GTGAGACCCATCGTGGTGAGACCCTTCGTGGTGAGACCCTTCGTGGTGAG
-ACCCATAGTGGTGAGACCCATCGAGGTGAGACCCTTCGTGGTGAGACCCA
-TCGTGGTGAGACCCATCGAGGTGAGACCCTTCGTGGTGAGACCCATCGTG
-GTGAGACCCCCATTAATTTTGGCGTGAAATTCAAATTTTCTAAGAACAAT
-TTTTTGGCTTTTTTTTTAAAGAAAAATCTGGAAAATTCTAGCATTTTTTT
-AGAATAATCTGGAAATTTCTTGAACTTTCTAGCTAAATCTGGAAACTTCT
-AGAATTTCCTAAAATAATCTGGAGACTTCTAAAAAAGATCAGGAAATTTC
-TAGAACTTTTTTAGAATCTTCTGAAAACATCTTTCTAGAGTATACTAAAA
-ACTTCTAGAATTTTCATAAAATTCCGCGAAGCTCGAGGAAGAGATTTGTT
-CAAACAATTTAATGTGGAGCCAGTCGGAGCACGCGCTTTGCGCGTGCGAA
-CGGCTGGTTTTAGATATTTTGTAGTATTTTTCAAATCTTAAATTTTCAGA
-CACAGCAGAGGTGAAAAAGGAATACGATAAACTGCAATCACAGAAAATCG
-ATGTGGAGAAGGACTGTAAAACCTGGAAATCCAACCCAAAATTTAACCAA
-TCGGAAGACTTTCCTGCCTTGGACTCCAATCTCGTGAAACTTGGCAAAGA
-CTATGTGAACATCAGTCTTGTAGATGTTCCATTGGGAAGAAATGTTCATC
-TCGGTCAAGCTCCGGTCACGAATACGGAAGAAACATTCTGGAAAGCTGTG
-TTCGACAAGCGAATCACTCACATTGATCTACTCGTCGGCGATGAAACCAT
-CGAATTCTTCCCTAAAAAGGCAGAAGATTATACAAATTATGGTCAGATGT
-GGATCAATAACCGCCGTGTCGAGTATGTCAATGACGATGTGTACCGATTT
-GCAATTGAAGTAGTGCCCCACGGATGCTCCAACTCGATCATCTGCAATGT
-GACTGTTATCAGCAATTGGAAAGTGGACACTGTGCCTTTGAAACAAGCAA
-TCGCCATCAAAGAGGCACTTGGTCTAAACTACTTCTTGCTGAAAGCACCC
-GCTGACGAGCATGCGATGATCGTCTCACCACGTGGAGCTGGACGAGCTGG
-CTACTTTTTGGCACTTGCGGTTGCAGTCAACACAATTGATACAAAGCTTG
-CCGAACCATGTATTGCGGATATTGTCAAATCGATTCGCTCCCAGAGACCA
-AGAGCCGTGGATTCATTTTGTCAGTACTGCTCCCTGTACATTTCGTTGCT
-CTACTTCATCAAGGTATTGGTTTTTGAATTCTTGTAAAATGAGAGAATAA
-TTCTCAAATTTACAGAAGAAAGTGACAAAACCAGCAGAAGGGGATAAAAA
-GCCAACACTGAGCAACAAATACATCTACAAGAAGTCGGTTGAGTTGACCA
-AGCAATTCACCGTTCTCCTTCTCGAAGCGAGTCAGCAAAGTGTGATGGGA
-CCTGGATAGTTCTTCTCCATTTTGAATATGGAAAAGCATTTGAAGTGATC
-TGGGTTTGAAAATGAAGAATTTTATAAACCCTGGATTATTTCCGAAATCT
-TGCTTCCTGCCTGCTGTCTCATTGCGGCTTGATCTGCAAAAAAAGCGGTA
-ATATCTCCCCCAGGAAAATGTGACGTCAGCACACTCTTAACCATGCGAAC
-TTAGTTGAAACGTCTGCGTCTCTTCTCCCGCATTTTTCGAAGATCACACC
-AAAATGGGATACTTTGACAACACGTGCCTGCCATCGCTTCCTGACCGGGG
-ATTTTGTTAGAAAATTCGTGGAAAATAGGAAGAAACATTTCGAGAAAATG
-GAATTATTGATTTTCTGATTTTCTCAAACAAAAAAAAATTAAAATCGATT
-GATTTCTGGCTTACCTTACCTAAATTGAAATGGAAGAGTTTGCCGAACTA
-GGCCATTTTGGCTCGGCTATATCTGGGGTATATTTACGGCGCGTTGCGTG
-TCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTG
-TGGAGTACACGACTTTCACATGCGTTGTGCGGCGGGCGATTGTCAATGGA
-GCGCGAAAAATACAATGAGGAAGGCCAAAACCCCGTGTATTGATTTTTCG
-AAAATTTCGGAAAAATCTCTTTGTTTTATTCATTATATTTCTCCTAATTT
-CTTTGAAATGTTCAAAAAATCTGATTTTCTTTTTTTTCCCGAATTTTTGA
-AAAATCGATATTTGCTATCCATATTTCTCGAAAAGAAAATCGATTTATTA
-ATTTTTTTCCGGTTTCCTGGAAGCTAATCAATTCAGAAAAAAGAATTAAG
-CTATGAATATATACTTATAAAAGTCGTAAAAGGTATGGAAATATAAATTA
-TTTTAAAACAGCGATTTCTGACTGAAGCATCTCAACTACCAGGGCCTCAA
-GTTCTTCTTATCCGACAAATGAGACGAGTCGGAGCTATAATTGTGCCGAT
-ATTTTCCGGGCGCCGTCTCTTCGAACTCGGATACGGTAGCCTGCCCGACG
-TATTTGAAATCGCCCATTAGCACTTCGTGGCAAGCGCCGATTGATGCTCC
-GTGGCCGACGAGTAGGAGGTTTCCTGAAAGAAAATCGATAATTTGCGGCG
-TGTTTTTATTGATTTTTATGTGAAAATTGGCAAATTATTGATTTTTCGGC
-TGAAATCATAAATTACTGATTTTCTGTTAAAATCAGTAATTTATTGATTT
-CTTCGGCTAAAATCAGAAATTATCGATTTTTCTGTGAAAATCTGAAATTA
-TTGATTTTTCTGCGAAAATCAGAAATTTACGTAGTTTCGCAAAAATTACC
-TTCATATTTCTCGAAAATCGCCCGCAGGGTCTTTCCGACACGTGGCACAC
-ACGCGTCATCTCCACATCCTTCGCGGGGTAGTGTGTACTGAAAAAAAAGT
-TCGGTAATTTTTCTAGGTCTCGCAGCGATTGCCGCCACCGGTATATTTTC
-ATTTTTCCAACTATAGCGCCAGCACCGGCGCCGGCATCTTTTTATTTTTC
-CACGTAGCACGTCGGCGCCGGCAGCCGCGCAAACTATTTTCGCCGCCGCC
-GGCATCTTTTTATTTTCCACATAGCGTGCCAGCGGCGCCGCCGGCATATT
-TTTATTTTTCCACGTAGCACGTCGGCGCCGGCAGCCGCGCAAACTATTTT
-CGCCGCCGCCGGCATTTTTTACTTTTCCACGTAGCGCGCCAGCGGCGCCG
-CCGGCATGTTTTTATTTTTCCACGTAGCGCGCTAGCGCCGCCCCCGGCAT
-CTTTTCATTTTTCCACGTAGCGCGCCAGCGCCGGCAGCCGCGCAAACTAT
-TTTTCGCCGCCGCCGGCATCTTTTTATTTTCCACATAGCGTGCCAGCGGC
-GCCGCCGGCATATTTTTATTTTTCCACGTAGCGCGCTAGCGCCGCCGCCG
-GAATTCATTCATTTTTCCACATAGCGTGCCAGCGGCGCCGCCGGCATCTT
-TTTATTTTTCCACGTAGGGCTCTAGCGCCGGCGGCATTTTTCATCTTTTC
-ATGCAGTGCGCCAGCGCCGCCGCCGGCATCTTCTCATTTTCCACGTAGCG
-CGCTAGCGCCGGCGGCAGCGCAAACCATTTTTCGCCGCCGCCGGCGCCTT
-TTCATTTTTTAATTAGTGCGCCAGCGCCGCCGCCGGCATCTTTTGATTTT
-TCCACGCAGTGCGCCAGCGCCGGCAACGGCGCAATTCTAATCTCGGTCTT
-TTTTGAGCGATACCTTCGAGAAAACAGGAATATAGTCCAAATCAACAAGC
-GGAAATTTCTCAGCTAGTTTGTCGGTTTCCCAGAATCCAGGAGGCTTATC
-ACAAAGATAAAGTGCCTCACAAAGGCCACCGTCCGCCTTCACTTTCATTC
-CTTTATCCTCAATAATCGTCGAAGCTGTCTCAATTGTCCGATCGAACGGC
-GAGGCAAACGTATGCGAGATTTGTGCATTTTCGAACCGATTTTTGCACTC
-TTTCGCCTGTTGCCGACCGCGCACGCTGAGCATCGAATTGTCCGACGTGA
-GACCGTCGGCTCCGTCGAGTTTACGCCAATTTCGATTGATATTGTCCTCG
-CTGCAATGCAAAAAATCAATAATTTCTGATTTTCACCGTAAAATCAATAA
-TTTCTGATTTTTGTTGAAAAATCATTACTACCGATTTTAACTGAAAAATC
-AATAAATTCAGATTTTCATTTTTTTTTTCGAAAAGTCGATAATTTCCAGA
-TTTTCATCGAAAAATCAATAATTTGTGATTTTCACAAAAAATCAATAATT
-TCAGATTTTTACCGAAAAATTGATAATTTCAGATTTTCACCGAAAAATCA
-GAAATTATTGACTTTGGATAAAAATCAATAATTTACTGATTTTCATCGAA
-AAATCAATAATTTCAACCTTTCGCAGAAAAATCGATAATTTTTAATTTTC
-ACCGTAAAATCAATAATTTCTGATTTTCACCAAAAATTAATAATTTTAAT
-TTTTTTTTCGAAAAATCAATATTTTCTAATTTTTATCGGAAAATCAATAA
-TTTCCGATTTTCACCAAAAAATCAATAATTTCAGATTTTTATCGAAAAGT
-CAATAATTTACGAATTTGACAAGAAAAAATCAATAATTTGCTGATTTTAA
-CAGAAAATCAATAATTTTTGTTTTTCATTGTTTTTTTTTTCGAAAAATCA
-GTACTTTTTTAATTTCCCCAAAAAATCAATAATTTTTGATTTTATTTTTC
-GAAAAATCAATAATTTCAGATTTTAACCGAAAAAATCAATAAATTCAAAA
-AATTTCATTTTTTTTTTGAATTCTTAAAAGTACCGTTCCGCGTGTCGAAC
-AATCCAAATTTTCCGTGGATAAGTGATCGGCATCCTATCGAGATCGGTTT
-TAGCTGAAAAAAAACCTTAAAAAATTGGAAAATTGTGTACTCCTCTCGGA
-CACGTGGTGTCAGGCTCTCCCATTACGGCTTGATCTACAAAAAATGCGGG
-ATTTTTCGTTCTTAACCATACGAAATAAGTTGAGAACTCTGCGTCTCTTT
-TCCCGCATTTTTTGTAGATCAACGTAGATCAGACCAAAATGAGGCACACT
-GAATGAAGACACCAGGATTTTTCGAAAAACTCTAAAGAAATTCTGCAAAA
-AGTGACGTCATGAGGTATATAGGTATGAAATCGAATACTTGGTATCAAAT
-GACGGAAAAATAAACGAAAGTTGCAAAATTTTTTGATGGAATTTATTAGA
-CTTTGGCGGGAAAACAGATCAAATTTACATTAAAAAATACGGGAAAAATA
-CGGGGAAAAAAACCAAATTATTGCCTAAAAAATTCAGGATTAAATTGCGA
-GTTGTACTTTTTCTTCTTTCCACGCTTCTCCTCCGAATCCTCGGCGGCTT
-TTCGTTTCTGCAGCAGCTCAATTTCCTCGGGATGTAGCAAAGCATGGGCT
-CTCGCTTTCTCGACTCGTTCCCGTTTCAGACGCTCGTCTCGCATGCTCGC
-CAGCTTCTGCCGTCGTTCTCGATCGTATTCCTCTTCGAGTTGACGTTCTT
-CAGAGCTATCACGGTGGCGGTGCTTTTCTGGAAGAAAAATTGGGGGGTTT
-TTTTGTAGTTTGTAGTGGTGAGCACCCTATATTGGAGGCGCGAAAAAAGA
-GATTTTTCGAATTTTTTTGTAGATCAACGTATGGTTAAGAACGTACTGAC
-GTCATATAATTTTGGGCGAAAAATTCCCGCATTTTTGGTAGATCAAACCG
-TAGTTGGACAAAAAGCAGATTTTTCGAAAAAAAATTACGAATTTCTGGCT
-TTCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGG
-CTCGGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGG
-CTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTGTGGAGTACACG
-ACTTTCCCACGCGTTGTCCGGCAGGCGATTGTCAATGGAGCGCGAAAAAT
-TCAATGAGGAAGGCCAGAACCCCGTGGTGGTTCGATGCACAAAACTGATT
-TTTTTTTTGAATTTTTGGGATTGCGCAAGAAATTTCGCCGAAAAAGTCGA
-TAACTCAAAAAATTCTAAAAAATTTGGATAATCTGGAGAAAAAACCCAAA
-ATTTGCTGAAAATTTCGAAAAATTTAGCTTTAAATTTTTGCGCATGGCCG
-CCGGAAAAGAAAAAAACTCGGCCACCAATTTTTTGGCGGCCATGATGCAA
-GACACCATATTTGACGCGCAAAAAAAGGTGTTTTTGGATGTTTTTTTCTT
-TTTCCGCCAGAATTTTTAATAAATTTCCAGGGACAAAAAATCATAACCTG
-TTGCAAAAATGTTTTTTTTTTCGAAAAATTCAATTTTGCGCGTCAAATGT
-GATGCTTTAAGCTCTGTGGCCGCCGAAAAAGAGAAAACTCGGCCACCAAT
-TTTTCACTCTCCATTGACAATAGCCTGCTGGACAACGCGTGGAAAAGTGT
-CGTGTACTCCACACGGACAAATACATTTAGTTTTACAACTAAAATCGAGC
-CGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCTGGC
-CTAGTTCGGCAGAAACTCTTCCATTTCAATTTATGAGGGAAGCCAGAAAT
-CCGTGGCCGAAAAAGAGAAAACTCGTCCACCGATTTTTTTTTCTGACGGC
-CATGACAAGTTTGCGCGTCTATAATACATCATATTTGACGGGCAAAAAAT
-TTTTTAAAGTTTTTTCGAATTTTTGTGATTTTCGAGCAGAAAAAAAAATT
-GTCTGAAAATTTATGTGGCCGCGGTAAACTTCGGCCACCGATTTTCGACG
-ATTTTGCCCGTGTTTTTGACGGAAAAAGCACCATATTTGACGCGCAAATT
-TTCAAAAAAAAAAAAGCCCAAAAATCGCACTTTTCTTCTTCTTCTTGTCT
-TTTTTATGCCGTTTCTTCGCCTTTTCTTCACTATCACTATCCTCTCGTTT
-CCGCTTCCTCTCCTCTTCCAGCTCTTTCCGCTTCAAACACGGCAGAGCAT
-CGCGCGCTTTTCGTCGATCAAGTGGCTCGGCGGCTCTTCGCAGCGGCAGC
-TCCTCGTACCACTCTTTTTTCTTGTTTAAATCGTTCGTATTATCCGCGAA
-ATACACCTGAATTCCCATTTTCGACTCCCATTCCTTCTTCTCGGCAGCTT
-TTTCCGCTTCGTAGTCGCGGTTTCCGGATCCATAGTTTTTTCGTTCTTCA
-CGTTCGAGATCCTGCAAAATATCGATTTTTTTTGGAGAAAAATATAGTTT
-TTTTTTGGAGAAAATTATCGATTTTTTGGAAAAAATTATCGATTTTTCGG
-GGAAAATTAACGATTATTTTAATAGAAAATTATCGATTTTATTTGGGAAA
-AAAATCACTGATTTTTTGGAAAAAATTATCGATTTTTTTCGGAGAAAAAA
-TATTAAATTTTTTGCAGAAAATTATCGTTTTTTTTTTTGAAAAAAATTAC
-CGATTTTTCAGAGAAAAATATCGATTTTTTAGAATAAAATTATGGATTTT
-TAAATATAAAATTATCGATTTTTAGGGAGAAAATTATCGATTTTTTTTGG
-AGAAAAATATTGTTTTTTTTTGGAGAAAAATATAGATTTTTTTGAAGACA
-TTTATCGATTTTTTGTTGATAAAATTATCGATTCTTCGGGGAAAAATATA
-GCTTTTTTTGGATGAAATTATCGATTTTTTGGGAGAAAAAATACCGATTT
-TTTTGGATAAAATTATCGATTTTTTTGAAGAAAAAGTATCAAATTTTTTG
-AAGAAAATTGTCAATTTTTTTGGAAATAAATATAGTTGTTTTGGATAAAA
-TTATCGATTTTTCAGCTAAAAATATAGATTTTTTTAGATAAAATTATTGA
-ATTTTAAAAAGAAAATTATCGATTTTATGGGTAAAAAATAACGATTTTTT
-TGGAGAAAATTATTGATTTCTTCGGGGATAAATATTGATTTTTTCGGGGA
-AAATTATCGATTTTTGGATAAAATTATCGATTTTTTGGAAAAAATTATGG
-ATTTTTTTTGAAGAAAAATATTGATTTTATTGGAGAATAATATCGAATTT
-TTTCGGGAAAATATCGATTTTTTGGAGAAAATTATCGATTTTTTTTGAGA
-AAATTATCGATCTTTTGGGTAAAATTATCGATTTTTTGAAGCAATTCTGA
-GCCAAATTTTGAATTTTCGAGCGGCAATTTTTGCACAAAGCATCATATTT
-GACGCACAAAATTCGAATTTTTCAGAATTAGTTTCACAAAAAATCCATCT
-ATCACCTGAAACAAGTTCACATGTCCCGTTTCATCTGAAATGCTGACATC
-TTTTGCTGCTCCAGCTGAGCTCGAACCAGCTCCTCCACTAAACATCGTCT
-CCATTCGTTGATCGGCTCGGGCTCTCAACTGCATCAGGCGCCGCTCGTTT
-TCCGCCTGAATTTGCCTGTCGAGCACACGCTGCTCATCTTCGGCGGCTTT
-TCGCTCGTCTCGGCGAACCCGTTCCATGTTGGATTTTGTCCGAACGTGCC
-ATGATTTGTGATGGAGAATGTTCATCTGGAAGCGGAAATTATAGAGAAAA
-AATTGATAATTGTGCTCGAAATTTGGCTCTGGAAGAAGCGCAAAAAATCA
-ATAATTTCGTCCAAAAATCTATTTTTTTCAGAAAAACCAAAAAGCGTTTT
-TTTTTCCAAAAATAAAGATAATTTTCGTCCAAAAATCGATAATTTACTTC
-TAAAAGTCTCAATTTTTCCAACAAAAAAAACAATTTTCGTCGAAAAACCG
-ATGTTTTCAGAAAAATCAAAAATCAAAAAAAAAATTAAAAAATTAAAAAA
-AAATCAATAATTTTTTCTAAAATCTTGCAATTTTTTTCTAAAAATCGTTT
-AATTTTCTTCTAAAATCGATATTTTTCCGGATTTTTTCGTGAAAAAAATC
-GTCAATTTTATTGAAAATTTTGCTAAATTTCGAAAAAAAATCTTGAAATT
-TCGATGCACCATGATTTTGAAAATTCTGCTCCGGATCAATTTTTCGAGAA
-AAATTATCGATTTTTGGAAACTATCATACAAAAATCGATAATTGTGCTCG
-AAATTTGGCTCTGGAAGGAGGAAAAATCAATAATTTTCTTCTAAAAATCG
-ATTTTTTTTCCAAAAAATCAATAATTTCGTCGAAAAACCGATGTTTTCAG
-AATAATCAAAAAAAAAATTAAAAAATTAAAAAAAAATCAATAATTTTTTC
-TAAAATTTTGCAATTTTTTTCTAAAAATCGTTTAATTTTCTTCTAAAATC
-GATATTTTTCCGGATTTTTTCGTGAAAAAAATCGTCAATTTTATTGAAAA
-TTTTGCTAAATTTCGAAAAAAAATCTTGAAATTTCGATGCACCATGATTT
-TGAAAATTCTGCTCCGGATCAATTTTTCGAGAAAAATTATCGATTTTTGG
-AAACTATCATACAAAAATCGATAATTGTGCTCGAAATTTGGCTCTGGAAG
-GAGGAAAAATCAATAATTTTTTTCTAAAAATCGATTTTTTTTCCAAAAAA
-TCAATAATTTCGTCGAAAAACCGATGTTTTCAGAATAATCAAAACAAATT
-TCAAAAATAATAAAAAAATCAATAATTTTTTCTAAAATTTTGCAATTTTT
-TTCTAAAAATCGTTTAATTTTCTTCTAAAATCGATATTTTTCCGGATTTT
-TTCGTGAAAAAAATCGTCAATTTTATTGAAAATTTTGCTAAATTTCGAAA
-AAAAATCTTGAAATTTCGATGCACCATGATTTTGAAAATTCTGCTCCGGA
-TCAATTTTTCGAGAAAAATTATCGATTTTTGGAAACTATCATACAAAAAT
-CGATAATTGTGCTCGAAATTTGGCTCTGGAAGGAGGAAAAATCAATAATT
-TTTTTCTAAAAATCGATTTTTTTTCCAAAAAATCAATAATTTCGTCGAAA
-AACCGATGTTTTCAGAATAATCAAAACAAATTTCAAAAATAATAAAAAAA
-TCAATAATTTTTTCTAAAATTTTGCAATTCTTTTTTCTAAAAATCGATAT
-TTTTCCGGATTTTTTTCGTGAAAAAAATCATCAATTTTATTGAAAATTTT
-GCTAAATTTCGATAAAAAAACGATTATTTTGAAATTTCGATGCACCATGA
-TTTCGAAAATTCTGCTCCGGATCAATTTTTCTAAGAAAATTATCGATTTT
-TGGAAATCATCACACAAAAACCGATAATTTTGTGAAAAAATTCGATTTCG
-ACGCACCATGATTTCGAAAATTCTCAGAATTTTAGAAAATTTATCGATTT
-TGTGTAGAAAAAATTCGAATTCCAGTGGAAAAATTTTCTTTTCTCAAAAA
-ATGTTTGATTTAAAAAAAATCGATTTTTTCAGAAATTCAGGCATTTTTTT
-GCAAAGTAAATTGGCAAAAATCGATGATTTCACTGTGAGAATGGGAATTT
-TTGTCAAGAAAAATATAAAAAATTGCCTTAAACAATTAAAGTGGTTGTCA
-AAAAATTGAAATTTTGGAAAAAAAAATATATTTACAGATGAATTTATTAG
-AAAAATTCCACAAAAAAAGAGGTTCCATCTAATATTATTATGTCGCATTG
-GGGGTTATATCACATAATTTTTTTTTGTTTCGGTTGCCGTGGAGAAGGGG
-GAAAATATCACATTTTTCAGAGGAAAATCACAATAAATATAAGGAAAATT
-TACAAAAAAAGGCGCGGGGGGAAATTTCTTCACAAAATTATCGATTTTTG
-GGTGATAATTTCCAAAAATCGATAATTTTTATAGCAAAATTGATCCGGAG
-CAGACTTGGGATAAAGCAATTTTTGGAGGGGGAAAATGAACAAATTAATA
-AAATATAATATATTCGGGGCAAAAAATGGGAAATAATTAAATTGTCGGAA
-CATATAAATGATTAATTGATTGAGCCAATGGCATTGGTTTCATGTGAGCC
-AACGCTTCATTACAGAACACTTCCTCCCGATGACGTAGCGGACGAGAATG
-CTCGACACGAGCAAGACGGTAGGCTCTAGAGGCGTTTATCTGGAAATTTT
-TAGTGAAAAAATGAAGAAAAAAAGCTTTTTTCGCTGAAAATTCCAAGATT
-TTCGGTTTTTTTTTTGCTAATTTTTTTTAAATTTGCCTTGAAATAAATTT
-CCAGATGTTCAGTAGTTTTTTTTTCCTTCAAAAATCGATTTTTCAATTAA
-TCAAACATTTTTCAGAGTATTAATAATTATTTTTCCACCAGAATTTGAAT
-ATTTTATCCAAATTCTGAGAACCGGCTCACAGAGCGGCTTTTACTACGTG
-GCCTAGAAAAATCAAAAACTCGGCCAATGATTTATCTGGGATTTTTGACG
-TGGGATGTTTCTGAAACTTGACGAGAATGTTCTCGAATGGGGGTTCTATA
-GTTCCACCGTGGCGATTTTTGAGAAAATGTTCCGTATCCATGTTATGAAG
-GTGGCCGAGTTTTCTTATTTTACGGCCACGTAATAAAAACCGCTCTGTGG
-GCTCCTGAGCAGAATTTTCGAAATCATGGTGCATCGAAATTTCAAAATTA
-TCGATTTTTTTTTTGAAATTTAGCAAAATTTTCAATAAAATAAGAAATCA
-TGGTGCATCGACAAACCAATTTTTTCCATTTTTTCGGAATTTAAAATAAA
-ATTTAAAAAAAAGTAAAATTCTGGAATTTTACTTTTTAAAAATATTTTTT
-TCAAATTCTGGCAGTTTTAAAATAATAAAAAAACGTTTTTTTTCCATTTT
-TTTCAAAAATTTTTTTCTGAAATTTAGTACTACAAATGTAAAATTTACAG
-GGTTTTCACAGGAATTTTCAATTTTTTTGATTCGCTTTTCTTCAAAAATT
-CTAAATTTTCAGGTTTTTTTTTCCAATAATTTTTAATTTTTGTGAAAAAA
-AAATGTTTTTAATTTTTTCAGACTTAAAAAATTGTGACAACTTTTTTCAA
-TTTTTTCCGCAAAAATAAATTTTCGGAAATTTCAAATTTCCTACAAAAAA
-CCCCTTACCACAGTAAGCCTAACCAACTGTGAGAGCTCGCTCATCGTGAC
-TAGGGCTCCGTCGAAAAGCGGCCCAAACTCCAGAGCCGACGCCGTATCGA
-CGCGCACTCGAACCATCTGAAAAACCAAATAATGGAAGAGTTTTTTTTCG
-GCCAAGCCAGGCTGCCCCATTTGATCTACGTAGATCTACAAAAATTGCGG
-GAGAAGAAAAAAGAGACGCAGAGTTCTCAACTGATTTCGCATGATTAGGA
-GTGTGTTGACGTCACATTCGCAAAAAATTCCCGCATTTTTTGTAGATCAA
-ACTGTAATGGGACAGCCTGGGACCACGTGCAGTGTTAGGCTGTACCATTA
-CGGTTTGATCTACAAAAAATGCGGGAATTTTTTGCAAATGTGACGTCAAC
-ACACTCCTAATCATGCGAAATCAGTTGAGAACTCTGCGTCTCTTTTTCTT
-CTCCTGCATTTTTGTAGATCAACGTAGATCAAGCCTCTCTCTCTCTCTCA
-CCTTATCACCGACTTGCTCCAACACAATCAGAACATCACAAAACTTGGTG
-GCAATCGTTTCGCGGGTGTACACTTTCCGTGTGTTCTCAGTCCACACCAC
-ATGCACCTCATCGTTTCCGATATGCTTCCACTTCTGCTGCACATCGCCGT
-TGAGCATCGTGCTCACATGGAATATCACCTCAGCCTCGGCGTCTGCAAAG
-TACGGAGCCCGTGTCTCTACGGGCAGGCCACCGGTGTAACCATCGTGTCC
-TCGACCCACTTTGACCTCCCATCCGAGCTCCGACGTGAAGCTGTCAAATT
-GCGCGGAGGCGGAGGCGGTGGTGTTGGACAGGATCGATGCTCGATCTTCC
-TGCGATTCTCCTACATAGATCACAGCGACTTTGTGGACTTCACGAGAAGA
-AGTCTGATCTAAATGCTTCAAGTCACGCGGGAAATTCGCGTGAACCTGAG
-ACACAAGTGGGACGAATCCCAGGGAAGCCGACAGCGATCTCCATTCGAGA
-AGCTTCGCGTTCGGAGTGAACGCTGGCAAATGATCGTGAGCCGCCGACGA
-TGTGCCAAGTGGCTGTGGCTGCCGTCTAGACGTCTCAATCATCGATGTAA
-ACTGTGCGGCACCATCGACAGGCGACGGGCTCCCACGTGACGGGGGGTAG
-TCCGGTAGATCATCGAACGGATCATCCATCGCTCCGAGGATCCCCTGGCT
-TTCCCGACCGGGACGTTTTCCCTTGAGAGCCTCTTTGCGTAGCCAATTGG
-TCACGTTGGTGGCAGGCTTGCGGACATCCTCATGGGTATCTAGATCCCAG
-ATATGCCGGCCAACTACCGTTCGGGAAGTGATTTCGCAGGGGGATTTGGC
-GTGGAAATCCTTTCGGGACACCGAGATAATCGCCGATTGCCGATTAATAT
-ACACGGTTTTATCCTCTCCTTGTAGTGGCGGTGCTCCTGCAGAGCTCCAT
-CTCTGAACCTCAAAACCTCGCACCGGATACTGACCACCGAGCGTGACAAG
-CTCTCCATGGAGCACCATATGCCTATCGGCCAAGATACCGCGAATGACGA
-GTGGCATTTGAGGTTGTGGCCATTGCATACAAAGCTTCACCATCTGCCAC
-TCGATCTCGGTTCTCGTACGCTCATCGCGTAGGAGCGAGGCGGCACGGAG
-CAGCGCCTGGAGCAGTGTGGTGCTCGAGAACTGGGCGAGCGAGGCGATCG
-ACGAGCAGAAGAGCGGAATGAGCCGCATCGCGAACTGATGGGTTTCGATG
-GTTTTCAACGCGGTGAGCACCAAGTCGATTTGGGCTTTTTGCACGATGAG
-GATGGCTAGCGAGTTCACGATTACTACGGCGTTCTCCGATACGTCTGTAT
-TGACAAGCTGATCGAGAAGGATTTGCTCGGCTCCAGGATACGATGAAGCT
-AGCATTGAGAACAACTTCAACGAGTTCGAGGACACCTTCGTGTCCTTCGA
-GCTCTTCGCCGCCTGCAACATTTTCGGCAAATGCTCCAGAGCTCGCGGAG
-CAACAATTGATAGTTCGTGTGCAGAGAGCCCACAAATCGCCGGAACCACT
-AGTTGCTCCTTGGATTGCATAAGACGGATGAAGCAGAGAAGAATGTTGGC
-CGAGAGCAGTGGCGGTGGCCGACGGATCGTTGATTCGTTGAGAATTGCAC
-TTAGAGCCGGAACACAGCGGGGCAGCAGGATTGGGGGTACGGTAACGAGG
-CGGCACGCGAGCCAGTGGGCCAGTGGGTGCAGGTTTACCTGGAAAGCAAA
-ATTTTTTTTGGCTTTTTTTCAACTCGAATTTTTTTTCTAAATTTTTTTGT
-AAATTTTCTAAAAAATAATTGTTCGATTTCAGAGTGCCTCATTTCGTGCG
-TGATCTACGTTGATCAACAAAAAATGCGGGACTGATTCTGCATGGTTAAG
-AACGTGCCGACGTCCTATTTTTTGGGCAAAAAATTCCCGCATTTTTTGTA
-GATCAAACCGTAATGAGACAGCCTCACGTCGTGCCAGAAAGTCCCATTTC
-GTGCTTGATCTACGCTGATCTACAAAAAATGAGGGGCTGATTGTGCATGA
-TTAAGAACGTGCTGACGTCACATTTCGTTTGGCAAAAATTCCCCCATTTT
-TTGTAGATCAAACCGTAATGGGACAGCCTGACACCACGTGATCTTCAAAT
-TCCCGCCAGCCTGAAACCCACCAAAAGCAAGTTCTCAATCGTCAATGACA
-TGCAATCGATTGCCACGTGGGCACTCGAGTTGGTATACGGATCCACGAGT
-GAGATGACACGACGCCACGTTTGAAGCCACGCCAATTTGTCGCCAGACCA
-AGACTGAAAAAGGGAAAAAGTGTGATATGCGCCTTTAAGAAAGGGTTACT
-ATAGTTGTCAACAACAGAAAAAAATGCTGAAAAGGCATTTTTCAGGGTCT
-ATTTTCACAATGAGTTTGGGTATAAATTGGAGAGTTTTCCATAGATAATG
-CGTACTGCGCAACTAATTTGACGCGCAAAATATCTCGTAGCGAAAACTAC
-AGTAATTTTTTAAATTACTACTGTAGCGCGCTGGTGTCGATTTACGGAAA
-TTAATTAAAATAATTGATAAACAAAACAGAAACTATGTTCAAAAATCGAG
-ATCCCGTAAATCGACACAATCGCTACAGTAGTAATTTAAAAATTACTGTA
-GTTTTCGCTACGAGATATTTTGCGCGTCAAGTATGCTAAAAAATATGTAG
-TTGTGGGAGCCTTGTGAATTTTTAGAAGGTTTTTTGAAAAATAACTCGCC
-ACTATTAAAAAAAATATATATTTTGAGGCATTTTCAAAGGGTTAAAGTAA
-TTTTTTACTTTTAAAATCGTTTTTTTTTATAAAATAAATTTTAAGCGTTT
-TTAGTACAATTTTCGTAAGTTTTTCGTTTTTTTTTTGGTCATATTTTGTA
-GTTTTTTACACTATTTTCCAGAAATCGTCAGAAAAAGCACTTAGAAACGG
-GCTAGAAAAACGGGGTTTCGGCTTGCTGCGAAACTTTTTTTTTTGAAATT
-ACCGCGCAAAAATAAATTGTCATTCAAGTAATGTTGCAAAATGTATTAAA
-ATATAGGTTTTTAAAAATGTATTTTAATACAGTTGTGACGTAATTTTTCT
-ATTTCAATTTTTGCAAAATAAGAAAAAAAATGAATGTAAAAAAGTTAGAA
-AGTTTTTAAAACACATTTTATACAGGTCATTACGCTCTATTTTCTGCCAT
-TTAAAGCGAGAATGTTTTTTGACACTACATATATAATATTAGGTCTCCAA
-ATAAGATCCGGGTCAAAAATCATAACTTTGTTCGCTGTGTATCGATTTTT
-ATGAAATTGTGGGAATTTGTGTTATCAACCATGATCTTTCATTTGACAAT
-AGTCACAAAATTTTTTGGCCGTCCGAAGTGCCCGTACTCGGAGCCAATTT
-TTTCAGACATTTTTCAGATCTCGCTTCTTTTCAGGTTTCAACTGAGGTTT
-GTGTGCGGATATTGCTTAGTTTAGTACACAATGTAAGAAAACAAAAAAGT
-TTGGAAAAAAATCCGTCCAAAAAAAATTTTTTTGTCGCTCGTCAAAAAAT
-CTACAAAAAAAATTTTGTCGAAAATTCTTGAATTTTTATACAAAAATGAT
-GTAACCGTGTGCAAACTAATTTTAAACATACAAAACATTTGAGTATGAAA
-TTTGGATCTCGAGAAATACTCCAAAAACTCGAAAATAGTTCGAAAAAGCT
-GTGTTTTTTGTTATTTTTTTTAGTGTGACGCACCAAATTGAAATTTTTTG
-TATGTGTAAAAATAGTTTGCACATGGTTACATCATTTTTGTATAAAAAAT
-CGAGAATTTTCGAAAAAAAATTTTTTTGAAGATTTTTTGACAACCGACAA
-AAAAAATTTTGTTTGGACGGATTTTTTTCCAAACTTTTTTGTTTTCTTAC
-ATTGTGTACTAAACTAAGCACAATCCGCACACAAAGCTCAATTGAAAACT
-GAAAAGAAGCGAGATCTGAAAAATGACTGAAAAAACTGGCTCCGAGTTAG
-GGCACTTCGGACGGCCAAAAAATTTTGTGACTATTGTCAAATGAAAGATC
-ATGGTTGATAACATAAATTCCCAAAGTTTCATAAAAATCGATACACAGCG
-AACAAAGTTATGATTTTTGACCCGGATCCTATTTGGAGACCTAATATATA
-TATATATATAAAGATACCTACCGTAACCGCATTTGTAATATCATCAGTGT
-CATGAAAAACGTTATCCTCTGCAATTGTGTTCGACGATGACATACTATCT
-CCAGTCTCTGACGAATCATTTCTCGGGTCTTCCATCATTGCCGATTCGAT
-TGCCTGTCGTCGACTGTTCTGTGAGACTTCTGTCGCTTTTCGGAGAGCTT
-CTTCACGGGAGAATATGTCGATATGGGCGAGATGGAGGATTAATGCTCGC
-GTTACACTGTTCACAATCTGAAGATTTCGTTTTATTTTTTTGATTTTGGC
-TGGAATTTCATAAAGCTATGCTTTTGTTGAAATTTTAGTTTAAAAAAATA
-AGGTTTTTGAACTGAAAATTGGGATAAGAATTAGAAAAAAATTTGTTTTT
-TCTCTAAAACTGCTGCATTTTATTCAATTTTGTAAGATTTTCTGTACAAA
-ACATAATAATTTTTGAATTTTTTTTCCAAATTTTTTGAAATTTCAGCAAG
-AACTGGACAAAAAGCACTACTTTTACTAAAATTGGCAGCATTTAGGAATT
-TCTGAAAAAAACAATTAATTTTCATTATTATTGTCATATTACAGGAACAC
-ACTATTCTGAGAATGCGTATTACACAACATATTTGACGCGCAAAATATCT
-CGTAGCGAAAATTACAGTAATTCTTTAAAAATGACTACTGTAGCGATTGT
-GTCGATTTGCGGGCACGATTTTTTGAAATGAATTTTAATCATATTTTGAG
-CAAAAAATGGGTCAAAAATCAAGCCCGTAAATCGACACAATCGCTACAGT
-AGTAATTTAAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTC
-AAATATGTTGTGTAATACGCATTCTCAGAATTTTGTGACTTTTCAAAAAA
-AAAAATCGTGATCAAAAAAAATTTTTAATTGTTTTTTAAGATGAAATTAC
-GATTTTTTTCGTTCTCTATAAATTTTGATCAAATTTATTTCAAAAAAAAA
-AAAAATTCTTTCTATATTTTTTTTTTCGAGTTTTTTTTTCTATCTTCTGT
-ACAAAACACAGCAATTTAAAAAAAAGGCAAAATTTTAAGATTTTTCTAAA
-TCTAGATTTCTAATTTTCCTCGGGGTTCTGGCCATCATCCTCATAAACAG
-AAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGAAACTCTTCCATTTC
-AATTTATGAGGAAGGCCAGAGCCTCGTGGAAAATTAGAAATTAGATTTCG
-AAAAATCTTAAAAGTTTGCCAATTTCTTATTAGATTGATGTGTTTTGTAC
-AGGAAATTGAGAAAAAAATCGGCAATTTTATACAATTTAATTTTAAAAAA
-TATAGTTAAAAATAGAAAAATTCAATGAAACTGGAAAAAAATGTTTACTT
-TGAAAAGTTAAAAAAAATGAAAAAAAAACTCAAAAATTGAATAAAATGCG
-GCAATTTTTGAAAAAAAAGCTTTTTTCCATAGTTTCTGTCAATTTTCGGC
-TAAGATTAATTTTTTTTCATCAAAATTTCGATTTTCATACTCTCTTACCG
-AAGCCCATTGCTCAGCCATCGGTATCCAAACACCCTTCTTCATGACGTCA
-TGCACCTCATCCCACACCTCATCGTCAATTTCGATGCGTCTGACAGCCTT
-AATCACGACGACATTCGAGATGAGTGTCGACGTAAAAGCAGCCGACACAT
-TCTGGGAAAACGCGTCCGATTGGCGACAGATTTTCGAGGCGCATGTGCAG
-AGTCCCGCCATTAATTCTGACCAGAATTTTTGGGGAAGCGGTTTTGGGAG
-TTGAATTCGATGGGAAACCAGCTGCTTGCACGATGTTAGAATCGCAAATG
-CTATGGAGATTGCCGAGGAGTGACTGGAAAAATATTTTTTTTTAATTTTT
-AAAGGGATTTTGGGAAATCGAAAAATTTAAAAACTCGGATTTATGAAGTT
-TTTGGCAAACCGGCAACTTCTGGTTTTTGGAATTTCGCCACTTTTTAACA
-ACCGGCAATTTGGCGATTTGCAAATTTTTGGAAAACCGGCAATTTATGGT
-TTTTTTTTCGGAATTTTGCTAATATTTTTAAAACCGGCAATTTGCCGATT
-TGCAAATTTTTGGAAAACCGGCAATTTGTGGTTTTTGGAACTTGGCCACT
-TTTTATAAACCTACAATTTGCCGATTTGCAAATTTTTGGAAAACCGGCAA
-TTTCTGGTTTTTTTTTGGAATTTTTCTAAAATTTTAATAAACCGGCAATT
-TGCCGATTTGCAAATTTTTGGCAAACCGGCAATTTGTGGTTTTTTTGGAA
-TTTTTCTAAAATTTTAATAAACCGGCAATTTGGCGATTTGCAAATTTTTG
-GAAAACCGGCAATTTTTGATTTTTGGAATTTTGCTAAAATTTTTAAAAAC
-CGGCAATTTGCAAATTTTTGGAAAACCGGCAATTTGTGGTTTTTGGAATT
-TTGCCACTTTTTATAAACCGACAATTTGCCGATTTTCAAATTTTTCGGCA
-AATTGCAGGTTAATAAAAAGTGGCAAAATTCCAAAAAAAAACCAGAAATT
-GCCGGTTTTCCAAAAATTTGAATATCGGCAAATTGTAGGTTTATAAAAAG
-TGGCAAAATTCCAAAAAACCACAAAATGCCGGTTTTCCAACTCTTTCAAC
-GAGAGTATCCAATTTTTTAAATAGAAAAATTGCCGTATTCCCTACCGTTC
-TCCACACATTTGCCGATTTTCAAATTTTTGGAAAACCGGCAATTTTTGAT
-TTTTGGAAGTTTGTAAAAATTTTTTAAAGCGGCAATTAGTGGTTTTTGGA
-TTTCTGTCACTTTTTATAAACTTACAACTTGCCGATTTCAAATTTTTGGA
-AAACCGGCAATTTGTGGTTTTCAAGTTTTCTGCTAATTGGCAAACTGGCA
-AAATGCCTTATTTTGGAAGTTTAGGTAAATTCTCAGAACACCGGAATTTT
-GACATTTTTCAAAATTCCAAAAACCACAAATTGCCGGTTCGCCAAAAATT
-TGCAAATCGGCAAATTGCCGGTTTTTAAAAATTTTTGCAAAATTCCAAAA
-AACCACAAATTGGCGGTTTGCCAAATTTGCGAAATTCCTAAAACTGGAAA
-TTGACGGTTTTCAAAAAAAAAAAAAGAAGGGAAATCGGCAAATTACAGAC
-TTACAAAAAGTGGCAAAGTTGCAAAAGCCAGAAATTGCCGGTGTGCCAAA
-TTTGCGAACATTTGAAAATACCACAAATCAAATTGCCGGTTTGCCGAAAA
-TGTGCAAATCGGCAAATTGCCGGTTTTTGAAAATTTTTGCAAAACTCCCA
-AATTTACAGAAAAAATTCCAAAAATCAAAAATCCGAATTATTCCAGAATT
-TTTTCTTCGGAAAAATTAAAAATTGTTCAATTTTCCAACATTTTCAACAA
-GCGTATTATCGAAAAAATACAATCGCACAAATTTCTCGTAATTTATTTTT
-GATCTACCTTGTTGACTAGGCTCCGCCCCTAATCTTGTTGCTGTTGTTAT
-TGTTGTTGTGGCTGTCTAGTTGAAGGAAGGGGCGGAGCCTATTCAACGAG
-GTAGATCAAAAATAAATTATGAGAAATTTGTGCGATTGTATTTTTTTTCG
-ATAAAATCCAATTTTTTAATGGAAAATTGCCAATTCCCTACCGTTCTCCA
-CATTGAGCCAAATACGGACTGTGAAAGAAGCCCAACAAGATATTCGAGAG
-CAACAGCGAGCATCGTTCAATCGATACTTCTCCAGACGCTACGAATGGTG
-GAATTTCGTACTGCAAAAGCCATGCGGAGAGCACATTTACCACTTTATGA
-GTGACATTTGAGCATGCCAATGGGAGTTTCATTGCTTCACGCATTAGTGT
-TAATGCTACGTTTGTTGCCTGGAAAAGGACAAAAAAAACTATTTTTTTAA
-ATGTAAGTAATTAATTTATTTTTTGAAATCTCTTTAAATGTGGTGTAGTC
-GAATATTTTTTCAATTGCTTAATTACCCTCAAAATTGTCTGAAAACACCG
-AATTTCATAATGAACTTCTTGAAAACTTCTCAGAAAAAAGTTATGACGCC
-TCAAAAAATGGCCTAAAATTGGTTAAAATTTGAAATTTGACCTACTTGCC
-AAGCGGCTGGAAACTAGCTTTTTTTTGAAATCACTGTCAAATTTTGAGTA
-TTCAATTTAATTATCTTGCGTTTTCAACTCGATTCAGGTATTTTAAAATC
-GATAAACGAAGAGATTTTTAAAAATTATTTACCAAATCTCTTCTTCCATC
-GATTTAAAAATACATAAATTTAGTTGAAAACGCAAAATAATTAAATTGAA
-TACCCAAAACTTGACTGTGATTTCAAAAAAAAGTTAGTTTCCAGCCGCTT
-GACAAGTCGGTCAAATTTCAAATTTTAACTAATTTTAGGCCATTTTTTAA
-GCCGTCATAACTTTTTTTTTTTGAGAAGTTTTTCAGGAAGTTTCATTATG
-AAATTCGGGTGTTTTCAGATAATTTTTAGTATAATAAAGCAATAAAAAAA
-ATTCGACTACACCAACTTCAAAAATGTAAGCAATTTTATTTTGAAGGCGG
-TTTTCTTTTACTTTTCTAAAAAAAAAATTTATTCAATTTTACGATTTTTT
-GCGTAAAAAAACACGGTCAAATTTTTGTTAAATTCGAAAAGGCGTGTCCA
-TTACGGTTTGATCTACAAAGAATGCGTGAATTTTTAGCCCAAAAAGTGTG
-ACGTCAGCACGAAAATTCTGCGTCTCTTCTCCCGCATTTTTTGTAGACCT
-ACGTAGATCAAGCCGAAATGGGAGAGCCTGACACCACGCGCGTGTGCGCC
-TTTAAAGTGAGTACTGTAATTTCAAAAATTCCACAACATCGAGAGTTTGA
-AACTACAGTACTACTATTTAAAGGCGCACACACTTTTTCGAATTTAACAA
-TAAATTGTCGTGTTGAGACCGTATTTAGGGCTCAAAAAAAAAATAATTAT
-CTCGTTAGAATATTCGGGAAAGTTGCAGTTTCACTGAAAATTTGAATTTC
-CCGCCAAAACGAATTTTCTCCGAAAAATTTGAATTTCCGCCAAAAAATTT
-TTTTAAATCAGAAATTTGAATTTCCCGCCAAAATCGTATTTCTCAGAAAA
-TTTGAATTTTCGCCAAAAATAAAAAAAAAAATTTTGGCGCGAAATTCAAA
-TTTTCTGAAAAAAAAATATTTCGGCGGGAAATTCAAATTTTCTGAGAAAA
-TATTTTTTGGCGCAATTTTTCATAGAAATTTAGTTCTTTTGATGTGTAAA
-TTTCCAAAAATTTCAACAAAAAATCGCATTTTTCTTATTTTTTCCCCAAA
-ATTTTCAAATTTTCTCCTCCAAAACCACGGAACTTTATGCGACGAAAAAA
-GCGCATTTCGATACAAAATCAACGATGCATGTGTAGTTTGTAGTGTTGGT
-TGTCCTCCAGCCGTTGTGTGAGTTGTTGCCGATGCAATATTATTAATCCA
-TCGAATTAGCCAATATCTTGCAATTACCACCGGATCAGCTGTATCCAATG
-GTTCACCATTCTCATCGGCTCCTTCCCAGCCACCGAATACATCGACTCCG
-TTCGTTTCCAGATCGGTGAAGCATTCGCCCATGTATAGCTTTATTACTCT
-GAAAATTGAAGAGTTTTGTACTCCTCTCGGACAATTGGAGGTGATTTTTT
-TTTTCGAATTCTTTAAAACAAAAATTTCCCGAAATTGAGCTTTTAAAATT
-TTAAAATTTCAAAATTTCAAAATCAAAAAAAAAAAAAAAAACTTTTGTAC
-AAAATTTAAAGTGGAGAATTTTTGTATTTTAGACAAATTTTTTAAACATT
-TCTAGCAGAGTTGAAAATTTCAGGCAAATCGGCAATTCGCCGAAATTGAA
-AATTTCTCATAAATCGGAAATTGCCGAAAATGAAAAATTCCGGCAAGTCG
-GCATATTGCCGGAATTGAAAATTCCTTACAAATCGGCAATTTGCCGGAAT
-TGAAAATATCCGGCAAATCGGCAATTTGCCGGAGTTGAAAATTTCCGCCA
-AATCGGGAATTTGCCGAAATTGAAAATTTCGTATAAATCGCCGATTTGCC
-GGAGTTGAAAAATTCTGGCAAATTTGAAAATCGGCAATTTGCCAAAGTTG
-AAAAATTCCCGGCAAATCGCCAATTTGCAGATTTTTCGACCGAAATTTGC
-CTACCGGCAATTCCTGCCGACCCCTTTTTTCCGAGAAGAATTAACTTTCC
-ATTTCTAAAAAATCTGTAATTTGCCGGAGTTGAAAATTTCCGGCAAATGG
-GCATTATGCCGAAAATGAAACATTCCGGTAAATCGGCAAATTGCCGAAAA
-TGAAAAATTCCGGCAAATCGGCAATTTGCCGAAGTTGATAATTTCCGCCA
-AATCGGGAATTTGCCGAAATTGAAAATTTCGTATAAATCGCCGATTTGCC
-GGAGTTGAAAAATTCTGGCAAATTTGCAAATCGGCAATTTGCCAAAGTTG
-AAAAATTCCCGGCAAATCGCCAATTTTTTGCCTGTTGTGCATATTATTTT
-CACGACTAAAAATCGTAATAAATTAAATTAAATTAAATTTGCCGATTTTT
-CGACCGAAATTTGCCTACCGGCAATTCCTGCCGACTCCTTTTTGCCGAGA
-AGAATTAAAATTTCCATTTCTAAAAAATCTGTAATTTGCCGGAGTTGAAA
-ATTTCTGGCAAATTTGCAAATCGGTACTTTGCCGGAGTTGAAAAATTCTG
-GAAACCGGCAACCCGGCAAACCGCCAATTTGCCGATTTTTCGACCGAAAT
-TTTTTTTTCCTGTCGACCCCTTTTTCCGAGAACAGTTAAATTTCCAAAAT
-TCTCTAAAAACCACAAACTTCTCAATAATAAAATTCGCACACTCCTGTCG
-CTTCCCCTCATCATTCCACTCAATCCGCACAGTTTCTCGAGTACAGTACT
-CCAAAAACTTGTCCAAATAAACTTGGAGCATTTGAGCCCGTTCTTTCGAA
-GTCTGCGACGCCGACGCTGTCGACTTAATCGGCCCATTCCTCAGTCGTTC
-ACACCAATCACCGGCTCCCGACGATTGACAGTACTCGTTGAGCACATCTT
-CCGCATTTTCACCACTGGTAAGCGGGAAGAATGGTAGAAGACACTGAAAG
-ACACGATCCAGGTCTGGTGTCGCTTTTCCGTACACTCCGAGACATTGATA
-GAACACTAGGAACAAGCGAATCGCAATTTTTCGCACTGCCATCAAATTTT
-TCGGGTAGACTGCTTTTTTGAGAAGCGATTCGATTGCATGACGTTGCCAG
-CCTGAGAGAAATTGGGAAAATTTTTAATTTTTATTTAAAGGTGGGGTAGC
-GCTAGTGGGGAAATTGCTTTAAAACATGCCTATGGTACCACAATGACCGA
-ATATCATGATATAACAATTCAAAAAAATTTTCTAAATTTTATATGATTTT
-TTGAAAATTGAAAAAATCTCAGTTTTTGTCTAATTCCAATTTGAATTACC
-GCCAATTGAATTTGTTCTATGGAGCGCGCTTGCACGTTTTTAAATTTATC
-TATTTTATTTTTTGTTATTTTTTGTTATTTTTCCACCAATTTTTAATGTT
-TTCGGTGTATTTTTGCTCGAATTTTAGAGAAAAAGTCAAAATAAATGCAA
-ATTTTCGATTAAAAAGCACGCTTACAGTCGTAAATCAGTGAAATTAATTA
-ATTCAGGTTTGAAATCGTTTAAAATCGTTACTTTGTCATTTTTACGCCTG
-TAAGCGTGCTTTTTAATTGAAAATTTGCATTTATCTTGACTTTTTCTCTA
-AAATTCGAGCAAAAATACACCGAAAACATTAAAACTCGGTGGAAAAAACA
-ACAAAAAATAAAATAAAATAAATTAAAAAACGTGCAAGCGCGCTCCATCG
-AACAAATTCAGTTGGCGGTAATTCCAATAGAAATTAGGGGGGAAAACTGA
-GATTTTTTCAATTTTCAAAAAATCATATAAAATCAGGAAAATTTTTTTGG
-ATTTTTTATCATGATATTGGGTCATTGTGGTACCATAGGCGTGTTTTAAA
-GCAATTTCCCCACTGGCGCTACTCCACCTTTAATTTCTGACGGTTTTTTT
-TCGGTTTTCCTTGAAAAATCCTCTAAAAATCGATAATTTGTAAAAATTGC
-GTTGTTTTTCCGGGATTTTTTTCGGTTTTCCCACGGGGTTCTGGCCTTCC
-TCACTGAATTTTTCGCGCTCCATTGACAATCGCCCGTGTACTCCACACGG
-ACAAATCACATTTAGTTTTACAACTAAAATCGAGCCGAGACGCGGCAGCC
-AACGCGCCGTAAATCTACCCCAGATATGGCCTGGCCTAGTTCGGCGAAAA
-CTCTTCCATTTCAATGTATGAGGGAAGCCAGAAATCCGTGTTTTCCTCAA
-AAAAATCCTCTAAAAATCGATAGTTTGTAAAAATTGCGTTGTTTCTTCGG
-TTTTTTTTGCAATTTGAGGGTTTTTTGTCGATTTAACACGGATTTTTGGC
-TTCCCTCATATATTGAAATGGAAGAGTTTCTGCCGAACTAGGCCAGGCCA
-TAACTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTT
-TAGTTGTAAAACTAAATGGACTTTGTCCGTGTGGAGTACACGGGCGATTG
-TCAATGGAGCGCGAAAAATGCAATGAGGAAGGCCAGAAGCCCGTGCGGAA
-AGACGGGGAATCTCCGAAAAACGGGGAAAATCTACAAAAAAATGAGTTTA
-AAAAAGACTTCCTCAAAAAAATTCAAAAATTGTGGTTTTTTTTTTAATTT
-TTTGTATTTTGATAAATTTTTTGCGACATCAAAAAATGGAAGAACTTTTT
-TTTTTCGATTTTTGAATTTTTTGTTGGTGAAAAAGAAGAAAATTTCGAAA
-ATTCGTTAGGGAATGGATAAATTTTAATCAAAAATCGATTTTTTAAAATT
-ATTTTTTGCAGTTTTGCATAAAAAATCCAGATTTTTTCGCATTTCGCGCG
-TAATTTTCATTTTTGTCGTTTTTTTTTTCTGAATTTTCCGAAATTTCTGG
-AAATTTTTTCTTTTCTTGTTCTGAAGCTTATGCCTAAGCCTAAGCCTAAG
-CCTGAGCCTAAACTCCAAAAACGCACCACTTCCAACAAGCTCCGGAGCCA
-AACAGAGCACCTGCTCCAGTGTCCAAAGCCCGGATTCAGCCTCAATTGCA
-CTATCGATTTGACTGCTGACATCGTTGACGAGCAGAAGCTCGTCAACGAG
-ATGAAACGTCTCGAAACTGTGCTCATCGAGCAGTTGACGCTTTTCCTGAA
-GAAATGTTGTGGTCGAATTAATGCGAAATATGGGAAAATTCGGGTTAAAA
-TCGATGAAAAATCGTGGAAAAACGAACATTTGTGGTTAATGTGTCGAGCA
-GAATCTTCAAATGTTTCACACGGCTCACACAATCCCTGTTCAAGTCGGTG
-AATCTTGAAATGCTCGCCTGCACATCTGACGATTTGCCCTTTCGGGCAAA
-CATTTTCCTGTGATTTTAGGCGATTTTCTGCAAATTTTCGCTGTTCAAAC
-GTTTAAAATCGACGGAAAATGCGTATATTTTACTAAATATGCGAGAAATA
-GTGATTTAATTCGAAAAAATCAATATAAAAATGGAAAAAAACTACAGTAG
-TAATTTAAAGGCGCATACCTCGAAAGTTAAAATCGTGCCAGGACCCGCCG
-CAATTTAGAATCGATTTTTAGATGAAAACTTTTTTTTTCTTACTAAAAAT
-TAAAATTTTTCACTGAAAATTTCGGTTAAACTCTGACTTTTAACACGAAT
-CTTATCAAAACTATGACAATTTCTAGTGAAAATCGCCAATTTTGTGTGTA
-AAATCAATTTTTTCAGTGAAAAATGTTTTTTTTTGAGTTAAAACTAAATT
-TCGAGCTTGAAACTAGAAAATGTCAAGTAAAAAATTCATTTTTAAGCGAA
-AAATTAACGTTTTTTTCCAAATTTTCGCCTATAATTCACACAAAAAATAC
-TGAGTCAGCAAACAATGTGGGAGCATCCCGAAAATGGTGCAGAATGGTAG
-AGCAAAAACGAAAAATCGATGAATTATTGTGGAGAGAGAGGAAATTTTAT
-TCAATTTTTGAGGAATGGAGGTTAAAAAAAAGAGTAGAAACATTGAAAAG
-TGGCAAAGAAATCCAGCTTGAAACCGGAAAAACTCCCAGAAAACGAAGCA
-AATAAGAAAATCCCACAAAAAATCCGAATTTAATTGCAGTTTTCGACCGA
-AATTCAGCCAACCAGTGAGTGGTTCAATTATTAAAAAGCACATATATACA
-TATAACTTTATTCAAAGGACATAATCCATATAAAGTCTGTCAAAACGGAA
-AAGGTTCTTTCCAAACACACAATTGGCCCCCTCTGTCCAAAAGAGAGAGC
-ATGGGAATCGGAGAGGGCGGTGAGAGAGACGCAGACATCGAGATGACACT
-TTTTGACAGCAACACTGTGTGTGTGTGTGTGTGTGTGTGAGTCTCTGTGA
-TTGAGTGAAAGCACTTTTGGGAATATATACTGGTAGAAATTTAATTTAAA
-ATGATAAAAAATTTCTTGGGATTTTTTTTTTTGAGTACTGTAGCCACAAA
-AGTACGTAATTTTCTTGAAAATGCGCCCATGGGGTCCCAATGACGTAATA
-TCATGATAAAAAATTTTTGAAAATTGGAAAAATCTCAGTTTCCCCTCCCC
-CCCCCCCCTAATTCCAATTTGAATTTCCGCCAATTGAATTCGTTCGGCGG
-AGCGCGCTTGCATTATTTTTATTAATTTATTTAATTTTCTCTGTTGTTAT
-TTCACTGATTTTCTTCATTTTTTGGGGATTTTTAATTGGGAAAAGAGAGA
-AAAATGCAAGATAAATGCAAATTGTTCATTAAAAAATCACTGAAAATGGG
-TAAAACTGTGAAATATGCTAATTTCAGGCTTGGTGTCGTCGGAACTCATA
-ATTTCGCAGTTTTACCCATTGTCTATGATTTTTTAATGAACATTCTGCAT
-TTATCTTTTTTTTTTAAATTCAATTTCTATTAAAAATCCCCAAAAAATGA
-AGAAAATCAGTGAAATAATTAGAAAAAATAAAATAAATTTATAAAAATAA
-TGCAAGTGCGCTCCACCGAACGAATCCAATTGGCGGGAGTTCAAATAGGA
-ATTAGAGGGAAAACTGAGATTTTTTTCAATTTTCAAAACAAAAAATCATA
-AAAAATAAGCATTTTAGCTTAAAAACTCGAAAAATCATACAAAAATTAAT
-TTCAAGTTGTCCACGAGTAGTACGCGACGCCTGGTTGCAAAAATGGCGTA
-GATTTCGATTATTAAAAGCTTAAAAATCATTTTTTTTTACCAATTTCCAA
-TTAAATATCCTAATTTTAATCTCAATTTTCTTGAAAGACGTGCAAATATA
-GATACATCTAACATAAAAATTCTTCGCTGCGAGACCCAGGACCCCATAAA
-TCGCCTGCGCCTTTAAATTTATATTTATTTTCTCTCTCAAACAGCGATGA
-AAATCACGTTTTTGAACCAAATTTTCCAAAAAATAAGACAAATTTCTATT
-TTAAAAACCACTTTATTCGGTCATTGGTCGCTAAATAGCAAATTTTGAGG
-CAAAAAAAAAACGAACAGACAACGGAAAATCGAGTGAAAACAAGTGAGAA
-CACAGCAAAACTAGTCCTAATTAATTAAAGGCGCATCACGTGGAAAAGAA
-AACTGTTGTGGAAGAATAAAAAATGGAACATGAGGGGAAATATTACAAAA
-ATAGTAAAAGATGCATCAAGATTAAGATTATTTTTCGAAAATCGAGTCCT
-CCGCCCAGGAATTCATCATAATTTTCGACTTTTTTTCGGAGATTGCTGCA
-CATTGTCGGCTGCTCCGGTGGTTTTTGGAAGGTTTTGAGAGCTGAAAGAT
-TTGAATTTTTTGGAATTTCGAGAAATTTCTTTTTTTTTACCCGAAGCGCT
-TTGAATCTGGCGAGCTGCATTTCCAGCTTGCATTGTGCGTTCAGTGACTT
-TGATTCCTTGAAGTTTTCTGAAAAAAAAACACGAGTTTTGACTTGAATTT
-TCTGAATTTTTAACACGGATTTCTGGTTTCCCTCAAAGAATTGAAATGGA
-AGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGATTTACGGCG
-CGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATGTGAT
-TTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATT
-GTCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAACTCCGTGATTT
-TTCTTTTACTCGGCGTAGATTTCGCAGTTTCAGACTGTTTTTCAGGTCTA
-ATCAGCGGAATTTTCGTTGATCCCGCCAATCTCGGTGATTTTCTGAGCCT
-TTTTCGCTCAGGTTCTGGGATTTCAGCTTTTAGAGCAATCTTTGAAATTT
-CGACAAGTTTCTTGAAGTCCAACGCAATTTTTTCAGTAGAATTCGCAGTT
-TCCGGCAATTTTTCTGAGCAAATCTTCGAAATTTCGACAAGTTTTCTGAT
-TTTCGGCGTAGATTTCGCAAATTCTGACGGTTTTTCTGCAAATCCCGGTG
-ATTTTCGGCTCGGGGAGCTCCCAGCTGCTCTATTGTTCAGCATTGTCTGC
-TCAGTAGCGGGGGCGTCTTGATTTTCAGTAGAATTCGCAGTTTTCGGCAA
-TTTTTCTGAGCAAATCTTCGAAATTTTGACAAGTTTTCTGATTTTCGGCG
-TAGATTTCGCAATTTCTGACGGTTTTTCTGCAAATCTCGGTGATTTTGGG
-CTCGGGGAGCTTCCAGCTGCTCTATTGTTCAGAATTGTCTGCTCAGTAGC
-GGGGGCGTCTTGATTTTCAGTAGAATTCGCAGTTTCCGGCAATTTTTCTG
-AGCTAATCTTTGGAATTTCGACAGGTTTTCTGACTTTTGGCGTAGATTTT
-GCAGTTTCTGGTGATTTTCGGCACGATGAGCTCCCAGCTTCTTCATTATT
-CAGCCTTTTCAGCTGGGCTTCTTGAGAGCCTGTAATCACGTCGCCGTCGT
-CATCCTCTGAATCATCATCCGACCAAATTTCGATTATTTCCTGAAAAAAT
-CGATTTTTTTTGCTTTTTTTTGCTCTTTTCTCATTGTCAGCTTTTCCCAC
-TTTCCAGCAATTTCTCCACGGCGTCGGAACGTATCCTGGTCGCCGATCGA
-ACTGGATAACTGGCCGGCTGGCGATAAATCGGCGAAGATCTGCTACTATC
-TCGTCTGAAAACGTTTTTCTGCTAAAACCTGCTAAAAATCTGGCTAAAAT
-CACCTGATAACATTACAATATCATCATTTCCGGGCATTTTTGACGAAAAA
-AAAGCGGAAAATATTTAGAATTTCGAAAATGAAGAGAAGCGTTACGGTAC
-TAAAGGCACATGGCGTAAAATATTCCGCAGGACTCGCCGCGATTTATGAT
-TTTCACTATTTTTTTTGGGCAAAAGTTGACATTTTTCAGAATAAAATTCA
-AAATTGTGTTGATAAATTGTTTATTTGATTTTTTTTTCAAATTTAAATAA
-ACTGTAAATTTTAAATTTTCCCCCAAATATTCGCAAATTCCCTTCAAACC
-AAGTTTTAATAGCACAGTAATCCCCGAGCAATCGCGCTCCACCGGACTAA
-CCTACACACCGCGAATTTTGAATTACATCCCTCATAATTAATTGTTTTTG
-CCATTTTTTCGCTATTTCCAGTGGATTTTAATGAGTAAAAGCCTACAAAC
-CGACGAAAATGGCGGTGTCAGTGAAAGTCCATCAAATTGCACATATTGCT
-ACACGCTGGAATGCTCTCTACGCATCGAATCCACCTCATCAATCAAGAAA
-AAGACTCCAATCTCCTCGAAAAGCGCTATAATGACTGTCGGCAGAAATGC
-GCAGAGGTTTTAGTCGAATAAATGCCTGTTTTAAGAGCAAGAAATTCCAG
-AAAAATTCACCTTCAAATCGAGCTAAAGACCACCGCTACCGGACAGCCCG
-CTGTAGTGTGCTATGACGTCACAGATGCAGTTGTACACTTGCAAAGCGTT
-GCAAATGGGAAGTGTACTGTAGAAATTCCTTCGCTGTAAGACCTAAAAGA
-CCAGAAAAATGGAAAATATCTGAAAACCCCAATTTCAGCTCGTTAATGTT
-CCAAATGTTCAATTGCGCGCCGCGAAAGCTCAACGTCTTCATGAAATCTC
-TCCAAGCAAAGTTGGATATTATGAAAATGGAGAAAAGCCCAATTTCAGCA
-GTGTAAAATCGATAAATTATCGAAAAATCAATAAAAATCCCTTCAGACCC
-CGGCAATTCTCACGTCCGCCGGCAGTTTTCAGCGTTCTGAGCCCGCTGAC
-GATCAGCGAAATGCGAAAAGTGAAGAAGCTACGCGAACCGTCGGCGCTGG
-CGAGACCTTCGAAAGAGGCGACCACACCGAAGCGGCGGTAATTTGAAATT
-TTCACATTAAAAAAAAATCGCGAATTTCAGCACTTCCTCAATGAATTTGC
-TCGCCGGCGGCTTGGAAAATCGAATTATGAATCGATCGATTGGGCTGAAA
-AGGACGACCAGTTTTGCTAGAGATGATCGTGAAAAAGCCGAGGTTCTGCA
-GCTAAAAATCCGTCAAAAATCGATAAAATTTCGTTTTTTTTCCGTGAAAT
-TCCAGGTTTTTTAGTCCAAAAGCACGGATTTCTGGCTTCCCTCATAAATT
-GTAATGGAAGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGAT
-TTACCGCGCGTTGCGGCTCGATTTTAGTTGTAAAACTAAATGTATTTGTC
-CGTGTGAAGTACACCACTTTCCCATTGCCCGGCGGGTGATTGTCAATGGA
-GCGCGAAAAATGCAATTAGGAAGCCCAGAAACCCGTGAAAAAGTGTCACG
-CGGTTTTCAAAGTAGAGGTGCAAGCGCGCTCCACCGCTCCACGGTGCTTG
-GCGGCAAAACCAGAATTTTCGCTGATTTCAAGCATTTTCCGTCGTTTTTC
-ATGATTTTTCATGTCGAAATAGTGTTTAAAAATGTCTTTAATGCTGAAAA
-GTGAATATTTCAAAAATTTTGACATGAAAAACTGAAAAAATTATCGGAAA
-AGTGTATTTTTTGAGTTTTTACTTATTTTTCGGTTTTTAAAAAAATTATT
-TCTACATAAAAATTGATGAAAACAGCATATGAAGTGCAAAAAATAAAGAA
-GACTTACATAAATTTTGACAAAAAATCACGAAAAACAATAAAAAAAGTCG
-AAAAATGATTGGAAACGGAGAAATTTTCCCTTTTTATGTAGAAATTTTGA
-ATTTTTTCAAAATTTTCTCAATTTTGAAACACAAAACATGAAAAATGATT
-GAAAATATTTGAATTTTTAGTTTTCGCGCCAATACCTAACGAGACCCATC
-GGTGTGACCATGGAGCGCGCTTGCATCTCGATTTTAAAATTCGTATGAAT
-TTTTCGCGCTCCATTGACAATCGCCTGCCGGACAACGCGTGGGAAAGTGT
-CGTGTACTCCACCCGGACAAATCACATTTAGTTTTACAACTAAAATCGAG
-CCGCGACGCGACACGCAACGCGCCGTAAGTCTACTGAGCCAAAATGGCCT
-AGTTCGGCAAAAACTCTTCCATTTCAATTCATGAGGGAAGCCAGAAATCC
-GTGTTTTAACCTAGAAAATCAAGAATTTTTTTGGGAAAAAATGCCAAAAA
-TCCCAGATTTTCCCTAATTTTCAGCTAATTTTTCCCCGAAACAGACAATT
-TTCAGACCCTTGTCTCCCTGAAATCATTCAAAGATGCTCCTGCAATTTCC
-GAACGGATTCAGCTGTCAGATGAGCAAAAATCGGTTGTCCGATGTGTGAT
-AAATGTAATTTTTCGTTCGAAAAAAAAAATTATCGAAAATTTGCAGTCTC
-GAACGAGTGTCTTCTTCACGGGATCCGCTGGAACCGGAAAATCTGTGATT
-CTTCGGAGAATCATTGAAATGTTGCCCGCCGGGAACACCTATATCACCGC
-AGCGACAGGTAGAGGATCACTTTGAAATATTTGCAAAAAATCGTGTCAAG
-ACCTCCCCCAAAAAATTTTCATGTACCTTTAAAAAATAGAACCGACTTTT
-TTTAATTAAAAAATCATTAAAAATTAGAGGAAAATTTGGGAAAAAAAATC
-ATTAAAAATTCTTTAAATAATAATTGTTTATTTGTCACAAGAAATAGCTA
-CACCGGAAGATAAAGAAAAAAAGTAAATAAAAAAGATGTGTGGACAAATA
-AGTAAAATGACCAATTGGACCAGCTATAGCCCGGGAGGTTAAGTTGGGGG
-GAAGAGGGTGTCAAATGGGATAGAGTCTAGGCGCGACGCAAATGCATTTG
-GAGTTAACAGTTTAGGGAAACGTTTTGCTATTCGATTCCACAACGACAAG
-TTAACATGTAGAAAACATTTAGACGGAACACCACAGACAACAAGTAGATA
-GGGGTGACGAGTAGAGCGTGAAGCTCGAACGAACGATGATAAGGACGGGA
-AGTGATACTCGCTTGAAATAATTTTATGGAAGGTTCGGAGGATTTGAAGA
-ACCCGTCTATGGTGGGTAGACAATAAATTAAATTGGGAAAGCCTACTACT
-GTATGACGAGTAAGATAAATTGCACCTTTGAAAGACACACTTTGAGAAAA
-ACCGGAGGGGAGATTCTAGTTTTTTGGCAAGTTCGGTGGAGTTGGGCGGG
-AAGAGCTCGCAGCCATATTCGAGTACGGGGCGGATGTAAACATTGAACAG
-TTTAAAATAGAATTCGGGACTTTTAGAGCGGAATGAACGAAGGATTTGGC
-GACACTTAAGGAGGGCACTATTAGAAGTCTGATTAATATGATTAACAAAT
-GATAATTTGGTATCGACAATGATTCCAAGATCTCTGATAGAATCACGCGG
-TTTAATTTCAACACTATTTACAAAGTATTTATGACGGGGGTTCTTTTTTC
-CAAAATGTAATACGGCAGTTTTGTGCTCAGCAAGATTTAGACGCCATTTT
-TTACACCAATCAGCGACAATATTGATGCTTGTTTGGATAGAGGTGGGGTC
-CGATCCGAGTAATTTTAGATCGTCGGCAAAGGCTGTAACATGGACATCAG
-GGGGGAACAAATCTAATAAGCCATTAATATACAAAAGAAAGAGGAATGGT
-AAAATTGTGGAAAAAACCGTAAAAAATCAACAAATTTCGAAAAAAAATCG
-TAAAAAATTGAGACATTTGAAAAAAAAAATCTAGCAAAATTTGAAAAAAA
-AATCGTTTAAAATTCAGCAAATTTATTTTAAAAAATCATTAAAAATTCAG
-CAAATTTGGAAAAAAAAACAAATAAATCTGTAAAATTAAAAAAAAAACCA
-GTAGAATTTGAAAAAAAATTGTTTAAAAAATTCAGCAAATTTCTAAAAAA
-AAATCATAATTAATTGATAAAAATTTTTTAAAAACGTAAAAAAATATTTA
-AAATTCTGCAAAATTTGAAAAAAATCGTTTAAAATTCAGCCAAATTTCGA
-AAAAAAAAGCATTAAAAAAGAGAAAAATTGGAAAAATTCTGCACAATTTT
-TTAAAAATTATTATTCTGAAAAAATTTAAAAATTCATGGAAAAATCTGCA
-AAATTATTTTTTAAAAATCGTTAAAAATTCAGCAAAAATTGGAAAAAAAT
-CGTTTAAAAATCAGCAAATTTCGAAAAAATAAAACATTAAAAATTCAACA
-AAATTAAAATTAGAAAATCATTAAAAAATACAGCCAAACCGTAAAAAATC
-AGCAAATTTCGAAAAAAATTCGTTAAAACTTCAGCAAACTTCTAAAAAAA
-ATCATTTAAAAATGCAGGAAATACGAAAAAGAAACATCAAAAATTGAGAC
-AATTGGAAAAAAAATTCGTTAAAAATTAACCCAAATAAATTTGCTGAATT
-TTTTAGATTTTTTTTTTTATAAATTTGCTGAATTTTTGAAAAAAATTCAG
-CAAATTTATTTTAAAAAAATCTAAAAAATTCAGCAAATTTCTTTTTTAAA
-AATCGTTAAAAATTCGGGAAAACTTGGAAAAATTGTGCAAAATTCAGAAC
-AAAAAAATTTCAAAATTTTCCCAATTTTTAAGTTTTTATTTAGTTTTCAG
-AATTGTTTAATAGTGAAAAAATCATAAAAAATTCAACAAAATTTAAAATT
-CAAAATTTTCCAGAATTTTCATGGGTCCCGCCACGATCCACTCCAACCTT
-CAAAAAATCATGTAATTTCCAGGCGTTGCGGCTTCCCAAATCGGCGGAAT
-CACACTTCACGCGTTTTGCGGTTTTCGCTACGAAAATTCGACGCCTGAAC
-AGTGCCTAAAACAGGTTTTACGCCAAAATCACATGGTCCGACAGTGGAAA
-CAATGCTCACACTTGATAATTGACGAGATTTCCATGATTGATCGCGACTT
-TTTTGAAGCTCTCGAATATGTGAGCTCATTGCGTTTTGATCTACAAAAAA
-TGCGGGAGTTTTCCCAGCATTGCTCATTTGATCTACAAAAAATGCGGGAA
-TTTTCCCAGCATTGCTCATTTGATCTACAAAAAATGCGGGAATTTTCCCA
-GCATTGCTCATTTGATCTACAAAAAATGCGGGAATTCTCCCAGCATTGCT
-CATTTGATCTACAAAAAATGCGGGAATTTTTCAAGTGTGACGTCAGCACA
-CTCATGCGAAATCTGCTGAAAAGTCTGCGTCTCTTCTCCCGCATTTTTCG
-GAGATCAAACCAAAATGGGACCCGAAAATTCCAAAAAAAAATCGATAATT
-TCCCGTCCCAGGTCGCCCGTACCGTCCGTAATAACGATAAGCCGTTCGGT
-GGAATTCAGCTCATTATCACTGGAGATTTCTTTCAATTACCGCCCGTCTC
-GAAGGATGAACCAGTTTTTTGTTTTGAGGTGTGCGGAATTTCGGAGCATC
-GTTTGGACCGTCTAACTCTTAAAAAAATTTTTTTGCAGAGCGAAGCCTGG
-AGCCGATGTATCCAAAAAACGATTGTCCTGAAAAATGTGAAACGACAAAA
-TGACAATGTTTTTGTGAAAATTTTGAATAACGTTAGAGTTGGAAAGTACG
-TAAACTACTGGAAAAATTTAAAAATTTCGAATTTTTCAGGGTTTTTTACT
-AGAAATTTTGATTTTTTTCAGTGAAATTCCAATAAAAGCTGGAAATTTTC
-AGAAAAAAGGAAAAAATATGAAAATTTGTAATTAATTTCGAAAAATGCTG
-AAAATCTCCAAAACCTTCCAGAAAAGCTGGAAATTTCATAAAAATTTGGG
-AAAATCTGAAATTTTCAGAAAATTCAAAAAAAGCAAAAAATCTCGAAAAC
-CTTCCAGAGAAGCTGGAAAATTTCAGAAATTTCCAAAAAAATAAATTCTG
-AAAATTTCATAAAAATCACTGATTTCTGTCTTCCCTCATAAGTTGAAATG
-GAAGAGTTTTTGCCGAACTAGGCCATTTTGGTTCGGCCAGATCTTGGGTA
-GATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAA
-TTAAATGTATTAGTCCGTGTGGAGTACACGACACTTTCCCACGTGTTGTC
-CGGCAGGTGATTGTCAATGGAGCGCGAAAAATTCAACGAGGAAGGCCAGA
-ACCCCGTGATAGACCGGCCAACACGGGGTTCTGGCCTTCCTCATTTCATT
-TTTCGCGCTCCATTGACAATCACCTGCCGGACAACACGTGGGAAAGTGTC
-GTGTACTCCACACGGACAAATACATTTAGTTTTACAACTACTAATTGAGC
-CGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGAAATGGCCGAGC
-CAAAATGGCCTAGTTCGGCAAAAACTCTTCCATTTCAATTTATGAGGGAA
-GCCAGAAATCCGTGTGAAATTTCCAAAAAGAAGCTCCAAAAAAAAATTCC
-AAAAAAATCTCGATAGCCTTCCAGAAACGCTGGAAATTTCAGAAAATCTC
-CTGAAATTGATAAAAATTCGAAAAAAATCTCAAAATTGTTAGAAAATCAG
-TGAAAATTTGGAAAATTCAGAAATTAAAAAAAAAATTTTTTTTTGGAATT
-TAGAATTTAGAATTCTTCAAATTGTCGAAAAATGCTCCAGAAAACTTGTA
-AAAATTTAATTTTTTTTTTTTTGAAATTTCCAAAAAATTTATTTATTTTT
-CAGATGCGACTTCAAATCAGCGGATATTCTAAAGGAATCCTCGAAAAATC
-AATTCCCATCCAGCGTAATTCCAACCAAACTGTGCACACATTCAGATGAC
-GCCGATCGAATTAACAGCTCAAGCATCGAGACAACACAAGGCGACGCGAA
-AACCTTCCACGCCTACGATGACGAGAGTTTTGACACGCACGCCAAGGCCC
-GAACGTTGGCACAGAAGAAGCTTGTGCTGAAAGTTGGAGCTCAGGTGATG
-CTCATCAAGAATATCGATGTGATCAAGGGACTTTGTAATGGGTCACGTGG
-ATTTGTGGAGAAATTCTCTGAAAACGGGAATCCTATGATTCGATTTGTAT
-CGCAAGCCGATGCTTCCATTGAGGCACGTTTTACAGAAATGACCATTTTA
-TGGGCGTGGCTTTTTTTTTGGAAAATTTTTTTTTTCCAAAATTTCTGGAT
-TTTTCTCTAAAATGGAAAAAACCCACGAAAATTGTAAAAAATTTGAAATT
-TTTTAAATCGGAAAAAAATAAAATTTTCTTTCTTAAAATTAGGCTTAGGC
-TTAAGCTTAGGCCTGGGCTTAGTCTTAGGTTTATGCTTAAATTTGAAAAA
-AAAAATTTCTAATTTTTTCCAGATTTTTCCGTTTTTTTTTTCAGAGAAAA
-TCTAAAATTTTCGATTTCTACCTGTTTTTCAAAAAAAGTTAAAAAAAACA
-TTTTCGCAAATTTTGTAGAAATTTTTCTTTTTTTTTTCTTAAAATTAGGC
-TTAGGCTTAGGCTTATGCTTAGGCTTAGGCTTAGGCTTATTCGTAGGACT
-ATGCTTTGGCTTAGACTTAGACTTAAGCCTAAGCCTAAGCCTAACCCTCT
-TAAAAAGTTACAAGAAGGTTTTTCCTTGCGCTTGGAGCGCAAAAGAAAAG
-AAAAAGAGCTATTCAGACTTAGGGTGCCCAACTGGAATAAAACATTGGAA
-ATCCTTATGACACACTTAAGCCTAAAGGCCCGAAAAACATACTAGGATGC
-CCAACTGGAATAAAATATTGGAAATCCTTATGACACACCGGCGGTATGGC
-GCGGCTTAAGCCTAAATAGCCACTTTTATCAAAATACATTTGAGCTCGTC
-TTGCGTTTTACTTTGACTTCTCAGGCAACTCAAAAGTAATCTGTGGATAT
-TTTTCAGTAATCTAAATGAAGACTATAGATTACTAAGAAACTTGGAGATT
-TCATAATATTTGGGGGGATGCGAGCATCCATTGGAGATTTGCCATTTGAT
-AGAACTTTTAGCGGCAAAAGTCCAAAACAAAGCTCACAGTGGGCTCTCAA
-AGATCATAAAATAGCACTGTAACGAAGAACTTTAACGATCTAACGAAGCA
-ATTTTACAAATTCACTTTGGTAGCTCATATCTCCGTGGATAAAATTTTTA
-CAGAAAAGTCATCAACTGATAAGTTGTTGATATTGTTGTAAAGAACAAGT
-TTGTAGTTGAAAGTTTTTTTTACCAAAAAATTTTTGTTTGAGAGAAAAGC
-ATTAGAAACGGAATAGCATCATAAAAATAACAACAGCAGTTGCCGCACTT
-CACGCGGTTCTATCTCAAACAAAAGCGGAGATATGAGCTACCAAAGTGAA
-ATTGGAAAATTGGCCCTCCAATGCTTCGTTAAAGTGCTATTTTCAGGATC
-TTTGAGAGCCCGCCGTGAGCTTGGTTCTGGAGTTATATTGATCAAATTGA
-CCCTCCAGTAAAGGAGGACCTTTGATGAATATAATCACTCTGATGGTATT
-TAATTCCGATGAGTAATCCATTTTTCTTTTTCTCACATTTGTGAACCAAA
-AATAAGTTTTAAATTAAGGCGGGATATTCTAAGGTGTGATAACATATGTT
-ATTTATTTTTAAATTTAAATAAAGTTTTTTTTTAATTTTTGCTAAAAAAC
-GAATAGTTTACAACCGCCTCGCTCAAATGTATTTTGATAAAAGTGGCTAT
-TTAGGCTTAAGCCGCGCCATACCGCCGGTGTGTCATAAGGATTTCCAATA
-TTTTATTCCAGTTGGGCATCCTAGTATGTTTTTCGGGCCTTTAGGCTTAA
-GTGTGTCATAAGGATTTCCAATATTTTATTCCAGTTGGGCATCCTAGTTT
-TTTTTTTTCGGGCCCTTAGGCTTAAGTGTGTCATAAGGATTTCCAATGTT
-TTATTCCAGTTGGGCACCCTAAGTCTAAATAGCTCTTTTTCTTTTCTTTT
-GCGCTCCAAGCGCAAGGAAAAACCTTCATGTAACTTTTTAAGAGGGTTTC
-ATATATTTTATTAAAATCGGGGCGAAGCCCTGATTTTAAATCCATATTGT
-TTTTGTTTTTGTCTTCCACTATCCCTGCAAATAGGAAAGAGAATGTGTTC
-TTTCTGATGAAGTAAAAATCATCATAAAATCTTGAAAACTGAGAGCAGGA
-GGTAATATTTGAATATATTGGGTTGTAAATGTGTGTCTCCCTGTGGGTGG
-GGTGGCGATGTGTTGGCAGCCAATCCTTCAACGAACTGTATCTCCCGCCT
-GTATCTCCCTTCAAAGTGAGAATTGGGTTACAAAAATTTGAGGGAATATG
-AAAAAAGGTGTGAGGATTTCAAAAATATTATTGTTGAAACACCAGACCAA
-ACCACTTTTTCTGGGCAAGAGACAGAAAATTAATTTTTTGAAAAATTTCA
-AACTGGCACAAAATTTTTTCAAAAACAAATTTTCACAAATTGTTAAAAGA
-TGCCATTTTTAATCAATATTGTTCATTGAACACAGAAAAGAAAACGAAGA
-TTCATCAAAAAATGAGTGAAAAATCGCAAAAATTCGAAAAAATCCGTGCT
-GAAAAACTCGAGTTTTTGGCGGTGCTGAAAAAAATTTTCACTAAAATTTT
-TTTGAAACTTAGTTTTTCGGATTTAGCGTCAAATTTTGAATCTATATAAA
-AAAAAAAATTAAAATTGATCTCAGATTGAGTGAATAATAAACGCTCAAAG
-TTGAAAAATGAACAACGCAAAAACGGCAGTAACTTGCTTCAAGGTCGGTT
-GTCTCAGTGAGTTTTCACTCAATTTTCGAAATTTTTTTGCTCTATCGCTT
-TAGAAATATTTGTAATTTCATTTTTTTTCCTCAAAATCAAAATATCTCAA
-ACGACCGCCATCCTACGAGAAGGGAAAAAAAAAGTTTTTGGAAAAAAAAT
-CAAAAATTTTTTTTCTGCCTCGATTTTCAAAATGAAAAAATCACTTTTTC
-GGAATAAACTTTTTCACAAATGTATTTTGATAAAAGTGGCTATTTAGGCT
-TAAGCCGCGCCATACCGCCGGTGTGTCATAAGGATTTCCAATATTTTATT
-CCAGTTGGGCATCCTAGTATGTTTTTCGGGCCTTTAGGCTTAAGTGTGTC
-ATAAGGATTTCCAATATTTTATTCCAGTTGGGCATCCTAGTTTTTTTTTC
-GGGCCCTTAGGCTTAAGTGTGTCATAAGGATTTCCAATGTTTTATTCCAG
-TTGGGCACCCTAAGTCTGAATAGCTCTTTTTCTTTTCTTTTGCGCTCCAA
-GCGCAAGGAAAAACCTTCTTGTAACTTTTTAAGAGGGTTAGGCTTATGCT
-TAAGCTTAGGGTTAGGGTTAGGGTTAGGCGTAGGCGTAGGCTTAGGTTTA
-GGCTTCGGCTTCAGGAATATTTAAAAAAAAAATCGAAAAATAGATTTTGC
-GAAAAAAAATCGTGATAAAGCCTGCTAAAATTTTCAAAAAAATTAAATTT
-TTCAAATTTTTCAAATTCCCAAGATTTTGGTCTCGCAGCGAAAACATCCA
-ACTACAGTAACCCTCGCCCTCTCCAATTTTCAGATCCGCCGCTCCAAGTT
-CTCAGTCCGCATTCCCGGGAGTGATGCTCCGTTGATTCGCCGTCAACTCC
-CACTCCAACTCGCCTGGGCCATCTCCATTCACAAATCGCAGGGAATGACG
-CTCGACTGTGCGGAAATTTCGTTGGAGCGCGTTTTCGCCGACGGACAGGC
-GTATGTGGCGTTGTCGCGCGCACGATCACTGGCGGCAATTCGAATTATCG
-GCTTCGACGCGTCGTGTGTCCGAGCGAATTCAAAGGTGAACAGGGGATTT
-TCGAGATGGAAATCTATGAAAAATGGATGGATGGTGTTAGATATCTCCTT
-TTCGTGGGTTCTCTCACGTGGTGTCAGAGTGCCTCATTTCGGCTTGATCT
-ACTGTGTAGATCTACAAAAAATGCGGGAGATGAGGAGACTCAGACTTCTC
-AACTGGTTTCGCATGGTTTAGAACGTGCTGACGTCACTTTTCTCTGGGCA
-TAAAATTCCCGCATTTTTTGTAGATCAACCGGTAAGGGATCTCTCAGCTA
-CGTGGAAAATTATCGATTTTTTATCGAATTTTTTGCAGGTTATCGATTTT
-TACAAATCCATCGAGGCAGAATGCGACGACGAACAGGACTGGGAAGCCCC
-TGCTGCTGGACCAAGGCTCAAGCGAGTTCGATCGATTTAATTTTTTTTTT
-TAAATTTTTTTGTGATCTCCAAATGTTCTGTCTTTCTGTCTTCCCCCCCC
-CCCCGCCAAAATTCATTAACTGTTTTATTTCACAACACTCTGTATCATCA
-TAATTTTCACATAAAATTGGCTATTTCAATGTTGACGTCGAATTTTTAGT
-CCTATCAGCGTCATCGGATCTGAAAAAATGGAAAACTTGAACAAAAAAGC
-AGGGGGTGGCCTAGAAAGCACAAAAAAAACTCGGACACAGTTCAACGGAG
-GCAGTTTTTGGAAAAAAAAAAACGTCATTTTCGTATAGCCACACTGAAAT
-TGAAAGAATTCTGGCCGAGTTTTCCAAATTCTAGGCCACCATGCAAACCG
-ACATTTTGGGCGGAAAAGTGCCGGTGGCCGTGGAAGAAGGAAAAACTCGG
-CCACTCTTCTATGTACTCCTCTCGGAGAATTGTGTTTTCCATGGCCGAGT
-TTTTGTGTTTTCTAGGTCATGTCGGCATTTTTCTTAGTCAGTTTCAAAGG
-AAATACGATACCTGGTCTCGACGCGAAAATTTTTTAATTAAATCCAAAAA
-GACGTGCGCCTTTAAAAAGTACTGTAATTCCAAACTTTCGTTGTTGGGAA
-ATTTTTATCGATTTTTCGTAGTTTTCAAAAAAAATAATCAAATGTACACA
-GGGTTCTGTTCTTCCTTATTGATTTTTTCGCGCTCCATTGACAATCGCCC
-GCAGGATAACGCGTGGGAAAGTCGTGTACTCCACACGGACATCGAGACGC
-GACGCGACACGCAACGCGCCGTGAATCTACCCCAAATATGGCCGAGCCAA
-AATGGCCTAGTTCGGCAAACTCTTCCATTTCGATTTATGAGGGAAACCAG
-AAATCCGTGAGTAGTGAGAAAAACAACGAAAAAATCGATAAAATTTCCCA
-ACAACGAAAGTTTGAGATTACAGTAGTCTTTAAAGGCGCACACTTTTTCG
-CATTTAACATAAATTTGTCGTGGAGAGAGTATTTTTGGCGCAAAACTTCG
-CATTCGGGTAATGATAATAGAAGAATTGAAACTCACAAATTCTCCGCCGT
-CTCCTCAAGCAGCAGCGGCACAATAAACATGAAATACACGGCCAACACGA
-AATGAATCGGCACCATCGACACAATGAACAACGACATTCGGAGCATGTGC
-TCCAAAACTGTCGGCCGCAACTTTTTCGACGGATTCTCAAAGACGAGATA
-CACTTGCATCGGGCTGTGCACATCTTGAACCGACTTCTTCTTCATTACAG
-CGCTCCCTTCTCTGGGCAGCAGGTAGCGTGTCCACGTGGTGTAGGGTGAC
-TCAGTGGTTGTGTGATTTATCGGCGTGAGCTGGAGCATTTTTGCAGAGTC
-GCAGGCCAAGGTAGCGGAGGTGTTGGCTCTGAAAGTAGATTTCATACAGG
-ATGGTAATTTCGGGGAGTACTGTAGTGGTGTTATAGTGGTACTGTAGGAG
-TACACTGTAGGGGAACTGTAGGGGTGCTGTAGCAGTACTGAGGGGGGTAC
-TGTAGGAGTACTGTAAGGGTGCTGTGGGGGTACTGTAGGAGTAATGTGGG
-GGTACTGTAGGAGTACTGTAGGAGCACTGTAGGGGAACTGTAAGGATACT
-GTAGGAGTAATGTAGATGTACTGTAAGGGTACTGTAGGGGTGCGCTAGTG
-ATACTGTAGGGATCATGTAGGAGTACTGTAGAAGTCCTGTAAGGGTACTG
-TAAGGGTACTGTAGAGGTGCGCTAGTTGTACTGTAAGGGTACTGTAGGGG
-TACTGTAGGTGTACTGTAGGAGTAAAGTAGATTAACTGTAAGGGTACTAT
-AGGGGTACGCTAGTGGTACTGTAGGAGCACTGTAGGCGTACTGTAAGGGT
-ACTGTAGATGTACTGAAGTAGTTCTGTAAAAGGTACTGTAGGGGTACTGT
-AAGAGCACTCTAGGGGCATTGTAGGGGTACTGTAGGTGTACTGTAAGGCT
-ACTGTAGATGTACTGTAAGGGTACTGTAGTTGTTCTGTAAAGGGTACTGT
-TGGGGTACTGTAGGTTTACTGTAAGGGTACTGCAGGGGTGCTGTAGGGAT
-ACTGTAGGAGTACTGTAGTGGTTCTATAGGAAGACAAACTTTTTTTTGAA
-TTTACTCATCGGAGAATCTAATATTTTTCACCAAATCGATACACCATAAA
-AATTTTAGGACCCAAAGCTAAAAAAAAAAACCAACTTCTCCAATATCATC
-TCCATCAATTCCAGTTGTTCTGTGCAGTTCGCCATCCCTTCCTTCTTCAA
-TTCCTTCGCCCGATTCTCCAAATCGTCCACCATCTTCACACCCCGCCGAC
-ACGCCGTCTCCACATACCGTTCCGTACCAGCTTCCGCAATTTTCATAAGC
-TTCTCGACAGACTCGTTAAACTTGCGTGTTGGCTTGAACAAATGGGAACC
-TCGAATCGCCTCGGGAACCGGATTTCCACCTCCTTCCACCAGGAGGCTGA
-ACAGTGTCGTTTTCTGCCTGACGGCCTTAGCCAGGACGTGCCCATAGTTG
-ATCATGTAGATTTGCCCGTTTTCAGATATGTTGAATGTTTCAGCAGATGA
-GAACATTTGAAAATTATTTGATTGTGCGTGTTCATGCACCACAGTAATGA
-ATGCGAGGCGGCAAATTAAAACTCTGAAAGTTTAGATAATTGTACTTTAG
-TTGAAATCTACTTTGGTTGACAGGTGCATCGACTAGACTAAAAAAAAAAG
-CAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTA
-GGTAGGTAGGTAAGTAGGTAAAGCGAGACACGGTGCATCGATCTGACTTT
-AAAAATCTCAATCTCGTATCTTAAGCGTCTTTGGTTCTGTCAGGGAAGCA
-GGTAGGGGGGAGGTAGGTGTGATCAGGCAGAGCACCGGAGTTAATATCTG
-GTGGATTGTGGGCTGCTAATAGGTAGGTAGGCAGGTAAGCAAGCAAGCAA
-GCAGGCAGGTAGGTAGGTAGGTAGGTAGGCAGGCAGGTATCAGTTGACAA
-CTTTTTGATGAAACTAAACGGAGCCGAGTTATAAGGTGCCAAAGTTGCAC
-TAGACATGGTGCATCGACCTAACTTGAACAACTCGTATCTCAAGTGTCTT
-TGGTTCTATTTGGGAGGCAGGTAGGTAGGCAGGTAGGTAGGTATATCTTA
-GGTTGTTTCAAAACTATTATACATTAAAAATCAATAAAAATATTTTGCAC
-GAATTTTATCAGTTGACAACTTTTTGATAAAACTAAAAAGAGCCGAGATA
-TTGTAAGTTGCAAAAGTTGAACGAGACATGGTGCATGGAAGGTAGGTAGG
-TAGGTAGGTATTTAAGTAGGTAGGTAGGTAGGTAAGCATTCCGTATTTCT
-CTCTACTTTGACAGCTTATATCCTGGTTGTTTTGTGTTGTATCAAAAAAT
-GTTTAACAAAGATAACATAGAAAAATATTTAGCACGTAGCAAATTTAAAA
-AACTAGGTTGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGAAAG
-GCAGGCATGTAAGTAGTAGGTAGGTAAAAGTACTCACGTGGAGAACATCA
-AGCAGAAGATCGCTGAGCAAATTGAAAGTGGTACTGGAAGTTGAGCAAGT
-ATTTTGGAGTATTTTTCTGGAAAAAAATAAGTATTCAAAGTAACTAAAAT
-AAAATACCAACTCCGAAACTCAAACTTCATAATAAACAAAATCGTCAGAA
-TCCCACTGGAGAGGACTGCAAAAGTCACTGTCGTGTTGGCAGACGTCTGA
-TAAAAATCGAGGGTGTGTCCGGATGGTAGGAGAAGCACATTATCGTGATA
-CTTTGACACAAATTCCTCAATAGACGCCAACGCTTTTCCGAAAACTGGAA
-TCGAAATGTTCAAAGCATTGAGAATTATTTTCTGGTACTCTTCCACCAGG
-ATGTTGTACTCCGAGTTTAGATCCGCTGAAAAATTTAAATTTGTATTAAA
-TTGGGCAATACTCGTACTTGCCTACCTGCCTACTGGTAGGTAAGCAGCCT
-ACTTATTTTCAACTTACAAAACTCCATATACTTTGTAACGTTTTCCAATT
-TCGCAAAAATCGATTTCTCGAAATATTTGCACTTCCCCTCGACAAATGAT
-TTCTTGGCGGGAATCTTCAGGAACAGCTGAAAATTTTTTTTTCCGGTGGC
-CGAGTTTTTTCACGGCCACGACGTACCTTATTAAACATGGTGAAGTTGGC
-GTAGTCATGCAAGAACCAATTTATTCGGCGGCGTTCGTTTTCGGTGACGG
-CGAAGTCTCGTTTGAACAAGCACGGTATGTAGGACAGCTTACGGTGGAGA
-CGCTCTTTGATGGCTGGAAGTTATGACGTCATGAATAATAAGGGATGAGA
-TTTCTAGGCCACGTGTGACGTCACAGCAATCCCCGAAACCTTTTTGGATG
-GCCGAGTTTTACCGATTTCTAGGTCATCGAGCGAAACTTTTGTGATACTT
-TGGCAATGGTCATCAGGTAGACAAACAACGTGATAATTTCTAGGCCACGC
-TTGACGTCACGTGGCCGAGATTTCGCGCCAGGACCTAGAACTAGACATGG
-TGCATCGACCTAACTTAAACAACTCGTATCTCAGGTGCCAGGTAGGTAGG
-TAGGCAGTCAAGCAGATAGGTAGGTAGGCAGGTATTTTAATTTCATTTCT
-GCGGCTACAACACAATTTCTCTTCCAATCAAGGACGTAAATTTCTAGGCC
-ACACATGCAGAGTGCGGACTAATAATTAAAGTGTTTTACGACATGGCCGA
-GAAAAGAGAAACCTAGGCCATGGTAGTTAGGTGTGACGTAACGCCACTAT
-AAAACTATAAAACTCACGCATAAAACTGTGATCATTGGCGGTTTCGAGCA
-TCGTCCTTCCATAGACCGCATCCTGAGTACACTCTCGTAAATTGGCGGCC
-AAAATTGTTAGACCAAGGATACAAAATATGGGGATAATGGTGAATCCGGA
-GCGATTATCATCCAACCAATACACGATTACTTCGATAACCTCGAAGAGCA
-GCAATTTCCAGACGACGAGGAATATCAGCAGAGCTGTGATCAGGCAGAGC
-ACCGAGATTATTATCTGGCGGATTGTGGGCTGAAAATAGGTAGGTAGGTA
-GGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAAG
-TAGGTGGTAGGTAGGGAGGCAGGTATCAGCTGCCAACTTTTCGATAAATA
-TTAAACGGAGCCGAAATATAAGTTGCCAAAGTTGTACTAGACATGGTGCA
-TCGACCTTACTTAAACAACTAGGTAGGTAGGTAGGTAGGCAGGCAGCTAG
-GCAAGTAGGTAAACTCACCAAATGCCTGAAAACAATTGCAAGAACATCGG
-AATAACCCGAGCTCCTCCCGTTCAACGTCGCGACCACAAGCGCGTGCACA
-CTTTTCCGCAGCTTCTCATCATCGCGATCAGCGCAAAAATCCTCGATTAT
-CTCGAATCGATGGCTCTTTTTTGTGTGCGCCGGGTCTAATTTATAGCTGA
-TCGGCTCGGGAAACCAATCGTCACACTGCAGCTTCGCATCCTCCAAGCTG
-AAGCCGTGAGAAAACTGTGCACTGCATAGGAATAGAAGTAATTTCAGTTT
-CATTTTGTTCTGGAAGAAGGCATTTTTATGGATGGAGTTTGAAAATAATA
-ATTAAAAAAAAAACTTACAGCTGGAACTTTGTGAAATCGATAATGAAACA
-ATAAATCTAAAAAAAGCTCAAAAAATTTTTGACAAAATTTAAAACTGTAA
-CGTGTATGAAGGTCACGTGAAAACTGAAAACTCACCAAAAATGTCGAAAA
-ATAGCAAGAAACTAGGCACACGTAGACTTATGGTAGGCAGGAAGGCGTAG
-GCGTTGATCCAGGCAGGGTCACGTCTTGAAGGCAGACTGTTAGGTATAGG
-TAGGCATAGGTAGCCATGTAGGCGTAAAGGCAGGAAGGCATCTCTAGATC
-CTTTTTGTGGCAGATTGGCCGCTTTGCAGGCAGGCAGGTGTGGGTGGCCT
-AGTAGACCGAAAAACAAGCAGGTAAAGTTCCTATAGTAGTAGGTAGGCGA
-GCCAAACCTTTTTTGTAGATGATGAAGTAGGTGTAGGCCGTCTTTTGAAG
-GCAGTGAGGCAGACAAGGTTAGGTCGTCGCAAAGGTTGGCTGGAAGGTAG
-GCACGTGGGTCAGCAGATAAGCGTAGGCAGGCATAGGCAGGAAGGCATAG
-GCAGGTAGACGTAGGCAAGTAGACGTAGACAGGATAAGATTCAAATATGA
-AAATCGTGAAAAGGGGAAAATTTCTTATTCTTCGAGTGCGCGACAGTATG
-CGTAGGCAGGTAGGCGTTGGCAGGTAGGCGTAGATAGGTAGGCGTATGCA
-GGTAGGCGTAGGCAGGTAGGCGTAGTCAGGTAGATAAGCAGGTAGTCGTA
-GACCGGGTAGGCGTAGGCAGGTAGGCGCATGCAGATAGTCCTAGGCAGGT
-AGGCGTAGGTACGTATGCGTTGGCAGGTAGGTGTTGGCAGGTAGGCGCAG
-GCAGGTAGACGTAAGCAGGTAGGCGTAGGCAGGTAGGCGTAGGTAGCTAG
-GCGAAGGCACGTAGGCGTAGGTAGGCAGGCATAGGCAGGTAGGAGTAGGC
-GTAGACATGCGCACATGAAAACCTTATAAATGTTTCAACCCCATCATCAT
-CATCCCATTTTTCTCTCGATCAAAACGAAAAAATGTGCGCAAACACAAAT
-TGCATCCATTTCTCTCTCTTTTTTACTCACTTATATATCTCTCATCACTT
-TATCCCCCGTTTTTCAATCCCTTCCAAACACTTCCAAAACTCTCCAGAAC
-TCCTAGAGAGTAACACGAGAGAAAATATTTGAACTTTTGTCTCGACCAAG
-TTTTTTTTTTTGGGATTTTTTCTTTGGATTTCTACAAATTTGATGTATTT
-TTTCCATTTTTCGTGCAAAATATGGTAATGGACTAGGTTTTTGCTACGTG
-GCCTAGAAAAATCTCGGCCACCGATTCTGAGCTGTTGCAGCGGCCGCGGC
-CGAGGGTTTTTCTCTTCAATCGATACCAATCCCTCTTTTACGCAAGGAAT
-CACGTGGAGTCAGAGTGTCTCATTTCGTCTTGATCTACGTAGATCTACAA
-AAAATGCGGGAACTGATTTCGTATCGTTAAGAACATGCTGACGTCACATT
-TTTTTATCATAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGAC
-AGCCTGGCACCACGTGCTCTTCCAACCTTTATATTTTTTTTGACAAAATC
-TTGAGAATTTCTAGAATTTCAACGAAAATCCAATTTTATACCTAAACTTA
-AAAAAAAATTGCTAAATTGTGTTCGACTAGCAAAAAATGCACCCAGTTTT
-ACAAAAAATCTTTTTTTCTGAAAAAAAATTCAGTGGAAAATGTCTATAAT
-TTTCAGTAATTCATACTAAAAAAAATCCAATTTTTACAACAAGTTTTTGT
-GGCCGCGGCCGAGGTTTTTCCTCTTCCACGTGGTGTCAGAGTGTCTCATT
-TCGGCTTGATCTACTTAGATCTACAAAAAACGCGGAAACTGATTTCTCAT
-GGTTAAGAACGCGCTGACGTCACATTTTTTTGATCGTAAAATTCCCGCAT
-TTTTTGTAGATCAAACCGTGATGGGACAGCCTGGCATTACGTGAAAACAA
-ACAATGCAAGCGCGCTCTAATGCGAATTTATTTGCTCTACCACCAGATAA
-ATTCCACTTCTTCACAATAAACCTAAATATTTTTTGTGTCAAAATCTTGA
-GAATTCTTAGAATTCCAGAATTTCAGCGAAAACCTAATTTCCGATTTTGT
-TATTGTTCAGGGGAACAAGTGAGCCACACAGCTTCCGCTTCTGCTCCGAA
-TTCGATTCCCCTGAGGCATTTTTGTTCGAAAAAAGCCTCATTTGTCATAC
-TTGTCGGCAACTTTCTTCGAAGTTTTTGTTCTTGTTTCAAATAATTTTTC
-TTCAATACTTGTTCCTTCCGTCCCAGCAGATGTTCTTTTGCGGGGGGGGG
-GGGGGAGGGGAGAAAAAAAATAAGAGAAGAAGCAGAAACTCGACACTTTT
-GTGTCCGCATTTCTCGTAAAGTTTTCAGATTTTTGAGCTTTTCAAGCTAT
-AGCTGAACCACCTAGCAAATTTCGCCGCAGAGTTGATTTCTCCGGGAGTG
-GGCTTTCTACTGGAGACCTCACTTTTTTTGCCTTTTACTAGAGCTTTTTA
-ATTTTTTAATAATTTATTGCAGCTCTATGGATTTTCCAAAAAAAACCACC
-GAAAAGCCCGAAAAATCAAAATTTTCGTTTTTAAAACCCTAAATTCCATA
-CTCCGTCCAAAGAACACTCACATAAAAATGAAGAGATTTCGCAAAAAAAG
-TGAAATCCAATTCAATTTATTTCAATTTTGAAGAGTGCGTTCGTCAGCTT
-TTTTTTCGACAAAAAAAAAAGAAAATGTGTAGTGTAGTTTTCAACAGATT
-TATTGTTTTATTAATATAATAGAAATCAAACCTTCTTTCTGCCTACCTAC
-ATGGCTACCTACATGCCTACTTGCAAGTAGACCTGTCTATCTAGGTACTT
-ATCTCACACCTCTTTACCTACATACCTACCTTCCTACTCACCTGCCTACT
-CATGTAGACATAAGTGATCGTCAAAAAAGAAGCTGATGGATCAAAAGTTT
-TTGGAAATTTATTTCGATTTTCAGGTTTTAAAAATTGCGGAAGATGTTTA
-ATTTTTGACGATTAGTTTAGAATTTTTTTTAATTAAGAAAAAAAAATTAT
-TATTTTATTTTTAAATTACTCCAAATTTTCTTCTGATTCCGAATATCTAT
-GTGAAACTTTTTTTAATTCCTTGGTTTTATATCTAAGCTTAAAATCGCTA
-ATTTCATTTGTGCACCCAAGAGATTTCGAATTTTCACGGGGTTCTGGCCT
-TCCTCCTTGAATTTTTCGCGCTCCATATAATATTGACAACCGGGCAACGC
-GTGGGAAAGTCGTGTACTCCACACGGACAAATACATTTAGTTTTACAACT
-AAAATCGAGCCGCAACGCGACACGCAACGCGCCGTAAATCTACCCCAGAT
-ATGGCCGAGCCAAAATGGCCTAGTTCGGCCAAAACTCTTCCATTTCAATT
-TATGAGGGAAGCCAGAAATCCCGTGTAATTTTCGCGCCAGAGACGCCATG
-TGTCGATTTACGAGATTGGTGTATATTTACAAAATGCGTAATATTTATAG
-AATGCTGATTTCCGTTTTTTTTTTTTGAAAAATGTCATGTGTGCACAAAT
-TAAATTCGGCGATTTTAAGCTTAAATATAAAATCAGGGAAATTTTTTAAA
-TTTTTTTCACGTAGATATCCGGAATCAGGGGAAAATTTGGAGGCAATTAA
-AAATGTCTCCCTGATCATTTAAATTCTTTAAAAGTACTCTTCAGAATCCT
-TTTTTCCTAACCAAATAAAATAATTTCTGACGCCTTTTTTTTCTCTTTTC
-AATAAGAAGCAAAAAACAGACGAACCTATTCCAATTTCCCACCACACCAA
-TTCGTTCTTTCCGCATTCTTTTTCTTCCATTATTTATCTCCCTTTTCCTC
-CATTCTCTGTGCTCTTATATATATCCATCATCCCATTTTCTTTCTTGTTG
-TGTGGTATGCTCTTTTTCATCCATTATTCGAAAATTCTCATTTTCCAAAG
-TTTTTTGTCAAATACATTTTAAAAATTTTTTAAACCAAATCTCGCCGTCC
-ATCGATTTTAAAATACCTTTTTTGAGAAGTTTTCAAGAAATTTCATTATG
-AAATTCGGTGTTTTCAGACAATTTTGAGTCTAATAAAACAATTTAAAATT
-TTGACTACATCACCTTTAACTTGTAGAATGCCGTTTAAACACACTTATCA
-CTTTTTCAGAATCCCATATGCAATGGTATCACTTGCTCCTGCTAATTCTC
-ATGATCCTGGTCCTAATCCCATGTTTCTGGCAAGCTTGGCTACGATTTTC
-CCGTCGATTCTCCGATTCCTATGATCTATCAAGAAATGCGCAAAAGCGTG
-ATGAGATTTCAAAGGAGTTTTATGTATAGCTTACTGACAGGATTTCAAAA
-AACAGTTACGGTAAGATTTTTCGAAAAATTTCACGGATTTCTGGCTTCTT
-GCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTACGGCG
-CGTCGCGTGTCGCGTCGCGGCTCGATTTTATTTGTAAAACTAAAGGTATT
-TGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATTG
-TCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAACCCCGTGCCTGT
-ATAGGATATTTTGAATCTCAAAAGAATTTGAAGATTTGAGTTTTTTGAGT
-TTGAGGTGGAAAAAATCGTAAAAAATTCCTTTCCGATAAATTTTCGGATG
-CAAAAATGTGATCCATGCTGTAAAAAATCCAAGAAAGCCAAGAAATGTGC
-GGAGCCTATTTTCCGATTTTATATTACTTTTTATTTCAAAACTTGATTCA
-AAAATATCAAATTCGGAAAAAAAACCGCAACTTGGTAAAATTTCCTCGAA
-AAATATTCTCCGCTTAGGCTCCGCCCCTCTCTTGGCATTTCGAATTTTTT
-CGTTAAATTTTTGGAAACTGAAATTAAGTCCAAAAAGAACCAAGAAACGG
-GCGGAGCCTATTATGGGATTGAAAAGACATGGTGCATCGATATGGAAACG
-GCTTTTAATTTGGTTTTTTTTAAATAAGAAACTAGTAAAATTCAAGTGGC
-CTAGCTTTCAACTCTTCCATAATTCCAGGGTACATTCCAACTGGTCATTG
-CTCATTGCTCTCTCTTTATGCTTCTCATCACCAACGAATCCACTCAATTT
-TCACTCAAGCTGTCATCTCCAGCAGTGTCTCTCAATTTAATTATGCTTGA
-AATTGTTTTATAAAATGAAACAACACATACTCTGTAAAAGCAATTTATTA
-TTAAAAAGTATATATATACACGTATTCCTGGGTGGGTATTGAGACTAACG
-GAAGCGACATGGAGGAGAATTTGAATTTCATTAAAAAAAAAAAACAAAGA
-GGTAGGTTACTGTAGCATCCAATCTGGAGGCTGCACAAAGAAGACTCCAC
-CGTCAGTGGCGCAATATGTTGGACACACCTGGAACGTTGAAACATTATTT
-ATTTCTTTAAAATTTTCTTTGTCTAAGCCTGAGCCTAAGCCTGAGCCTAA
-GCCTAAGTCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTGAACCTAACC
-CTAGGCCTAAGCCTAAGAAAAAGCCTAAGCTTGAGCCTAAGCCTAAGCCT
-AAGCTAAAGCCAAAACCTAAGCCTAAGCCTAAGCCTAAACCTAAACCTAA
-ACCTAAGCCCGAGCTTAAACCTGAGCCGATACCTAAGCCTAAGCCTAAGC
-CTATTCCTAAGCTTAAATATAAACCTAAACCTAAGCCTAAGCCTAAGCCA
-AGCGCTGAGCGTAACTTAGAGCCTAAGCTGAGCCTGAGCCTAAAACTAAG
-CCTAAGCCTAAGCTTGATCTTAAGCTTAAACCTAAGCCCTGAAAATTTTT
-TTTTGAACTCCACAACAAAATTTGTAGAATGTTTTTAAAAATTGGGATTC
-TGAAATTCCCCGCCAAAAAGTTTAAAAACTTCACATTTTAATTTATCTGT
-AAAATTTATATAAATCCCTCTTAGATTTTGAATTTCGCGGCAAAACTTGT
-AGAACATTTCAAAAATTTACTTTCGCGCCAAAGATTGTCGCGCGAAATTT
-ACAATTTTTCTATAAAAAATGTATTTCATAGAATTTCAAAAAATCGAAAA
-TCGCGCCAAAAATTTTTAAAAATTTTTTTCAGTATTGTGACGTCATAGAC
-TACAAACTAACCCCTCTATTGCCTTCCTCCCCGTGCTCTCCAATGAGTCC
-TTCGGCTCCAGCGGCTCCATCATTCCCTGGGAACCCGGGCTTTCCTTTTT
-TTCCTCGTGGGCCTTGTGCACCAATCGGGCCGTCGATACCAGGCATACCA
-GACGGTCCTGGCGGCCCGAATTCTCCTTCCTCTCCGATCGGACCTGCTGG
-TCCCGGGATGAACGGTTTCGGGGTGGCGTCCGCACCCGGGTCGCCCATTT
-CTCCATCCAGTCCTGGGATTCCCTGAGGGCCTTGTAGGCCTTTTGGTCCC
-ATTTTTCCATTTTCCGCGCGAAGTCCATTCTTTCCGGGTAGTCCTGGCTT
-ACCAGTGTCTCCTTTCACTCCCTGAAAATTTAGTTTAGTGGTATAGGCCT
-ATCAAATAGGCTTACCGTAATCCCAGTGGTTCCTTGTACTCCTCTCGGAC
-ACGGATCCGCACACAAAGACTTATAATTCACAGGAGGCTCACATGGTAGG
-CGCGCTGGAAGTCCAGGCGCACCTTCCGATCCTTTCGTTCCAGGAAGACC
-GTCTCTTCCAGGGATCCCCGGGGGTCCTTGTGGATGACGGCACTCACATA
-CTCGGGATCTTGCGGTTTGGCCGGTTTCGTGTAGGAAATCGTCGATTTCA
-TCTCTTTTCTGGCGGGTTATGTTTTGGAAATCGTTGGCGACATCGGATAG
-CATGCTTTTCATCTCGAGGGCGCTTTCCTGGAAATTTAAATTTGCTTGAA
-ATTTTCAAACTTGTTATATTATAATTTACAAAATACTGACTGCCTTTGTA
-AGTTTTTTATTACAGGAACACAAAATTCTAAGAATGCGTACTGCACACTA
-TATTTGACGTGCAAGATATCTCGTAGCAAAATCTACAGTAACTCTTAAAA
-TGACTACTGTAGCGCTTGTGTCGATTTACGGGCTCGATTTTCGCAACTTT
-TTTTCTTTCGGATTTCCTTCGTTTCCTCGTATTGTTTTCTAACTTTTTAT
-TTCAAAATTTCAATATTCTATCGATAAATAAATCATTTTAATTTATTTCG
-AAAATCGAGCCCGTAAATCGACACAAGCGCTACACGAGTCATTTAAAGGA
-TTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAACATGTTGTGCA
-ATACGCATTCTCAGAATTTTGTGTTTCTCTAATACTGTGTTTTTAGGATT
-TTGAATGAAAGGAAAAGCCCGAAACTTTTAAACAAATTTTTCGGTGCATT
-CTGTATCAAAAAAGCTGAATAAAATTGTACAAAAAAATGCCACATTTTAT
-TGAAAAATTGATAATAAAATAATTTGTTTTCAAATAATTTTTGAATTTCT
-CAATTTTTTGGAATTTTTGGATTTTTTCGGGCCAGAAAGTAGGCATTCTC
-ATGAACTGATGTTTTCTTCATAATAATATATTCAAAAAAACGGTCTCCCA
-CAAAAAAAGGTCCGAGAGGCGAACAAGGTTGTAAAACGTTGCTATTGTTT
-ATTTACAACCGCCATTATACCCCTATAGGGGTTGTAACACCACATAACAA
-TTTGATAAGATGCACACAGTAGGGAGAGGGACCTAATTTAAAAATATAAG
-AATTTTCTCATTAAATACAATTTTTCTCTATTTCTTTCAGGAATATCGAG
-AGGAAAATCAGCGAAATTTTTGGAAATTTTTGGTTTTTTTCTAACGAAAC
-AAAAAAAATTTGAAAAATTTCAAGAAATTCTGTGTATTTATCGATAAAAT
-TTCAGAAATCAAGGGGGTCGTATAGAAGTTAGACGGTCGGTTTTTCGACT
-TTCAGCTAACTTTATGAAATTTCATTTGTTCAGGTTTTCTGACATTTAAA
-ATCAAATGGCATTAGCAGTTTTTCATGAAAAGTTTCAGAAAGTCTCAAAA
-CTCCAAATTTTAGGAGGGTCGTATAGAAGTTGGACGCACTAAAAAAAAAG
-GAAAAATGTGGTTCTAATTATTACGGAAACACTAAATTCTGAGAATGCGT
-ATTGCACAAAATATTTGATGCGCAAAACATCTCGTAGCGAAGACTACAGT
-AATTCTTTAAATGTCTACTATTGTAGCGATTGTGTCGACACGTGGTGCCA
-GATTGTCTCATTTCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGAG
-AAGAGACGCAGACTTCTCAACTGATTTCTCATGGTTAGGAACGTGCTGAC
-GTCACATGTTTTCGGGCCGAAATTTCCCGCATTTTTTGTAGATCAAACCG
-TGATGGGACAGCCTGGCACTATGTGTGTCGATTTACGGGTTTGATTTTTG
-AAATTGATTAAAATAATTTAGTTATCGATATTATATTGGAATTAAACAAA
-AAGTGAGAAAATAAATCGAGCCCGTAAATCGACACTACAATAGTCATTTA
-AAGAATTACTGTAGTTTTCGCCACGAAATATGTTTGCGCGTCAAATATAT
-TGCGCAGTACGCATTCTCAGAATCCGTAATCCTCAAACTTCTCACCTGAC
-AGTACTCGGCATCGTTGACAGTATTCTGAATAGCCGGTCGAAGTATTGAG
-GCAAGGGGTCCTACAGAAACAATAAACGACGACATCGTGGATAGCGAGAT
-AAATAGTGAAACTATGATTAACGTGGCGTATGCCGTTTCTCGAGCATTCT
-CGTTCATTTTCCAGGAGAAGCCTCCAAGAGAAGCCTATGGAGGATCCAAC
-GAAAAGTGAGTAAAGAAATGATGCGCTGGCGCGGAAAAACGAGAGCGATT
-ATGTATGGGAGTGACCCAAAAACACGGAAAAGTAACGGATAACAAGAAGA
-AGAAGGGGGCAACTTTCTCTTTCTTATCATCATCACCATCATCATTATCT
-CCTTTCTCGGGATTCCGTCATGAGAATGAATCCATTTACTCGTTTTTTTT
-GTGTCCATTTAAGTTTGTCTATAAATATGGCTAATTTCAACTTTAAAATC
-AAATAATGAAACTAGTAATTCTACTCATCTCTCACGCAATTCCTTTCTTT
-TATGTGATATATAACTTTTATTCCATATTTAAAGAAATTTCAAGTTTAGA
-GTCTAACTTGAAAATTGCCAGTGATGAATATAAAATTAGAATGAAGAATA
-TTTCCAGAGAAGTTGGAAGTGTAGTCTTGGAGGAGAAGAGAGGAAAGAGG
-TGAGGAAAAATTACGTTTTTTTGAAGTTTTTTCTTTAATTTTCGAAGGAT
-TAGGCTTAGGCTTGGGCTTAAGTTTAGGCTTAGGCTTAGGTATAGGCTTA
-GGCTTAGGTTCAGGCTTAGGCTTAGGCTTAGGCTTAGGCTCAGGCTTTTG
-TTCAGGCTTAGGTTTAGGCTTAGGCTTAGGCTTAAGCTTATGCTTAGGTC
-AAAGTATAGGCTAAGAGGCCTAGGCTTAGACTTAGGCATAGGCTTAGGCT
-TAGGCTTAGGCTTAATCTTAGGCTTAGGATTAGGCTTAGGCTTAGGCTCA
-GGCTGAGGCGTAGGCTTAGACCAAGGCGTAGGCTTAGGCTTAATCTAAGG
-CTTAGGTGTCGGCTTAGGCTTTAGCTTAGGCTTAGTCTTAGGCTTAGGTT
-AATCTTAGGCTTAGGATTAGGCTCAGGCTTAGGCTGCGGCCTGGGTTTCG
-GCTTAGGTATAGGCTTAGACTGAAGCTTAGACTTAGGTTTGGGCCTAGAA
-TTAGGCTTAGGCTTAGGCTTAGGCTTGGGCGGGGCTGGGCGGATGAGAAA
-AAGAGAAAAATTCCAGGAAAATCCAAATAAAATCCAGAAAAAATAATAAA
-AAAAAGGAAAAAACGGGAAAAATGGGGCATTCCGCGTCTGCCGCGTCAAA
-AACTTTTCCTTAAAAAACGGACAGAGAAGGACCAAAAAAGACAAAAGTTT
-AACAAAAAATAGTTAAACATTTTTTTTGACGGGGTTGAGCTCACCCAGCT
-GAGCTCACTCCATAATTGCACACAAAATTCTCAAAAAATTAATTTTAGAG
-ACTACACAGAGGCTAGCAAATGCACATGCTCTTCAACGATTTCTCAGAAA
-TGCCCGCCAGGCTCCAAAGGTGCTCCAGGAGCCGATGGTCTGGACGGGAT
-CCCCGGCTCCAGAGGTCTGAATGGTATGGATGGAGAGGCTGGGCACAGTA
-ATATGGATGTTTGTGAGTTGCCCAAGATCTTTTATTTTTTGTAAATTCAT
-ATTCCAGTCATGTCACCAACAGGATGCATCCGTTGCCCAGCGGGTCCTCC
-AGGTTCTCCTGGTGATCATGGTTCTCCTGGTGAACCAGGGTACCCGGGAC
-CTTCAGGACCTCCAGGGGAACCCGGTTACGCAACAATTGGGCTTATCGGG
-CCACCTGGACTCGCAGGCCAAGATGGTCTAGATGGAGCTCCTGGCGAGCC
-GGGAGTAGGTGGAATGGATGCAGTGAAGATTGTTTCAGTTGATGGAAAAA
-TTGGAAGAAGAGGAGAAGCGGGGAACAAAGGAAGCAAAGGATCTCGAGGA
-GGAGTTGGAAAAGCTGGAGGGCCTGGGGTGGCTGGAGAAATGGGAGAAAA
-AGGAGCAAGAGGTGAAGATGGAAAGCCTGGAGAGTCTGGAAAGGTGAATT
-CTCAGAAGTTGATCGATGCACCAGGGCGACAAATTAAGCGAATCGGCAAA
-TTGCCGATTTGCCGATTTGCCGGAAACTTTCAATTCCGGCAATTTGCCGG
-TTTGCCGATTTGTCGGATATCAAATTTGCCGGAAATGTTTAGAGGGATTT
-TTTAAAAGACGAAAACACTTAAAACTGTGTCTTTTTGAATTTTTTCCCGT
-TTTCCTAACTAGGGAATATTGTTAATAGGGGAATTGCTAGGAAGAAAAAA
-CAAACTTTAAATGACAGATGAGGTCTTTGGCTACAAAAATCATTTTTTTC
-ATTATTTTCATTTTCATAGAATTTGCTCACTTTTCAAAATAGACGTAGGA
-ACATTCATAGGATGCGTTTAATTTTGCCATTTGAAATTTAAATTCTGAAA
-TTTCCAAAAAAAATCGGCAATTTGCCGGTTTGCAGATTTGCCGGAAATTT
-TCCATTCTGGCAATTTGCCGATTTGCCGATTTGCCGATTTGCCGGAAACT
-TTCAATTCCTGCAATTTGCCGGTTTGCCGATTTTCCGGAAATTTTAATTC
-CGGCAATTTGCGGATTGGCCGATTTGCCGGAAATTTCAATTCTGGCAATT
-TGCCGGTTTGCCGATTTGCCGGAAATTTCAATTCCGGCAATTTGCCGGTT
-TGCCGATTTGCCAAAAATTTTAATTCCGGCAATTTGCCGGTTTGCCGATT
-TGCCAAAAATTTTAATTCCGGCAATTTGTCGATTTGCCGATTTGCCGGAA
-ATTTCAATTCCGGAAATTTGCCGATTTGCCGGAAATTTAAAATCCGGCAA
-TTTTCCAAAACTGTATAATTTTTCAGCCCGGCGCACCTGGAATCCCTGGA
-AAAGATGGTACATACTGCCGATGTCCCGATCGAAATCGTTACGATATTTA
-TCCATATAAATCGAAAATCTGATAATAGTAATAAAGATAATAATACAATA
-AATACAGACAGGAAACGAAAAGCGAGCACTGACGATTGTATGATACCCGA
-AACATTAAGGAGGAGCACAAAAAACACAATGAAAAGACACAGAAAAATTG
-AAATTTGAAAAACTGGTAACGAGACTAGAATCGTCATGATGATCTTGTTG
-AAAAAATTGGAAAAAAATTAAGAATCTAGAAATTGATTAGGCGCAGACTT
-GACACGATCTTGGGCACCGAATCCGCATTTCAGGCCAATTTTCGCATGCT
-CCGCCTTGAGCCCATGACGGGCAGAGGGAGTCATGATCGATGCATCTGAA
-ATGGGGAATATTATTTTTTATTTTAAGCTTCAGGTTTAGGCCTATCGACT
-TTGGATCTCAGGCTCAGGTCCTTAAATTGTGTATCTCAAGCTTAGGCTCT
-CTCGCTCAAGCCTTTAGATTTCAAATCTTAGCCTTAAGCTCTCCGACTGA
-TTTAGGATATCAGACTAAGGGCCTAGGACTTTGGGCCTGAGGCTTAGGCT
-AGTATTCAATCTCAAGCTTAGGATCTCACGCTTAAGCTCTCTGACTCAGG
-CCCTTAGATTGCAAAAACCTTTGCCTTAGGCTCCCCGACTGATTTAGGAT
-ATCAGACTTAGGGCCTAGGACTTCGGGCCTGAAGCTTAGGCTCTCAGATT
-CAGGCCCTCAGACTTTGAGTCTAAGGCCGTTAGACTACGATTTTCAAGCT
-TACAATTAGGCTTTTAGGCTTAAAATCAAAATCCAATTTAGTTTTTTAAA
-AATAATCAAACATTTCTAAACCGCAATTTTTTAAAAATTACCCTAAATAT
-TTCAAATTTTAGGCTTAGACTGTCAGACTTAAACCTTTAAACTTTTGGTC
-TCAAATTTAGCCTACAAGTCTGTGGACCTAAGACTTTGGACCTCGAACTG
-CGGCCCTTAGATCTCATGCTTGGGCTCTAATATCCTGGCCCTCTAGTCCT
-AAATCTTTTGATCGTAGTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCT
-TTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTT
-CAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCA
-GGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGG
-CTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAAGCTTTCAGGGT
-TTCAGGGTTTCAGGCTTTTAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTT
-CAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCA
-GGCTTTCAGGCTTTCAAACTTTCAGGCTTTCAGGCTTTCAGACTTTCAGG
-CTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCT
-TTCAGGCTTTCAGGCTTTCAAGCTTTCAGGCTTTCAGGCTTTCAGGCTTT
-CAGGCTTTCAGGCTTTCAGGCTTTCAAACTTTCAGGCTTTCAAACTTTCA
-GGCTTTCAGGCTTTCAGACTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGG
-CTTTCAGACCACAACTAGACCGGCAACACACGTGTTGTCTAATTACTCAC
-CTCTTTGCCGGCGCTCTATGCATATTTGATGGTAACTCGATTGTCTTTGA
-AGCTATCACTTTCACAGCTTCCCAAGTTTCCCGAGCTGTTGGAATGATCT
-GAAACATCAAAAATCATCATCAAAAATCGTGGTGAGACCCAAAATTACCT
-GATTCTCAGCCAGCAAGAATCCATCCCAAACTTGCTCTTCGGGTCTCAAC
-TCGAACAGGAATGAGTACTTGACGTGGGCTTTTCCCTTTGCCCAATCTTC
-TGAGCCACCGGATGCGGGGTCTGGAAATATTTTGAAATTTTATACATAGG
-AGCCTTAAGAAATAAGAGCTTACAAAGTGTATCTGCACCGGTTCCAACTT
-TGTACTGCGTGTTGTAGACACTATTCAAAGCCTGAGCTGCTGAGAGGGCA
-GTGGATCTCTGAAATGTTTAGAAAATATGACCATGACTTGGGCAAACAAT
-TCCCGCATTTTTGTAGATCACACCGTAATGGGATAGCAAAACACGTGGTG
-CCAGAGTGTCGCATTTCGTTTTGATCTACGTAGATCTACAAAAAATGCGG
-GAACTGATTTCTCATGGTTAAGAACGTGCTGACGACAAATTTTTTTGAGC
-GAAAAATTCCCGCATTTTTTTGTAGATCAAACCGTAATGGGACAGCCAGG
-TACCAAGTAAAAAATTTACTCACCAAATCATTCAAATCATTTGAATAAGT
-TCTGACTTGATGGCCGAACGGATACATCAAAATTTGAGAGTACGAGTGGA
-AGGTGAGGAATGTCGAAATACGGTGTCGCTGCACGAAATCTCTAACCGCC
-GCAGTCTCGGGCTCCGAGAAGGCGTAGGCTCCCTGATAGATTTCCGAGCA
-AGGATCAGTTGATGAGCCGACTTGTCCGAAGAACCAGTCAAAGTTTCGAT
-TGAGGTCGACACCTTGACAGCAGGTTGTTGTGGGAGGTTGGAAGAGTCCT
-GAAAGGTTTTTATTTTTGAGATTTTTAACTTTCACGGAGAATTGCCAAAA
-TCTTAGTTTTCATAGCCTGTGTGACATTATTTGGGCGTAACTAAAGTCCA
-GAAAGCTTATGCCTTGTGCTGATGAATTTTTGCAAAAATTGTGCCCAGTT
-TTGCCACTTTTTAGTGGTTTTTGATGGGTTAAACCTAAATTTTCTGAATT
-CAAGTTTTTATTTTTTCCAAATGTTTTTTCAGCCATCGAATGGCTGTCCT
-TTTTTTCGGGCAAAAAAATAATTTTTCTGAAACTATTTGAAACAATTATA
-TTCTAAAAAAAAGGCAATTTTTTAAATTTTTTCTAGTAAATTTTGAGTCC
-TCTAGCTACAAAATAAACCATTTTAGATGAGTTTCAAAAATGTGCATTTC
-TACAAAAATTGCCCAATTTTTGCCACTTTTTGGTGGTTTTTGATGGGTTA
-AACCTAGATTTTCTGAATTCTGCGTATATAAATTACACGTTTTCAACAAA
-TTTAGACATTTTTTTTATTTTTGCCCAATTTTTTTCCAGCCATCTAATGA
-ATATCCTTGTTTTTAAGCAAAAAAAAATTTCTGAAACACAATTATTATGA
-TCCAAAACAGGGGTGTGCGGCAAATCTCAAAATTTGCCGAGCACGGCGAA
-TTTGGCAAACGGCAAATTTGGCAAATTCAGCAAATTTGCTGAGCTTTACA
-AACTCCGCAAAAATTTGATACTTTTTGAAGCACCTAAACTACTAATTTCT
-GAACAAAAGTTCAAAATAACTTGATTTTGTGCCATTTTTCTAAATTTTTG
-GAAATCAATAATTTTGTCAATAATTTTGGTTAAAATTGTATTGTCAAATT
-TTTGACGCGGGCGGCAAATTTCAAAAATTTCTGAGCTCGGCAAACGGCAA
-ATTCGGCAAATTTGTCAAATTTGCCGCACATTTTTTTTTGGTTCAAAACA
-TAATAAAACACTCCAAAACATTTTAGATTTTTCATAATTTCCGGTCGAAG
-TTTTTGCAAATTGCTAAAATTTTGAAAAATATGAGTATTTGAGGAAATCC
-AAAGCAATGCCGCATGTTCCGACCCCTACAATGTTTTAATACAAATGATT
-AAAACAAAATTACAGTAGACAAAATGTAGAAAAAAAATTATTTTTGGTCG
-ACTTCCAAAATTATGAGTGGCAAAAACTTTGTAATTGTCACTTTTTGACA
-GTAAATAAAAAATTTTAAGAATTTTTTTGAAAAGTTTTATTATGATATTC
-GGTCATTTTGGGACCAAATGAGTGGTTTTTAACAATTCCGGCACTGGCGC
-TAGTCCAGCAATTGCCGTAATCTTAGTTTTCATAGCCGACATTATGCGGG
-CCTAACTGAAGCCCAGAAAGCTTGTTTACAAAAATGAGCAAGCAGAAAAA
-GATCAATCTCCCCAACAAACCTGTTGCCTGTTGAATACACTTTGGTGGTG
-ATCGATTCTTTCTCCACAGTCTGATCTCCGGATCATTGCTACTTCTACTG
-TACTCATAACCATCCGGATTCAGCAGTGGAACAATATACCATTCGAGTTG
-ATCTACGAATTGCTTGATTTGAACATCTTTGTCGTACTGGGTGACCAGTT
-GGTGAATGAAATAGAGTACTGTCGATGGTGACACCCATTCACGAGCATGG
-ATTCCTCCGTCCACCCAGATGCCACGTTTCGTACCTCCGTTACGCTTGTT
-GGTGATCTGGAATTGAGGAAAATTGGGGTGAGATGGGATCACTAAATTCT
-GAATCTAGTTTCTGTGCTACTGTGTGTTACGTTTTTTGCGCTCCATTGGC
-AATCGCCTGCCCATCAAAAACCGTCAAAAAGTGGCAAAACTGGGCAATTT
-TTGTAAAAATTCACAATTTTGAAACTCCTCTAAAATGGTTTAGTTCGTAG
-CTAGAGGACTTAAAACTGATTTTTGAACCCTAAAAATTGTCTAAATTTGT
-TGAAAACGGGTAATTCTTGTATGCTGAATTCAGAAAATCTAGGTTTAACC
-CATCAAAAACCATCAAAAAGTGGCAAAAGTGGGCAATTTTTGTAAAAATT
-CACAATTTTGAAACTCCTCTAAAATGGGCAATTTTGTAGCTAGAGGACTC
-AAAATTAACTTCCAAACTCTAAAGAATTGTCCTTTTTCAGAATATAGTGG
-TTTCAATAATTTTCGAACAGAATTTTTTTTGCCCAAAAAAGGATGGCTGA
-AAAAAATTTTGGCCGAAAAAAAAACAGTTTTACACTGAAAGCCAAACCGC
-GACGCGACACGCAAAGCTCGGTAAATCGACCCCAGCCGTGGCCGAGTTCA
-AATAGCCAAATTCGGCAAACTCTCACATTTCAAGCTATGTATTTCAAGCC
-AGAAGCGCGTGCGATTTCTCAAAAACCGGCAGCTCAGTTGCAGGAGGACT
-TTACGAAAATTTTGAAAATTCCAAGGTATAATTGGTAGGTTTTTCGGCAT
-GTTGCATGGTACTTAAAATGTTTTTTTAACTTTCAAAAGTGGCTTTTATT
-TTGGTTCTTATTGCAAGCCTAATAATAAAAATACTATCCACGTTTTAAAT
-GCTTCCATGGTAGGCAGGCGCGGTTTCAGGGCCGACATGGAAGCCCTACA
-TGTCACGGATTTCTGGCTTTCCTCAGAAATTGAAATGGACTAGTTTTTGC
-CGAACTAGGCCAGGCCATATCTGGGGTAGATTTACGGCGCGTTGCATGTC
-GCGTCGCGGCTCGATTTTAGTTGAACAACTAAATGCATTTGTCCGAGTGG
-AGTACACGACTTTCCCACGCGGGCGATTGCCAATGGAGCGCGAAAAATTC
-AATGAGGAGGGCCAGAATCCCGTGATCGTCCGAAGCAAAGTTAAAACAAC
-AAACCTTAATCAACGGGATCTGCCGTCCTTCGTGAGTCGTTCCGATTGGC
-TGCACAGACACAAGCTCCGGATAAGTGATGGCTAATGAGTTCAGGTAGTT
-GATAACATCAGCAAACGAGTGATATTGTGCAAGGTTAAATTGAACCTGCA
-ATAAGTTATCATTGAACTATGTATCATTGAACGTGGTGTCAGAGTGCCTC
-ATTTTGGATTGATCTACGCTGATCTACAAAAAATGCGGGAGAAGAGACTG
-ATTTCGAATGGTTAAAAACGTGCTGACGTCACATTCTTTTGGGCTAAAAA
-TTCCCGCATTTTTTGTAGATCAAACCCTAATGTGACAGCCTGACACCACA
-TGTATTCACTCACTTTCTGCTCCCTCCAATCATGCAGTCGAACTTGTTTC
-CGAAGCTTATCCCGCTTCTCCTTCTGCTCGACAATCACTCTGAAATCGAT
-GAAAAGATTGTAAGTTGGGCTTAATAGTGTCCCCCCACGACACCCATCAC
-GCGTAACGAGCCGTGACGCGTTTGAATAAAGAGGGTATTTGGACTTGTGA
-TCCCCGCGAAAACCTGTATCGCACGTGATGCCAGGGTGTCTCATCACGGG
-TTGATCTACAAAAAATGCGGGAATTTTTTGCCCAAAAATGTGACGTCAGC
-ACGTTCTTAACCATGCCGAATCAGTTCCCGCATTTTTTGTAGATCTACGT
-AGATCAAGCCGAAATGACACACTCTAACACCACGTGGTATCGCCGAAAAA
-CTCACTTCTGAACGTCATCAATCATAACGGAATGCTTAATCGAATGATCA
-TCGAGCTCTTTCATAAACTGCTGAGTTTTCTCATCGGATATCATCACATG
-AACCTCCTTGCCAGCTTCCGACGGGGATTTCCAAAAATCTAGCTGAAAAT
-TTTAGTGTGTCTGAAGCACCCTTATCAGTTCATATTATATTTCAAAATTT
-TTCTCTAACCCCTCAAAACCGTACTCTACATCGCCGTTCTGGCCGAGTGG
-TCTAAGGCGCTGCGTTCAGGTCGCAGTCCTCTCCGGAGGGCGCAGGTTCG
-AATCCTGCGGACGGCAGATTTCTTTTTTGAATACTACTCTTCAAACAATG
-CATGATGAAGAAGAAGAAGAAAAAGAGAAGAACGTATTGGCTTTTCCTTT
-TACACTTTTGAAATCCCTAGGAACAGGTTATAAACAGCGATGTAACATGA
-AAAGCAGCAGTGAGAGTGATCGAAAACGAGCTGATTATGATTTGTTCAAT
-TATATGACACCGCTATTGTAATGGTTGGTTTGTTGCGTGGAACATCATAC
-CTTTACATCGTTTAAATACAAATTATGAAGAATGTCTACTTGATCTTGGG
-TCGTCGGCTGCACCCTCCATACTGTGAATTTTCTGAAAAATCGAGAGTTT
-ACCGGCTTTTGGGGGAGATTTTACCATTGACTTTTGACTTTTTGGAGAGA
-TCTAAATCTAGTAGATCATGCGGCGGTTAGGTCTATTTGAAATAAAAAAT
-AATTGATCTAGATATGAAACATGGAGATCTAAGGGTTTTGGTAAAGTTGA
-GTAGAATTTTTAATTATTTTTTTGAAAATTTGTTTGCAACATTTTACAAA
-AAAAGACGAATAAATATTGACCAAAAAAATTTTTTTCAATAAAAAATGTT
-TAAAAATTAACCACCTTTTAGCTTTTAAAGGTGGAGTAGCGCCAGTGTGG
-ATTTTGTCTAAATACACTTATTATGAACCAAAATGGTCAAATATCATAAT
-AAAACACTTCAAAAAATTTCTTTATTTCAGATTTTTCATAATTTCTGGCC
-AAACTTTTTGCAAATTTCCAAAATTTTGAATGTCGCAGTTTCCGACCCCT
-ACAATGTTTTAATACAAATAATTGAAACAAAATTACAGAATAAAAAATGT
-AGAAAAAAAATTTTTTTTTTGGTCGACTTCCAAAATTATGAGTGGCAAAA
-ACTTTGTAATTGTCACTTTTTGACAGTAAATAAAAAATTTTAAGAATTTT
-TTTGAAAAGTTTTATTATGATATTCGGTCATTTTGGGACCAAATGAGTGG
-TTTTTAACAATTTTCCCACTGGCGCTACTCCCCGTTTAAAGTTCTATGCT
-TTTTAAAACTCACGTTTTTTTTTATGAAGTCTATTTTAAAAAATCTGGAC
-TCTCAGTGGACAGTTCAGCATTTTTCGAAATTTCAGAAATTTAAAACATA
-AGTCGGAAGTGGTCCTAAAACTTCAAAAAAATTCTCACAATATGTTTTTT
-TGATGAAAACAAACTTATATAGTGCCAAAATGACCAAAATTTTTTTAAAA
-ATAATATTGAAAAATCTTTAAAAAATCTCTTCTGGTTTTTATTTATTTTT
-AAAAAATTCATATTGAAATATTATAGTGCTTTAGATTGCTCGGAAAAAAT
-TCCACAAATTTTTTAATTTTTCATAAGTTTTATAATGATATTTGGTCATT
-TTAGCTCTCTCGGGTAATATTGCAAACCCACGTGGTGCCAGGATTTCCCA
-TTAAGGTTTGATCTACAAAAAATGCGGGACTTTTGCTTAAAAAGATGTGA
-CGTCAGCTCATTTTTAACCATGCGAAATCAGTTGAAAACTCTGCCGCATT
-TTTTGTAGATCTACGTAGATCAAACCGAAATGAGACATTCTGACACCGTG
-TCCACCTTCAAAGTTAGTAATTGCATGAACAAAAAATTCTGAGAATGCGT
-ATTGCACAACATATTTGACGCGCAAAATATCTCGTTGCGAAAACTACAGT
-AATTCTTTAAATTACTACTGTAGGTCGATTTGCAGGCTGGATTTTTTGAA
-AAAAAAATGAATTAAAATTTAATGGAATATTTCTATCTCTATGTATTAGA
-AAATAAGGCCCGTAATGAGACGAGCGGGCCTGCCTACCTGCCTGACTATA
-GAAGGCCGCCTTAAAATCAGGCAGGTAGGTTTTAACGCCTAGCCTACAAT
-AAACATAAAGAGAAATGCCTAAAATAACAATAACTTTCCATTATCCTTTC
-TTATCGTCCTCCCCGGCGATCGCCTAAGATCATAGATAACAACTAGCCGC
-TTTCGGTCATGCAATTATTATATTATAATTGATGGATGGATGGGGGATAA
-TCCAGAGAAAGGGGAAAAAGAAACTTAGAATCCTAGAAAACAGGTTCCCC
-TGACTCAAACAAAAAAACCTACTTTTGATGTGCCAACACGGATGGCACGA
-CGAGACCGATGAGGACGATGATGTTCATCATCATCATCTTCATCGTAGTA
-AAACTTGGGGGGTGATGAGGGGCAAAAGGATGCCCTCCGCGCGTCAAGTG
-TTCGTTGAACAATCCGACGCAGACGGTTAAACAAAGCAACACAGTGGTGT
-CTCCGCCCAACTTCCGCGCGTCCGCCGCCGCCCTGTGTACTGTCTTGTCC
-TATCCTATCTCTCTTTTCTCCACCCCGGCTTGTGTGTGAGATTCTTCTCA
-TTACTAGAAGAAGGTCTCTAGTAGAAGAAGAAGAAGAAGAAGAAGACGAC
-GATGGAGAAGAAGCTGAAGGCACGACGCACTGTTTGCGCAACGATGTTTG
-TTTTTGCGCGCGCGAGCGCCGCATTTAAAACGTGTAAATCGGTTTCAAAA
-GCGCGCGCGCGCGGTCTTCTTTCTCCGCTTGCGCGCACGCATTGACAAAA
-AACCGAAAGGTGCAAAAGTGAAGAGGCCAACTACTTTCGTCCTCTTTGAG
-CACCTAATTGTGGAAAGCTTTTGCTCTGATGTGAAATGAAGTTGGGTAAG
-CTATTCCTGTCTGGGTGATGTTTTCAACTTCCGGGGGCATTGTTGGGAAA
-GTGAGGACCAAAATAGGCCATAAAAAATGAAGATATACATGCTTAGGCTT
-AGGCTTAGGCTAGGCTTAGGCTCAGATTCAGGCTTAGGCTTAGGCTTAGG
-CTTAGGCTTGGAATTAGGCTTGGCGTCAGTGGCGAGCGTGAGCTCGCCAC
-TGACGCTATTTAAGCTTGGGTTTATAGCGTTTTTTTAATTTTTCAAAGGG
-TTCCCGTCTGCCGATCAAAGCGAAATTTAACAGAGAGTCGTATAGGCCGC
-CAAGAAGCTGAAGTTTCAAATTGATTTCATTAAAACTCGCTTAGGCTTAG
-GCTTAGGCTTAGGCTTAGGCTTACGTTTTAGCCATATGCTAGCTGATCCG
-GAACATATTTTTAAAAATTGCAATATTTGACCAAAAGCTGTATTTTTCAA
-AAATTCAAAAGTACGGTGAAATCATATGAAGTGCTTCTTTTTCTTTCATT
-AAACTGTTCAGAATTGTCATTTTTACTAGAAAATACCAAAAAAATATGCT
-AGCTTGACCGGAACATATTTTAAAAAATTAGAATTTTTGACCAAAAGCTG
-TTTTTTCAAAAATTGAAAAGTACTGGAAAATCATATGAAGTGCTTCTTTT
-TTCTTTCGTAAAACTGTTCAGAATTGTCATTTATACCAGAATATATTAAA
-CAAAGTATGCTACCTAATCCGGAACATTTGTTTCCAAAATATTTTAAAAA
-AAAGATTTAGCGGCTCTGACTAAATTGTTTGTTCGTTTTTTCTGGACCCT
-TTTTTCCCCTTTTTTTGGGTGAAAAATTTTGTAAAAAATTTGACCGAGGT
-GTAGAGTTGAATTCATCAATTTTTGACATTTTTTGAGTACGGGCACATGA
-AAACGAAATTTCCAAAAACGCTTATTTCTCGGGATATAGTTCAATTCTAC
-CAAATTTTTCTTTGCAAATCTGCTAATTCTACAAATCTACTAACCGAGGT
-GTAGAGTTGAACTCATTTCCAAAAAGAAGTAGCAGTCCTGAAAATGTTTT
-AGTGAGTCTTCTCATTACTCTAGAGCCCGAGCCAGTAAAATTGCTCCAGA
-AGTAGTAATTTATAAATTTTTGATGATTTTATGCTGTCCAATGATAGAGA
-AATTGTTAAAATTTTCAGATCAAATTGGAATTTTCACAGCCAAATATTTT
-GGAAAATTTTCCACAAAAAATTGGGCGGAAAATTGGAATATTAATTCGAT
-TTAATTCGATTTGGAGCAGTGTATAAATTCAAAGTTTCCTCCCTTAACAG
-CCATTCAAATGCACTTTTTTCTTCGTTTAGTTTTTCTTATATATGGCCTC
-CAGGCTCTCACCAAGTTCCGTTTTACCGGAGAGTTTAAGTGCAAACATAA
-ATTCCTGAGATCCCATGTTGTAGTTTATGAAGACGATGAGGTGTTGTGAG
-TAGAAATGAAAAATGAGAAATGTTGTATTTAATATTATAAATTGTTTCAG
-CGACAACGTTATCAGTAAACACCATTACGTGTTCCATACAAATGCACCAC
-ATATGTATCTCGTTGAGGCTGAAGATACCAATGACGGATTGCCAAAGTTT
-TTGGATGTATTACTTTTTAATTTCCCGCTTTTTCTCTAGTATTTCTCAGA
-AAATTTGAATTTCCCGCCAAAATTTTTTATCAGAAAATTTGAATTTCCCA
-CCAAAATTTTTTATCAGAAGATTTGAATTTCCCACCAAAATTTTTTCTCA
-GAAAATTTGAATTTCCCACCAAAATTTTTTCTCAGAAAACTTGAAATTCC
-CGCCAAAAACTTTTTCTCAGAATTTTGAAATTCCCGCTAAAAAATGTTTC
-TCAGAAAATTTGAAATTCCCGCTAAAAAATTTTTCTCAGAAAATTAAAAA
-TCCCCGCCAAAACTTTTTCTCAGAGAATTTGAATTTGCCGCCAAAAAATT
-GTTTTCTCATAAAATCTGAATTTCCCACCAAAATTTTTTCTCAGAAAATT
-TGAAATTCCCGCTAAAAAATTTTTCTCAGAAAATTTGAATTTCCCGCCAA
-AAAATTGTTTTCTCATAAAATCTGAATTTCCCACCAAAATTTTTTCTCAG
-AAAATTTGAAATTCCCGCCAAAAAGTGAACATTCTAGGAGTTTGGCAGTT
-TACCAAAACCTTGACTGACCATTTTGGAAAATCGAATAACCTCTTAAATA
-AAAACTCTAACTTGTAAAAATTTAAAAATTTAAATATATAGCTTTGCAGT
-CCTATTTCGAGTTATACATGATCATCGTCCACGATTGCACGGATAATGGG
-AAATACAAGTTGTTGACAGTTGACTTGGGATCTTATTATATCAAGGATGG
-GTAGGTACTTTCTACAGGGCAGGCTAGGGCTTCCATGGGAAGCAGGAGCG
-GTTTGCCGGCTTCTCGCCTGATTCCTGCACTTTGGCAAAAAGTCAAAGCC
-TCGATGCTCACACATAGGGCTGGCATATTGGACGTCCGGTTTTTTGAAAT
-TTTAAATTTTTCCGAGAGGTAGTTTTTTTTGTACGGCGGCCGACAATTTC
-CGAGTTTGGCCACTCATGATAAAATTATATGATTAAGTATAGTGAGTGGC
-CAAACTCGGAAGTTGTCGGCCGCCGTAAAAAAAACTACCTCTCGGAAAAT
-TTTAACATTTCAAAAAACCGGACGACCGGACGCCCAATATGTCAGCCCTA
-CTCACACCAAATAGTACTATAAGCGGTTTTTTTTGCCGCAGCCGACACTT
-TACGGTTTCCACGCCGCACTGTACAGAAGGCGCGGCCCGAGGCAGTTGTC
-AGGCGTTTTGGCGCCTATATGCAAGCTCTAGGGCAGGCATTTCTGTTTTC
-AAAAAAATGAATATTTTCAGGCAGTACGATGAAACACGCAACATTGATCT
-GAACAATGCCGGTGAATGGACAAACGAAGTAATCGGAACAAAGGCGATGG
-TGATGTCCAAGATATTTATTTTCAATGTTTGATAAAATTGTTCATCAATA
-TTCGAGCCTACCTGCCTACCTGCCTACAAGGTAGCCTACATATATTATTT
-TTCCTAATTAACAAAAATATAATTAAAACATGATTAAGATTTTCTGAAAA
-TGAGCAAAAAGTGTTTTTAACTTCCACTTTTTGCCCAACAGGTTTAAGAT
-AGGCATGTGACAAAGCCTACATTCAAGGCAACCTACGCCTGCCTCGGTAC
-ATGGTGCATCGACCAATATTTACCTCTTAGCTTCGAGAGCTTATATCTCG
-GTTACATTTTGCTCTATCAAAAAATGGCCAACTGAAAAACTGTTCTCCAA
-TGCTTTTTCTACAATTTTGTGGTTAAAATTTTTTTAATATCTTGAAAACT
-AGCGAAAATATAAGCCACCAAGTCGCGCGCCGCCCCCCGAGAAAGCAATT
-CCAACCCAAGTTTATTGCAATAAAAACCAGTAGAAACGAAAGAAATGAGG
-TTGATTTTGGAGACTTTTCAGGTGACACGGGGAGCTTTTACATTGTTGGC
-ATTATTCAGATTCGATTGAGAAGGAGAAGTCGTGGGGAGGCTGAAAAATG
-TTCTAAAGTTGTTGAAAAAAAAAACAAATCTGCATTTTTTAAAAACCTGA
-TTCTTAGACTTCCATCCATTGCCATAAGTGCACAGAACAGTCTGTTGCTC
-TTGCTCTTTGTGCTCCGTGTCCTCGGAGCCATCATCAACCTTGTCTGGAA
-CTGTCGGTGTTGGCTCAGTTGACGGAGCAAATGAGGAGGATGGTGTCGCA
-GATTCTTCAGTTGGTTTGGGAGATGATGGCGGAGCTGGCTGAGGTGGAAT
-TGGAGATGCTCTTTTTTTTGGGGTTACTGCAGACTGTTTGCTCTTCAAAC
-TCTTGCTCCGCGATTTTGTGCTCTTTTTTGTTTTCTTCTTTGGCTGCTTT
-TGTTGCTTCTTGCTTTTTATCTGAAAATTAGAGTTTCTAGGCAATCAAGC
-GATTTTCTAGGCCACCAGACATATATTTAGCCATGTCGGAATTTTCTAGG
-CCATCACAGACAGTTCTAGGCCATATAGAAATTTTCCTAGGCCACCTAAA
-ACTTTTCTAGGCCACCAACAGTTTTCTATGACCGCGATTTTTGCTAGGCC
-ACCAACAAAAGCAAATAACACATTTTCTAGGCCACCAACAGAATTTCAAA
-TTTTTCTAGGCCTTTAACTCACATATTTCACAATGGAAGCGGCGGCGAAC
-ACGATGAAGGCTACAATGAGAATGCCAATAATTATGAATATCACTACTTT
-GGTCCATGGCGTCGATGATGCTGCAAAAATGGAGGTACAAATATGCAAAC
-GCGCTCTACCGCACTACCAGTGCGGTAGAGCGCGTTTCAAACTAACAGCC
-AGAAGTTGGCGCCGGTGGTCGCTGAGTGGAGGTGGACATTATCAGGAAAT
-GAATGAGAAAATGGAGAAATTTGGGAAAATTGATTAGAGACGTGGGATTT
-TTTTTTAATTTTTATAATATTTTTGAGTAGGGGGAAGGGGTGAGGGTCAC
-GGAAAATACCAAAAATTTGTGATTTTTCCATTAAATTGGAGCAAAATTGA
-CACCATACCTCGTGGCCTAGAAAACTGCAGAATTTCTAGGCCACACACGT
-TACGTCATAATTTACCTGTTAAACCAGGTAACCAACAATCAAATCAAGAG
-TAATTAATCATCTCCTATCTTCTTTTATTTCTCCGTTCCTACTCCCAATG
-TTTTTTTTTTGTAATTTGTGATCACAAATTGTTGCATTTTGTAGTACGCC
-ATGTACGTCTGTGTACTACTTTTTTCTGAAAAGAATACAAAAATGTTCGC
-TTTCAGGAAAAAATAGTGAGAGGTAGAAGAAAATTACGGGGACTAGAAAT
-ATGTAAAAGTTCGACAACGTAGGCAGGTAGGCAGGTAGGCAAGTAGGCAG
-TTAGGCAGGTAGGCAGGTAGGTAGGCAGGATAGTAGGCTGCCAGGCATAA
-TAAAGATGCAGGCACGTAGGCGGATGTTGCAGGCATGAGAAGTCACGGGG
-GTAGGCAGGCATGTGGGTATGTAAGCAGATGTAGGTATGTTGCAGTCATG
-ATGAAGGCACGTGGGTAGGTAGGTAACTAGTTAGGCTGGTAGGGAGGTAG
-ACAGGTAGGCAGGCAGGCAGACGCGTAGGAAGAGTTAGCCAGGATGCAGG
-CACGTAGGCAGATGTAGGTATGTTGCAGGCATGCTGAAGTCACGTGGGTA
-GGCAGATTGGTAGATGTGTACGCAGAGTAGGTATGTTGCGGGTATTATGA
-AGGCACGTGAGTAGGTAAGCAGGCAGGTAGGTAGGCAGGCAGGTAGGTAG
-ACATGTAAATATGCAGGCATATACGTAGGGAGAACAAGCCATAATTCAGG
-CACGTAGGCAGATTTAGGTATGTTGTAGGCATGATGACGTAACGTGGGTA
-GGCAGATAGGCAGGTAGGCAGGCTCGTAAGCTGGCAGGCATAATAAAGAC
-ACATAAGCAGGCATGTAAATCTGCAGGCAGATACGTAGGAAGAGCAAGCC
-AGGATGCAGGCACGTAGGCAGATGTAGGTATGTTACAGGCATGATGAAGG
-CACGTGGGTAGGCAGGTAGGTAGGCAGCCAGGCAGGATCGGAGGTTGGTA
-AGCATAAAAAAGACAGGTAGGCGGGTAGGCAAGCATGTAAATGTGCAGGC
-AGATACGTAGAAAGAGCAAGCCAGGATGCAGGCACGTAGGCAGATGTAGG
-CATGTTGCAGGCATGATGAAGGCACGTGAGTAGGTATGCAGGGAGGTAGG
-TAGGCAGGCATGCAGGCACATAGGCAGATGTAGGTATGATTCAGGTAGGC
-AGGCAGGTAGGAAGACTGAATGCAGGCGTGTTGCTAGGCAATAGCGCCCT
-TTCCTTGTTATGACAATCTCGATAATCTAATAATAAGCTATTCAATCATA
-TCACTGCGCCGATACACAAACTACCTGTTTTTTTGAGTATGCGTCTCGTC
-CCGTCTGCCCAAAAGCTTCTACAGAGTGATTAGACGGTATAAGGGGGAGA
-GATAGGATAGATTTCAATCATTCTCACTTTTTTCGTCCCTTTCTCTGTCT
-TCCTTCTCCCTTTTTTTACAGGGCGCTTTTCCCTTTTTCGTGTGTGTGAA
-GAGAGAGAGTGCATACAGGTGTAGAGGACGCCCAGACATCGAGACGGAAC
-AGGATTCTTCATCGTCTTCAGCTATTTGGAAGAAGGAGTAGAAGGTGACG
-GTGTGTGTTTGGAGACGTGTAATCATCATGTCTTATAACACTTCCTTGCT
-CATTTTTCTCTGCTTCTCTGCCGTCTCTCTATCCACACAGTCTTTCGCCG
-TTTATCGATTATTACCCAAATCACAGACGGATTTTCAAGCTATACAGAGG
-TTATACAAAAATGCGACGGATCATGATGTGAGTTTTGTTTTCGCATTTTT
-GAGCAGATACAATTTCTAGGCCACGAAAAATTTTTCTAGGCCGTTGAAAA
-AATCACTAAGTTTTCTAGGTCACAATTTTGAGCAAGTTCTAGGTTATTAG
-ATTATTACGCCATGGTGCATTTTTCTAGGCCATCAGGAAATTTTGCAGGC
-CACCATGAGTTTTTGATGCAGTTGAACTAAGTTAGTGGCCTAGAAAAACC
-TTTGTTAGCCTAGAAATATTTTCGCCGGCCTAAACACATTTTTGGTGGCC
-TAGAAACACTAACTTTTGGTAGCCTAAAAATTTTCTGTGACCTGGAAACA
-TTGTTGGTGGCCTGAAAACATTTTTGGAGGCTTAGAAATATTCTTGGCAA
-TTTGAAAACATTTTTGGTGGCCTAGAAATATTTCTGATGGCCTAGAATGT
-TTTTGTGGTCTATAAATAATTTTGGCGGCCTAAAAAAATTTGGAATGGCT
-TAGCAAAATTTTTTTGGTGGTCTACAGCCATTTTTAACGACCAAGAAACA
-TTTTTGGTGGCCTGAAAACATTTTTGGTGGCCTAGAAACATTCTTGGTGG
-CCTGAAAAAACATTTTCGGTGGCCTAGAACCATTTTTGGAGACCTGGAAA
-TGTTTTGGTGGCCTAGAATATTTTTGGTGGCCTAGAATATTTTTGTTGGT
-CTAGAAATATTTCTGATGGTCTAGAATGTTTTTGTGGTCTATAAATAATT
-TTGGTGGCCTAGAAATATTCTTGGAGACCTGATAACATTTTTGGTGACCT
-ATAAATATTTTTGACAGCCTAAAAATTTTCGGTGGCCTAGAAATATTTCT
-GATGGCCTATAATGTTTTTGTGGTCTATAAATATTTTTAATGACCTAGAA
-ACATTTTTGGTGGCCTTGAAACATTCTTGGTGGCCTAGAAATGTTTTTGG
-TTTCCTAGAAACATTCTTGGAGACCTGAAAACATTTTTGGTGGCCTAGAG
-ACATTTTTAATGGCCTAGACACATTTTTGGTGGCCTAGAAATGTTGCTGA
-TGGCCTATAATGTTTTTGTGGTCTATAAGTATTTTCGGTGGCCTAAAATA
-TTTTTGGTGACCTAAAACATTTTTGGAGACCTGGAAATGTTTTGATGGCC
-TAGAAATATTTGTGCTGTGCTGAAACATTGTCGGTGGCCTAGAAATATTC
-TTGGAGACCTGAAAACATTTTTGGTGGCCTAGAAAAATTTTTAGTGACCT
-AAAAACTTTGGGAATTACCTGGAACCAATTTTGGCGACCTAGAAAAATTT
-TCCGTGGCCTAAAAATTCCCAATAATTAACAAATTTTTAGTTAAACTTCT
-GGAAAACGGGCAAGGACAAGCACGGGTTTTGGGATGTGATGGTGGATATG
-AAGAATTCGAAATATTTTTTGGACTTTCTACAAGTAAATGATATTTCTTA
-CATAAAGACGATTGATGACGTGGAGGGGTGAGCTTTTTCTGAAATTTTGA
-AAATTACATAAAGAATATGTGCTCTATTGATAAACTGTTAGGATCACCGT
-AAATCGACAAGAATCTCCGTAAATCCACAACGGCCCCATCTCAAAAATTC
-CTAGGCCACACGTGTGACGTCATTTTTCTTCCAGATTAATAACAAAGCAC
-GAGAACAACAAGACCCTCTCGAACATGTTCCCCCGTCTGTGGGATGACTC
-CTCGTCTGCTCACTATGACTTCCACACCTATGGATCCTATCAGCGAATGA
-CTGATTGGATGAAGCAGCTGGTGGTGAAGTATCCAAAGATGGTTCAGTAT
-ATATCGATTGGAAAAACTACGGAGGGCAGGAATATCGATGGAGTTGAGGT
-AGGTCTAGAAGGCTGCCTTAGGTCTAGGTCTAAGTCTAGGTTTAGGTCTA
-GGTCTAAGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGG
-TCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTC
-TAGGTCTAGGTCTAGGTCTAGGTTTAGGTCTAGGTCTAGGTCTAGGTCTA
-GGTCTAGGTCTAGGTCTAGGTCTAGGTCTATGTCTAGGTCTAGGTCTAGG
-TCTAGGTCTAGGTCTAGGTCTAGGTCTAGATCTAGGTCTAGGTCTAGGTC
-TAGGTCTAGGTCTAGGTCTATGTCTAGGTCTAGGTCTAGGTCTAGGTCTA
-GGTCTAGGCCGATTTCGATTTCTATGTGTATGGCCTATAGTGATTTTCAG
-ATCGGCGGAGACTCCCGCACCAAAAAGATTTTCTGGATCGATGGAGGTAT
-TCATGCTCGAGAATGGGCGGCCCCGCACACGGCTCTCTTTTTCATCCATC
-AGGTATGTGATCCCGCCCCGTCAGAAAAAAGTGTGTTCCGATTAGTTCCG
-CTTGGATTACACAAATGTTGGCAGAGACAGAAAAAGGGAAAACTTGATAA
-CAAATGGGTTGGAAAAAACGTAATCGGATGATGCAATCGCGCTCTATTGC
-ACTACCTCAACAAAACATTTTTTTGCAGCTTACCTCCCGCGCAAACGAGC
-CCGGAATCAAGAAATTGCTGAACGAGATCACATTTGTAGTGGTTCCCTGC
-TTGAATCCAGATGGCTATGAGTTCACGAGATCCTCCACAAATCCACATGT
-AGGTTGGGGTAAGGTTACTGTACCCCCCCCCCCCCCCCTCCCCAACTCAA
-AGGCGCAAGCACTCCCAAATTTTTTGCAGGTTCGTCTGTGGCGTAAGAAT
-CGCTCGAAAATGCAATGCCGTAAGGACATTTGGGGACGCAATCGCTGCTG
-TCGCGGTGTCGATTTGAATCGTAATTTCGATTTCCACTTCAGAGGTGAGA
-GAGAGAGGGTGAAGTGGTTTTTCTCAAAGTGGACTTGAAAATTAAGGGTC
-AAAGTTTTAAAAGAAAACTTTGAAAAAAACTTGGGAATTTGTTCACGAAT
-ATACGAAGTTGCTGAAAATTTGTAAAACGTTTTGGAACATTCTAAAACTA
-TTTGAATTTAAATAATTTTTTAAACATACCAAAAAATCATGGATGTTCTC
-AAAATTCACGAAAGTTTCGAAAATTCCCTACAGTACTCCTGAACTAGCCC
-TACAGTATCCTTAAAGTACCCTACAGTACCTATACAGAACTCCTGTAGTA
-CCCTTACAGTATCCCTAAAGTATCCCTACAGTACCCCTACAGTTTCCCTA
-TAGTACCCCTACAGTACTCTCGCAGTATCCATACAGTAGCCCTACAGTAT
-CCCTACAGTACCCCTACAGTATTCCTACAGTACCCCTACAGTAGCCCTAC
-AGTACCCCAGTAGCACCCTTACAGCATCCCTAAATTATCCCTAAATTATC
-CCTACAGTACCCCTACAGTACCCCTACAGTACCCCTACAGCATCTCCATA
-GTACCCCTATAGTAGCCCTACAGTATCCCTACAGTTCCCACACAGCCCTT
-ATAGTGCCTATACAGAACCCCTATAATACCCCATACAATACACCTACAGT
-ACCCCTACAGTATCCGTAAATTACCCCTATAGTACCCCTACAGTACCCTG
-ACGGTACTCCTACAGCACCCCTACAGGACCCCTATAACATCCCTACAGTA
-CCCCTGCAGTACCCATACGGTTTCCTTACAGTATCCCGTGAGTATCCCAA
-CAATACTCTCACAGTACTGCTACAGTACCCCAAAAGTACCCCTACAAAAC
-CCCTACAGTACCCCTACAGAACCCTCACGGTACCCTACCGTATCCCTACA
-GTACCTGAAGCTCCAAAAATTTCCCCCACTTCCAGAAAGCGGTACAAGCG
-ACGACCCGTGCTCCGAGATCTACCAGGGACCCTCTCCATTCAGTGAGCCC
-GAGGCAAAAGCCGTACGGGACGCGTTGTTGTCGCAGAGATATAAGGGAAG
-AACCGACGCCTATATCACACTACACACTTATTCACAGGTACTGTTAAGCA
-GTTGAAAACTTTTTCTCGGCCACCGATATTTTCTCGGCCATCGATATTTT
-CTCGGCCATCGTTATTTTCTCGGCCACCGAAATTTTTCGCGGTCATCGAT
-ATACTCTCGTTCACGGATATTTTTCCCAGCAACAGATTTTTTTCTCGGTC
-ACCGATATTCTCTCGGCCACCAAAATTTTGTTTTTCGTGGCCATCTATAT
-TTTCATCGGCCATCTATATTTTCTAGGCCACCAATTTTTTCTCGGTCTCC
-GATACTTTCTCGGCTACCAACTTTTTCTCGGCCACCAACTTTTTCTCGGC
-CACAGATTTTTTTCTCGGCCATTAATTTTTGACGGCCACCGAAATTTTTT
-CGGTCACCGATATTTTTCACGGCCATCGATATTTTTTGAAAATTTGATTT
-GAGCAAAATATTTTCAGATTTGGATTCATCCATATGGTCACAAGAAGGAT
-GCATATCCAGGAGATATTAAGGATTTGGTGAGTGATGACGTCATTCTTCT
-TGAAACGTTGAAACTCAAATTTCCAGTACGAAGTTGGCAAAAAAGCTGCT
-CAGGCTCTGAAACGGGTTTACGGCACAAAATACGTAGTCGGAAGCGGTGC
-GGACACGCTCTACCCGGCGTCTGGAGGATCTGAAGATTGGGCAAAGCACG
-AGGCGAAGGTCAAATTTGTGTACCTTCTAGAATTGAGGCCCGACGAGAAA
-AGTAAAAAAAAAACGTTCAAAGTTGCTGAAAAAAGTTGGGCGATAATTTC
-AGACTGGGATGGGTTCATACTGGACGAGAAGGAGCTGATCCCGACGGCTC
-GGGAAACTTGGGAAGGTGTCCGAGTTGTGGCGGAAGCTGTGCTCGATCGG
-ATAGTTGCCGGCAAGTCGACGGCTCCAAGAGGTAGGCAAACTTTGATGTG
-CCTGCCTGCCTTGTGCCTACAGTTTTATTACGAGTAGGCACGGAGGTAGG
-CAAGTAGGCAGGCAGAAATGTGGACCGATAGGCGTAAGGTTAAGGGCTTG
-CGAAGCTTTTGCGTAGGATTGCGAAGAAAAAGAAAAATTTTTAAATTACA
-GTGCGCACGGCCTAAAGGAGATGGCTTCTGAGGTAGTCACTACGATGCTC
-CGCTTGCTCTGACCACGCCCCTTTCCTGGTTTCTCGATTTTTGTTTTAGA
-AATTACACTTGTTTATTTTATGATTGTTGATAAATGTTTTTTTAAACATA
-ATTTTTCTTGAAAAAACAACTTACAATTAGAGAAAATAGCAGCGAGCGGT
-CGTGGCCGCGAAATGAAAAACTCGGCCACCAGCTATAAAATTAAAACGTA
-TAATAATTTGGTGGTTCAGTTTTGCAGAAAAAAAATGGCTGGCCGAGTTT
-TCACGTTTCTAGGCCATCTAGCAAAGTTGCTCTGAAGCGCTTTCGCGAAT
-TCGTTTCCGAAAAAACTGTAGGTGAAAACTCGACCACGCTTTCTTAAAGC
-CACGAAATTTTGAAATAATTTCTCGGTCACCAATTTTTTCTCGGCCACCG
-ATATTTTCTCGGCCACCGATATTTTCTCGGCCATCAAAATTTTTCTAGGC
-CACCAACTTTTTCTCGGCCATCTATATTTTCCCGGCCTCCGACATTTTTT
-CTCGGCCACCGATATTTTTCGCAGCCGTCTATATTTTCTTGGCTACCAAT
-TTTTTCTCGGTCTCCGATACTTTCTCGGCTACCAACTTTTTCTCGGTCAT
-AGATATTTTTCGCAGTCATCTATATTTTCTCGGTCAGCGATATTTTCTTG
-ACAACCCATGTTTTTCTCGGCCACCGATATTTTTCTCGACCATCTATATT
-TTCTCGGCCACCAAAATTCATTCTCGGCCACTTATATTTTTCTCGGCCAC
-CAATATTTTTCTCGGCCACCTATATTTTCTCGGCCACAGATTTTTTTCTC
-GGCCATTAATTTTTGACGGCCACCGACATTTTTTTCGGTCACCGATTTTT
-TCTCCGCCATCTATATTATCTCGGTCACCAATTTTTTTCGGTCATTGATA
-TTTTCTCGGCCACCAATATTCTTCTCAGCCATCAATATTTTATCGTCCAC
-CGATATTTTATCGGCCACCGAAATTTTTCGCGGTCATCGATATACTCTCG
-TTCACGGATATTTTTCCCAGCAACAGATTTTTTTCTCGGTCACCGATATT
-CTCTCGGCCACCAAAATTTTTCTCGGCCACCGATTTTTTTTCCTGGCCAC
-AGATATTTTTCTCGGCCTCCGATATTTTTCTCGGCCACCGATATTTTTTC
-TCGGCCACCAATTTTTTTCTCGGCCTCCGAAGTTTTTCGTGGCCATCTAT
-ATTTTCATCGGCCATCTATATTTTCTAGGCCACCAATTTTTTCTCGGTCT
-CCGATACTTTCTCGGCTACCAACTTTTTCTCGGCCACCAACTTTTTCTCG
-GCCACAGATTTTTTTCTCGGCCATTAATTTTTGACGGCCACCGAAATTTT
-TTCGGTCACCGATATTTTTCACGGCCATTGATATTTTTTTCGGTCACCGA
-TACTTTCTCGGCCACAAATATTTTCTCGGCCACCGAAATTTTTCGCGGTC
-ATCTATATTTTCTCGGCCTCAGCCATCGATATTTTTCTGGACCGTCTAGT
-TTTTTTTTGGCGGCCGTGACCTCCAAATAGAATTACAAAAATAAACGATA
-CATCTCATATTTCTGTGCAAATCCTCAAGTACCCCCCCCCCCCCCCCTAT
-ATTTATTGTTCCAGAAGCCCCAAAAGCTCGCGGATTCCGATTCGGCGACG
-GCACCGAAGGATCATGTTTCGATGTCCGACACGCGTGCAAACGATGGGTT
-CAGGAACGGGAGGAGCTGTGCAGGACGGTGCCAATTTTCATGCGCGAGAA
-CTGTGCCTACTCTTGCAATTTCTGTTGATTTTTTTGGTGTGCCACTTCTT
-TTTTTCTGTACATATATCCATTTTGTCTTCTACATACATATATATATGTA
-TATGAAATGTTTAAAAACCTAAAACCTAAAAAAAAACCAACCTAATACAG
-TGTTCACGAGCGCCCCCCGCCGCCGGCGGCTCCTTATTTGCCTTGTGCTC
-ACCGTGAGGTGGCTCCGCGCGGGAGCCCCAGTGATGAGCATCTCTTTTGT
-CCACACGAATAATACAATAACACGGGCTCCTCTTCAAATATGACAAAATG
-TCAAATTTTGGCGTCTCTCCTGACTTGGAGCTTCTGGGTCTTCAGACACG
-TTCTTGTGTGTGAGGCGAGATGCGATTACCCTCTATATTATTGATTTTTG
-GAGCATTTTTTGGTTTTCTAGGGGCTATTCATAATACAGATGATAATGCC
-GGCTATCATAAGTAAGTCCCCAAAATACCCATATGGCCTAGAAATTCGGA
-AAACTCTTCCATTTCACTTTTGGTAGGGACATTTGGTTTCTGTGCTAGCT
-TTTATGCTGAACATGGTAATTTAAATTTCCTAGGCCAGTGTATATGTTTT
-TCTAGGCTACGACATACAATTTTTTAGGCCACAAAATATTTTTTTTTAAT
-TGCGGCTTATAAAAATGTTCCATAAATTATCTATTTTTGAATTACAGTCT
-GAAAATTTCCATTTTTCAAGGGCACCTTTCTAGGTCACAAAAACGGATTT
-TTTCAACATAGGCATTTTTCAACTTTTTCTAGGCCACGACAGATGGAAGA
-GCTTTTCGTAAAAAAAGCTCGGCCACCACCCCACCTAACCAAAAAACTTC
-CAGCTTCAAACTAATCCGAATCAATCCGGAAACTGAAGGAAGTGTGAAAT
-ATCTTCGAAGTCTGTACGAGGATCCCTCTCCGTACGAGCTGGATTTCTGG
-CAGCCTCCTACGAATATCGGTTAGTGTGACTTACCCACGTGATGTTAGCG
-TGCTCCATTTTAGTTTGATCTACGTAGATCTACCAAAAATGCGGGAGAAG
-AGACGCAAAGTTCTCAACTGATTCTGCATGGTTAAGAACGCACTGACGTC
-ACATTTTTTGGGAAAAAAATTTCCGCATTTTTTGTAGATCAAACCGTGAT
-GGGACAGTTTGCCACCACGTGCTTACCCAGGAAAATCTGAAATTTTTCGA
-ATTTTCAGGAGCTATCGTAGACTTGACAGTTGCTCCGGCGGATGCTCCAA
-GATTTGTGAAGGATTTGGAATCGAAGAAGATCAGCTACATCGTGGCGGTT
-AATGATTTGTCAAAGTTCGTTTTTTTTTCTAGGCCACGGCCATCTGTGAC
-GTCACTAAACTAGTTTCCAGAGCAATCGAAAACGAGCGCGGAAGCGACAA
-ATTCTACAACCCGGTCGCTGGTTTTGCATACGACAAGTACAACAGTTTGG
-AGGAGATTCAAACAGAAATGAAGCGGCTTAAGAAGGAATACCCGACCATG
-ATCACGCTTATCGATATCGGACAAAGTCACGAGAATCGTACGCTTTTGGT
-GATGAAGGTAAGAGCGAACGCGCTCTATTGAGTGGGCGTGGTCACGTCCA
-CGTTTTGCAAAGTGGGCGCACGGTTCCTTTACAGCGGTCCCAGCTTTTGA
-AGTTTTGAGTAATTTTTATATGGGAATTGCTAAAATTCATTTAAAAAAAA
-CCCAAAAATACTTTTAAAGTCGTAACGAAAAAAAACAACCGTGCGCACGT
-CTTGCAAAAAGTGGGCGTCCCAAAATTTAAAAACGACGGAATTTCATTAT
-TTCAAACGCTCCAAACTCATTTTCACTACAAAGACATCACGCGCCTCCTG
-GGAAAGCCCTTACTCATTTGCTGGATATATGACGTCACTAAATTAGTAGA
-TGTGTGAAACCGCGCTCCATTGTACTACGCAACACCGATCCCACGTGGTG
-TCAAAGTGTCCCATTTCGGTGTGATCTACCATAAATGCGGAAATATTGAC
-GCGGATTTCTAAACAGATTTCGCATGGTTAAGAGCGTGCTGACGTCACAA
-ACTTTTCTCTGCAAGAAATTCCCACATTTTTTGTAGATCACACTAAAATG
-GGACCGTTTGACGCCACCTGCGCTCTCACTTTCAACACTCCCATTAAGCA
-TTTCATGTACGCGCCAAAACGCACGGATTTCTGGCTCCCCTCATAAATTG
-AAATGGAGTTTGAAAAAGAGTTTGCCGAACTAGGTCATTTTGGCTCGGCC
-ATATTTGGGGTAGATTTTCGCCGCGTTGCGTGTCGCGTCGCGGCTCAATT
-TAAGTTGTAAATCTAAATGTGTTTGTCCGTGTGGAGTACCCGACTTTTCC
-ACGCGTTGCCCGGAATGCTATTGTCGATGGAGCGCGAAAAATTCAATAAG
-GAAGGCCAGAACCCCGTGAAAACGCCTGCCGCGCCCCCGCCTGCCTTGCA
-GCGCGGAACCCAAAAAGTGTCGGCCGCGGCGAAAGGCCCTCGCACTATGT
-GGTGTTAATACCTAGCTATTGACTTATCGCCATAGTGTAAAAAAACCCAA
-ACTCCCAAATTTTCAGATAACCGGAAAACGAAACCCCCTCGGCTCGAAAA
-TCTCCATGTGGATTGACGCTGGAATTCATGCTCGAGAATGGATTGCTCCG
-GCGACCGCAATGTACATTGCTCATGAGCTTCTCCTCGGGTATGAAAACGA
-CGCGACGGTGGCTAAGCTGATGGACCATATCGATTTTTATATTCTACCTG
-TGATGAATCCAGATGGATATGAGTATTCCAGAGAAAAGGTTGGTTTTTGA
-ACCTTAAAAAAGCCTTAAAACTAGTGCTCTATTTCAGAACCGCATGTGGA
-GGAAAAACCGGAGCCCCGCAAAATGCGCCCGGCAAACTTTCAGTACGGTC
-TGCTGCTCTGGAGTCGACCTCAACAGGAACTTCGATTGGTTCTGGGCCTG
-TAAGTCACGTGGTGTGAGAAAGTCTCATTGAAGTTTGATCTACAAAAAAT
-GCGGGAATTTTTTGTAGATCAAAGCGAACTGGGACTTTCTGACTCTACGT
-AGTTAGCTCAATATTAGACCTTAAAAAATAACTTAATCTTAAAAATTTCC
-AGCCACCGGTTCGTCTTCGGATCCGTGCCACGACACGTATCACGGCTCGG
-CGGCCTTCTCGGAGCCTGAATCACAAGCTGTCAGGGATTTCCTGGAGCAA
-AACACACCCGAGGCGTTCATCTCGCTGCATTCCTACTCCCAAATGTGGTT
-GATACCATATGGACACAGAAAACAGAGTTATCCACAGGACTACCATACTG
-GACTGCGGCCATTGGCTCTGCGAGCAACTAAGGCGTTGTATGAGTTGTAT
-GGGACGAAATATCAAGTCGGGACCGGCGCTGATTTGATGTGTAAGTTAAT
-ATCCTTTTTTTCGAATTTTTAAATTTCTAAGGATTTCAAGAAATTTTAAA
-ATTTTGAAAATTAAAAAAACAATTTTTTTCGGAATGTTTAAAAATTAAAA
-AAAAAATTTTTTTAATAGATTTTTTAAAGCTTTTTTTTGGAAAATTTTGG
-ATTTCTGAATAATTTTTTTTTCAGAACTGGAATTTTTGAGTTTATTAAAG
-ATTTTTTTAGGACTTTTTAATTTAGACATTTCCTGAAAAATTTTTAAATT
-ATTAAAATTTCGAACTTTTTCGATATTTTCGGATTTTTTTGCAACCTGAA
-TTTTATTTTTTTTTTGGATTTATTGGAATCAGGGGTGGGCAGCAAGATTT
-TTTCCGGCAAATCGGCAAATCGGCAATTTGCCGGAATTGAAAATTTCCGC
-CAAATCGACAATTGCCGGAATTGAAAATTTCTGGCAAAACGGCAAATCGG
-CAAACTGCCGGAATTGAAAATTTCTGGCAAACCGGCAAACAGGCTAATTG
-CCGATTTGCCGAATTTATCGATAAATCAGTTTGCCAAACGGCAATTTCCC
-CCACCCCTGATTGGGATCTTTGAAATAAAACAGGAAGAAATTTTAAATTG
-TTGGAAATTTTGTAATTTTCCGGAATTTTAATAAAAAAATGCTGAAAATT
-CTAAAAGTTTTGGAACTATGTAAAATTATTTGTGATTTAAAAAAAAACAT
-TTTTTGGACTTTTCTGAAATTTCACGGATTTCTGGCTTCTCTCATAAATT
-GAAATGGAAGAGTTTTTGCCGAACTTGGCCATTTTGGCTCTGCCATATCT
-GGGATGGATTTACGGCGCGCTTCATGTCGCGTCGCGGCTCGTAAAACTAA
-ATGCACTTGTCCGTGTGGAGTGAGGAGAAAATTCAATGAGGAAGGCCAGA
-ACCCCGGATTTTTGAAATTTTGAAGTTCTGAGAAACCTGTGACTTCTACA
-CTAACCCTGAAGAATTTCAGACGAAGCTTCTGGAGGATCACATGATTGGG
-CTAAGGGGCAGCTTAAGGTCCCCTATGCCTACCTGATTGAGCTCCGACCA
-AAGAACACCATGATGGGGTAAGCAGGACGATGGATCCTATCAAAATTAAA
-ATTTCATTCCAGCCACGGCTTCCTTCTCCCCGAACGAGAAATTGTGCCCA
-CTGGACTGGAAACCTTCGAATCCATCAAAGTGGTTGCCGACGAGCTTGTG
-GCGCAATTTGTGGAACCTGTGATTCGAGCCAAGCTGACCACAACCACAAA
-GCCCGCAATCCCACCGTATCGGCGTGGGTACTCTATAATCGACACCACAA
-CTATGGAGCCGGTCGATGAGATTACACAGAAGCCTACAGAAGCTCCAACC
-ACAGAGGAGCCCACCACCACTACTACGGAGGAACCTACAACTACCACAAC
-GACCGAGGAGCCTACCGAAGCCCCAACAGAACCCAGTCCGACTACTGTCG
-AGGCCACCGAGGCTTCTACAACACCAGAAGCTTCCACATCCTCTGAGACA
-AGTACCACAGAGAATTCTGAACCCAACCAGAAGACATCCACACCAGTGGC
-ACCTGAAGCAAGCACCGTTGAGGAGGTTGGTTTTTGGCTTAGTCTCAGGC
-TTAGGCCTAGGCTTAGGCTTAAACTTAGCCTTAGTCTTAGACTGAGGTTT
-AGGCTTAAGCTTAGGCTTCAGCTTAGGCTTAAACTTAGTTTTATCTTAGG
-CTGTGGCTTAGTCTTAGACTTAGTTTTAGGCTTAAGCTTAGGCTCAGACT
-TCGGCTTAGGCTTAGGCTTAGAATTAGGCTTAGTTTTAGGCTTAGACTTA
-GTCTTGGGCTTAAGCTTCGGCTTAGGCTTAGTCTTAAGCTTAGGCTTAGG
-CTTGCACTTGGGCTTGGCGTCAGTGGCGAGCGTGAGCTATTTAGGGTTTT
-ATGCTTAGCTTTAGACTTAGGCTGAGGTTTAGGCTTAGGCTTCGGCTTAA
-GCTTAGGCTTATGCTTAAGCTTAGGCTTGGACTTAGGCTCATACTTAGGC
-TTAGGCTTAGGCTTGCACTTGGGCTTAGGCTTAGGCTTATGCTTAGTTTT
-AGGCTTAGATTTAGGTTCAGGCTTAGGCTTATACCTAAGCAAATACATTT
-TTGGAACTATTTGGATATTTGCCAGCGACCTATTTTATCAACTTCGAATT
-TCCCAAACCATTCCAGGAAACAATCACACCGATCAAATGCGTCGACTACG
-GTGACTACTGTCGTCTTTGGGGAGTCTTACAGCTCTGCTATCGGGATCAG
-GTCTCCAAGTTGTGCCCCAAGACTTGCGACTCGAGGTGCTCTTTTTCGGT
-GTGAGGCGCACGCTGGAAACTATCGTATGACAAATTGTCAGCTTATGTAT
-GTATAAATGATTTCAAACTTTTGTAATTGTGGACTAAAAACTACATTTTT
-CATGCCTGACTGACTGCCTGGCAGCGTGTCAGCGCCCGACATTTTCTGAG
-TTCCACGACGGGATCCTGGCAGGCGTAGGCGTGCAATTTTTAACTCATCA
-AATTGCTTGGAATAATTAAGCACTGCTACAAATGATGTCACTAGCTACAA
-ACTACAAACTAGGAATTTCACACTACAAACTACAAACTACAATCTTAGCT
-CTTCAAGCTATGAAATACAAACTAAGAAATTTTTATTTTTCAATATTTTT
-TAAACGAGGTGTAATTATGGGCGTATATAGTAAAAACTGGAACGACAAAA
-TGCAAATCACAAACTACAAACTAGAAACTAAAAACTAGAAACTGCAAACC
-ACAAACTACAAACCACAAACTACAAACTACAAACTACAAACTACAAATTA
-CAAACTACAAGCTACAAACTACTGAACTCTGAATAAATTTGAACGTGTAA
-ATTTTGCGTTTTTGTGCAATGATTGGACGTATGAATTGCGAAACCATAAG
-TGTTTAATCACATACTACAAACTACAAACTACAAACTACAAACTACAACC
-TAGAAACTACAAACTACAAACTACAAAATATAAATTACAACCTTCAAGAA
-ATTTGTATTTTTCAATATTTGTCGAACAAGTTTTAATTATTCGACGAATA
-AAGTCAAAGCTGAAATCATAAAATGCTAACCACAAACTACAAACTACAAA
-CTACAAACGGCAAACTACAAGCTACAAATTACTGAACTCTAATAAAATTT
-GAAAGTGTACTCATGGTTTTGTGCAATTACTGGACGTATGAATTACGAAA
-CCATAAGTTTTTAGTCACACACTACAAACTATAAATTACAAACTACAAAC
-TACAAATGAAAACTACAAACTACAAACTGGAAACTACAACAGCAAACTAC
-AAACTACAAACTACAAGCTACAAACGCTTATATAATTCGATTTTAGTTAT
-TTTCTGTTTTTTATTTTTCCAAATTCTCAAACCTGAAATAAAATTACCTA
-CACACAAATGTTTCTCATTATGCATCGAATGACTAATATTTTCCAATAAA
-CGTTTTGAAAAAGTATGGAAGAAACAAAAAATGGAAAACAAAGGCGGAAA
-TATGCATTTTTCTTCTCATTTTCTTGAAATTCGTGTGATTGTACTTATTG
-ATTTTTTGTTGTTGTTAAAAACGTGGTAGGCAGGCATTCATGCCTACGTG
-CCTGCCTACCAGTCGAATTCGAACCCGCAAGATGTCGGCCGCTCCCTTCG
-ATTTTGGAAGTTTTTACTTATTTTCCTCTTCTGCTAACACATTAGACAAT
-TATTATTCAACCCGTGTACACAATAGGGCGGCTAATAATTAGGTTGGCAG
-GTAGAGGTGTACAGGAAACGTTTATAAGCTCTTTATTTACTACTGAGCTA
-CCACTTATTTGGAGCCAATGCATTTTGTTTCTCAACAAGTTGGAGATTCC
-AGAACAACCAAGATTTGGGCGGGGCTTATTTTGAGGCAATTTTTCAACTG
-TACAGTAGATTCATATAATTTAAGTTTTGAAAACATTTAGGCGGGAATTC
-AAACATTTATTTTTAAAACCATCTTGGCGGGAATTCAAATTCTAGTTTTT
-CGAAAACACTTTGGCGGGAATTCAAAATGTTATTTCTTAACAACTTCCTG
-AAATGCTCTAGAACCTTCTGGAATATTTGAGAAAACTCTAGAATGTTCTA
-GAACCTTCTGAAAAATTCGAAAAAAGTCTAGAATGTTCTAGAGCCTTTTG
-GAAAATTCGAAAAAAATCTGGAATATTCTAGAACCTTTTGGAAATTTTGA
-GAAAATTCTGGAATGTTTTGGAACCTTCTGGAAAATTCGAGAAAATTCTG
-GAATGTTCTAGAACCTTCTGAAAAATTTGAGAAAATTCTGGAATGTTCTA
-GACCCTTCTGGAAATCCGAGAAAATTCTGGAATGTTCTGGAACCTTCTGG
-GAAATTTTTAGAAAAATCCTGGAATTCTCTAGGACCTTCTGGAAAATTTG
-AGAAAATTCTTGTCGCCAAAGTTTTGTGAAAAAATTTAGCTGGAAACTAA
-ATAATTTTGTGAGAATTCAAACTTTAATTTTTCCAATTTTTTCGGATTTT
-TTTTTTAGCTTTTAAGCTTTTTACATTTTCTATAAATTTTAGATTTCAAA
-AAAAAATTGGCGAAAAATTTTGACCAAATTTTTTGGCTTTATAGCATAAT
-TTCAAAAAGTTTAAAAAGTCCAAACTTTGCTCCAGTCCCCAAAAAAAAAT
-TTGGTGGAAAATTCAAATCATGTTTTTTTTTCAAAAAATTTCATGGCCTA
-GAAATTTCAGCAAAGCAGTAAGGCCGCCTACCTCCCTTCAATCCGAAAAA
-TACCTAAAAATCAATCCCAAGCAATTAGTCTCATCAAGAAAGAAAAGAGC
-TCTGCTTGTGCCCACTCCTCATCTCTTCTCATGTATTTGCTTTCAATTAA
-ACATCTTACTCAGACAGCATAACGAAGGAAACAAAAAACGAAAGAATAAC
-GAAATGAGCATATTTCCTTTATTTATTCCTTATTTATGTATTCAGGTAGA
-ACAAAAAACCGGCTCGGCGGGTTTATTTGTCTGTAAATCTTATGCCTACA
-CGCCTACCTACAGCGGCCCTGACTGCCTATTTGCCTAGTGTTTTTTGTCC
-TTTTCGGTTGGTTTTTTTGAAAATTTTTCCTGATTTTTTTTGTCGTTTTT
-TTTCCATTTTTCTGAATTTTTAGGAATTTATGGAAGTTTCTCTTTTTTCT
-CCCCCCCTCGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC
-TAAGCCTAAGCCTAAGCCTAAGCTTAAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCTAGGCCTAAGCCTAAGTCTAAGCCTAAGCCTGAGCTTAAGCTTAAG
-CCAAAGCCTAAGCCTAAGCCTACTCCTATGCCTGAGCCTAAGCCTAAGCT
-TAAGCCTAGGCCTAGGCTAAAATAAGCTCGGCCCCTTTCTGGGCCAAAAT
-TTCATGTACCTCCTAAAATTGTTTCATCCTAAATAGCCAAAAAACTTGGA
-AAAATCTATTTTTCAAATTTTGTAAAAATGTCAAAGAAAAATTCTCAGAA
-GTGCGGGAAAGTTTGACCCAGAAAGGGGCGGAGCCTATTTTTGGATAGGC
-TCCACCTCTTTCTAGGTTTTTTAAAATCAAATTTAGGTGTTTCCTGGTAA
-GTTTTAGTGGTTTCATTTTTTGTATTCATCACATTTCTTTTTCATTTTTT
-ACATTTTTCTCATAATTAATTTTTGATCTACCTGTTGAACTTGACCCCGC
-CCCCCAATCTTGGTGCCTCAAAGGAATCGGAGGAGTCTAGTCAACAAGGT
-AGATCAAAAATAGAATATGAGAAAAATTTGCCATCGTGTTTTTCGATAAT
-ACTACAGTTTCATACAATAATCCCACAACTTAAAATTCAGCAAATAACCA
-GGAAATGGGCGTGGCTTAGATTTTCAAGGTTTCGTTGTTTTTTCCAGGTT
-GTACTTCTGATCTGAACGGGCTCCGACAAAAAATGCACAAAATTCGTAGT
-AGTGATGTGTGACGTCTGTTCTGATGACTCGAATTCATATTATAAAAGTC
-GAAAAATTCCTTCCGAACGAACCCCCCATCATCCTAACATCATCCAGATT
-TCTGCACCCGCCCGCTCATATAATCTGCTTTTCTTCACCCATAATCTTTT
-TGCTTATTTCTCAATCTCCGTCTTTCTTGCGTTTTTAATTAATTCAAGAA
-ATCAAGCAGTTGTGGTTAATGGCGTTCTACGAATTGCTTTTTTCTTGTAT
-TATGATATTTTAATTAATTTTATTTATTTAGTATCTAGGCATGTACATGT
-GCAAGTTGAGTTGAATAACCTGAAAATTTTGTGCCAAGTTATGGGCGGGG
-TCTTTCATACATTTTTTAAATTGTTTTTTGGCTAAATTTGTATGTATTTG
-CTTTGAAAGTTGTGTTTTTTTTCAATTTTCTTTAAAAAAAAACCAAAAAA
-AAAAATTGGTATGTAGTAACGTAGGTAGGCAAGAAGTAGGTGTGTAGGTA
-GGGACTTGAAAATAGCAGCTATGAATAGGTGCGGTATTTGAAGTTTAGGC
-AGGTTCGTAGGCAGATAGGTGAGTAGAAAAATCATTCAGAAGACATTCAG
-GTAGGCTCACTGGTAAACAGGCATAATGTAGGTACGTAGGTTAACACTTA
-CGTACGAGGCAGTAGGCATCAGGGCTTTGTGGCAACCGGCAACCGGCAAC
-CAAAAACCAGGTTGCCGGTTACCGAAAAATTGCCGAAATTTCAGCAACCA
-AAAGTCGCCAGAATTTTCTCGAATTTTCCAAAAGGTTCTAGAACATTCCA
-GAATTTTCTCGAATTTTCCAAAAAGTTCTAGAACATTCCAAACTTTTCTC
-AAAGTTTCCAAAAGACTCTAGAACATTCCAGAATATTCTCGAATTTTTCA
-GAAGGTTCTAGAACATTCCTGAATTTTCTCGAATTTTCCAAAAGGTTCTA
-GAACATTTCAGAATTTTCTCAAATTTTCCAAAAGGTTCTAGAACATTCCA
-GAATTTTCTCGAATTTCCCAAAAGATTCTAGAACATTCCAGAATATTCTC
-GAATTTTTCAGAAGGCTCTAGAACATTCCAGAATTTTCTCGAATTTTCCA
-AAAAGTTCTAGAACAAGTTGCAGAAATTTTCAGCGTACGGCAACTTCAGC
-AATTGCGGGTTGGCATGTAGGCAGGCAGGCATGTTAGTAGGCAGTTTTGA
-CAGTTTTGAAGTTAACAATCCTACCTGATGCACAAGAAAATGCGCGGCAA
-TTGCGGACCGGCAATTCTACAAAATGAGACGGTTGGGCATGTTCTTCCGA
-TATTTTTTATAAAAATTTAATGATAAAGTATAGAAAAATATTTGTTTTAT
-TTGAAAATAAGTTTTATTTGGCTAGGAACAACCGAAAAAGTGCTCAAAAA
-TTGTCGGAATCTTGAAAATTGCCGTGAAAATTTCCAACATTTCGACTATT
-TCTGGAGATTTTTACAATTTTGTCTATTAAAAAAAAACAGTTACTTTCAA
-ATAAAGCAAATATTTTTCTATATTGTGTCATAAAATTTTAATGAAAAATA
-TCGGGGGAACATGCCCAACCGTCTCATTTTGTAGAATTGCCGCGCACCTT
-GTTAGTTTATCCCCGTAAACCTCCAATCAATAATTGGCAGGAGTCCTTCC
-GTCCGTCCAAAACGTCATAAAAACTGGAGATGGCAAAATTGGAGATGTGC
-CAAGTTTGCTGGAGAGGTGGGGGGAAGGAGACAATCATGTTGTCTGCGTA
-TCTCCAGACTCGTCTGCTATCTCTCTTACCCGGCAAATGGGACCTCCCCA
-GAACGGTGATTTTGTCCTTTCAACACCTTTTTTGTGTTTTTGTTTGTTTG
-ACACCTTTTTTTCACTACTTTGCGGGAATTTAGACTGATTTCTCATGGTT
-AGAAACGTGCTGACGTCACATTTTTCGCGGGAAAAAAAACCCGCATTTTT
-TGTAGATCAAACCGTAATGGGATAGCCATTCTAACAATTCACTGTTTTTT
-TTCTGAACAAGTCTGAAGTTTTGAGTTCAGCACCCGCAATTCTGTCTCTG
-ATAAGTTTGAAAGTTTCAAATTGAAACCTCTCAATTGTCGGACCAGCGCG
-CTACTTCATCATACCCCGCAAATTGAACTGCTCGCGGCAAAATTTAAAAA
-TTGATGCTTCTCCAGAAACATCCCACCAGAAACTACCTAAGACTGAACTT
-CATTAACTTCTTTTAAACTTAAACAACGATCATAATACCTTAAAAAAAAC
-GTTTGTACGTGGTGTCAGAGTGTCTCATTTCATTTTGATCTACATAGATC
-TACAAAAAATGCGGGAGAAGAGACGCAGAGTTTTCAACTAATTTCGCATG
-GTTAAGAACGTGCTGACGTCACATTTTTTAAGACAAAAAATTCCCGCATT
-TTTTGTAGATCAAACCAGCCTGGCACCACGTGCGTTTGTAATCGTTCAGT
-AGGTAGGTAGACACAGGTCAGTAGGCATAGGCAGGCGGTAGGTCTGAGGT
-AGGTGTTGTTGACCACCACGTAGCAAAACATGCTTGACGACTAGCCTCAA
-ACGGATAATCACAAAGTTCTACGTAGTTATGATTTCAAGCCGCCCAATGA
-GCACATTACGCTGACTAAGCCACAGCTATAAGACCCTCCTCCGAGTATAT
-TCATCACCAAACATCCAGTTTCCAGTTTTGCAGTCTTTTTTTCTGTTGGA
-AAATAAAGAGAGTACATCTCATTAGACATTAATGAACAATTTCAAGTTCA
-AAACTATAAATATAAATAAAGCTAGTAATTGAGCCAGTCCAACCAAATTT
-CCCACAAGTTCATTATAAACCTTCCAATTTCCCAATCCCATGTACTCCTA
-CTAATCAGTTTCTTTCCTTCCGCCCTACTTTCCAAATTCATTTATCCGCT
-TTGCATACTTTTCGGTAATCTTGACGATTTTCAGAGGTTTCTAGAATTTT
-TTATTTTTTCAAATTATGCAAAAATAAATTTTTTTTTGTATTCTCAAAAA
-ATTGCTAAAATTGTCCAACTTCCCATTTCTCGGAAATTGACGTAATTGCA
-GTTTTTTGAATTTTTTTGAAATTACTGATTATCAAATTTTGTTGGAAAGT
-TTCCTTTCACCTACACACCTACCATATGCCTATCTGCCTAGGTGCTTACC
-TACACGCCTGCTTCGTGCCTACCCGCCTACCTGCCTGGTTTATTTTCAAA
-AAGTGCAAAGAGCCAAAAGTTTCGAATTGTCAAAATTGCTCGGAAATTTT
-TTGAAATTTTGGAAAATGCCAAAGTTATCAAATTCCGCATAATTCCAAAA
-TTGGCAGCCCGACATCATGCCTGCCTACATTCCTGTCTGCATATAGGCCT
-GACAAAATGTCCATCAATGTATGTACCTATTTCATACCTATCTACCTGTA
-TAAACATAGTTCATCTCTACCTCAAACAGCATGTTACAGGCTTTCTTCTT
-ACCTACCTACTTCATTAACTGCTGTTTATTGACCTGTCTACGTGCCTACC
-TCATGCCTGGCATGCCTACATACCTACCTCATTTATCAGATCCTCATGAA
-GCCTATTTACAAGCCTACTTCCAGCCTACCTATTGTGTTGATTACGATCA
-CCGTCTCTAGGTTGCCTAACCTGCCTAATTGTGTCTACCTACTTAGCTAT
-CTCATGCCTGCCTACTAACCTGCTCAAGTACCTACTTCATGCCTACCGGC
-CTACGTTCCTACCAACGTGCCTACCTGCCTGCTCACTAGCCTAAGTGTCT
-GCCTACATAAATTGTCCGTTAGCACATCAAACTTTTCATATATACAAAAA
-ATTGCATAAAAAGAAGATAATCATTAATAACAAGTGGGTAACTCAAAAAG
-GAAATTGGTTTATCTCCCGGCTCCGAGAGCACCAGCACTTTGCTTTTCCG
-TCACTACAACCTCTAATTTTGTTTTGTTCGAAGGACTTTTTCCGATACAT
-ACTAATTTTTTCGGATCCGGTTGGCTCTGGATTTCAAGTTTTATAATAAC
-TTGGGCTCCCAGTGACGTCACCAAAGGTGCAATTAGCCTTTAGTAACTAA
-ACAGCTTGCTCCTAGTTTACTGCTCCGTCTTCTCAAATGAAACAGAGAGA
-GAGAGACCCCTCATCGAAAATTCAATTAAACGCTAAAACGTAGGTAGGAA
-AGAGAGAGAGAGGGAGACTCCTCCCAAAAAAAAAAGACAGGGGGGCTCTC
-TCTCTCTCTCTCTCTCTTCGAGCGGCAAATCGGCTTCCGAATTCATTCAA
-AAACAAATTATGTGCTCAACCACCACCACTACCACCGGCTCCAGGCGGGT
-AATTACACTTGAAAACCAAGTACTAGGTTTCGTGGCCGGGCAAACTTTTT
-CTTATTAGACCCCGGTGGAATTTTGTAGGTCTATTTAAAATTGCAATTGC
-GCTATTTTGTACTGTTTTTTTTTTGACAAACTTTGAAGCTTGATGTCAAG
-CTGGAAAAGCGCTCTAATGACAATTTTGACTGCAAACTCGCTCTGTTGAT
-AAATGGTCCGTGTACTCCACGGGGGCAATTAAACTGGATTTTTTTCGATT
-AAATAATATCTTGATTTTTTGCAGTTTTGGCTTAGGCTTAGGCGTAGGCT
-TAGGTTTAGTCTCGGGCTTAGGCTTATGGTCAGGGTCAGGCTTAGGCATA
-GGCTTGGGCTTAGGCTTCGGCTTAGACTTAGGCTTAGGCTTAGGCTTATG
-CTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCT
-TAGCCTAAGGCTTAGGTTTAGGTTTAGACTTGGGTTTAAACAGGCTCAGG
-CTTAGGCTTAGGCTTAGGCTCATGCTCAGGCTTAGGCTCAGACTTAGGCT
-TAGACTTAGGCTTAGGTTTTGGCTTAGTCTTAGGTTTGGACTTAGTCTTA
-GGCTTAGTCTCGGACTTAGGCTTAGGCTTAGGCTTAAGTTCAGGCTTAGG
-TTTAGGCTTAGTCTGAATATTTGGCTTAGCCTTGGGCTTAGGTTTAGGGC
-TTAGGCTTAGGATTAGGCTTTGGCTTGCCGGCCACCTGGGATATTGTGGT
-TTGACAGGGGTAGGCTATCCAAATTTTAAAAAAATCGGCTACAAAATTAA
-TATTTAGATGGGCCTATAAACCATTTCTCTAGGCCATCCTGCAAAATTTC
-CAAGACAAAAAATTTCAGCCGTGAATAAAGTTTCCGTTTTCCTAGGCCAC
-CTCCAAATTTTCCACGTCATATGTAAGGTATCGGAGGGTACTGTAGAAAA
-TTATCAAAAATCAGCAAAGAATAATAAGCATTAAGAAAGTTTTTTGTGTG
-TGTGTGTTTTTTGTGGGAGAAAACATTTCCCCTCTCCTTTTTTCCTGCCT
-GCTCATTTGGATACCACCGCTAACCCAACTTGACTTTGATTACCCATTTC
-CGTCCCCCTTCTTCGTCTTCTTCTACTCCGGGATAGAGAGAGAGCTCTAT
-ATAATTACTTTCGTCTTCTTGATCCGTTACCGCCCATTGGCAATTGGTTT
-GAGCTGCCGCCGGAGAATATATACATGCATGTCTAATTTTTTACTGGAAA
-ATCTAGGAATTTTTACGTTGAAAATTTGGTTAAAAGCGTACAGATCGGCC
-CATGCTGGTGATTGTACGAAATTTTAATTTCAAAGTATCTGCAGAGGAAG
-CTAGGCCACAAGCCCCTACGTGGCCGTCAAAATTGAAAACTAGGCCACCG
-ATTTTTTCTCGGACTTTTTATCTACTTTTGCTATTAGGCCCTGTCTTCTT
-TTTTGCAACGTTTTTCTACTAGGTCACCAAATTTTTCCTAGGCCAAGCTG
-CCTAAAACTCGGCCACCGATTTTTATTTGCGTCGGTCTGTAACATTCAGG
-CTCCGACCAGCTCGACTTTTGCTACGTGGTCGCCAATTTTTCCTAAGCCA
-CATCGAAAATGACTCGCTGTGACATTTGTACTTTTTTTCACACGGCCTAG
-AAATTTTGAAAAAAACTCGGCCACTGATTTTATCGGCCTTGGAATCCTAT
-GTAACTTTGTGGCATGATTTTTTATTTATTGTCCATCCAGTTTTTCGTCT
-GAAAATTACAAAATGTTTTAGTGACCGTTGGAGAAAACTCGGCCACCAAT
-TTTTTTCTCGGCCAAGTTACCAAATTACGGGATACCGTGTTCTCTATCAT
-ATTTCTGGCTCAAAACATACTCTACTTCCGTGCTGCCTACGTGGCCGCTC
-AATTAGAAAACTCGGCCATCATTTATTTTCTAGGCCATGTCGAAAATAGG
-TAATGTAAATAGGCAAAGAAATGCGGTGGTTCAAGTAATTTTGGGAAATG
-GATTTTAAAAAGTTGAAAAAATAAATCAAATGAATAAGTCTGAAACACGC
-AAACCTTAAAGCTAGGCCATCAATTTTTTTCTCGGCCAGGTTGCCAATCT
-ACGGGAAACCGTCATGTTTCTTGCTCAAAATTACACCCTATTCTCGAAAA
-ATTTTTTTTACGTTGAGTATGCTCTCCTGCCTAGGTGGCCGCCCAATTAG
-AAAACTCGGCCACCCATTTTTTCTAGGTCATGTCGAAAATAGGCGATGTA
-ATGGGGTAGTTCAAGGAATTTTGCGTAATGAATAACCCCAAAAATGTTTT
-CAATATATGGCCGCCAAAAAAGAGAAAACTCGGCCACCAATTTTTTCTCG
-GCCAGGTAGGCTACCAATCTACGGGATACCGTGCGCTCCATCCTATCTCA
-GGCTCAAAATTACGCCTTTTTTCTCGAAAAATTTTTGCATACTCTCCTCC
-CGTGCGGTTCTTAATTAATGAAAGACGTTTTTTTTTCTCCTTGTCTAACG
-AGTGTATATGCAGAATTCAGGATATGCGTCTTCTTTTCCGAGTTCTTGTC
-TTCAAAGCGAAAAAAAAAGTGTGTGTGTGTGTGGACATAGGAAGACTCGT
-CTTCGAAGAAGACGCTCATTAGCTCATTTCATCCACTCGCTAATTTCATT
-AATTTTGTGCTTCTTCGCCTGCCTTCCGACGTGTTTACCCACACCACCAC
-CACCACCACTCAGTACCTCCTCACTCACCGTGGAGAAAGATGTTCTGGAT
-TTTTTTAAGCTTTTGAGTTTTGTGTCCTACCTCACTTTTTAGGCTCCACC
-CACTTCTTGGCCTGTTATTTCGGTTTATTAGAATTTGTGTGGTGTACTAC
-AAATTTCGATCCGAAAAATGGCAAAAAAAATTCAGCTGACTGAATTTTTT
-TGAACTTTCAAAGGTTCAGTTTTTGCAACCTAAACCTCTCTTAACTTTAA
-CTTTTCAAACCCCGCCCATATCTTGGCTTTTCCAGAAATCCGAGTAATTT
-TTTGGGAAATTTATGGTACAACTAGCTATCAGAACAATTTTTACGGAAGT
-TTTTTTAATTTTATTTTAATTTAAGTCTACTGAAATTGACCTAAAATATA
-TTTTGAAAAATGCTTTGATCCCGAAATTGGCCAAAAAACGTTGATCGAAT
-TTTTTTGAACTTTCAAAGGTTCCGTTTTTGCAACCTTTAAGCCCCGCCCA
-TTTCTTGGCTGTATTGTATTCAAAGTTAAAAGTTGTTCATGTTGTACTAA
-AATATGCAAGTATCATAAAAAATTAACTTTTTAAGCTCCACCCATTTCTT
-GGTTTTTCTGGAAATCCGAGTAATTTTCTGGGACTGTTATGGTACAATTA
-GGTATCAGAAAAAAAATCAAGGAAATTTTTTACTTGGATTTATGTCCACT
-GAAATTGACCTGAAAATGTTTTGAGATTTTAAAAAACTTAAATATTTTGA
-TAAAGGTAGAATTTGAATTCCCCGCCCATTTCTTGGCTGCAGTTCCCAAC
-TGTCCAACTTTTTGAATATTTTCTCAAACTTCATGGCCTAAAATTCCAAT
-TCTAGGCGATCTACCTTGATAAGAACTTACTCCTGAGTTATGTTTGAAAA
-ACATAGTCCATCCGTGGCCTAGAAATCCAAAACTAGGCCATCAGATTTTA
-GGTTCCTAGGCCCAATCACAAAGCCAGCAGTTTTAAGTTGTCAAATTTCA
-GTGGCATAACCTCATAATTTAGACCTATTCTATTAGGTCAGCCTATTACA
-GTTTCTGGCCTAGAAATTTTCCTTGAGTTTGAGCCCACTACCCCCACACC
-CACATGGCCTAGAAACCCAAGCCTAGGCCATGTGTCCCCGCATTCTCACT
-CACTTTTAATTTCTTAATCCACTTACACAATTCTCTCCCCCTTTTCCAAT
-TTCACATCGAACCCGGGAAAGCTCATTAGCTCATTTGTTGTGTGTGTGTG
-AGTTGAAGAAGCGGGGGGAAGGGGAGCCCCCCTTTTGAGTGGACGGGGAG
-CTAGAATGGAAAAAGAGAGAAGGAGGAGAGCCATTTTGAATGGGTATGCA
-ATTAGCAATCGATGCAAATTAATTAAACAAACAACGAAATGAAAGGGGGG
-GGGAGGGCAATCGCCTGCCTTCACTCACATGTCCCCTGCTGGAAATGTGG
-AAATGTAAATTAAAATTAGAAAACTAGCAAAAAAGTGCGTTTTTTATTCC
-TACTTGTTAATTAGTTTAAATTTCTATATATGTATGGCTTTGACATGCCA
-ATTTTGGCGTCTAAGGGTAGGTATAGGTGGGCGATGCACCATGTTAAATG
-GTCGATGCATCATGCCAAATAGTAAATGCACCATTACACATTGAAAATTT
-AGCATTATACACTCCATATAACTGAAATTCGGGGCCCAATCAATATCATG
-CCGCCGACATCTCACGGACTCCGCGCGCCGCTATGTTTAACTCGCAGCGG
-GCGGAGACAGCTGGCCGCGCCCACAACGAGTTAAACACAGCGGCGCGCGG
-AACTCGTCAGATGTCGGCGGCCTGATATTGGTTGGGTCCCGAATTTCAGT
-TTTATTATTTGGAGTGTATAATGCTAAATTTTCAGTGCACCGTGTTAAAT
-GGTCGATGCACCATGATAATGCTAAATAGTCCATGCACCTTGTCTAGAAA
-ACTCGTTGAGTACTGTACTTATGAAACAGTTTAGCAAAAAAAAATGTCAG
-CCTGTTTGGCTCCGCCCCGAAAGTGGGCGGAGTCTAATTTCTTGAATTTT
-TTTTTTTCAAAAATTGTTTTAAAAATAGCTCTGTGAATTCCACCTCAAGC
-AACTATTTTTAGTGGAAAGCAAATTTTTTCAAAATTTTGCGCAAATGGTT
-CTGAGGCTCCGCCTTGAAATTGGATGCTCTTAATTAAGAAAGAAGTGTTA
-GTCCCGCCCCTTTATTGGAGGAACTCAAAACTGGGAGGAGCTTAAGAAGG
-TTATAAAATTTTGCTAATTAAAACACCCAGCTCCGCCCACTTATATATTA
-GTTGACTCCGCCCCACCCATTAAAAGTGGGCGGAGCTTAAAAATATTGAC
-CACGCCCCTTTCTTGGGTAGTTTTAGCGTTTTTCATAGAGTCAATTTTCA
-CGGCGGACCCCGGATCGATGCACCATGATTTGACGCGCAACCCAGGTAGT
-ATGACGTCACTCGTGGCCGAACTCGCGGGGGAAATTTGTACTTACAGCAA
-TAAATTTCGGTGTCTCACGGAGCACCTGCACACGTACCGATCATGAGTGA
-TGCTTCCCACCACAAGACATACACATACACACACAAACCTACTAATTAAG
-ACAAATTATAGAACAAGTGGGGGGAGAAGGGTAGAAATAAAAGTGAGCAG
-TGCGAGAGAACGCGTTAGACGGAGAAGCTGCTCTGGGAGACGTGTGAGAG
-GCATATAAGTTGGATTAGTTTACTGCTCTTTTCATGGGAAAATCAAGTGA
-GCTCCAAATATTTAATCTGACTTTGATTTGGTTTGATTCTGAAATTTTTT
-TGGGATTTGCAGAAAAAATACGTTTTTTTTTTGTATTTTGGAATCGCACC
-AATACGCTGCGTTGCCCTCCTACAGTGCAACTGAGCCACATTTCTCTTCC
-ATAACTTTTTTCTTAATCTCAAAGATTAAAACTCTGCAAAAGCTCAATAT
-TTTATAAATGATAAGGATTAGCAAAGTGTGGGTGATCTTCCAGAGGGGGG
-ATTACCATAATTCATTACTCATTTTTCAAGTTTCATCTGTGTTTTGTTTG
-ATAACCTAGGTGACCTACTAGTTTACCTACAGGGCTGGGACCAAAAAAAA
-AATTTGGACCAAAAAACAAAAAAACAAAAAATTGAAGTTTTTGAAAAACC
-AAAAAAACCAAAAAAAAACAAAAAAAAACAAAAAAAACCAAAAAATTTCT
-TATGCTTAAGTTGATTTTTAATGGGGTTATTCAAGTAATGTTGCAAAATG
-TATTAAAATACATTATGACGTCACAACTGTGTTAAAATACATGTTTTAAT
-GTATTTTAATACATAATAGTCTCGAGTCGAGACTAGACATGGTAAACACT
-TTTTTGGATTTTTTTGGATTTTTTGGTCCCAAAAAACCAAAAAAAACCAA
-AAAATCGATTTTTCGTCAAAATACCAAAAAAAACCAAAAAACAAAAAAAC
-CAAAAAATTCTCAGCCCTGGTTACCTGTCAGCAAATAATTTTCCCCTATA
-TACCACCACTTCAGGAGTAATCAACACCCCAAAACGGCAATTATTTATTA
-TTCTCCTCACCTTCTCAACACTCCATAGCGCCAGCCAGCCTAATTTGATT
-GTTTAATTCGATTCAGGGCACCCCACCACACACAAATTTATTAATTTTTG
-TCTTTCTCGCCATTTTCCAATAATTTTCCCGGCTTGTGTTAGCTTTATTA
-TAGAACTTTTTAAAGCGATTTCTTAGGAATTTATGTGTGACGTCATATGT
-GGCCTAGAAATTTGACGATCTCGGCCGTCGGGGTCGATGAACCATGTTGT
-GATGTATAGGTGGCCTAGAAAATTTTAGGCCACCATGATAGTCGTGGCCT
-AGAAATTTGGGCGCCTTCAGGTGGCCTAGAATGTGAAAAGTGACGTGTGA
-CCTAGTTCTTTTGACGGTCAGGCCAATTTTCCAATTCGATGCTTTTTTTT
-TAATTAAGGTCCATATTCTGCAATTTTAGGCTCCGCCCATATCTTGGTTA
-AACATTTTTTTTTTGCTTTTTTCTGCAATATTCATTCAATCCATCATTGT
-TCTCAAAATTTGATGCACCATGATATGGCAGTGGCCTAGAAAGTGCGACG
-TCACTTATGGCCTAGAAAATTCGAGGATCTTGAAATGGGAGAAAGTAAAA
-AAGTAATCAATGCCCCCTGACGGTCGTGGCCTAGAAAGTTAGAAGATCTA
-GAGGAGGGGAGTAGGAGATCGATGCACCATGTACAGCTACAGTGACGACT
-CACGTGGCCTAGCTTTTTCGCAGGCCACGGCCATAAAAAAATGTATGAGA
-TCGATGCACCATGTTTGTCGCGGACTAGAAATCGAGAATGTGGCGCACGT
-CACGCATGGCCTAGTGACTTTTACGGTCAGGCCGAAACACAGGACGTGGC
-CTAGAAGTCATTCTGTTAGTCTAAGACTCTGCAAAAACTCTCAAAAAAGG
-TGAGCCTATGTGCCTGCCTACTTGCCTACATTCTTGCCTACCTGTTACTG
-CTTTCTAATCTGTACCATGTTGCACCTACAGTACCCCCTTCCGCCCCCGT
-AAAGACTTTTTCAAGCTCAAAAGTGCAGAAAACACAAAAAAACCAAGCCC
-AATCTACAAAAGCTCATCTATTCGTGCTTGGATTAAAATGCCATTAAAAT
-GATTAATTAAGAGATCGAGACTGGTTGAAAACTGATCGGATTAAAAAGCG
-ACTGAGGTCCGCGAATGAGCTTTTCATGCAACTGATGAGCACATTTCCTG
-TGTATGTACACTGATGATAAATCTCCTTATCTTTTCCGAGACATAACAAT
-CTCAATGTTCTTCATTAGTTTCTTCATTTCCTTCTGAAATTTGTTGCTTT
-GATTTATTAAAATCTGTCATTATGTAAGATCCATAATTCGTGATTCGAAA
-TTTTTTACAGTTTTTTTTAAATATAGAAATTTGAATAACTTTCCTACCAG
-GCTGCCCCAATACAGTTTGATCTACAAAAAATGCAGGAATTTTTTGCCCA
-AAAATATGTGACGTCGGCACGTTCTTAACCATACAAAATCAGTTGAGAAC
-TCTGCGTCTCTTCTCCCGCATTTTTTGTAGATCACCGTAATACAATGCAA
-AAATGAGAGAAAAAAATTTGAAAAAAAACCTATCCAAAAATTTGGCATTT
-TCAGATTTTTTTTTTCGAGCAGACCTAAAAATGTTTCGATAAATTCTAGA
-TTTTTTGAAAAACTGTCTGAATTTTTTTTTTTGAGAACAATGATTATATT
-TTAAAGATCAGTGTTGACTTGAATCATGTAGCGTAAAAAAGGTTAAAAAA
-AAACCAAGATATGGGCGGAGCCTAAAATTACAGAAATTGGACCGTAAATT
-TTTCAAAAAATTTTTTTTTTTTCAAAAACCGAAATTTTATTTTAATTTCA
-AAATTTCCGCTTCGGGGTTTCTTGATTTTTTCAATTTCAATTTCAATTTT
-TTAGATTTTTTCCCGTAAAAAACCCAAAATAAATTTACTGAAGCTTCACT
-ATTGGATTAAAAATTTATAAGGTTCTTTGCGGGAAAATTAGTAAAAAATC
-GAAAATATATTTTAAAAGAAAAATCAAAATTAATACAAAAAATTAAGGCT
-TCCATGTAGGTTCGCGTGGTGCCAGGCTATCCCATTATTTTTTCTTTTTT
-TTTTTTTTTCCCCAGGAAAGTGTGACGTCAGCACGTTCTTAACCATGCTA
-AATCAGTTGAAAAGTCTGCCTCTCTTCTCCCGCATTTTTCGAAGATCATA
-CCAAAATGGGGCACTTTGACGCCACGTGTAGACTGTAGGCCATAAACCGC
-CTGCCTGCCTGATTTTCAGGCTACCTACGCCTGCCTGTCGCCCCAATCCA
-CGCCTTATGCTAAAACACATTCATTTCTTAATTTGATTTTCACCAAAGTG
-ATAAAAAAGATAAATTAAAAATTAGTACATTCTCGTCAAAATGCAAAAAG
-AGTCGTAAGGCAGGCAGGTTTCAGGCAGGCCCTGGCTCACGCCTGCCTAC
-GATGCCGGTTACTAAATTTCCAAAATACCTTATTTACTCTACAAATCCTC
-TACCCCGACATTACATCTCAAAACTCATCCTATTAATTTCTGCCTTAGGC
-GATAGCACTACTAATTGATAGGAAAAGACGACTTGTGTGTGTGTGTGTTG
-AATTATTATACTAATTTGATTTTAGGCAGCCTCTTTCGTCAAAAAAAAAT
-AACTTGTGTCACCACACCACACCTCCCACGTTTTCGGTGAGTGAAGCTTC
-TGCTCGCTGTTAAGCAGATATTCATAGGGAAATCATCCGTAAATCCATTC
-AAGTCCTCTTTATTTTCTTCTTCTTCGACCAAATTAGTATACAGATGTCA
-TCAACTTTTTTGTTTCTTTTTGAGGGCCCAGGCTGTTCATTACAGTTTGA
-TCTACAAAAAATGCGGGAAATTTTTTTTTGCTTTTTGCCCAAAAGAATGT
-GATGTCAGCACGTTCTTAACCATGCAAAATCAGTTGAGAACTCTGCGTCT
-CTTCTCCCGCGTTTTTTGTAGATCTACGTAGATCAAAACGAAGTGGGAAA
-CTCTGACACCACGTGCTTTGAGAAAAAATTTGAAAAAAACCTTTTTAAAA
-ATTTGGCATTTTCAGTTTTTTTTCTTTACAAAATTTTTTTGAACGAATCT
-AAAAATGTTTCGATAAATTCTAGATTTTTTGAAAAACTGTCTGAAATTTT
-TTTTGAGAACAATGATGACTTGAATATTGTAGAAAATCGTAAAAATAAGT
-TTTAAAAAACCAAAAAAAAATGGGCGAAGCCTAAAATTACAGAAATTGGA
-CCATAAAAGTTTCCAATTTTTTCTTCACAACTTTTTTCAAAATTGCTGAA
-ATAAAAAAAAACTATTATTTAAATTTAAATTTCAGAAATCCTAATTTTGA
-CGCCGATTTTTAAAATTATAAGGATTTGTTTTTCCTGCAAATTCTTTTTT
-AGAAACTTACAGTTTGTCGGTTTGTCGATAGAGCGTGCTTATTCACCAGG
-CTGTCCATTACAGTTTGATCTACAACAGTGCGGGAACTTTTTTTTTGCTT
-TTTGTCCAAAAGACTGTGATATCAGCACGTTCTTAACCATGCAAAATCAG
-TTCCGCATTTTTTGTAGATCAACGTAGATCAAACCGAAATGGGGCACTCA
-GACACCATTTGGGGGGCCTAGAAACCGGTCCCTTTCTCATTCAAAGTGCT
-CTCTGTTATCAAGTCTCCCACGCTTTATGCATTCAACTTTGTACAGTTCA
-CACGAGCACCCACGACTTGATTATTCAACATTATACAGAACTAACTATTC
-GAATCTCAACATGTCTTCTTGCCGAATTTAATCAACTTTGACTTCTTCTT
-CTTCTTCGACTTCTTTATACAACTACTCATCTTCTAGTTGCCCCTCTAGT
-TGCCTCACACAAGCAAAATTTCTTTTGAAATGAAATTTAAACGAATTGAC
-TAGTCAAAATTTCATCAATTTTCTACTAGAGAGAAGCGACGAGATTGACT
-TTTGGCAAATATAGAAGAGAGAGGCACCGAAAATGAATTAGATTTAACAC
-AACAACGAGTAGATGAGTTGTGTGTGTCAACGATGATGATGATGATGAAA
-AGAGCAGAGGAGCAAGCATGAGTGATTTCTGCGGCGGAGGTCGCGGCGGA
-TGAGGAGCATGAAGAAGGCTAACGAGCTGTATGGCGATGCGGCTAAAAAT
-TGATGATTACTGTAGATTTGGAGCTTTACACCGTTTAACTGGCTACGATT
-ACATACAGACTTGTTTTAGAATATTCTGTATTTGAACCTAATAATACAAA
-TTGCCGGTGTGCCGATTTGTCGGAAATTTTCAATTCCGGCAACTTGCCGG
-TTTGCCGATTTGCCGTAAATTTTCAATTCCGGCAACTTACCCGTTTGCCG
-ATTTGTCGGAAATTTTCAATTTTGGCAAACTGCCGGTTTGCCGATTTGCC
-GGAAATTTTCAGTTCCGGCATTGTGCCGGTTTTCCGATTTGCCGGAAATT
-TTCAATTCCGGCAATTTTCCGGTTTGCCGGTTTTCCGTTTGCCGGATAAC
-AAAGTGTTTAGAGGGATTTTTTTATAAGAAGGAAACTCTTAAAACTGTGA
-CTTTTTGAAATTGTTTCCCGTTTTCTTTCGATATTTTCATAGATTTTGCA
-AGAATGCGTGCAGTTTTGCCAGTTTAGACGTAATTGAATTTCTGAAATTT
-CAAAAAAAAAAGAGCAAAATCATAAATTTTTGACATTTGTCATTTTTTCC
-GGTAATTTGGCGATTTGCCGGAAAAAAATCATTTACCGCCAACTCATGGT
-ACGTCTAACCGCAAAAATTTTTTGGGAGCCTTTTCTGGCTTTCTTTCAAG
-CTATCGTAATGTGACCACACACCTTTCTATAATTTTCAGTATTTACGCCA
-ACCGAGAAGATCACAGTAGTTTAAGGTTATGGTGCAGTTTCTGGTCAATG
-GATCAGGTCTCTTACCGCGAAAATTTTAATACCGTGAATGTGAAGCTTTG
-AAAATTTTCTGCCGTAAATTGTCAATTTTCTGCCGCACTTTGTCAATTAT
-CTCATAAAGGTCACTTAAGTTAGCCAAACCGTGAGCCAAAACTGCCCCTT
-ATTCCTCATGCCGTCTTGGAGGAAATCTAGAGCAAACCCTGGTCCATATT
-CGGACAAGGTCCCCTTTCTTCCCCCAAGCGTCTATCTAACTTTTCCTAAC
-TACATATAACGGAATTAATAATCCTATCCCCAATTTAACGTGTCCTTAGT
-TCTCTCCCTCCTCACCGTCTTCTAGTTTCATCCATGTCTCGCCTCATTTC
-ACCCGATTGACGATCATCTCGGCTCCACACTTTGACACCATAGCGCGAAT
-GAAAAAAAAGAGTGAGAAAAGGGGAAAAAAGTTGCTGCCCTATTATTAGG
-AGTCAAATAGACACACACACACACACACTCAATTTTAATGGATTACGCAC
-GATTTGACACCATCGACACCAATTTGGAAATGGGGGCACATAGATACATA
-CACAAAAGGAGTTGTACTACTAGTTTTGGAACTAACATCATTCTAACATC
-TTTTCATTTATGATTTGATTTATGCAAATGTCCTTGATTCGTGACTTCTT
-GTATAGTAGTTGGGATAAGTATAATCATGGTAGTTGCTCAAGACTAAGCT
-CTTTAGCAGTTTTAAGGTATGCCCCAGTTCGGGATTCCGGCTTGCTTTAA
-GATTGTGTCAGGTCCGGCCCAGGTTGTCTAAAAAATACAGGTCTGCTCCA
-GGACGGTATACCATCACTATATATAAAGCACGTGTCGTTCCGTCACTTTG
-TAGTTTGATCTTTGATCTTTGGTCTTTGAACTCTGTAGTTTGTAGTCTCA
-TCACACAAGAGAGGTCACATAGGCCCGGCCCCTTTTGTGACGTCATCACA
-AATTGGCGGGAAATTCAAATTTTCTGAGAAAATATTTTGGCGGGAATTTA
-AAATTTAATTTTTTGAAAACATTTTGGCGGGAATTCAAAATTTAATTTTT
-CAAAAACATTTTGGCGGGAATTCAAAATTTAATTAGACTGTTCTCGGTTC
-GGCCCAGATATATCCAAAGTCTTTCTCAAGACCACTCTAGATCTGTTCTA
-CTGTTACCCAAGACTGCCGCTCCACACCCTGTATAAGTTGGCCCTAAGGC
-TCCACTGAGTTTGATCTAAATCTTGCCAAGCCTGTATCATACCTACCTAG
-GCCCACCACAGGTGCATCTCTCACAGATCTTCCACAGGTGTTTCTAAGTC
-TGCATCAGATCTGCACCAGGTCTGTTTTTAGTTTTGCCTGGGTGCAGCCC
-AGTAGTCTACCTCACTATCAAGCAGGTCCTGACACCAGTTCCTAGGTCTC
-ACATTCAGGCTTCTAGGCGGATAGTCTACCTAGCTAAAGCTTCAACCTCC
-ACTGTTTTAAAGGCTTCCCCTTTCTCAAACTTCAACTAACATTAATACAT
-ACATATGTTATTAATTCGCGACTCGGCGACTAATAACAATAATTCAAAAC
-CTCTTTCCTGGCAATGCTTCCGGTACTCAACACGGAGAGAGAGGTGGCAG
-GTATCCGGTAATTTATTAACTCGAGCCGCGCACCCTGGCTCCCAGAGCAC
-ACAGCCCCGATGATCGCTCATGCACGAGTACTCACGAGGTGGTGGTGAGA
-GGTAGGTTGGAGAAAGCGGTTCTACCTTCACAAATTTCAATTTCAATTTC
-CTCTCTCTCCGTTTTACTCGGGCCCCCCCCCCCCCCTTCTTTCAATTTTT
-CGCCCCAAATTTGTGCTCCTTTAATGGAAAGTTTTTGAGTGTGTGAAAAA
-GAGAGAGAGAGAGACACCTTCGTGTCACGCCAATTGCACTAATATGTGCT
-CTCCCCACCTAGAGCTACCAAAATGTTCAATTCACAATTTCCGAACTAAT
-TCGTGTCAAGTTTTTAGTTGGTCCTAACTCTTTGGCCTAGAAATTTAGAT
-TTCTAGGTCATCCATCTAGATGCGGTGGCCTAGAATCCTAAGCTTTAGAT
-GCCCAGGCCATCAGGCCTAGATTCTGAAATGTTGTGATTTTTCTAGGCCA
-TCAACTTTGACCCAAAAGCCCTCTAATTTTTAGGCCATGAATCTAGGAAC
-CTATCTAGAGGCCTGATCCTTTGCTTTCTTGCCAAAAACTAGAGATCAAT
-GCCCTAGAAGCTCACAAAACTTTGGCCTAATAATTTCTAGGCCACCAATT
-TTTTAAAGATAGCCTAAGTCATCAACCTAAAATTCACGGCTTAGAAATCA
-TGAAATTCGCTTTTAAGGCCTCTGACTTCATAGCAGTGGCCTAGAACTCC
-AACTGTCAGTAGTCTGTAAAAATGAGCTTTTTGGGCCTCGAACATAACAT
-GGGACATGGAAGCCTAACATTTTTAGGCCACTGACTTTAAAGCAATGGCC
-TAGAACCCCGTTTTTCTGTAGCCTAGACTATCATCTAGAAATCAATGGCC
-TAGAATCCTAAAAATAATATTTTTCGGCCACCAAAATTTTAGGAATGGCC
-TAGAAATCTATTTTGTTGTATTCTAGGCCACCATCGACAAAGGAATGGCC
-TAGAATCCCTAAGAATGTGATTTTTAAGCTACCATCTATGTACCCTAGAC
-CAATATTTAAAATTCAATGGCCTAGAAACTAGAATATTTGATTTCTAGGC
-TACTAACTGTTGTGTGCTGTATCCTAGACTATCATCTAGACCCCAATGGC
-CTAGATTCCTGAAAATGTGTTTTTTCGGCCTGAAATAGGCCTAACATTTT
-CCAGTCCACCAACTCTTTTAAGATGACCTATAAGTTTAATCCTAGCTTGC
-CAACTATAAATAATTGGCCTAGAAGCTCCTAGGCCACCATCTAAAAATCG
-ATGGCCTAGAAACCTCCCATTTTTTGTATCCTAGGTCACCAACAACCACT
-GATGCCCAAGACCCCGGCTTCTTATTTCATAATGAGCAGCAAAATGAGCT
-ACCGTACCCCTTCTACACACTTCCTCCCTCTCCACACCCATTTCCCCTCA
-TTTTCGTCTATTTTAGCGGCGGCGGCGCGGGATAAATTTGTGAGAGGTGA
-GCTGCTCACAATAATGGGCTTGTTGTAATAGGCGGCAGTGGTAGTGGTGT
-ATGGATAATTGTGAGTTCCCAAACACACAAAACTTTTTCGCCGCAATTGT
-TATGCAACCAACATAATAATAATAATAATAATAAGTGAATGTGCATAAAT
-GTGCTCTTTTTCGCGTCTCCACACCCGTCCTGATGGGGACGACGCTTCGT
-TGAATAGTTGGAATAATAATAATAAATTGGAAAAATTTGGGCGCCCCCCT
-CCTAACACCCTAACACACACGAAATTTCATTTCGCGCGCGCTTCGAAAAC
-AAATTGAAGACAAGTTTTTCGCGAGACAAGTTATGATAATTTGTGGGATG
-TGGTCCCCGCCGGCAGCTTCCATCAATTTGGAGCAAATTTGTGCTCTCGC
-AAACCTTCTTAAAGAAGGGTTACACTAACAAAGTTTGTCGGAATCGATAT
-TTTTGTAAGTGGGCCTGAACCCCCGGTCTTTAAATTGATAGGCATTCTAG
-GGCTTCCATGGGAGACAGGCGCGGTTTTAGGGCCTGACGTCTGCCTCTCG
-CCTCATTTCTGCACTATGGCGAGAAGCCAAAGACTTGGTGTTCACACTTT
-GTGCCAGAGTGTCTCATTTCGGCTTGATCTACGTAGATCTACAAAAAATG
-CGGGAGAAGAGAAGCAGAGTTCTCAACTGATTTTACATGGTAACCAGAGC
-GTGCTGACGTCAAATTTTTTTTGGACGAAAAACTCCCGCATTTTTTGTAG
-ATCAAAAACCGTAATGGGACAGCAGGGCTTTCCACCAGAATAATTCCACT
-TCTTCACAATAAACCTATATATTTTTTGTCAAAATCTTGAGAATTTCCAG
-AATTTCAACGAAAACCACTGCTAAAAGTGGTTCTTTCGCCGCGGCCGACA
-CTTCTCGGGTTCCGCGCCGCACTATAAAGGAGGCGCGGCGCGGCAGGCGG
-CGCGAGGCAGGCGTTTTGGCGCCTGCACGGATGCCCTACACCAAACTGCA
-AACATTTCTAGTTCCGTTTTTCGGACTCTACGCCTTATTTCGGTCTTTTT
-GTCACAACTTCGCTACACTGTGTTTTTCTCCACTTCTACGACTTTAAAGG
-AGGGCGCATTTATGCGACTCACGTGATGTCAGGCAGTCTCATTGCGGTTT
-GATCTACAAAAAATGCGGGAAACTTTCCACCAGGAAATTGTGACGTCAGC
-ACACTCTTGCGAGATCAGTTGAAAAGTCTGCGTCTCTTCCCCCGCATTTT
-TCGAAGATCAAACCAAAATGGGACATTCTGACACCACGTGGTGACTTAGG
-ATCAATGTAGATCGTTTTATAGGCCATCCATTGATTTTTAGAGCTCGTGG
-CGGGACCATTTTAAATGAATTTCCAAAATTTCCAAAAACCTAATTTTTTT
-GTCAATTCACAAGTCCCCCGGACCCCCTCCATTGTCCCCCCGTTCACAAC
-TTCCTCCCTCGTTAACCACCCATTTAGCGGGACAAAATTAGCGAATCATT
-GACTCATAATCAAGTAAATCGGTGAATGCTCGACGAGCAAGAGGGGGGGG
-GGGGGGTCTAATCGAATTACGGGGGAAGGGACCCCTCCGCGCGACACCTC
-GCTGCCAATTAACAAGTCAACTACTTGGGGGGGGGGGGGGGCCTCCTCAC
-AACAATGTTTGTATTATATTTCTTGTTATTATGATTATTATTATTATTAT
-TATTAGAAATTAGTTAGTATGAATATATAATATCAACTAAAAACAAAATG
-ACAGTTAATAATAATTGAAGTCATCCAATAGGTGCCAATTAGTCAAAGAG
-AGGGGTCTGTGAAAACAGAAATAGAAGAGAGAAGGCGGGGGAGAGGGGCG
-CTCTCAAATAATTAATCTGGGCTCCGTGGGCTCGTAAAATTCCGATAAAA
-TGGCTTGTTTGTAATTAGCTAATTCACGGAATCTTTTTTTTTTGTTGGGG
-TTTTACTATGTTTTTGAACAACTTCCTGTTATAACATGTTTCAAAAAAAC
-TATTGACCTCAATGGGGACTTGAACCCTGGTGTTGAGATTGGTAGTCTGT
-TAACCAGTACACCAAAAATTGCAATTTTTGATTTTTGTTTTGTCTATTTT
-TTTGAATACAACGATAAGTAAGGATCATTTAGATTTAGAAAAAAAAAATC
-AAATTTTGTAAAAATTTTCTAAAAAGTTATGAACATTCCACTTTCACAGA
-TTTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGGCGAACAAGG
-CCAGATGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAATGCATT
-TGTCCGTGTGGAGTCCACGACTTCCCCCGTTGTCCGCCAGACGATTGTAA
-ATGGAGCGCGAAAAATTCAATGAGAAAGGCCAGAACCCCGTGCACTTTTT
-TGTTTCTAAAACTGAAAATTTTGAATTTTGAAATTTTCCTTGGTTTTACA
-GTATACAAAATCTTAGTTAGAGTTCGCAAAAATTATTGACACTGGTGGGG
-GCTCGAACCCCTGAGGTGGCATCCCTGTTAGCCACTGCGCCAAAATTGCT
-AAAACTTCAAAAAAAAAATTTTAGACCGTTTTTAAGGTTTTTAGACTTCC
-GACTCTTCAAAAATTCCTATACAAAGTCTTCGTAAAACTAATGACTGGGG
-GGCTCGAACCCCGGTCATCATATCAGTAGTCATCCCTGTTAGCCACTACA
-CCACTTGCCCAGACGTGTTTCTGGTCTGTTTTACGGTGCAGCGTGGCCTA
-AAAAAAACTAGTCAGCCACCAATTCGAAAAGTCCATAGACCAAGTTAATA
-TAGAAATTCTTCAAATTCGAGCCAACCAACTAATATATTCACTAACCTAT
-TTTCGCCGTGTTCTTCCTGTGTGTGTGTGTGCCCCTAGTTAGGCCTAGCC
-CCCCCCCTTATTTTACTTGCTTCACAATTCAATTGGCCCCCACACAGTTA
-CAGTAGTCATAATCATTTTGTGTCGGGTTTTCGACACATCGTTTAAACGT
-GTTACCTCTCTCGGGGCCCCCTCTTCTCCTACTTCTTATTTGCTCAAAAT
-TTGCGCGTCGAAATTTCTTCGTCGTGCGCTGCCCCTTCCGAATAATCAGA
-TTCACCAATGTATAAAATAGGCCACGCCTCACTTTTTCCACACCCATCAT
-CTTCCCTCAACTTTCCTCTTCTCAAATGCCTAATCAGCCAGTTATAACGA
-GGGTGCTCTTCGTGTGGCGCCCCGCCCATTTTATTGCTCCTCTCACGCTT
-CATTCTCACTTTTTCTGGGGATCCTTTTTTTTGCAGACCTAAAAATTTGA
-GCTCAGCCATATTTTTTTTGTAAATATAATCAAAAAAAAATAGACATTAG
-TCAAAAAAGTTGTTTTAAGCCTAAAAAAATTTTTCAGATAAAAAACGTTT
-TTCTTTAACTTTTTTGAACAGTTTTTCAGTGAAATATTTTTAAATTTTTA
-TTTTAAAAAAATGTTTGTTTATCTAAGCCTAAGCCTGAGCCTAAGCCTAA
-TAACCCTAAATAGCGTCAGTGTGGGAGCTCACGCTCCCCCACTGACGCCA
-AGCCTAAGCCTACGCCTAAGCCAAAGCCTAGGCCTAAGCCTGGGCCGAAG
-CTGAGACCTAAGCTTAAGCCTAAGCCTAAGACTAAGACTGAGTTCAAGCC
-TAAGCCTAAGACTAAGCCTGAGTCTCAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCATTTTTAAAAAGCTTAAAAATTTTTGCAATTACTATTTTTTCTGAA
-AATCTGTAAAAATATCGAATTTTTAGAGTTGCTATAAAATTTAAAATAAT
-ATTCAAAAAATAATCCGAAAAAATTAAATTTTTTTTCTCAAAACGTAGAT
-CATACAGAATCAGCTTTAAAAAATTCAAACCATTTTTCGTTTCAAAAATG
-TTCAGAAAATTTGTAAAACTTGAGTTTTGAAGAAAGTTTTCATAAACTAG
-CTCTTGAATAGGGTTTTTAAGTAGGCGTTAAAACGCTTGCCTGCCTGACC
-TTCAGGCGACTTTCGCCTGCCTGCTTGACTTTCAGACGTTCTCTGCCTGC
-CTGCCTGACTTTAAGGCGACCTCCGCCTGCCTCTCGCCTCAATCCGAGCC
-TTATCTCTTAAAATGTTTTTCATCAAATTGATAAAAATACGGAAATTACA
-AAATTTTGTAAGTTCATGCCAAAATGCAGGCATCAGGCCCTGAGGCCACG
-CCTGCCTAGGCCTCCGACTTTCGTTCTACAATTGTCGTTGCCGTTTCCTT
-TATCCCATTTTCATACCCCAAAGTTATGATTTTTCTTACACCCCTTGCGC
-TGCTGCTGCTTCCGCTCCCGTGATCTTATGAATCAGTAGTCAGAACTGCA
-GGTGTGAATCTCCACAATGATCACCCAATAAACGCGAAACACCATTAGAA
-ACAAAGTGTCCCCCGTTTTTTTTTTCTGAGAGTGTCGGCACCCCCCTAAC
-ATATGCGGGGAACATTGTCTCAAGTTTTGTGTGCTCCTCCAGCTCCTCCA
-TATGGTTACCGTAGTCCCCTGTCAGTGTTGTGTAATTGTTGTTGTAACTA
-TCCCCCGAATACCTCTCCTCACATTCATTCACAACACAGGTGTCAACTCA
-ACTCTCAGTGCTCATTTGAAGTTTATGAAGTTTAGCTTCCGGGGATGGCT
-CTCCTGGGCTCCCCGCTCCCTCGAAAATTTAATTAATTGCAAGCACATGT
-GGTGGTGGTGGGGCGAGCTCCGCGCTTCCCCCCCCGCCCCGATTCTCTCT
-CTCTCATTTGCGACTCATTAGATTTTAAATCACTCTCAAACTTTCCACTT
-TTCCAACTTTCGCGTTTTTTAAATTTTTTTTTCACTTTTTCCTCACAAAT
-TCATCCAAAAAAATTTCCAGAGTTGCCCCGCCCATATATTGGCTAAATGG
-TAGAATGGACGTGGCACTTTTGACAATGGATGACAACAACAAACCGCCGA
-CAAGTTCAGAGTCTACGGAGAGTAGGGGTGAGTTTGGCCGGGGGACCGAT
-AATTTTTAGGCCAAGACTTCTTTTTTTTTAAATCATTTTCAAAGGTACGT
-TACCTTCACGTGGTGCCAGGTTGTCCCATTGCTTTTTGATCTACAGAAAA
-TGCGGGATTTTTTCCCCAAAAAATGTGACATAAGCAAGTTTTTAAATCTT
-TTCTCCCGCATTTTTTTGTAGATCTACGTAGATCATACTCTGACACCACG
-TGTACCTTGAACCTCCTGGCTTTCTGAAACTAGAGTTCGTCGCTAGAGCG
-CATTTGCATTGTCGTGGTATTTAATTTACAGTACCGCCAGAATCATGTCG
-CGCCGCTTGTAGTCTAGTGGTTAACACGCTTCAGCTCTAAACAATAGGTC
-CGGGGTTCGATTCCTTGCAAGATGAAATTTCTTTCTCAAGATGGAGGTAC
-ATATGTGCTTTAAATGTGCACTAGAGATAGCGAAACTGATACCATGGTCC
-GACATGTACAGGGTTCCGCGCGCGCCTAGGGCCTCCAAAACGCCTGCTGC
-TCCAGTTTTGCGGCGACCTCCGCCTAACTCGCGGCGCGCCTTCTGTATAG
-TCACGGCCTTCTGTCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCG
-AACTAGGCCATCTTGGCTCGGTCACATCTGGGCTCGATTTTAGTTGTAAA
-ACTAAATGTATTTGTCCGTGTGGAGTGCACGACTTGCCCACGCGTTGACC
-GGCGGGCGATTGCCAATGGAGCGCGAAAAATTCAATAAGGAAGGCCAGAA
-CCCCGTGTATAGTGCCGCGCGTGGAGCCCGAAAAGTGTCAGCCGCGGCGG
-AAGAACCACATTCCATAGGACTAAAAAACTAAAGTTCTCTCTTTCAGAAA
-CATCACCACCAATGATGCCAGATTCTGCGGAGATAATGCGACTTCTTACG
-GATCCTTCGACGGCTCAGATGTTTGGTAGGTCATAGATCAAATTTTTTCC
-GCAATTTCCCGAAAAATTTCAGCCAACGAAAACACAAAATGTCAGCTGGG
-ACGGATTCTCGCCGCGTCAGGCTTCGACGAGGCGAGCCTCTCCTCCTCGT
-TTCCGTTCGATCCGACGCTCGGCGCGTTCGCCGACATTTCCCAATTCTCA
-TCACTCCGAAATTCGTCGAAAACGCTGAAATGTCCAAAGTGTAATTGGCA
-CTACAAGTACCAGGAGACCCTTGAAATTCATATGAAGGAGAAGCACAACG
-ATGTGGATGTCAAGTGCATGTTTTGTGCCGAGAACCGTCCCCACCCGAAG
-CTGGCTCGCGGTGAGACGTACTCGTGCGGTTATAAGCCATATCGATGCGA
-TTTGTGTCGGTACAGTACGACGACAAAGGGCAATTTGAGTATTCATATGC
-AAAGTGATAAGCATCTTCATGCAGTGCAAGAGCTCCCGAATAGTATAGGT
-AGGTGGGGGGGGGAGGCGAAGGGTACTGTAGTTTTCGTGGTGGGACCCAA
-GAATTTGAATTTCACAAGAATTTAACTGTTGAACTCGAACTTTTCGATTC
-TAGGGTCTCGCCACGCAAAAACACTTACGCCAACTTTTTTGAACCCTAAA
-AAATGATACTCAAATTAGAGTTCTCAGTGAGCTAAATTCGATTTTACAGT
-ATTTTTTTAATTTGACGTTCTGTGGGTCTTACACTCAAAGGGTACTGTAG
-TTTTCGTGGTGGGACCCACTTGTCCAAAAATGGACGTGATTATATTTGGA
-TTAAAGCCCCTAACTTTTCTGATTTTTTTAATAAATTGGTTTTATTTTGA
-AAAGACTGAGAAAATTGAGTTTAGATCGAAATCAATAAAAATCGCGTCGA
-GACCCAAATTTCCCGGGTCTCGGCACGAAAATGGGGGAGAGGGTACTGTA
-GTTTTCTGGCTTCTCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTA
-GGCCGGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGGCTCA
-ATTTTTGTTTTAAAACATGAGGAAGACCAGAATCCCGTGTTTTCGTGGTG
-GGACCCAAATGGGTCATGATTATACTTATTTGAAAGGCCTTAAGCTGAAT
-TCAGATTTAAGATTTTTATTATTTTAATTCAAAAATATCCTGAATTTTCC
-AGAATTCGCAGCCAACTTCGCGTGTGGTGCTCCAGTTAGCCGAAGTAGTC
-CAATCGAAGAGTCCGACGGATCCCTGGTCTGCTTGATCTGCGGTATCTTC
-GCCACCGAATCTATCGCCGAAATGATGGAACACGTGGAACAAGACCGTTC
-CAGGACGTTCCAAGGAGACGTTACCGTCCTAAACGGGAGCTTCCGGTGCC
-ACTTGTGCCCGTATAATACCACATTGAAAGCCAATTTTCAACTACACACA
-AGGACGGATAAGCATCTGCAAAAGGTTCAAATTGTGAGTTTTGTATTCCC
-CTCTCATCATCTTCTTATTTTTATTGTGTCGCCCTTTTCCCATTTTTGTG
-TGTCTGTGTGTGTATGCGCACCGATTTGCATATACACATAAATTCATGAT
-TTAATAGCGTAATGAGTAATATTTGCTTTGCCAAGGCTAACAGTTTTCGT
-ATTTTAAAGCCTTTTTTCTACAATTTTTGAAAAAAAAATTCAAAAATTTG
-AACATTTCAATATATCCCTAGAAAGCTCAAAATTGTAGTGAAAATTTTGA
-ATTCAGTACGCTGAGACCTTTAAAATAAGTATAATCATTACTAGGTTTTG
-GTTCTGACGCGAAAGTGTTCGTGGCGGAGCCCAAGCAAGGCGTAATTGAT
-TATAGGGTCTTTGCACGCAAAAAATTTAAGGTCCGGTAGGCGTGGCGGGG
-AGTTTTTCTTGAATTATTTTAGTTTTTCATAAATTTTCAATTTTTTGGAA
-TTTATTTTTCTCTCCCTTCCCCCGCGTAGTCTGAGCCTAAACCTAAGCCT
-GAGTCTAGGCCTAAGCCGAAGCCTAGGCCTAAGCCTGAACTTAAGTTTAA
-GCCAAAGCCTGAGCCTAAGCCTAAGCCTAACCCTAAGCCTCAGCCTCAGC
-CTAAGCCTAAGCCTAAGCATAAGGCTAAGCCTAAGCCTAAGCCTGAGCCT
-AAGCTTTAGTCTAAGCGTAAGCCTAGGCCTAACCCTAACCCTAAGCTTAA
-GCCTAAGCCTAACCCTAAGCCTAACCCTAAGCCTGAGCCTAAGCCTAAGC
-CTAAGCCTAAAGTCTTCGTGTCGAGACCCAATTATACTCAATTGAAAGCT
-CACAATGAGCTGAATTCAAATTTCTCAATGAAAATGTGAAATACTTTGAT
-TTTACGGTCGGTGGCTTTACTCCCCCCGAACTTTGGAAAAAACTCTGAAA
-TTTTTTTTTCATTGAATTCCAACCGGTTTCTACTCTCTCCGGCTATTAGT
-GTATGTGTCTTTCACTTCTTTGTTCTCGTCGGGTTGTTCCCAATTTCCAA
-CCCTCGTTTTACTCATTCCCCCTCTCATTTTCCCAATCCAATTAGTTATA
-CCTATGGGGGGAGGTGACGGTGATGATTCTCGCCATTAAGACCCCCCCCC
-TCTCCTGGGCCGATTGAGATGGAAACAAAACAAAACTGTCAATTTGAATA
-AATTCGCAATTTGACGCGGGCGGCGCAGCGGGTTGCCGAGAAGGATATAA
-ACTGGGGAACTCTACTTAGCCCGTAAGGTGTCGGCTGCTACTATTTTATC
-ACATCTCAATTTTTACGGAATCCCGTAAGGCGTCGGCTGCTTCTCTGTTT
-TTGCATGTTTTTACAATTTCGGCCCGTCCGATGTCGGCTCCTTCCAATTG
-TTTTGCAAAACAATTTAAAATTTGAGCCAGCAAGGTGTCTGCTGCTCCGG
-CTAGATTTCCAATATTTAAATTTTGCACAATCCTGTAAGATGTCGGGTGC
-TTCTCAGTTTTTACAAAGTTTTTTCTCAAATACGGCCCGCGCAGTGTCGG
-CTGCCACCTCGTATGTTTCATCAAACTTGAACGATTCGAGCCCGTTAGCT
-GCCCGCTGCGTCTTTTTTTTTCTCAAAATTCCAGCCCGTAACTTTTCGGT
-TGCTGAAATAAACAAAATTTTTACGAAATTTTAACCCTTGAAGTGTCGGC
-TGCAAATTAAGATACCTACTCATTCAGATTCCCGTCTCTCCCTCTCCCTC
-TCTCTTCATTGGGGAGTCCTTCTCCCGAGAGAAAATGAATAAAACTGTCA
-ATTTGAATAAATGCACACAGCGGGAGATGTTTTTCTGTGAAGACTCCACC
-GTCTTCTTCGTCTTCTGCCTATTAAGCGATGATCCTTTCACTTAACTGTC
-GTTCCCTCCCCCTCTCCACATACCAATAAACCTTGCCAAAAGGTCGAGTA
-TGCTTTGCCCGCCATCGTGCCGGAGGTCTTTTTTCTAGACTATGATGTTT
-TTTTTTGGAAAAACATTTTTCTATGGATCGATGCACCATGATGCCGAGTT
-GCCGAGTTTTCAATTTAATCAATTTTGAGATTTCAATTTTAGTCCCTTGT
-ACATATTAATTTTTTTGGAATTAACATTAAAATTTGATAAACTGTAGCTA
-CAACTATTTATTTTTGTGCCAAATTATACTATCCAATTTGACTTGTCTCT
-TGATGCACCATGACTAACTTTCTAAGATCTCATATTTTGGCCTAAAATTA
-TTCTCAAATATTTAAATTTAAACTTTAATCCTATTTTTTTTAATTCCTCG
-GAAAAAACCCCGTTAACAGAATTCCCAATTTGGCCTCCAGGAGCTTTTGT
-CGATGCACCATGTTCAACATTTTTTCAAAATTTTGCTCATTTTGACCTGA
-AATTTTGTCATTTTTTTATGTTGCAGGGTTTTTTATTTTGTGATTTTTGC
-GATGAAAACCACATTATGTGGATGAAAAAAGTTTGGAATCTAGTTTTCCC
-GTTAGGCTGCCATATTGCTATGTAGTTGATGCACCATGTCCAGCTTTCTG
-AAATTTTACTTTTTACATTTTTTGCTCAGTTTGACTTTAAAATTTTGTTA
-GTTTGACCTTAAAATTTTGTCAGTTTGACATTAAAAATTTGTCAGTTTGA
-CCTTAAAATTTTGTCAGACATATAATTTTTTTGTGTTTTTTGGTTAAAAA
-ATTGAAGGTTTTTCGCGATATTTAACACATTACATGGAAAAATTCTTTTG
-ATCGAGTTTTCTAATTTGTTCGTGTAGCAAGTCGATGCACCATGTCCAAT
-TTTTTAAAATTTTACTTTTTTTAAATTATTTGCCCAGTTTGACCTTAAAA
-TTTTGTCAATTTTACCTTAAAATTTTGTCAGTTTTACCTTAAAATTTTGT
-CAGTTTGACCTTAAAATTTTGTCGGTTTTACCTTAAAATTTAATCAGACA
-TATAAACTTTTCTGTTTTTTGGGTTTAAAAATTGATTTTTTTTGCGTTAT
-TTAACACATTAAATGGCAAAAAATCATGCACCATGTCTAACTTTTTCCAA
-AAACACTTGATTTTTCCCTAAAAGTTTGTCAGAATTATACATTCCTTAAG
-TTCAAAACCGTACGGAAAAATTAGAACCCATGTCGATGCACCATAAGCTT
-TGGCTCGCTGAGCTTCGTTGCTGCTCCTGCATATCTCTTACCCCCTCTCG
-CCGCTCTCAGAACATTGACCAATTACTTGGGCGGAGCGCCGTTTTGAAGT
-CGATTGGCTGATGAGTGTCCCGCCCCGCCCCCCGTCCCGCAAATTTTCGG
-AGGAACTTTGCACTGCACACACACACACACAAATACACAAATACACGCCA
-ATTATTGTCGATTTTTCTTGAAAATTTCTTCATTATTGTATATTGACTTT
-TTTTGTCGTCCTCTAGTCTTCCGCCATCCTCGGCGTCTTCATTCGTTTCA
-TTATTTCATACACCTGTTACCACTTAATTCGCCTATTATCCTCCTCATTA
-CCTTCATTTTTCGGTCGGCGTTGACGTCGACATTGGCGCCCGAAATGAGA
-GGAATAGGGGGGGGGGGGGGGGGGTATAGACGACGGCGACTACGACAACC
-ATGATGACGATCATTTTCGTTCTATTCATCTAATCCTGCTAACCGTCGAT
-TTGTCCCCCTCCGTTTTTCAACTTACCAAAACTTTTCGGTTACCTTGGGA
-ATTGGTCCCCTTTTATAGGCGCGTAAATTGACAACATATTTTGCTCACTT
-TTTCGAAGTTTCACAATTTTTAGTTAGTCCGTTTTTTCAATCTGGCCGAG
-TTTTCAATTTTCCCCGGCCAGGGAATTCTAGTAGTATTCACATAATTTTT
-CTTATTTTTGGTTTTCTAGGCTACGATAAAACTCCCTATGCCCGGCAAAA
-CTTCTAGGTCCCCCATTTTACACCTGACTTCCTACCTATCTGAAATGCCT
-ACTTGCCTTTCCACCTGACTAAGATGCCTACCTACCTAAAACCTACCTAC
-CGAACTATAAGATGACTCCTTACCTACATAAGACTTGCCGATCTGAAATA
-CCTACCTACTAAGACATGCTACCTAGCCTACCTATCTAAGATACCTACTT
-ACATATAATGTACCGACACAAGACTTGCCTACCTACGCAAGGCATGATTT
-TTTAGACCTACCTACCTGTACTTAAGATTTAAGACCTAGATCTTATTACA
-TAAGAATTTTCATCTTAGATACCTACTCAAGATCCTACCAAAGATGCATG
-CCTACCTATGACCTACTTACTTAAGATACCTGCCTACCCAAACCATACTA
-CCTAGCGCTAGCGCCCACCTACCTAAGATACCTACTTACCTATAATTTAC
-CTACACAAGACTTGCCTACCTACGCAAGGCATGATTTCTTATTGTTAGAC
-CTACCTACCTAACTATAAGTACTTAAGATTTAAGACCTAGACGTTATTGC
-ATAAGACTTTTTGTCTTAGATACCTACTCAAGATCCTCTTACCCAAGATA
-TACCTAGATGAACTTCCGACCTAAGATGCCTACCTACCTAAGCCCTGTCT
-ACCTAAGACCTACCTATAAGAACTTCCTACCTAAAAACACCTACCTAAAA
-TAAGCCTTCAAGCTCAAAAATTTTTAGAGCATCTGCATGAGATAAGGCTG
-AAAAATATTAACGAATAAGTGGAGAGCGATTAAGTTCCTGCCCTCTTAAA
-GTTCGGAAGTAGGCGCCGCAAAACCCCATTACTATTGCTCATCGAGCCAT
-TTCCGGTACTCAGTACTTTTTCATCCCCCACTCACTTTTTTCTCTCTTCT
-CGATTTGATTTGCATTCTTTTTCCCCTCGAATTTCGAGCTGAGCCCGGTT
-GATTTCCCGCACTTTCTCAATTCTTTCCTTAAGCCACCCCACTTGACCAG
-GAGCAGTTCATTCAAACTCGCACTTAATCATATTATGACCCCCCCCCCCC
-ACCCCTCTTAATTTCCTAATCCCCCTCCCCCTCCTCCTCATAATGACCAA
-AAGACAATTGCAGGCGAACCATCTTCGTGAGGGAACCCGTCCGCACACGG
-CAATCTACCGTCTGTCGAGCACAAAGACGAGCGTTCAAGTGTTGTGTCGA
-CAGTGTCAGGAGGTGATTTCCAGTGGCGAATCGCTCCGCGAGCATCGACA
-CTTTCACGCCCTGCTTGCCGCCAAGCAACGCTTGTGGCGATGCAAGTTGT
-GTAGGCTGGAGTTCGACTCGGTTCTTCTTGCAGCTGGTGAGTCTTGATAG
-TTTTTTTTAGGAAGAAATTATATCTGTAAGTCCCCCAAATATAAGGCCCC
-CATGTCCATCTTAATGAAGCTTCTGACTTAATTTTTACTATAGATTTTGA
-ATTTTGTCTATCGGAAGAAAAATTAGGTTCACCATGATTTTTCGATTTTT
-TCGATGCACCATGATTTGTTGCTAGAATAGAAAACAATTCGTGGCCAAGT
-TTTTTAATTATTTCTTTTTGTCGGCCAAGTTGCAAAAGTCACCTTTTGTG
-TATGGATGCACCATGACCCTTTTCAGTGGATTTTGGCCCAAAAATCGTCA
-AAATTTTGAATTTTTAAAAATCAAACTCTAAATTACCTTTTTTTTTCAAA
-TTTTCTTAACAAATTGGAGCATTTTAGAAAGTTCCGATGCACCATGATTT
-TTGCTAGAATTGAAAAAAAAATTGTCGGGCAAGTTGCAAAACTCACATTT
-TATGTATCGATGCACCATGACCATTTTCGAAATTTTGCGGTATCTATTCA
-AATAGTGCACATAGCCGTAAAACATTGGTGGTGGCCTCGTTTTCTCATGC
-TTCGGCCACGAAAAAAAAAATTCTACAGTTTTTTGGATCGATGCACCATG
-ATTATTTTTCAGTGAAAGCCTGTTTTTGCTTAGCTCAAAGGCCGGCTTAA
-TGTTCCCACAAAACGTAATCCAAAAATTTAAATTTTACCGTCAAACTTTT
-AGCCTGGCGTACACTAAAAATTGTAAAGTTTCAATATATCAAAAATATTT
-CTGGCCTATAAAATTAAACCTGAAAGCTTAGAAATCCAAGATATTTTTTA
-AAAATTGATGTCCAATACATGGGTGTGCAGCAAATCTTAAAGTTTGCCGT
-GCTTAACAAACTCCGAAAAAGTGTGATATTTTTTTATGCTTTTTGGAGCA
-CCAAAACTACTGAATTCGAGCTTAGCAAACGGCAAATTCGGCATATTTGC
-CGCACACCCCTGGTCCACTAGTTAAGCAAAACCCACCGCTGAAAACTAAT
-CAATTGGTGTTTGAAACGGTGTGTGCTACTACTAGAATTTCGCTGTTCAA
-AATCTCTTTATTAAACACTTCTTTGTGTCTATTCTGCCCTTTCCTCCTCC
-CCGCGCAAAATCCACTTGTACCTCTAATTACGGTCAACAAGTTTGCGGGT
-TTAGTTTAGTGAATGAATTGTGAAATGAATGAATGAATGAATGGATAGGT
-AGGTGTGTATGTATGTGGAAAAGTGCGACACACACAACCAGCCGTCCACC
-ACCGCCACTACCACCAGCAGTAGCAACAGCCATCAAATATAATCCTTGCA
-TTTCATTATTTCATAGTGTCATAGATAGTAGCAGGCCCGAGGTCCGAAAG
-GCCTTGACAGCGGTTTATATTCATTTCATTTGACACCCCCCCCCCCCCCC
-CCCCCTCCTACTATTCTTCTTCTCTACCACATACATTCACATAGTCAGGC
-CATTCATGTTTTTCACACAATTTTGTTAATAAAGCCGCTCTGGCGCCACC
-TCTCAGTAGTCCTTCTTCTTCATCATCATCACTCCCTCTCCCTTACCAAT
-AACCAAAAACAGTCATTGATGCGTATCGGAATTATAATCGCGCATTTATT
-GTAGGACACATGACTTGCCACGAGCCGTCCACTTGGCCCAACGAATCACT
-TGGTGAGTCTCTTTACAGTGAATCTTGAAATTTGTGTTGTTTTGTTGTGA
-AATATTGTTAATCGTTTTTTTATTAGTATCTCCAATTAGGCCAAAACTAT
-AATCGTGAAAGAATAGTTTCTGCACATGGTGCATCGACCTGATATATCTC
-ACTTTTTTTGGGCTTCATCAAAAACTTGTTAGCTAATTATAGTTAAGCAT
-CACATCTATTGATATGTTCAATTTGAACAGAATATGGTGCATTGCATTGT
-ATTGCAACTGAAACAATTTTATTGGCGCATAACATTCAACTATGTAGTTT
-ATGTACATCGATCTTAATTACCGTATTTCCTCTATTAGTATTGCACCCGA
-CTAATTAACTTTGAAACGTTATATCTCGGTTCATATTGAAGATATCAATA
-TATAATTAACTATGAAATAATAGCAAAAGAACTAACAAATATTTTGTTAG
-TTGACCATTTTTGAATAGGACAAACGATTACGGAGATATAAGCTGTCAAA
-AGTGGACAATGGGGTGCAATACTAATTGTGTAAATACCTTATATCTCGGT
-TAGCTTTGGTTTTAACAAAAATTTTAAACTGACAAAATATAAGTCATCTA
-AATGTCTATAGTTTTGTAGTTAACAATTTTTTGATATCTTTAAAATGAAC
-TAGCGATTTTCGACATGGTGCATCAACCTCAGTTACCTAGTCTAACTTTG
-CTGGCTTATTTCTTAGTTTTAGTATTAACCGTTCATTTTAATATACTTTT
-ATAGATAGTTAACAATTTTTTGATACCTTCAAACTGAACCGGAGCGATTT
-TAGACATGGAGCTTTGATCCTATCTTGCCTTAATTTTCAAGCTTATCTTT
-TTGTTGTAAAAAAAATTTAGACATGGTGCATTGACCTGAACTACCTGATA
-TATCCTACTTGATATATCTTCAATTTTAGCAAGTTTTGGAAAAAAAAAAT
-TTTAATGAAATCGATTTTTTTTTTCAATTTTCAACCTTCCGGCCAAAATT
-TTCAATTGAGTTTTGACCTTTTTTTTTAACCCGGCAAAAATCTAAAAACT
-CCCAAGAACAATCTCCCACAAAAAACTAAAAACTTGTGAATCTAGATTAG
-TCAAAAATTTGCACCTTCTTCCCATGGGATGGCTCAATCGAACCCAGTTG
-ATGAATCGGCCTGTGGGCCGCGAGCAGTCGCCGCTCTAATTTGGAGCATT
-TGTATATATATAGCGAAGAATTTCACGTGACCAATGAAACCAATAGAAAT
-CCAATCATATTTTTGTTTTGTCTCTAAATCATCTCTTCCCTCTCTCTCTC
-TTGCCCCTCCTTAACCAATCAGAGACGCACACACCGCACCGCCCGTCCGT
-CATCGTCATCGAGTTCCGCAATTAGTCGTCTATTCTCTCCGTTTTTGATT
-GGAGATGGAGCGAAAATGAAAGAGAAAGAACGAGAGAGAGAGAGAGAGAT
-TAGCTCTTAGATTCATTCAACTAATCTTGAAATAACACACACACACACAT
-ACACAAATGAATTATCTTCATTTCAAATCATGGAAATCAGCAAATTCGCT
-AGAAATTTCATGGAAGGGGAAGCTTGAATTAGGAGCACTACTTGATACCG
-AGTTGGAATTGTAGTCTTTTAATATTTGAAGAAATATCACAATTTTTCAT
-TTTAAACTTCTAAAAATATGCAAGTTACTTGATGCATCATGCCTCTTTAG
-ATAACGTTTTTTTTAGGCTTAGGCTTAGGTTTAGGCTTAGACTTAAGCTT
-AGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGACTTAGGCTTAAGCTTAT
-TCTTGAGCTTAGGCTTAAGCTTAGGCTTAAGCTTAGGCTTCGGCTTGGGC
-TTAGGCTTAGGCTTAGGCTTAGGCTTAAGCTTAGGATTAGGCTTAGGCTT
-AGGCTTAGACTTCTAGATACTTTCTCAAACCACCAAATTACTGTATATTC
-TCTATCATAGATACTACTTCCATTTGGCAGCTTATAACTCAAGTCTTTTG
-TTAGAGATATCACTAGCTTTAATTACAACATTATAGGTTAATAAATACAC
-CATATTTTGTTAGTTTAAATTTTTTGATTAACCTAACGAGAACCGAAATA
-TGAGTAGTCAAAGATTATCGATGCACCATGGTACTACACTTTACTTTGCC
-GGCTCATAACTCGGTTTATTTTCAGGATATCAAAAAGGTTTTTACTACAA
-ACCTATAGAGAAACATATAATAAAAATATTACTATTTTGCAAAATTTTGG
-TAAAACTAATAAGAATTGAGATATAGGCCGTTGAAGTTGCATGATGCAGT
-TCAAAGCCTACGGTTTTAGACTTATAGCTTTAAAAGGAGGTACCGTATTT
-CCTCTATTAGTATTGCACCCATTGTTCAACTGTGACATCTTATATCTCAG
-TTACTGTTTGTTCTAATCAGAAATTGTCAACTAACAAAATATTTCTTAGT
-TCTTTTTCTATCATTTCTTAGTTGACCATATATTGATACCTTTAAAATAA
-ACCGAGATAAAACGTTTCAAAGTTAAGTAGTCGGGTACAATACTGATGGA
-CGAAATACGGTATTGAATATTTTGATCTACGTAACTATTTGATCTAAAAT
-CTCGATATCATTTTAATTTCTGATCCATAGCTTTGCGTTCAATTATCCTG
-CCTAAAAAATCTCTAAAAATAACGTCTACGAGAGCGGGTGAAACAATAGG
-TGGTTAGATGTAAGTTGATACCCCTGAAGGGCATCCGGGATCCCCGCGCA
-AAAACAGTACAAACATGAGATGTACAATCCCCCATTTTTTTGTGGTCGCT
-CTAAGTTGAAATCGATGCAAAGACATTGTCAATATAGCCGTGACGCGACG
-GGCGGGTGGGCTGGCGCGCTCGATGAATCAAGATCGTTTTGGGAAGAGAG
-GGACTGAAAATATTAAAACAACATTTGCATTTTGTAATTGTTTGAATCAT
-CATCATCATCATCATCATCAATCATATCATAGAGGTGGCGAAACTTTTCC
-TGCTGGGAATGTGTCTCCTTTTTAGTACAGTCAATAAATGTGTCACTTTT
-GAACGGGGGAAAAGCTTTTCTGCTTTTCTTCGCTCTCCACCTCCTTCCCT
-CCTCGCTCATAAATTTCCATTTTTCTCTTTACAAACATTGATTGATTTCC
-TTATTCTATTGACTTTCTGATATTAAATTGATCATCTACTAAAAGGTATA
-TATATATATAAGGTATATCAACTCTTGGAGCCCATATCTTTAATGCTCAT
-CAAACTCCCAGTTAGGACTGGGAGTGAAGTACTGGGTGGTGGGATAAGAA
-AGTTAGGATGTGACGGGTTTCATGCTCATCTCGAGCTGCCAATCTTGCAC
-ATTAAGCAATTGGCTCATTGGCATGCTCTTGTCCTCTGGGCCTGCCGCGG
-AGCCATCTCCCGTTTGATATCTGCTCCCGGGGGACGTTCCCAACTTGGCC
-GGAGAGAGGCGCCGCGAGCAGCACAAGCTCAACCAAAACTTTTCTAATGT
-AATGGGCCGGAATTAGGGGAAGAACAAACGAAGGAGAGGGTGGGGTGGAT
-GAGGAAGAGAAAAGAGCACCACCACCAACTGATTTGATGGTTGGAGAGGA
-GCTCGTTTTGTTTTCTTGTCGTCGTAAGAAGAAGAAGAGAAGCGCGCTAG
-TTAGTGGTTAAACGAATCAAGACCCGAATGTGATAGATGTGCCGCCAATT
-TAGCCAGTAGGATTTTTGCTGATTTTGCACACATTCATTTTTCGCTTGCC
-TAGACATTACATCCCATCTTATTCCGCTTCATTCATTGTCGTGATTTTAA
-GATTTGGGGGACCTAGGAGCCTCTACAGTATTATTTAAATTTCACTTTTG
-TTTGGATTTTGAAAAGAGATGCGTCATACATATTCATTTTAAGGCACCTA
-TGTATACAGTTCAAAATTTTGGAACATTCCTGGAATAGCGATCTTAAAGC
-GGGAAATATAATGACATTATCTGACAATTTTTTCGAACACCTAAAAAACT
-TGAATAAAGCCAATTGAATCGTATCCCTAATGGTTTGCAAAGTTGGGCCA
-TGCTCTGAATAGCTTAGAGTTCCATCCTGACCTGGAGCTCGCCAGAAGCT
-GAACGCACTGAACTTCCAGTCAAGCCTCTTTTGAATAAGTCTAGTTGCAG
-ACTAGAAGCCTTAACTACCTGATGAGATTTTCACCCTTCTCTCATTAGTC
-TATTTCATTAAGCATGAACTTACACGAGAATTCCAATTACATTACCATGT
-AACATTACTTAAGATCCCATTTCCACTTAATTTGTGAAAATCGATACGGT
-TTTATAAGAAGTGTTTTGTCCTTTTGCCTATAGCCTAGAGCAAAAATACC
-CAAATTATTTGGCAGATCATGTCTCCGACAATATTCTGATCGATTAAGAA
-ACTTTTGCAAATCTGCTCGGTTTTTTAGTCTACATTCGCCCCCAGATAAC
-TGTTCTCGGCAAGTTGCCGATTTGCCGATTTGCCGGAAATTTTTCTTTTC
-GCCAACTTACTGATTTGCCGGAAATGTTTAAGGGATTTTTTTGAAGACGG
-AAAATTTTTTCATTAGATATGTTCATAGAATTAGCTTGCATTACAAAATA
-GGTGTATGAACATATTCAAAGGATGCGTACAATTTTGCCGATTGAAATTG
-AAATTCTGAAATTTCCAAAAATAAATGTGCAAAACCACAATTTGCCGTTT
-TCCGGCCAATTCGGCAAATCGGCAATTTTCTGGGTTGCAAATTTGCCGGA
-AATTTTCAATTCCCTTTATTTGCCGGGTTGCAAATTTGCCAGAAATTTTC
-AATTCCGCAAATTTGCCGTTTTTCCGGCCAATTCGGAAAATCGGCAATTT
-TCCGGGTTGCAAATTTGCCGGAAATTTTCAATTCCCTTTATTTGCCGGGT
-TGCAAATTTGCCAGAAATTTTCAATTCCGGCAATTTGTCAGTTTGCCATA
-AATTTTCAATTCCGGCAATTTGTCGATTTACCGGAAAAAATCGTTTGCAC
-CCACCCTTGATGTGAACGCTAGCACTACCTCCTAGTATTAAGGCTCCAGC
-TAATTTCTATATCATGGCTCCCAACTATACGTTCCTCCCTCCTCCCCCTT
-CCCAATTTCGAATGGGCGCCAATTATTGCTCAATTCCCATCAGATTGGGG
-GGGGGGGGGGGGGGGGCATTCGTACAGTGTCAACACGAATAATAATTATG
-AGCCCTCTTCTATGCCCAAAGCGCGGCGTCTTCTTCTTCACCCCTCTAGG
-AAGTTCTCATAATTAGCATTTTGTAAGACTCGGTGTCCCCCTTTCAAGTA
-TCTCTGGATGATTCCCCCCTCTCGCACACACTCTTCCCATTTTTTTTTCA
-CAATAATCATAATCATCAAGTTGGACACCAAAAAAGCCATAAATTCGATT
-CCGGTCGAATCGAGAGAATTGGAAGAGAGAGAGAGAGAGAGAGAGAAAGA
-GGAAATGAGACAGAGGGGTGAGAGATGGAAAACGAACAAGTGTGATGGTC
-GTCCCCCCCCCCCCCCCCCACGGGGCCGCTCCTCATTCCTATATTTATTT
-ACAGCTCTCTCTCTCTTTTTCTCTTCAATTTCCATCTCTCTCTCCTCATC
-TACAGTAATCGGGGAGGGGCTAGTGATAAGCCTCTCCCCGCCCCCCCCCC
-CCCGGCGGTTAGGTGTCAGAAATTAATCATAGAGGCCACGCCTCTAATGT
-TTTCGGAGCATCATCCTTAATTCTTTAATTCATTAACCTTAATTCATTAG
-TCTTACACTGAATTTCATAACTAAACTTGTTGAAAAAACTTCTCAAAAAA
-AAAAGTTTTGGCGGCTTAAGAAATGGCCTAAAATTAGTTCGACTTTTCAA
-GCGGCTGGAAACTAACTTTTTTTGAAATCCCCCCTAATTATGGGTCTACA
-ACGTAAATAAAAAAATTTGGTGACCAAATTTATTTAGGCCAAATCTGGTG
-TTCAAATTTTTTAGGCCAAATCTGGTGACTAAATTTTTTAGGGCCCAATA
-TGGTGAAAAAATTTTTTAAGGCCAAATCTGGTAACCACAATTTTTTAAGG
-CCAAACTTTTTAAAGACCAAATTTTTAGAGCCAAATCTGGTGACCAAATG
-TTTTTAGGGCCGAATCTAATGACCAAATTTTTTTAAGGCCAGACCTTTTA
-AAGCCCTAATTTTTTAGGGCCAAATCTGGTGACCAAATTTTTTAGGCCAA
-GTCTTGTGATCAATTTTTTAGGCCAAATCTGATGACCAAATTTTTTAGGC
-CAAATCTAATGACCAAATTTATTTAGGGGCCAAATCTGGTGACCAAATGT
-TTTTAGGGCCAAATCTGGTGACCAAAATTTTTTAAGGCCAAATCTAGTTA
-CCAAATTTTTTAAGGCCAAATCTGGACACCGAATTTTTTAGGCCAAGTCT
-TGTGATCAAATTTTTTTAAAAATTTTTTTCAAATCTGGTGACCAATGTTT
-TTTTAGGGCCAAATTTGGTGGCAAAATTTTTAAGGCCAAACTTTTAGGAC
-AAATCTGGTGACCAAATTTTTAAGGCCAGAATCCACAACTTTTTTTTGAG
-AAATTTTGAAGAAGTTTCTAATTCACCTAATTCATTACTCTTTTTGAATT
-TAATCTTCGATATTCCAGATTTCAAAACGATGGAGGATGCGGCGTACGCG
-TGTGCTGGCTGCGAATTCACCACAAGTGAGTTTTTTTTGTTGTTTCCTTA
-TCAGCATCAGCTCTATGCCTTCTCCCCACCCCACCCCGCTCCTCCTGTAA
-CCTTCAATTGCCATTCATTTCACACAGTAATAGTACCACACAACACCCTT
-CCATGCCTTCAATTTGACTCATTAATAGCCCTTTTCACCATGTCTTTTTT
-CCCCCTCTTTCTCTCTAATACTCAACCTTTACCTACCTACCCGCAATTTA
-ATTGGCAACTAATTCGGATACATTCGGACGGCTCAAACGATGCGCGTCCG
-TCGTCGGGTGCCCGAGACTGGGACCGGTTTTCAGAATGTCAGTGTATGTG
-TGTGTGTGTCTACCGGCTGGCAGGCAGCCACACCACTGCGATTCGTTAAT
-TTATTGTGAGATGATGACTGTACATTATTTTGAGTGCTGCTGGTGCTGGT
-GGTGTGCATCATATAATTATAGCCTAGTTGATAGAGATATATCGACACAC
-ACACACATACACATTTACTTTCAATTGCTTCTACCCAATCTTTTTTCTTC
-CATTCTCCAATTCCTCTCCTTGCTCCCATTTCGCCCTTTGATATTCACCG
-CGTTTCGCGTTTCGCACTAATTTCGCGCCCGGACCGGTGTGCTCGGCGCG
-GCACGTCTTTCATCTTTTTGCCTCAATTTCATTATGATAATAATAATCAT
-AATAATTATGCGAGACACGGCAAAGACGCGCTCAAGAAACTGATAAGTGT
-GTATAGGTCGGGTCCTTTTGAGAGAGAGAGAGAGCGAGGTGTGATAAGCG
-CGTCTAATGAGCATGGGCAATCATAACATTCCTATCAGCATATCAGCATT
-AAAACATTTTTTTCAGAAGACGTGTCGGACTTTGAAGAGCACGCAAAAGG
-ACACGAAGAGGAGGCGGGAGCCTCTTCACAGAAGGCGTGTGCGCTGTGCC
-TTGAGCCCACCGACGACCTCGAAAAGCACCTTGTCGAGCAGCATCGCATC
-GCCGAGAGCGCCATCGAAAAGTTCCTGCTTACTGAGAGAACAGCCAAGTG
-AGTGTTTTTTTTTGTCTTCAACTCAAATATCTAGTAGTAAGTCTTATACT
-TGGCTTATATTTCAGCGGTTTCAAAATATTTTTGATAGCTTTAAAAACCA
-TAGAATAACAATTAATTTGACAACAATTTTGTCGTTTGAATTTTTTGACA
-AAAATTTTGTCGTTTGAATTTTTAAAATATGATCAAAGACAACCGAGATA
-TAAACGGTCAAAGTCCAGTGAGAGGGGCCATACTAATAGGGATTATACGG
-TAGGTAACGAAATTTTGATAAGACTTATAAGGACAAAGATAATGGAGCTA
-GAAAGTTTAAACTAGTCCAATTTGAACAATAAAAATATATATAACGTACT
-TTTTAGTATAAATATTTTAAAAGTAGAGTAATCTGAGATACAGTAAATTT
-TTAACAATTTCTAGTCGATGCACCATGTGCAAAAACTAGTCCAGTCCTAA
-AATTAAATAGCACGTACTTTTTAGTATAGATATTTCAAAAGTTAAGCCAT
-CTGATATACAGTGAATTTTACCAATTCCTAGTCGATGCACCATGTGCCCA
-CTTAACTTTCACGGCTCACTTCCCGGCTAATTTCAAACATTTCAAAATAT
-TTTCAACTATTCAACTATAGAGGGGTTTTTAATAAACATTTTCTCAGTTG
-ACGACTTTTTTATAGAATCAAAGACTACCTAGATATAGCTAGTTAAAGTC
-GAGATGCAAGATTTTTCGGAAAAATCACGTGGTGTTTTCGGTTTGATCTA
-CGTAGATCAACGAAAAATGCGGGAGAAGAGACGCAGAGTTATCAACTGAT
-TTCGTATGGTTAAGAACGTGCTGACGATGTCACATATTTTTGAACAAAAA
-ATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGGCAGCCTCGCACCAC
-GTGAAAAATTAGTTTTTGAGGCTTTTCTAGTCTAGAACTAAAGTTTTTTT
-TTTGATTGGCCTTGTTTTTTCTAGTCTTAAACACCAGGTAGATCAAAACA
-AATTTTTTTTCAGAGTTTCGATTTTTATGAATTTAAAACTTTCAAATTGT
-CGCACTTCCTGTCCCTTTCAACCCCAAAAACGTTACGATTTTGTGCTATC
-ATAATCATTAAACCATGCTTGCTTGTGTCAAGTTGCACAGGGTGCGCCGG
-GGGGGGAATTGGCATTACTGTAAATTTCCTGCGTCTCCATCCTTGCCCCC
-AGTGTCCCCATCGGCAATTAGAGAGTACGATCCGATTTTGCATATTTTAT
-TCACGTCGCCTCTTGTTTACTCGCTCTAAATTTCAATCCGTCGCCAACCC
-CCCCCCCCTGCCTGCCTCTTCCATTCATCATGAGTATTAGTGTATTGATT
-AATTTTCGAATTCACGAATGAATTCATTGCTGGCGCCCTGCTACTAGTAA
-TCAGTGAGGTCATAGCGTTGTCCTTTCGATAGGGCTAATTAAATGTTTCT
-CTAGGAGCGGGAGGATAGATTTGAAATCAGGTGGGCGTCGGTTTGATCTA
-CGTAGATCTACGAAAATCGCGGGAATTTAGACGCAGACTTCTCAACTGAT
-TTTGCATGGTTAAAAACGTGCTGACGTCATATTTTTAGGGGAAAATATCC
-CGCACTTTTTGTAGATCAAACCGTAATGGGACAGCCTGACACCATGTGCT
-CAGTTACAATTGGAGGGTTTTGTCGGAAAAAAATCAATTTTTTAAACTGA
-CAACACATTTTGCTCATTCTCCAAAACTGAGCCAAATGTGTTGTCAAACT
-TTTCTTGAAATTTTTTTGAATCGAAATTATGTTGAGGTGAATTTTCAAAT
-TTCAAAAAATGCCCCATTTCTATCAATTTGTCTTCACCTATGTTTTCGAA
-TAAGGGCGAGGCGAGAGGCAGGCGGAGGTCGCCTTAAGATCATAAGATAG
-CCTTATGTGATGACGAAAAATGCCAAAAAATGTATTTTTATATAGTTTCC
-CCGTGTGTAGAAAAATGTAAAAAGAGCATGCATTTTGTGCATTTTTTGAC
-ATTTTTCTGCATTTTTTTTTGACATTTTTTTTTCATTTTTCCACACAGAT
-GAATAGCGGAAAAACGGAAAAAAATACATTTTTGCATTTTTCATGATCAC
-ATGATCAACCCCATAAGGTTTTTTAAGGCATAATATTGATATTTTTTATT
-AGTCTACTTTGCATAATGCCTACTATTGAAGGCAAATCAAATCGACATCA
-CTTTTTGCTCATTTTCAAAACTGAGAGGCACGGCTTCTATGTTGACTACT
-AAACCAGTAATAACACTTATAAAATGTTTGGAAAACACTCATACACATTG
-CCACGTCATTTGGATGGAAGGGACCCCATTTGTTGAATCATAATTGATTG
-TTAAACTATCATCACTCTCCCCCCGCCCTCCTCATTGGACCCCACGGCTC
-CAAACTGTCTCCAATTTGCTCCCCGTCCTCTTCTTATCACCTTGACGCGT
-AATTGAATTTTTGCGGATTTCTTCCTCCCCACCGCTTCCTTTGCTCCTTG
-GGGGAAAAGTATGGAGAGTGTTTATGTGTGTGATTGAATTGAAGAAGGTG
-GCTGACTCATTCTTTCATTTTCCTCGCTTTCTTTGAAAGAACAACTTGAC
-AGTTTCCCCCCCCCCCCCCCATCTTATAATAATAATTACTTGCAGAGAAG
-CGTCGTGTTCATCGTCGTCGGAGCCGAGCTCAGAATTCGCGCATCGCTGC
-TCGAGGTGCTCGATGGCGTTCCGAAGCGAGTCGCAGCTGCAGACGCATTC
-CCTTCAGCACGTGTTCAACACGTTCCACAAGTGCCCCACGTGTGGCGATT
-CGTTTGATGAGAATACTATTGTGGTGAGTGAATTCACAACACTTTTGGCT
-CACAGTCACGCTTGATCTACGTGTTTTTAGACAATTTTGAGTCTACACGT
-GGTGTCAAAGTGTCTCATTTCGGCTTGATCTGCGTTGATCTACAGAAAAA
-TGCGGGAGAAGAGTTTTGGGCAAAAAATTCCCGCATTTTTTGTAGATCAA
-ACCGTAATGGGACAGCCTGGCACCACGTGCTCAGTTAAAGTAAGAGGGTT
-TTGTCACTAGATTTATTTTTTGTAAACTGACAACACATTTTGCTCATTCT
-CCAAAACTGAGCTAAAAGGGTTGTCAAACTTTTTTTGAAATTTTTTTAAA
-CGAAATTAGTTTTGCTAGTTTTCCTAAAAGGAGCAAAAAGTGTTGTCCAA
-TTTTTATAAGAAGGTTTTTGTCGCCTAATCGATTTTTGTAAACTGACAAC
-CCTTTTCGCTCTTTTTTCAAAATTAATTTTTTTCTTTTGGCATTAATCCC
-ATTTTTTGTAAATTAACAAAAAAATTTCAAAAAATCTTCAAGTATTTCTA
-CAGGGTGGCCTAGATTCTCTATAGGGTGGCCTACATTTTTACACTGGTTG
-TCTAGATTCTTAAACAGGGTGGCCTCGATTCTGTACAGGGTGGCCTAGAT
-TTTCTACACGGTGGTCTAGATTTTCACTGGTGGCCTAGATTCTCACACTA
-GGTGGCCTAGATTTTTCCACTAATAGCCTAGATTCTTTACAGGGTGTCCT
-AGATTTTCACACTGGTGTCCTAGATTCTACACAGGGTGACCTAGATTTTT
-TACACTGGTGGCCTAGATTCTCTACAGGGTGGCCTAAATTCCTTATAGGA
-TGACCTAGATTCTTAAACAGGATGACCTAGATCTTGACACTAGTGGCCTT
-GATTTTTTACAGGGTGGCCTAGATTTTCTACAATGGTCTAGATTTTTTGC
-AGGGTGGCTTGGATTCTTAAACAAGGTGGCCTAGATTTTTCACAGGGTGG
-CCTAGATTTTATACAGGGTGGTCTAGATTTTTACACTGGTGGCCTAGATT
-CTTTACAGGTTGGCCTAGATTTTCTATAGGATGGCCTAGATTCTTAAACA
-GGGTGGCCTAGATTCTTTACAGGGTAGCCTAGATTCTTCACAGGGTAGCC
-TAGATTTTTACACTGGTGGCCTAGATTTTCTAAAGGGTGGTCTAGATTTT
-TGCACTGGTGGCCTAGATTCTTAAACAGGCTGGCCTAAATTCCTTAGGGG
-ATGCCCTAAATTCTTAAACAGGATGACCTAGATTTTATACAGGATGGCCT
-AGAACTACTTTTTGTAAATCGACAGCACTTTTTGCTCGTTTTCCAAATCG
-TTTTTTTTTCAGACCCATATGTTGGAGCACACCAAAGAAGAATGCGAAAT
-GTGCTCTGAAACATTTGCCACAAAAGAGGCATTCCTCTCCCACCTGAACT
-CAGCCCGACACCTACAACAGGCAAAGAAGCAGCTGGAAAACTCACTGGTC
-GACTTAAACTCTCAGGTGAGCCGCCGCCGTGCCTCCTGCCGCCTGGCTAC
-CGTAATCACCGTACCCATTATTTAATTGATTTGCTTTTAGCCACGCCGCT
-GCTGCTCGGAGCGCAGAGGTGACAGAAAAAGCCGACAAAAAACAACATTA
-AAATTATTACACTTTTTTATGATTGAATGCGAGAGAGATGTATGTGTGTG
-GAGAGATGGAGAGGCGCATGAAATGGTGTTCGGGTTCCATAGCAAGCTCA
-TTGAGCACAATGATTTTTTTTTAAATATATTTTATTGGAAATGACAGAAG
-CTGAAGCTTGAAAGGAACGTCCAGTTTTAAATTAAAGTATTGATTTAGCA
-CGTAGTTTCAGCATGTCCCATCACGGTTTGATCTACAAAAAATGCGGGAA
-TTTTCTTCCCAAAAAATTTGACGTCAGAACGTTCTTAACCATGCGAAATA
-AATTGAGAACTCTGCGTCTCAACTCCCGCATTTTTTGTAGATCTACGTAG
-ATCAAACCGAAATGGGACACTTTGACACCATGTGATATTTAAAGGGTCTA
-GAAAGAACTTAAAATAGCCTAGCCAAGAAATGGGCGGAGCTTTGGTAGGA
-ATTTTCATAAGTCGAGGACTCCGCCCATTTCTTGGCCAATTTGGGTTTTT
-GGCCTTCAATTTTTAGTGTTCACTAATTTCCAATAAGTTTAGGATTGAAA
-AAGTTTTTGAGGTGAAAATTGATCCTAGCATAGGCTCCGCCCATTTCTTG
-GTTTTTTTTTTGTTTTTTTTTCTTTTAAACTAAAATTCCACTGAACTTGT
-CTAATTTCAGTTTCCAAAAATTTAACGAAAAAATTCGAAATGCCAAGAAA
-GGGGCGGAGCCTAAGCGAAGCCTATTTTTCGATGAAATTTGGCCAAGTTG
-CGATGTTTTTGAATTTCATATTTTTGAATCAAGTTTTGAAATAAAAAGTA
-ATATAAAATTGGAAAATAGGCTCCGCCCATTTATTGGCTTTGTTGGATTT
-TTTACTGCATAGATCACATTTTTGCATCCGAAAATTTATCGGAAAGGAAT
-TTTTTTTCCCAATTTTTTTCCGTAAACTGTATCATCAAATTCTTTTGAGA
-TTCAAAATATCCAACATAAGCACGGGGTTCTGGCCTTCCTCATTGAATTT
-TTCGCGCTCCATTGACAATCGCCTGCCGGACAACGCGTGGGAAAGTCGTG
-TACTCCACGCGGACAAATACATTCAGTTTTACGCGCCGTAAATCTACCCC
-AGATATGGCCGAGCCAAAATGGCCTAGTTCGGCAAACTCTTTCATTTCAA
-TTTATGAGGGAAGCCAGAACTCCGTACATAGGCGCAATAAAAGGTGAAAT
-AGGCTCCGCCCATATCTTGGATCGGTTCCAATAATGTATCCAAATTGACA
-TGTGTTAGTTACACTTGTTCCTAATCCAAAATTCTATCCGAATTTCAATT
-TCCCAAAGTCAAAAAGTCAACAAGTTCTGTTCTTATATGTGTAAGGCGCG
-CGCGAGCGCGATCGTTTGTCTCTAGTATTTGCTCATCTCTCTCTCTCTCA
-ATTACCGTACCCATTATCATTCCGCCCATGGATGATGATGATGATGAAAA
-TGAGCGGTGGGCCCCCTCTTCCCCTGCCTCTTTTCGCGCATTCATCATGT
-TTGTACAAAAGGCGGCGGTTTGAGAAAAGAAGACAGTGAGAGGGAGGGAG
-AGAGAGAGGTGATGAAGGTAGTAAACGTGTGTCGACAAACACATATAGAG
-AACGATTCGTGTGAAATAGATGAGGGCAAATAGGACGAATTTATTTAAGA
-GAAGAATAAGATGCTTTGGCCCAGATGAGGGGGGGGGGGGGGTATCATGA
-AGGTGTGATGACGAACCATATTCCTTCAATGTTTGTTGCTCGCTTAACCG
-CCGTCGCCGCAATTTAAATTGTTTCGACTGGGTGATCAGACAAATAAGAA
-GACGTAGACGGTTTTTCTTGGGGGGGACGTTCAGCTTTGATTCCTTTCAA
-ATAATCGATGCGGCCTAGCTTTCTGATCTCCAGAAACCGCGGGCCTTCTT
-TGCTAAATTTTAAGCGATTTTACTTCCTCCCCCCCCCACTTTGATCTACT
-TTAACAGCTTATATCTCGGTTGTCTTTAGCTTCATCAAAAAGTTATCAAC
-TAACAAAGTGCGTGCCAAATATACTTCTACAATTCGGTAGTTAGTATTTT
-TTGGATAAAAGTTAAGACAACCGAGATATAAGCTGTTGAAGTAAATTTCT
-AGTTTGACTTACTCCCCCAATTTTGATCTACTTTTACAGCTTATATCTCG
-GTTGTTTTTGGTAACAGCAAAAAGTTGCCAACTAACATATTACGTGCCAA
-ATATTTTTCTAAAATTTGGTAGTTGAAAATTTTTGAATAAAAGTTAAGAC
-AACCGAGATATAAGCTGTTGAAGTAGATTTCTAGTTTGACTTACTCCCCA
-AATTTCGATCTACTTTGACAGCTTATATCTCGGTTATTTTTGGCAATATT
-AAAAATTTGTCAACTAACAAATTACGACCCAAATATTTATCTACAATTTG
-GTAGTTGAACATTTATGTTAAAAGTTAATACAGCCGAGATATAAGCTGTT
-GAAGTAAAGCAGTGGTGGTGCTTAGCTCGACCTATATTTTTGAATTGCAT
-AACAGTTATAACTAACTTATTTTATGTGAAACCCTATTCTAGCTAGTTGA
-CTTACAAAATCTCCAGAAACTTTTGCCTGCCTACCACCTTTAGCAGCATA
-AGCGCCTATAGGCACACCTACTGCCTACACCTATGCCACCTACTGTACAC
-CTACTGCCCATACGCCTACTGCCTTTTGCCTACTTTCTACATAACTTTGA
-ACTGCCCGTTTCTAACCAATAATCTTTTACAGGACGTCGAAAAGCAGCGT
-ATTTATGTGTGCAACGTCTGCAAACAATCCTATCCACAAGCGGCTAATCT
-CGACGTGCACATGAGGTCAATGACACATCAGAGCCGGATGAGCCGGCTGT
-CCGAACTTGTGGCAACCGGGGAGCTTAATGGGGAGAAGGCCGTGTTTGAG
-CAACCAGGAATACCGGCACCGACGATAAACAGCTTCATTGAGACGGTAGG
-TGAGGGGTTTGAGCAGGCATAATCCTGAAAATCATCTGTTTGGTTTCTGT
-GAAAAACTTTTGTGCGGAAAATAGTTTATTTATAGTTCAATTTGAAAAAA
-ACTGGTTTCCGATTTTCAATTTTCAATTTTCAATGTTCGATTCTCGATTA
-ATAAAATTTCCAATTTCCAATTTCCAGACAACCAACCAATCCTCACTGAA
-CGACCTGATGTCACTGCTCACACGAAGCGAGTCGGATGAGATTCGAGAAG
-AAGTAAACGGCCTTCAAGTCATGACACAGATCAAAGTCTACGGTGAATCC
-AAGATCACTAGCCTAGTCCCAGAGTTGGCCGGGAAAATCGATAACATCGC
-GCTCTTCGATGACTCCCGTGCGGCAGAGGTGTCGAAGATCGATTGCTCGG
-CTTGTGGGCAGCAGATCTCAGGGATCCTTGCTTTGAACCTCCATTATGAA
-GAGTCCCACTCATCGAAGATCCCGAGTGACGTGTTAAGAAAGTTCGGAGA
-GCGGTTACTTGCCGCATTAGAGGACGGGTTGAGCAGAGAGAATTCCGTGA
-AGAACGGATCGCAAAGCCCTCTGAGCAATGACGATGAGCCCATGGAGAAG
-AAGATGCGGCTGGAGAATATGCTTCCTGAAATGGACAAGAACGCGGCAGC
-GTCGCAATTCGCAATGTTCCAACAAATGATGAACTGCTTCCCGTTCATGG
-CACCACCAGGCACGTCTAGTGGCAACTTTGGCTTCTCGCCAGAAATGATC
-AATCAGCTCATGAATCCTGCGGCGGCGGCGGCGGCGGCGACTGCAGCAGC
-AGCAGCCCACGCTGCCAACAACTCGCCGGCGAAGAGAGCAAGAACACGGA
-TCACTGATGATCAGCTCAAAGTTTTACGGTAAGTCGTCTTGTGTGTGATT
-ACTGTAAGCTACGGCGAACAGGAGAGACCCGAGGGGGGCGGTGGAAAATG
-AATTGCAAACAATAGGTGGGAAATGGTCGGCGCCGTGATCAAAATGAATG
-AGAAATGAGAATGAAGAACAAACATTGTGTGTGAGTGTGTGTGTGTGAGA
-CGAGACGAAAATCAATCAATTTCTGGAAAAAACAACACATATATTTTCCC
-GGCGAACTTTCTGTTTGAGGGACCGTACGGAACAGGACCCCCCTGAAAAA
-AAAAATCCGGAAAATCCTAAGCCTAAATAGCGAACGCTCGCCACTGACGC
-CAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAGCCCAAGCCTAA
-ACAGGAACCCCCTGAAAAATCAAAAAATCCGGAAAATCCTAAGCCTAAAT
-AGCGAACGCTCGCCACTGACGCCAAGCCTAAGTCTAAGCCTAAGCCTAAG
-CCTAAGCCCAGCCCAAGCCTAAACAGGAACCCCCTGAAAAATCAAAAAAT
-CCGGAAAATCCTAAGCCTAAATAGCGAACGCTCGCCACTGACGCCAAGCC
-TAAGCCTAAGCCTAAGCCTTGGCCTAAGCCCAGCCCAAACCTAAGCCCAA
-GCCTAAGCCTTTCACCTTCCTAATTTTCAGGCAGGCCCTAAAAACCGCGC
-CTGCCTACCATGGAAGCCCTAATCTGTGCGCTTTAGATTCTGAACCCTTA
-AATATGTTGCACGGCCGGGCAAAGGGCACATCAGTGTAAACGCGCTCTAC
-TGATAATTCGAGTTTAGCCAGGTTTGGGCGCGTTTCAAGGAAAAAAACTT
-TGGCTCAAAAAATTGTGAATTTATTTTCGAACATTTTTATATGCATCACA
-AAAATGTTAGACCACCCGTTTTTGAGAAAAACGCGCCCAAACGTCCAGGT
-ATACGGTAGACAAATTGCGTACAGGTACCACTGGGGGGTCGTGTTTGGGC
-TTTAGTTTAGCTAAGGGAATCTGTAGCGGCCCAACGGCCTAACTGCAAGC
-CTCAGCTTATTCGCCATAGGCTTGTCTGCCGTATTTCAAGCCGATTCCAA
-CAAAAAACTTCCAGCCAATACTTCAACATCAACAACTCGCCGTCAGAAGC
-GCAAATCAAGGAGATGTCACAAAAAGCGAGCCTTCCGGAGAAAGTCATCA
-AACACTGGTTCCGCAACACACTTTTCAAGGTTTGTTTATTTATTTTACAA
-AACTATTCATATTGTTATTAGGCTCGGAAATGAGCGAGGTGAGAACATGA
-GTGTGGTAATTAGTCATCGGATGAATACCCACACAAGAGGGAGAGCAAAC
-AAGAGAGCAATTGAGACGAGGGAGGGAGAGAGGGAGAAAATAAGAAAATG
-TTAATGTCAGTTGGGTGCCAGGCGCTCGGCCAGGACCACAGGCCGGGAAC
-CATTTAGTTTTGATTACGATTTCCGTCGTGACTCATGATGGGAATTGATA
-TTTGTGCCTGTGGTGATAGAATAGTTAGAGCAACTATCAGGAAGGGGACA
-AGTCGCAGTGCGAGACTATTAGAACCTGCAAGGTTTATTCTGATAGATTT
-GGGACTAATAAGGACTAATTTGGTAGAGACTAATTGGCTCTCTTGATATA
-TACCAGCTTAATAATTTCTACAAAAAAAACTGTAAGAACGCTTCGAGATT
-CGAGCTTCGGGAAAGCTTAAAGGATGGGTACCGAAAAATTTTTTTTCCCT
-GATTCCGAATATCGATGTGGAAAAATTCAAAAAAAATTCCCTGATTTTAT
-ATTTGAGCTTGAAATCACGATTTTCATTTGTGCCCACCTGGTGTCAGAAT
-GTCTCATTTTGGATTGATCTACGTTGATCTACAAAAAATGCGGGAGAAGA
-GACGCAGAGTTCTCAACTGATTTTGCATGGTTAAGAACGTGCTGACGTCA
-CACTTTTTTGGGCAAAAGCAAAAAATTCCCGCATTTTTTGTAGATCAGAC
-TGTAATGAGACAGCCAGGCACCATGTGTGTGCCCCGGTTCAATTTTCAAT
-TTTTTAAACCAGTTTCTTTTTTTTTAGTCGATAGGTTTTTTTCTGAAAAA
-TATTTTTTTTGCCAAAAATGAATGTAACTGGCTAAAATAAACTAAAAATA
-AAACGATGCAAGCGCGCTCAAATGCGAATTTATTTGGGCGCGAATTTGAA
-AAAAGTGATGCGGGCACAAATGAAAATCGGCGATTTTAAGCCTAAATATA
-AAATCAGGGAAATTTTTTTGAATTTTTTCACATTGATATTCGTAATCAGG
-GGAGAATTTAAAGCCAATTAAAAATATTTTCCAGATTTCGGTGCCCCACC
-CTTAATGAGATAAAAGAGCAAAAAAGGTGTTTTGTAACTTTTTAAGTTTT
-TTCTTTTTCAGGAACGCCAACGCGACAAGGATTCCCCGTACAACTTCAGC
-ATCCCTCCCCAAATGGGAATCGACTTGGACATCTACGAAAAGACCGGCGA
-GACAAAAGTACTGTCGCTTAGCAATGAAGCACCAAAGTCTGAGTTGAGCT
-CTGCGCGCGCCACACCGACAATTCCGACTCCGATACCGCTCATCGTTGAA
-GAGAAGAAACCGGAGCCAAAGAGCCAGACACCATCGTCTTCTTCCTCTCA
-GCTCAACCTGCAGGCTATGTTATCTCAGATGCAGGGAAGTTTTTTCGACG
-CGTCAAACTTCATGTCAGCATCAGTGAATCCGATGACACCGAGCACTCCT
-TCCTGCAACACGTCGTCCAGTGGACGACGAGCCAATCGCACGAGATTCAC
-AGATTTCCAGCTGAGAACTCTACAGCAATTTTTCGACAAGCAAGCCTACC
-CGAAGGATGATGATCTTGAAGCGCTGAGCAAGAAGCTTCAGCTGAGTCCA
-CGTGTGATTGTCGTCTGGTTCCAGAATGCACGGCAGAAGGCCAGAAAGAT
-CTATGAGAATCAGCCGAATCACGAGAGTTCCGATCGATTTGTGAGAACGC
-CGGGATCGAACTTTCAGTGCAAAAGGTTGGTTTTAGTGTTGGAAATTAAC
-ATTTAAATTTAAATTTTCCTAAATTCCAGGTGCAGCCAAGTATTCCAACG
-CTACTATGAACTCATCCAACATCAACAGAAAAAGTGCTACAAAGACGATG
-TAGCAGCCCTGGCAAGTGACAACAAGAGTGTCGAAGAATCACTGACGGAA
-GAAGAGAAATCCCAGCTTCTGGCTCAACAACAGGTCGCCCAACTAGCCAG
-CACTCTGGAGCTCCCAAAGTTCCAGCCGGCAGAGCTTTTGAAAATGATCG
-GAGCTAATTCGGTGACTCCATCCTCGTCGGCTGCAAGTCAGAAGTCTAGC
-AACGACGTTCTGCTGAAGATGTGTGAATCGATTGTTGGTGGGAGCACACC
-TAGTACATCATCGTTCCACAAACTTTGTATATTCTGCGCTCAAGACTTCA
-AGGATCGGAGTGCGATGAGTGAGCACATGGCTCAGAAGCATCCCCAGCAT
-ATGCTTCTTCCAAACTTCGATCTCGACATGATGCCAGACGCTGGTGGTGC
-AGAGCTTCTCATGGATCTTAAGGACTCTGCGTTGGATCTTTCGGGCTCTT
-CAGTCGACTACCGGGATTCTATCTCAACATCTCCATCTCGATCCGAAGAT
-GATGTTCTCACAGAGGCTCTGGATGATTCTGCATTTGCCGCGTTCGGACT
-ACAGCTTGCAAATTCCACAAGCGGCTCGGAATGCAGATCTCCGGCGAGCA
-ACAAGAGATTCCGAACTCATCTCACACCGATGCAAGTGCAAATGATGAAG
-AGCGTGTTCAACGAGTACAAGACCCCATCCATGGCAGAATGTGAGCTTCT
-CGGCAAGGAAGTCGGCCTTCACAAGCGTGTCGTTCAAGTCTGGTTTCAAA
-ATGCGCGAGCCAAAGAGCGAAAGACGCGCGGTGCAGTTGACGAGGACTCT
-CGATCCGGAGAACTTCACTGTGAAATTTGTGATAAGACGTTCGCGACGAG
-GCTTTCGCTGCAAGACCATCTGTTTGCCGAGCAGCACATTGAATTTTTAA
-GGAATAATCTGAAACGGGAAGGGGTCTCCGAGTTGACGACCGCTTCGGTG
-ACCGAGTGCTCTCCAGAGAAAAAGTAAGAAATTTAATTTTTAATTTAATT
-TTACATATATCATTACCCTATATAACCTTAAAAATTTTCCAGAGCAAAGC
-TTCCGAACCCGCTGGATCTTGCCAGTTTCCCGTTCCTCAACACGTTCGAC
-ATTCAAATTTACGGAACACCCATCGCCTTTCTGCAGGTGCCTGATGAGAT
-CAAAAAGCAGATCACTGATGATATCACGGCTGGAAAATCGCGAACCACGT
-TCTCCCAGGACGGTTTTCCGCTCGACAAGTTGAAAGAGTCGCTGCCCGAG
-GATGAGAAATCAAATTTGACAGTAACCCAGAAAGATGTGAGCTTTTTTTT
-TTTGGGAAAAATTTTGAACAATTTGGCAATTTCAGGTCGGATGGGCGTGC
-CCGGCATGTACATTTGTCTTCCAAGAAGAAAAGAAGCTCCGTGAGCATCA
-AAAAGCCATGTGCCAAAGTGATAAGGTGGGCAAGAAATTAGGAAACGGGC
-TTGAAGTTTAGCTTATAGTTAGGCAAGTGGTGTCAGACTGTCTTTGATCT
-ACAAAACATGCGGGAATTGGAATTTTTCCCAGAAAAATTGTGAAGTCAGC
-ACGTTTTTAACCATGCAAAATCAGTTGAGATGTCTGCGTCATTTCTCCCG
-CATTTTTTGTAGATCTACGTAGATCAAACCGAAATGAGGCACTTTCTGAA
-TCCACGAGCTAGGCTTAAGCTTAGGCTTAAGCTTAGGCCTTTTCTCAGGC
-TTAGGCTTAGGCTTATGCTCAGGCTTAGGCCTTTTCTTAGGCTTATGCTT
-GGGCTTAGGCTTAGGCGTAGGCTTAGGCTTAGGCTTAGGCTTATGCTTAG
-ACTTAGTCTCACTATCAGTCTTAGGCTTAGGCTTAGACTTAGGCTTAAGC
-TTAGGCTTAAGCTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTT
-AGGTTTGGGCTTAGGCTTAGGCTTAACCTCAGGCTTAGGCTTAGGTTTAG
-GCTCAGGCTTAAACTTAGGCTTAGGCCCAGGCTTAGGCTTAGGCTCACAC
-GTTCTCACGTTCTTAACCATACAAAATCAGCTAAGAACTCTGCGTCTTTT
-CTCCCGCATTTTTTGTAGATCTACGTAGATCAAACCGAAATGAGGCACTT
-TCTGAATCCACGAGCTAGGCTTAAGCTTAGGCTTAAGCTTAGGCCTTTTC
-TCAGGCTTAGGCTTAGGCTTATGCCCAGGCTTAGGCCTTTTCTTAGGCTT
-ATGCTTGGGCTTAGGCTTAGGCGTAGGCTTAGGCTTAGGCTTAGGCTTAT
-GCTTAGACTTAGTCTCACTATCAGTCTTAGGCTTAGGCTTAGACTTAGGC
-TTAAGCTTAGGCTTAAGCTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTT
-AGGCTTAGGTTTGGGCTTAGGCTTAGGCTTAACCTCAGGCTTAGGCTTAG
-GTTTAGGCTCAGGCTTAAACTTAGGCTTAGGCCCAGGCTTAGGCTTAGGC
-TCACACGTTCTCACGTTCTTAACCATACAAAATCAGCTAAGAACTCTGCG
-TCTTTTCTCTCGCATTTTTTGTAGATCAACGAAGATCGAGCCGAAATGAG
-GCACTCTGACATCACGTGGGCTAAGACTTAGGCTTAGGCTTAGGCTTAGG
-CTTAGGCTTAGGCTTAGACGTAGGCTTAGGCTAGTTATTTGTAACTTTTT
-TAAATCTCCCCCGAGTCAAAAAAAAAAACAATTCAATTCCAGACGCTAAC
-CCTGGTGCAAACCCACTACTCGTGCAAAAGCTGTCAAAGTGATTTCTGTC
-TTCAATCCGAGTATCAATTCCATCTCTCAATGCCTCCTCATACTACTACT
-ACTACCACGACGACGCCATAACAAAACCCCCCAAATAGTCACCTCATGTC
-ATTTCATTTGCCGTCTTCACTCAAGGACCTATTTCCGTCTCTCTCTCTCT
-CTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTTCTCCTCTCG
-CCTTAAAAAAACCACAACTCCTTATCCCGATCTGAGCTCACTTCCTATCC
-CCCAAAGTAATTTCTTTGTAATATCTATATCCACTTTTTTTTCGACACAC
-TACACCACATCCCGCCGCCTATCCCCTCCCCCCCCACCGCTTTATGACAC
-AAAAACTGGTTTCGCTTTTGTCTTCAATTTCACCCCAACCGCCTGCAGCT
-TCTCATAATAATTAATAATTTTTCTTACCATGCACAATGATTTTGATAAA
-TATATATATATATAGTCATCAGGATTGCCCCCTTTCTAGGATATGTTTTT
-TTTTGTCTTCACACAATTTTCCCATTTTCTATGATAAGAATTATTTCTTT
-GTCCGGTTGACACATGTAGATGTTCCCCTTCCAATTTTTAATAGATTTCT
-ATTCTAGTTTTTTGCAGGCCTCACTATTCTATTGCAATAATCACTTGGAT
-TTCATGTATGGAACGCAATAATAATTCAATAAAATATTGGTACTTCTTTT
-TTGAAACACACTAATTCAAACTCACGCGGTTCCAGGCTGTCCCATTACGG
-TTTGATCTACTAAAAATGCGGGAATGTTTACTCCCAACAAAATGTGACAT
-CATCAGCACGTTTTTAACCATGCGATATCGGTTGAGTACTCTGCGTCTCT
-TCTCCCGCATTTTTTGTAGATCAAGCCAAAATGAGACACTATGACACCAC
-GTGTAGACTTAAAATTGACTGAAACCACCGAATTTCATATTGAAACTTCT
-TGAAATCTATTCAAAAAAAAAGTTATGAAGGCTCAAAAAATGGCCTAAAA
-TTTGTTAATTTAAACAAAAGACACTTAAAACGGTGTCTTTTTGAATTTTT
-CCGTTTTTTTAAACATATTTTCATAAAATTTACTTATTTTTCAAAATAGA
-TGTTGGAACATTTATAGGATGCGTTCAATTTTGCCATTTGAAATTGAAAT
-TCGGAAATTTCAAAAAAAAAAAAAAAAAGTGCGAAACCAAAATTTTCCGA
-AAATTTTCGGCAATTTGCCGGTTTGCCGGAAATTTCAATTCCAGCGATTT
-GCCAATTTGCCGAATGGCCGGAAATTTCAATTCCAGCAATTTGGCGATTT
-GCCGATTTGCCGGAACCTGCTAACCTACCTACTAACTTGCTAATCTTCAA
-GGTTTTTAATGAGTTTTCAATAGAAAATTCGGTGTTTTCAGGCAATTTCG
-AGAAAGCAATACAAACGTTTAACAAAAAAAAGACGCTTTTTCCTCTTATC
-CGATTCTCAATTCTCAATTTTGCCTTATCAATTTATCCTCTCCTCACAAG
-GTGACACACACACACACACACACACACACACTCGTTTCTCGACAAAAAGC
-TATGAGCTAACAAGCGCCTTCTCGCGTAAGAATACATCCACTGATAAGAC
-ATCTGATAAGAGTGGAACCCGTCCGCCATTGTCTCGAGAAATACACGCCT
-CCGCCCGGGAGGACAGGTTATCCCACCTCGTCGCTTCACTTCATTGTTTC
-AAACGATTCCATCGGCTTGCGCTTGGATTTTCTCTTATGCAACTTGCCAT
-TCTTCTTTTATTGCTTAACATCATGGTTATTTATTAGGGAAATTGTTCTA
-CCCTGACTTGAAATGACTGAAGACGGCCTATTTTACTTTAATTTGAAGAC
-TCAGAAGACTACTATAAGCGGTCATTCTTGTTGCGAAAATTTCTGCATTT
-AAAGGTGGAGTAGCGCCAGTGGGAAAATTGCTTTAAAACACGCCTATGAT
-ACCACAATGACCGAATATCATGATAAAAAAATTCAAAAAAATTTTCTAAA
-TTTTATATGATTTTTTGAAAATTGAAAAAATCTAAGGTTTTCACTTAATT
-CATATTTGAATTACCGCCAATTGGATTTGCTCGATGGAGCGCACTTGCAC
-GTTTTTAAATTTATTTATTTTATTTTTTGTTATTTTCCACCGATTTTTAA
-TGTTTTCGGTGTATTTTTGCTTGAATTTTAGAGAAAAAGTCAAAATAAAT
-GCAAATTTTCGATTAAAAAGCAAGCGTACAGGTAAATCAGTGAAATTAAT
-CAATTCAGGTTCATTTTTACGCCTGTAAGCGTGCTTTTTAATCGAAAATT
-TGCATAAAAAACATTTAAAATGGGTGGAAAATAACAAAACATAAAATAAA
-TAAACTTAAAAACGTGCAAGCGCGCTCCATCGAACAAATCCAATTGGCGG
-TAATTCAAATAGGAATTAGGCAAAAACTGAGATTCTTTCAATTTTCAAAA
-AATCATATAAAATTTAGAAAATTTTTTTGAATTTTTTATGGTGCGTCCAT
-AGAAAAACCGGAGTTCCTCGCTTTTTTTTCCTCGAAATTCAAAAAAGTAG
-GCGTGGCCAACCAATCAGCTGTTGTTTCTTGTTTTCTCATTGCTCAGCTT
-AAAATTTTACAGCCTCTAATTGGTTGAACACGCCCACTATTTTGAAATTG
-ACCAATAACAAAGCGAGAAACTTCTTGTTTTTTCCGCAGACTATGGACGC
-TTCCGCACGCGGGAAATTCCCGTTTTCCGCAGACTATGGACGCACCATTA
-TCATGATATTGGGTCATTGTGGTACCATAGGCATGTTTTAAAGCAATTTC
-CCCACTGGCGCTACTCCACCTTTAATGCATTCTGCGTCTATTTTATACAG
-TTCTGACCATAAAAGCACACAAATTTTTGTCTCAAAGTTTAGGAATATAT
-AGATTTAAGGAAGAAAGTTTTAGTAAGAAAAAATATAGTCTTCTTCATGT
-TTTCTTTTTTTTTACAATATCCATTTGCCATCCGTTTTTTTTTCTGCAAC
-CTTCGATAAATGTTTGCTTGGATAACTATGTAAGGTGCTTTGAACACTCG
-GCATTTGGGCTTCTTGCCCAAGTTTAGCCCAAAAATATTAACTTGGATCA
-GAAGTTGGGCAATACTTTGGCAAAACTTGGATTCAGGCAATATCAAAGTT
-TAACCCAAGTTTCACCCAACAAACTTTGGCCTAAACTTTTTTTGTTTCGA
-ACTTGCGTAGAAGTTTTTGCCCAATTTTCGCCCAACTTTTGCCCAACTTT
-TGCCCAAGTTTAGCCAACTTCTGTTCCAAGTTAATATTTTTGGGCCAAAC
-TTGGGCATGAAGCTAGAGCCGAATGCCGAGCTAATTTTATTTGACTCTAT
-CCGAATTCTGCTAATTCTCAAAAATCCCCCAATTGCCAACCATTTCAGAA
-TGCATTGGAGTAGTTGGGCGATAGCGCTCAACGTGCTCGTGCTGGCTTTG
-GCCGACAGTGCTCCTGAAAGATTCCCAGAGGATCATGTGGACCTGGTACT
-TCCTATGAAAAGTATCCACCATTTCACCTAAACGTTTCCTAATCATCTTG
-ATTACAGTGAAATACGACAGTCATCTTCGACAAGCTGATCTTCCACCGCA
-CTTCATTGGTGCCAATGAGACGAACTTGGTTCCGCTCACCTTGAGATTGG
-AGACTAGGAGGAAGAGATGCTCGTGTGGATGTTCGGGATGTGATCTTTTC
-CCGAATAGATCTTGTTGTTCGAGCTGTAAGTTTGCGATTCTATAAGACTT
-GTCAACGTGGTGTCAGGCTGACCCATTACGGTTTGATCTATAAAAAATGC
-GGGAAGTTTATGACCAGAAAAAAATGACGTCATCACATTCTTAACCATAC
-GAAATCAGTTGAGAAATCTGCGTCTCCCATTTCTTCTCCCGCATTTTTTG
-TAGATCTACGTAGATCAAGCCGAAATGAGACAATTGAAATTCCAGCTTGC
-TGCTCCTCTCAAAAACCAATCCCACTTGCCTGCTGTCCGCCACCTCCCCC
-ACCAAAACCGTGTTGCCAGCCAGCCTTCGGCCCTTGCTGCCCGGCAACCC
-CAAACTGTTGCCCGAAACCCTGCTGCCGAGGTCGTCGCCCCGAATACGAA
-GAGTACGAGGACGAGGAAGGCAACCCTGGAGGCGTCCCAGCACCACCAAA
-CCCACCAAGAACTTGCTGTCCTCCACCAACACCTGCTGCTCCACCACCGC
-CACCACCTCCACCACCACCGGCTCCGGAAGCTCCAACGCAATGCTGTGGA
-TCACAGCCTTATGGAAGAACACCGTGCAGGTCCGGATGTCCGAATGGAGA
-TTGTGGATGCGGAAGACCTTGCTGTTACTATCAGAACCCCACATGTTGTA
-ATCAAGGGCAAAAGGCTTGCTGCCCACCTGAACAGCCTTGCTGTCCTGAG
-TTGAAGCTGGATAACTGCCTCGCTTCGGTCCCACCTTGCCTTCGCGCCTG
-TCCATCGTGCCCTTGCAGAAAACGTCTGATGCTTGGGAAGAGAACTAAGA
-GAGACGCACCGGGGCTTCATTGCCAGCCAAGTAAGCTATAAGTTTAGATT
-TTCACGTAGTGTCAGGCTGTCTCATAGTGGTTTGATCTACAAAAAATGCG
-GGAATTTCTCGCCCAGGAAAATGTAACGTCAGCATCAGGGCTGGGACCAA
-AAAAAAAATTTTTGGACCAAAGAAGTTTTTGAAAAACCAAAAAAACCAAA
-AAAAAAACAAAAAAAAAACCAAAAAATTTTTGATATGCTTAAGTTGATTT
-TTAATGGGGTTATTCAAGTAATGTTGCAAAATGTATTAAAATACATTTAT
-GACGTCACAACTGTGTTAAAATACATGTTTTAATGTATTTTAATACAGAA
-TAGTCTCGAGTCGACACTAGACACGGTAAACTTTTTTTTTAGATTTTTCG
-TCAAAATACCAAAAAAACCAAAAAATTCCCAACAGCATGTTCTTAACCAT
-GCGAAATCAGTTGAAAAGTCTGCGTCTTTTCTCCCGCATTTTTCGAAGAT
-CAAACCAAAATGAGACACTTTGACACCACGTGGATTTTCAAAACGCTGAA
-AATAAGTAAAATAAATAAAAAATTTTCAGTCGGACTCCTTGGTCAACAAT
-CCCCACCGACTCTGATTTCAAAGCCGGTAAAGACCATAATAAAATCAAAA
-TCCCGCGTTGCTGGAACCAAGACATCTCAAGTGTCCGTCACCAAAAAGCT
-CATCGAACAATCCTCTGACCACGTGGAATCGCCTCCAACAGCCGGAAGAC
-TCTACGACTTCCGAAGAGCCCACGTTCGAGTCAAGAGAAACATGAACTTT
-GGAAATGGAGCATGCCAGCTGTGTCTGAACGGAACTCCGCTCAAGAGAAC
-CAAGCGGTCTCTCGATTGTGTTCCGTGTACCTACCTACAACCACAATACT
-CTGATTGGAACCCGTTCCTCGGAGATCAAACGCCACGCGGATCGCAGTCG
-CCAGTTGGAACTCCACTCGCCGGGCACAGAACTAAGAGAGCTGGCGTGAG
-TTTGACTCATAGAAATTAACGAAGCTAAATTTATTTTTGCAGTGCCTTCC
-TCATCCACAATGTACCCTGCATGTCCGTCGCTATAAGAGAAACCTGATCG
-GATCCCAATATTGTGAGCCATGCAATGGACACTACGGTAGAAAGAAGCGG
-GAAGCCGAGAGAGATCAGTGCTTGAAAAGAGAGAAAAGATATGCAGATGA
-ACAGTGTGATAACGATGAGTTCAGTATCAATGAGCGAAGCAAACGACAAG
-CCTACAATCCAAAAGGAATTTTGGATATCGTGAAGCTCCTATCCAAGGCC
-TCCTCAGGTGGCAACAATCCAGGAGGATGCATGAAGTTCCCAGCCTGTGT
-TCTGGCTCAGAAGAAGAGAAGAAAGAGAAATGCAGATCGGCTCGACACGT
-ACTACAAAGCTGTGGAGGAGCACAAGAAGCTGGTGGAAGAGTACGAGATG
-GCGATGGAGGAGCACAAGAGAGTCAAGCGGCAGTTCTTCGCTCCGGATAA
-TGCTGCATCCTGTGTTCCGTGTCCGGCATGGGTGACACTTGCCTTGGCTA
-GCAGAAAGAAGAGAGAAGTCGAGAAGGTGGAGAAGCATATGACGATGAGC
-GAAGCTATCGCGGATATCAGAGCAAAGAAGGGGTATAAGGAAGGATTTGA
-TGATGATGATGAGGTGAGGACTAGACCTGAAATTTTAGATCCTGTAAGAA
-CTTTTTGAAAATTCCAAAAAAAAAACCCCCTAATTGAATCACGCGCGCAC
-GCGCCACTGAGAAGGATACTGTATTCGCGGCGAGACCACCTGCACATCTA
-ACTCCCAAAAGTGACGAATTTGGCCTAAAATGGACTTTCTTCATGGGATT
-TCCACAGTTTTCACCATTTTTTTGACACAGTTCATGACTTTTTACACTCA
-AAAAATTATTGGCGTGGTCATTTCACAATGATTTCAACAATTTACTGGAT
-TTTACGCGTGTACTTCATCGTGGCACACCAAAAATTGATCTGGTTCATGT
-GGTGTCAGAGTGTCCCATTTTGGTTTGATCTACGTAGATCTACAAAAAAT
-GCGGGAGTTGAGAGACGCAGAGATCTCAACTGGCGTCACATCAATGCGGA
-TTTTAAAATTTTCATTTCAGGACGACGAATCCTCTGAGGAAACCATCGAG
-ACCCGCAGAAAGCAACGCCGCTCCTGCCAACAAAGTGACGATTGCCTGAA
-CAACGTCGAGTACGCAGTCTTCCAAAAAGTCTATGCAGACAAGAGAACCA
-AACGAGAAGCCGTGTTCCGTCGTAAGAAGTGCTCGAGGTGTGGAGTCTCT
-GGGCTCACGCCACATCGTGTCAAGAGAAACTTCGGGCAGCCGAATATCAA
-CGTCTCGGAGCAGAATTGCATGGCATTCCCACAGTGTCGGCATAGAGTGA
-AGAGAAACTTTTTGGGAGAAGACTGTAACATCTGTACACAGGATACTGGT
-CTGAAGCGGAGGAAGAGAGACTTCGGAACAGCGGTAGGTGTTGGTTTAAT
-GAGCTTCCTTATCTTAAAGTTTTCAGCAATGCTACCCATGCCCAGGAACA
-CGTTCATAACTTGAAGCGACTCCCTCCGATTCTCACATATCACATAAATA
-CCACCTCGTAATAATAATTCAACATGACTAATAAAACAAATAAGTACATA
-CATACATTTATATTAGCTTTTAGCACCCGTAGCAATTTGGAGCAAGAAAA
-TATGTGTAAAGAAATTGGAGATGTAGTAGATTTGGTCGTTATAGTGATCG
-CAGATCTTTCAGCTCTTTGAGCCGGAATATTGACTGGCTTGGAGCCAGGA
-GATGAACCTCGCGGGGGAATGAGGCAAAGTAGGGGTGAAGCATTGCACTG
-GCTGCGGAGACACGGCTTTCCGGGCGGAGCTGTAATTTTGAGGGTTACAA
-GATAGGTGTAGCTCGATGTCGATTCATTTAGACTAGCATTGCAGCCAGGG
-CTTAAGCTTTCGGCTTGAGCTTGCACTCAAAGATTGCTGCTCAATATAGC
-TCGCGAAGACTGATTTGTCAAAGATTAGACTAGTAGGCCTGGACTGACTT
-AAAGGTGGAGTAGCGCCAGTGAAAATTTTGTCAAAATACATACATAATGA
-TCCGAAAAAAAAACCAAATTTCATAATAAAACAATCCAAAAAATTAGATT
-TTTCACAATTTCAGGTCAAATTTTTGGCAAACTGCTAAAATTTTGAAAAA
-TGAGCAATTGAGGAAATCTAGAGCAATGTCGCATGTTCCGACCCCTACAA
-TATTTTAATACAAATAATTAAAACACAATTACAGTATAAAAATGTAGGAA
-AAAAAATTTTTTTTTTGTTGGTCGACTTCCAAAATTATGAGTGGTAAAAT
-TACAGTAAATAAAAAATTTTCAAAATTTTTTTGAAACGTTTTATTATGAT
-ATTCGGTCTTTTCGGGACTAAAGGAGTGGTTTTTACAAGTCTACTTACCT
-GAAGAAGCATCCCCAGAAGTTCCTGACCAGTCTTCAGAATCTTCGTGAAC
-ATCGGGTTCACCGCGATGAACGACAACTCCCGATACCTGGGGAACAGTTC
-AGGGGTGTAGCCTGGTAATGTCTTTACCTGAAACAAACATCTTTATCTCT
-AGATTTTAGATTCCCTCACCTCCGGCCACTTTTTCTCGTCTGGAGTACCC
-CGAATGCTGAAGATCATATCCAACTGGTCCTTGGTGCCGGGGTAGTGAGA
-GTCCTTGGATCCCGGGAACAAAGCGGCGCCCGTGCAAATTTCAGCGAATA
-TGCAACCGACTCCCCTGCAAAGTTAGTAGATATAGTTGGTACCTTTTATA
-AAATAATATCCTCCTACCACATATCCAGGGAAGTTGAATAGTCGGTACTT
-CCCATGAGAACATCAGGCGGGCGGTACCATAAAGTGACCACCTCGTGAGA
-ATATGTCCTACTCGGCACAGATTTCGCCCTGGCTAGACCAAAGTCTGCGA
-GTTTTAAAACACCGTCTTCGTCGAGAAGCAAGTTTTGTGGTTTTAAATCT
-CTGAAAATCAGTTTTTATCAAGAGTTATGGCCGCAACGGCGCCTCCGCCG
-ACCCCAGCGGTCGCCGCGCCGGCCTCCGCGGAACCCCGAAAATGTCCGCC
-GCTCCAAACAACCACTTTTTTGCACTACGTTGCGCACACACCAGGCTACT
-CATTTCACGCCAAGCTGCGGAACACCGAACGTGTCCGCCGCTCCAAATAA
-CTCCCTTTCGCAATACGTTGAGCACACACCAAGCTGCGGAACTCCCAACG
-TGTCGGCCGCTCCGAACAACCACTTCTACGCACTTCATTGCGCACACACC
-AGGTTACTCATTTCACGCCAAGCTGCGGAACCCTGAACGTGTCCGCCGCT
-CCAAACAACTCCCTTTCGCAATACGTTGAGCACACACCAAGCTGCGGAAC
-CCCCAACGTGTCGGCCGCTCCGAACAACCACTTCTACGCACTTCATTGCG
-CACACACCAGGCTACTCATTTCACGCCAAGCTGCGGAACCCCGAACGTGT
-CGGCCGCTCCAAATGACCACCTTTCGCGCTTCAACGGCGTCGGCGTGAGG
-CCCGAATTTCGCGCCTCACTCTGCTGGGAGCCCTATCAACACTAGGGAGC
-AGTTTGAAAACTAACCTATGAAGAATCTTCTTCCTATGACAAAAATCGAG
-TCCGCGGAGAAGTTGAAAGAGGAGAAGCTTGATGTCAATGCTATCCAACC
-CATAGACGTTCTGCTCCAGGTACTTGCTCAAATCCATTTTCATGTACTCG
-AACACAAAAGTTAGCTGGTGGTGTTGATAGAAGATGTCGTGCAAAGAGAC
-GATATTCGCATGACGGAGGTTTCTGAGAAGCGAGGCTTCACGGATAGCGG
-TGAATGGGAGACCTTCTTGAAATTGAAGTTTGATCTCTTTCAAGGCGACT
-ATGGATCCGTCAAGTCTGAAAATATAATTTAGTTTGGTAATATCAGCTGT
-TAAAATATCTAACTTCGATTCGCACTTATACACCGTTGCATAAGATCCTT
-CCCCCAGCTTGTCAATTCGTTTGTACAGATCATTCACATCCTGCGGTGTC
-ACTTCCTCCTTCGCAGGAAGCGTTATCGTATTTGGATCGTAGTGTGCTGA
-TCGTGGTCGACGTCTTCGAAGATGTGTGAAGTCGGCCACAGTGTTGCTAG
-ATGGTGGTGGTGGCATTGATGGAGAGTTCTTGTTTAGGGGCACGGTTGAC
-ATGGTTTCAGATGGATTGTTGGAGCGGGAACGTGATTGGCGGCTGAAATG
-GTATTACTAGGGTTTGATTCGGAAAATTTTCTTAGAAAAACAGTTTGGCG
-GGAAGTTTAAATTTTCTGATTAAAAATGTTGGCGTAAGTGGTGTCGAAGT
-GCCCCATTTTGGTTTGATCTACAAAAAATGCGGGAGTTGAGACAAAGACT
-TTTCAACTGATTTTGCAGGATTAAGCTGACGTCACATTTTCCTGGGGGAA
-AAATCCCCGCATTTTTTGTAGATCAAGCCGCAATGAGACAGCCTGACACC
-ACGTGTTGACGGGATATTTAAATTTTCTGAGAAAAACATTTTGGCGGGAA
-GTTCAAATTTTCTGAGAAAAACATTTTGGCGGGAAATTGAAATTTTCTGA
-CAAAAAAATTTTGGCGGGAAATTGAAATTTTCTGACAAAAAAATTTTGGC
-GGGAAATTGAAATTTTCTGACCAAAAAATTTTGGCGGGAATTCAAATTTT
-CTGGGAATTAACTTTGGGGAGAAGTTCAAATTTTCTGTAAAAATTTTGGC
-GGGAAATTGAAATTTTCTGACAAAAATATTTTGGCGGGAAAATCAAATTT
-TCTGAGAAAAAAAAATTTTGGCGGGAAATTGAAATTATCTGACAAAAATA
-TTTTGGCGGGAAAATCAAATTTTCTGAGAAAAAAAAATTTTGGCGGGAAA
-TTCAAATTTTTTTTTTTTGAAAAGAAAATTCTACGGACCGGAAACGGCCC
-AACTACGGCTCAAGAGCCGTCTCGGTCGGTAAATGTGTTTTTTGCTCTAA
-ATAATGCATTTAACGACGTAAAAATGCTTAAATTAGCCAACTGGTATCAT
-AGGTATTAAAAAAATTCGTTTTCTTAAAATCCATTTTTTCCTCTTAATGG
-CCATTTTTTTACATTCCCCGTAGTTTGCCCGTAATTGGTCCGTCCCGCTT
-TTCATATCCGTAGTTCACCCGTTAATGGTCCGTTCCCGGTCCAAGATCCG
-TAAACGGACCGTACCGGCTTTGCCTGTGGTCAGATATAACTAGTAAGTCA
-AGTGGTGTCAGGCTGCCCCATTATGGTTTGATCTACTAAAAATGCGGGAA
-TTTTTCCCCCAGAAAAACGTGACGTCAGCACACTCTTAACCATGCGATAC
-CAGTTGAAAAGTCTGCGTCTCTTCTCCCGCATTTCTCGGAGATCAAACCA
-AAATGAGGCACTTTGACACCACGTGGTAAGTTATAACAAACATAACAAGG
-TGTCGAAACTACTGTAATTATAGTCTTACTTCAATATACAACCTAATAAG
-AATCTCCACCACTTACCTCAAAAAGCTGAAAATATTCTTATTATGATGTT
-CTGGTGTGCTTCCACTTCCGGACCCCGATGATGCCCCATTCACATGATTG
-GAGTGCCATGATTGTGTCATTTCATTTGTTCCGTTTTTCGAGATCGGAGA
-TTTGGTGGAGCCTCCTGAAAAAACAGAAATAAATGTGGAATTATATGGGG
-GCTCATATGTTTTCGGAACTAACCTTTTTGGGAGAAGACTCTGGAGAGCA
-TTTTTGTGTAAACTGACTAACTTGTGCCACCCCCCGCACCCCATAGAATA
-AATTGGCTAAAATTTCGAAAAAAAAAACTCGCCACCGCCGTTATTCTTGT
-ATTTCTTCTCCTTATTCCGACTCCGACGCAAAGTGAAAATTGACGAGGAC
-GGCTGGAATAATGTTTTGTGTTTGTGTCTTGTGGAAGAGATGCAGAATCG
-CCGGAAGTTTAGAGGGGGTGGCGTGACTTACTGACCTTCCGGGTGCTCGG
-CGAGCCGTCCACGTCCTGAATTCGTTGCGGCGACATTGTGGTGATCTGGA
-ATATGTGGAGCGTAATCGAAATATTTAGGCTTAGGCTTAGGCTTAGACTT
-AGGCTTAGGCTTAGTCTTCGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAG
-GCTTAGGCTTAGGTTTAGGCTTAGGCTTAGGCTTAGGCTTGGGACTGGGC
-TTAGGCTTGAGCTTTGGCCTAAGCTTAGGCTTAGGCTTACGCTCAGGCGT
-AGGATTAGGCTCTGGCTTTGGCTTTGGCTTAGGCTTAGACTTAGGCCTAG
-GTTCACGCTTAGGCCTAGGCTTACAAGAAATATCCTCATTTACCGACCGA
-CTGTGGCCTAGGATTTCAAAAAATGACCCTTTTTGAAAAATCGAAAAATC
-GAAATATCGACGAATTTTCGTTTTTGAGGCGTTTTTTTAATTTCAATTTT
-TATAATTTTTTTCGGTTTTTCGATTTTTCTTGAAAATACCAAACTCACCC
-TATGCAAGTTCTCCGACGACTTCGAACTCCTAACAGCGGTGAGCTGTGGA
-TGATGTATCATAGACAGTGAGCACGATGCTCTCATAGGCCTCTCGGCCTC
-CTCCAGCCCAAACCATACTCCAATATGCGAGGTTATTTTTCCCCACATTT
-GATTGAAAGATGGTATCTGCAAGTGAAATTTTTGGGTGGGGAAAAAGAAC
-GTGAACGAATAATTTGGAGCAGCGGGGGGGGGGGTGGAAAAATGAAGAGC
-TGCTCGGAGGAGGGAGCCGTACTACGAAATGAGAAGAGGAGAAGCCGGTG
-TGACGGCGGGGCGTTAATGGGTTACTAAAGCCTCCACATTCCCATTTTCA
-GCCGTTTCGAAACAAAGAAAATAGAAGAAAAAAAAGACAGATGAAAAATG
-ACTTGGGTGGGTTCGGTGAAAAACAGGAAGCAGGAAGAGTGAGGAAATTG
-GATGGTGGAAGAGTTTTGGCATTTCTAGGTTACCGGGAATCTTTAGAGAC
-ACCTGGGCTGTCCCATTACAGTTTGATCTACAAAAAATGCGGGAATTTTT
-CGCCCAAAAAATTTTCAACAAATTTAGATATTTTTTACATTTTTTCCCCA
-ATTTTTTCAGCCATATTTCAGCCATGACTGTCCTTTTTTTCGGGCAAAAA
-AAAATTTTCTCTGAAAATGTTCGAAACTACTAAATTATGCAAGAAGACAA
-TTTTTAAGGTTCGGAGATCAATTTTGAGTCCTCTAGCTTCAAAATTATCC
-ATTTTAGAAGAGTTTTAAAATTGTAATTTTTTACAAAAATTGCTCAATTT
-TGCCACTTTTTAATAGTTTTCTAAACCTAGATTTTCTGAATTCTGCATAT
-ATGAATTACCCGTTTTCAACAAATTTAGACAATTTTTTTCATTGTTTCCA
-AAATTTTTTTCAGCCATTTTTCAGCCATTACTGTCCTTTTTTTGGGCAAA
-AAAAATAATTTTTTGAAATTACATTACACACCTTCCATGTTTTCTTCGTA
-GATTTAAGGTCCATGTCCACTGCTTGGTGGAAGAGTTTTCCGAGTTTTTA
-GGTCACCGGAGAATTTGAGTTGGAAGAGTTTTCGCATTACTCCCCAACTG
-TGATAGAACTTCAAAAATGAATATGCAGGGACATCACTCAAATTTGACAT
-GTCAGTTTAAAGGAACACGCTGATTTTCCGAGTGGGTCTCGCCACGATCC
-AGGTGCTAAATTTTCACAGTTTTTAGTATGTACCTAGTGGCTTATTTCTA
-AACAACACGCGCATAACATCGGAGTGTCGTTGCATAGGCCACTCTAAAAC
-ATAAACAAATGTGTGAAGAAAAATTAAACACAACTAGCACGGATTTCTGA
-CGTCCCTCAGAAGTTGAAATGGAAGAGTTTTTGCCGAACTAGGCCAGGCC
-ATATTCGGGGTAGATTTACGGCGCGTCGCGGCTCGATTTTAGTTGTAAAA
-CTAAATGTATTTGTCCGTGTGGAGTACACGACTTTCCCAAGCGTTGTCCG
-GCAGGCGATTGTCAATGGAGCGCGAAAATTCAATGAGGAAGGCCAGAACC
-CCGTGGGATTTTGAAATTTTTTTCAGATATGACAAAAAATGACAATGCCA
-AATTTAAAATGCATTAATAGCGGACAGAGGAGAGAATAAGTAGGGAAAAA
-AGAAGAAAAAAAAAGACGGGCGGCGCTTCTCTCATAAAATAGTAATTGGT
-CATTCTAAGTGTGCCTATTGTTCCTTATTTTTCGCTTTTTCTTGGCTCAT
-TTTAGCTCAAAAACCAAATGTCGAAGAGTTTCTAGAGAACTAGGCCACGA
-GAGGGAAAAACTAGGTCACTGGAATTTCTACGCTAAAAATTTGGCCCAGC
-ATATTTACCTACGTGGCCGTAAAAGAGAAAGTTCGGCCACTAACTTTTTC
-GGGCTATCAAAAAAGGTTTACCAAAACTTTATAAAAAAGAAACCACTTGT
-GGAAAATGGCCGTGCATACTAAAGTTCGGCCACAAACTTTTTTAAAACTT
-TTTTGCTCAAATTGAAGTACAGGACCACTTCGATGGGCGGTTTTCACTAC
-TTGGCCGTGTAAGAGAAAATTCGGCCACCAACTTTTATTCAAGGCCACAC
-CTCCAAATCCTTCAAAGCTTCAAAAATTTTCTACGTGGCCGTGTACGAAA
-AAATTCGGCCATCATCTTTTTTTTGGGTCACGTCGCTAAATTCTTCAGAG
-CTTCAGAGATTTTCTACGTGGCCGCGGGAGAGAAAATTCGGCCACCAAAT
-TATTTTTTAAGGCCAAACCTCCAAATCCTTCAGAGCTCATATTTTCTACG
-TGGCCGTGTACGAGAAAACTCGGCCACCAAATTAATTTTGAAGGCCCCAC
-CTCCAATTTCTTCAGAGATCATATTTTCTACGTGGCGTGGCCGTGTACGA
-GAAAATTCGGCCACCAAATTCTTTTTTAAGGCCAAACCTCCAAATCCTTC
-AGAGCTCCTATTCCCTTCGTGGCCGTAGGAGAGAAAGTTCGGCCACCAAA
-TTAATTTTTTAAGGCCACGTCGCCAAATCCGTCATATTATGAGGAAAAAA
-GTAAAAAATAATACTAATAACAATTGAAGAAAAATTGAAAAATATAAAAA
-TATAAGAGACTAGTAAATGAAGAGGAATGAAGAGCGAATAGGAGGCCAGA
-GAGAGAGAGGGGAGGAAATTGTGCTGTTGAAGACCTTGAAGAGAGAGGCA
-CAGCAATAGATAAATTGAATTACAATGGGGTGAGGAGCCGGGTCTGTCCC
-CCCCCCCCCCCCCCCCCAAAAAGTGCGAACAAATGTGATGAAGCGCAGAG
-AAAATCGGGAGGGGGGGGGGGGGGGGGGGCTGTGCTCCAGGTTGATTGAG
-CCAAGTGTTTCGACTTTTTGCCGAACACGTTGAGCTCTCCGATGAGCCGG
-GCTCACCGGAGAGCCCATGGAGCCCCATGAAGCAGAGGGTCACAAGGTTT
-GAGACTTCCGGGAGATAGACTGCACAACGTACAAAGACTAAAACTTTTTT
-TTTTTGCAGGTGAGGCATGAAATTTAGAGCTTTTTTGCAACAAAATCCAA
-CATTTTTTTTGTAAAATAAGGTCAAATGACGAGTTTTTTCTATAATCTGG
-CCGAGAAAACCTGAAAATTGATCTACCTTGATAAACAGGGCGCGCGGGTG
-TAAAGCGGAGCGTCGTTGTGAAGCTGAAATATTGTTGAACGAATTCTGGA
-ATTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCAAACTAGG
-CCAGGCCATATCTGGGGTAGATTTACGGCGCGCTTTTTTTTGGGCATAAA
-ATTCCCGCATTTTTGTAGATCAAACCGTACAGCCTGACATCACGTGTTTT
-TGGCCCCGCTAAACAGGGCGCGGGTGTAAACATTCAAATATTATGTGAAA
-AAAACGCATGAATTTGAACAATTTTGCGTAGAATTTTTGAACAAAAAAAT
-ATATGAATAACTAATGCAAAACGAACAGAACTAAATTTTCTGAAATTGAA
-GAGAGGGGAAAAAAATTGGGAAATTTTGGACATTTTTCCCAACGACGCAT
-TGAGCCACCGGACCCAGATGAGCAAATAAACCGGGGGAGCAGGAGGAAAA
-TGGAAATGACAAAAAAGGCGGAGGAGGAGAAGCTCACGTATTTAGTATCC
-CATAGAAAGAGTCAATTTTCATAAACTGCGACAATTGACTACCAGGGAGC
-AGTTGCGCTCTACCGACAAAATCAAGCAAGGTCCACGTAGTGCCAGTCTG
-TCCCATTACGGTTTGGTCTACAAAAAAATGCGGGAAAATTTGGCTCAAAA
-AAATGTGACGTCAGCACACTCTTAACCATGCGAAATCAGTTCCCGCATTT
-TTTGTAGATCTACGTAGATCAAGCCGAAATGAGACACTGTGGCACCACGT
-AAAGGTCCTTCTTACAGAGTGCGCTAGAGCGCGATTGCCAGTTTTCTAAA
-AAAAAAATCTAACATGAAAAAATGTGCGTAAAAGCGGAGTTTCGTTGCGA
-TGTAAAATTTGGAGAAAAATTGAAAACTGAGGAGGAAGAAAAAGTTAAAT
-GCCTCTTCGCAAGACCGGGATTAAATAGTATTTTACTTCTTTTTTTTCCT
-TCAACTTTTTGAAATTTTTGGCGGAATGGGGAAAAGGAAAAAAAAACGAA
-ATCATCGATAAAAACAACACTAGGCCACCCAGAAGTAAACCTAGGCCACC
-TTATAGAAATTCTAGGCCACCCTGTAAGAATTTTAGGTCATCGCGTAGAA
-AAGCTAGGCCACCCTGTTGAACTGCTAGGCCACGCTGTTGTACACTTAGG
-CCACTCTGAAAAAAATCTAGACCTCCCTGTAAAAAATCTAGGCCACCTTG
-AAAGAATTTTAGGTCATCGTGTAGAAATTCTAGGCTACGTTTTCGAAATT
-CTAAACCACTCTGTAGAAAACTTGGGTCATCTACCGAAATTCTAGGCCAC
-CCTGCAGAAAACTTAGGCCATCTACCAAAATCCTAGGCCACCCTGTAGAA
-AACTTAGGTAATCTACCAAAATTCTATGCCACTCTGTAGAAAACTTAGGC
-TACCTCGTTAAAGTTCTAGGCCACCGTGTAGAAATCTTAGGCTACCTCGT
-TAAAATTCTAGGCCACCCTGTAGAAAAATTAGGTGATCTACCAAAATTCT
-ATGCCACCCAGAAGTAAACCTAGGCCACCTTGTATAAATTCTAGACCACC
-CTGTAGAAAACTTGGGCCATCTACCAAAACTCTAGGCCACCCTGTAGTAA
-ACTTAGGTCATCTACCAGAAAACCTAGGCTGTTCCGTTACGCCGCATGCT
-AAAAAATCCAGACCGCCCTGTAGAAAATCTAGGTCACTCCCTACAAAACC
-TAGGCCACCCTGTGAAAATTCTAGGCCACCTTGTGAAAATTCTAGGTCCT
-TCCCTAGAAAAACTAGGCCACCCTGTTAAACTCTTAGGCCACTCTCTAGA
-AAAACTAGACCACCCTGTAAAAAAACCTCGATGGCCTAGAAAAAAGCTTG
-GGAAATTTTGTGGAAAAAGTTAAAAAGGAAAATCTAGGCCACCCACAAAA
-AAGCTAGGCCACGTGGCAAGAAACTTCAAAAGTGACGAATGATGAGACGA
-GAGGCGTATGTTTGAGGTCAAAAAGGGTGAAAAAGAAGAAAAAAAGACGA
-GGCGGAATGTTTCTTTTTTCTTTTCAAACTGAGCATCTCCCCGTCTCTCG
-GCCACCAATACTACTACTACTACAACTATTCATGTTTTTAGAGAGCCCCC
-CCCCCCCCCCCCCCCGGCCACTTGTCAGCTTTTTTGACGGAAGATGCCAA
-CACACAATCGAAGGGGAAACCATAAAAACCCGCCAACGACACTCCGTTTT
-AAGGCCCGGATGCCCAGATGTATGAAAAAATGGAGAAACTGAAGGCTTCT
-CCCCTCCCCCCCCCCTCCCTTAAAAAATGATGAATTACTAATGGTGCCGC
-CCATGTTGTGTTTGTTGCTTTCCCCCCGTGCTCCATCATTGGGGGAACAT
-GACAGCCACCTTGAGTTACATGTATACAAAGTGACAGGAGGGAAAGATAG
-GGGTAAAAGTGCAAAAAGGGAGTCGCGGGTTCGAACCAGTGAGGGTTTGC
-AAAATTTGGGCTGTGCGCGGCGCCTTAGACTACTGCGCCACGCGTGCGAA
-CTGTAAATAGAACTGTCAGGCTAAATACGAACGTTCGGTTTTTAAACTCG
-ATTGGCAAAAATGAAATGAATGAATAGACAGGAATGACTCATATTTTTTG
-CATAAAGGGGCCTGGGTCTGGGAACTAGGAACTAAACTAAATGAAGGAAA
-ATTGAGGCATCTCCCGCCAATTGAGTAGAAAAGTGATGAGAGCGGCAAAA
-AGAGATAGGGGGGGGGGGGGGGACCCATTCATTTTACACTGGACACCACA
-CTCCCCACTCTCTCTTTGATGACGAAGGACATGAGTACGAACTCGCGAGC
-ACAGAAATACGACACGTTTTCTTCTCATTTTTTTTTTGCAAAAGGTGATG
-ATGATAATCGCTTCTAAACGAGGGGAAGTGTACTAAATAATAAAATTGCG
-AGTGGATATTGGATTTTTTCGTTATTTTCCGCTCTGAAAAACCTGAAAAT
-CAGTCGGAAATTCGAGTTTTGGCTAACTTTTTGTAAATTTTGTTTAAAAA
-ATCACTTTTCGCTGCGAAACCACCTGAAAGGATATAGTGGGCATGCGCCT
-TTGAGCGCTACAGTGGAGGGAATGCAGTATCTCTTGGAAGTCAGATTTGC
-CGATTGTTTTAACGCAAAACCTGAAGTATAGAAAAGAAAACATGAAAATT
-TATTGAAAATATAATAAATAAATTAAGCAAATTACATATCAACTGAGAAA
-ATCACCTGCTGGAGAGAAAAATTGAAAAAAAACCAGAAAATCGGCAGGAA
-AGCAATAATCGAGCAAGATCCTTGGAATTTTTAGGTGCAGATATCGGTTC
-AAAAGGAAAACACTATTTTAGCTTTTTTTTGTCTTAAGTTCAATGTTATA
-ACACAAGAAACGATATTTCTATGGCATAATTTTTGGGTCCTAGAAAGCAG
-ATTTTCACGTAGATTGGTCTGAAAATAATATTGGAGTAATTTTTATTATT
-TTTCCTTGCATTATAAAATTATTTCTCTTTTATTTCTCAATTCTAAAACT
-ATTTTCCCGTTCTTTTTCCCTATATCTCGCGCTTCTCCGGGATGTTGCAT
-CCCATTCGACGTGAGGAGTCTCGGAGTCTCTCCGCTGCAAACGCGCTCCA
-CTGGACACAGAAAATAAAAAAAATAAATTGTTCGAATTCATGCAATTTTC
-TTCTAATTTTCTCCGTTTTTCGTCAATTTTTCTGCAAAAAAGACAAAATT
-TACAGGTAGCAATGTATGGGGGATATCAAGGAGCATATGGGTAAGGCTAA
-AAACTAGGAAAAACTAGGAAAAACCCATGGAAAACTAAAAAACTCTGAAA
-TTTCAAATTTCAGAGCCTACGGGAACCAGCAGGCGGCTTCACAACCATAT
-CAACAGCAAGGACAACAGAATTATTACCCGTAACTCGAAAAAAATTCAAA
-AAATTCGAAAAAAATCAATTAAAAAGATCAAAATTTTCAATTTTTTCAGC
-GGAGTGAACCCGTACGCGGCGAATTATGGGTACGCGGCAGCACAGCTTCC
-ACCACCACCTCCACCACCGCCAGTATGCCTTAAAATTGAAGAAAATTTGA
-TTAAAAAATTGAAAAAATGCAAATTTTCAGGTAGCCGATCCATACGCCGG
-CCAATTTCAGACATTTCCCTCTCAAGCCACCAAAATAGCGCCGAATCCCT
-ACTTTAAAAAGCCACAAAATCAGCAGCAACAGGGTATTTTCGCCGTGTTT
-TCTGGCTGCAAAAAAATTAAATTATCGATTTTTTTAAGGCTACGACGCGG
-CGGTCTACAATTACGCTCAGCAGAATACTCCGAAAAATTGGAAACACGGC
-GGCGGCGGCCGGCAGGGGAGACAGGGATCTGGCGATAATAAACAGTACTA
-TTGTGAGGTAAAAAACGTGGAAAAAATCGAGTAAAACACAGTTTTTTATT
-CAAAAATCTGAGAATTTCCGTAAAAAATCCTGTTTTTTGACGTTTTTAAG
-CAAAAAAATCGGGTTTACAGCACTTTTAGAGATAAAAAAGTGGAAAAAAT
-CGAATTTTGGACCTGATTTTGGGCTTGAAAGCATGATTTTTATCAGAAAA
-CACAGTTTTTTTTGTCAAAAATCTGAGAATTTCTATGAAAAGTCTTGTTT
-TTGGATGTTTTTAAGCAAAAAAATCGGGTTTACTTCATTTTTAAGGGTAC
-AAAAGTGGCGAAAAGTTAATTTCTTGTAAATTTTCACATGCAAAATATTG
-AATTTATTAGGTTTTTTCCAGAAAAAGTAGTTTTTTTGCTACATTTACAG
-GCTTTTAAAACTGAAAACATGTTAAATTTCGAGGAAAATCGACAAAAAAA
-CCCATCTTTTGGCCAAATTTAAATTTTTGAGCAAAAAAATCGGGTTTGCA
-GCACTTTTAAAGATAAAGAACTGAAAAAATTCAATTTCTTGGAGAAAAAA
-GCAATTTCAACACCAAAAATAGCAAAAAATTCGGGAAAATTGTCAATTTT
-TTTGAAAAAAAACTTGAAAAACCGGATTTCCAGTTGTTTTTTCATGATTT
-TTTCTCAAAAATCTCATAAAAATTGGAAAAAATTCCGAATTTTTTACTGA
-AAATTCGAGAAAAATTGAAATTTTTTCAATTCCGATTTAAAAAACATTTT
-TCGCTAAAAAATTGAATATTTTTAGGCTTTAAAGTTCGGAAAAGATGCTG
-AAAATTCGGAATTTTCTGTTTAAAGAAATTTTTTTTGTGCTGAAAAATTG
-ATTATTTTTATGCTCCAAAAACTGGAATTTTTGAAAAATTCGGACAAAAA
-AATTTTTTTATTAGTTTTTAAATTTTTTTAATTTTTCAACCCGCTTTTTG
-CCCAAATTTAGATTTTTTATTTAAAAAATCGGGTTTACAGAACTTTTAAA
-GGTAGAAAAACTGCAAAAAGTTAATTTCTTGGATATTTTCAGGCTTTAAA
-GTCCAAATAAACATGTTGAAAATTGAAATGTCTTCAATTTCGATTAAAAA
-CATTTTTTTCGCTAAAAAATTGAATATTTTTAGGCTTTAAAGTCCAAAAA
-ACAAGCTGAAACTTGAATTTTTTTCATTTTCAATTTAAAAAAATTTTGCT
-CAATAGATTTTCAGGCTCCAAAACACTGGAATTTTGGACTTAATCGAAAA
-TTCGGACAAAAAAATATTTTTATTAGTTTTTAATTTTTTTAATTAAAAAA
-AATCCCAATTTCCAGGTGTGCAAAATCTCATGCATTTTTAGGGTTAAAAT
-TGGAAAAAATTATCAAAAATTTTCGAATAAAAATGGAATAAATCTGATTT
-TTATAAATTTTTCGAAAAAAAAATGATTTGTTGGCAAAAATTAAATATTT
-CAGGCTTTGGAAGTCCAAAAACCATGTAGAAAATTCGGAAAAAATCGAAA
-AATTGGAAGAAAAAAATTTTTAATTTCAAAAAATTTCAAAAAAATATTTA
-AAGCTGGTGTAGTCGACTTTATTTATTGCTTAAGTAGACTCTAAATTGCC
-TGGAAACACCGAATTTCATAATGAAACTTCTTGAAAACTTCTCAAAAAAA
-AAAGTTATGACGGCTCAAAAAATGGACTAAAATTAGTTAAAATTTGAAAT
-TTGACCGACTTTTCAAGCGGCTGGAAACATTTTTTCTTTGAAATCACCGT
-CAAATTTTGAGTATACTGTGCAATTATGTTGCGTTTTCAACTTCATTTAG
-GTATTTTAAAGTCAAAGGGCGGCGAGATTTTTAATTTTTTGAACCAAATC
-TCGCCGACCATCGACTTTAAAATATCTAAATCGAGTTCAAAACTCAAGAT
-AATTACATTATATAATCAAAATTTGACGGTGATTTCAAAAAAAAGGTAGT
-TTCTAGCCGCTTGAAAAGTCGGTCAAATTTCAAATTTTAACCAATTTCAG
-GCCATTTTTTTAGTCGTCATAACTTTTTTTCGAGAAGTTTTCAAGAAGTT
-TCATTATGAAATTCGTTGTTTTCAGACAATTTTGAGTCTGATAAAGCAAT
-AAATAAATTCGACTACACCGCCTTTAAATATTTTTTTGAATTTTTTTAAA
-ATTAAAATTTTTTTTTCCAATTTTTCGATTTTTTCCGAATTCTCCACGTG
-GTTTTTGAACTTCCAAAGCCTGAAATATTCAATTTTTGCCAACAAACTAT
-TTTTTTTTCGAAAAATTTATAAAAATCAGATTTATTCCATTTTTATTCGA
-AAATTTTTGATAATTTTTTCCAATTTTAACCCTAAAAATGCATGAGATTT
-TACACACCTGGAAATTTGGAATTTATTTGTAGAATTTTTGGATTTTTTAA
-TTAAAAAAAAGTTTTTTCCGATTTTTTTTCCGAATTTTCAACATGGTTTT
-TGAACTTCCAAAGCCTGAAAATGATTTTTTGAATAACTTTTTGATTTTTT
-CGGTTATTTTTGGTTTTTTTTTTTAATTTAAAAAAATTAAAAAATTAATA
-AAAATATTTTTTGTCTGATTTTTCGATTAAAGTCCTGAAAAAAAAATCTA
-TTTTATAGCAAAAAATCCTAATTTTCAGCCTGTTTTTTTGCCTTGATATT
-CAATTTTTACAAAAAAATTTTTTTTGGAGTTTTTTGCCTAAAAAATCGAA
-AAAAAAAATCATCTTTTCTCGAATTTTTGGAAGAAAAATTAAAAATTTCA
-AAAATAATTCAATTTTTTGGTGTTTTTCGGGTTTTTTACATAATTATTTT
-TTAATTTAAAAAGTTTGTAAATAACCATAAAAATTTATAATTTTTTAAAT
-TAAAAAATAATTATTAAAAAAAACTCGAAAAACACCAAAAAATTGAATTA
-TTTTTGAAATTTTTAATTTTTCTTCCGAAAATTCGAGAAAAGATGATTTT
-TTTTCGATTTTTTAGGCAAAAAACTCCAAAAAAAAATTGTTTTGTAAAAA
-TTTAATATCAAGGCAAAAAACAGGCTGAAAATTCGGATTTAAAAAAATAA
-TTTCTTGCTATAAAATAGATTTTTTTCAGGACTTTAATCGAAAAATCAGA
-CAAAAAATATTTTTATTAGTTTTTTAATTTTTTTAAATTAAAAAAAAAAT
-CAAAAATATCCGAAAAAATCGAAAAATTATTCAAAAAATCATTTTCAGGC
-TTTGGAAGTTCAAAAACCATGTTGAAAATTCGGATAAATAAAAATATTTT
-TTTGTCCGAATTTTCGATCAAAGTCCAAAAACTTCCAGTTTTTGGAGCCT
-AAAAATAATCAACTATTGAGCAAAATTTTTTTAAATTGAAAATGAAAAAA
-ATTCAAGTTTCAGCTTGTTTTTTGGACTTTAAAGCCTAAAAATATTCAAT
-TTTTTAGCGAAAAAAATGTTTTTAATCGAAATTGAAGACATTTCAATTTT
-CAACATGTTTATTTGGACTTTAAAGCCTGAAAATATCCAAGAAATTAACT
-TTTTGCAGTTTTTCTACCTTTAAAAGTTCTGTAAACCCGATTTTTTAAAT
-AAAAAATCTAAATTTGGGCAAAAAGCGGGTTGAAAAATTAAAAAAATTTA
-AAAACTAATAAAAAAATTTTTTTGTCCGAATTTTTCAAAAATTCCAGTTT
-TTGGAGCATAAAAATAATCAATTTTTCAGCACAAAAAAAAAATTTTTAAA
-CAGAAAATTCCGAATTTTCAGCATCTTTTCCGAACTTTAAAGCCTAAAAA
-TATTCAATTTTTTAGCGAAAAATGTTTTTTAAATCGGAATTGAAAAAATT
-TCAATTTTTCTCGAATTTTCAGTAAAAAATTCGGAATTTTTTTCCAATTT
-TTATGAGATTTTTGAGAAAAAATCATGAAAAACCAACTGGAAATCCGGTT
-TTTCGAGTTTTTTTTCAAAAAAATTGACAATTTTCCCGAATTTTTCGCTA
-TTTTTGGTGTTGAAATTGCTTTTTTCTCCAAGAAATTGAATTTTTTCAGT
-TCTTTATCTTTAAAAGTGCTGCAAAAAACTACTTTTTCTGGAAAAAACCT
-AATAAATTCAATATTTTGCTTTTTTTTTTCCTTTTTTTGTGAAAATTTAC
-AAGAAATTAACTTTTCGCCACTTTTGTACCCTTAAAAGTGCAGTAAACCC
-GATTTTTTTGCTTAAAAACTTCCAAAAACAGGAATTTTCGGGTTGAAAAA
-TTAAAAAATTTTAAAAACTAATAAAAATATTTTTTTGTCCGAATTTTTCC
-AAAATTTCAGTTTTTGGAGCCTAAAAATATTCAATTCTTTAGCGAAAATT
-GTTTTTTTTTCAAAAACTTCCTACGACTACACCACCTTTAAAAAACCAAA
-TTAAATTAGAGAAATTCTTCAAAAAATCCCCAAATTTCCAGGTTTGCAAA
-ATCTCGTGCGCCGGCGGAATCACATACAAAGAGCATCTGGAAGGTCAACG
-GCACAAGAAAAAAGAAGCTATGGCAAAACAGGGCATACCGAGCACTTCCC
-TCGCTAAAAATAAGCTTTCCTATCGTTGTGACCTATGTGACGTCACTTGC
-ACCGGTCAGGACACGTATTCGGCTCACGTTCGTGGCGGAAAACACTTGAA
-AACTGCACAATTGCACAAAAAATTGGGAAAACCGGTGCCTGAAGACGTTC
-CGACGATTATTGCTCCGGGAGCCGATGGGCCGACGGAGACGAAAGCCAAA
-CCGAAATGGCATCAACAAGCTCTGCCTGGCGGGAAAATGTGCGGAATTTG
-AAAAAAAAATTTTGGAAAAAAACGAGAAATTGCACATTTTTAGGCTCAAA
-AATCTGAAAATTTAGCAAAAAAATTTAGAAAAATTTGGATTTTTAGAAAA
-AAATTAGCGTTTTCTCGCCAAAAATGCTCAATTTTCGATAAAAATGTACA
-TTTTTTTTTTTGGATTTTTAAAAAAATATTTTAGGGCTCAAAAATCTGTA
-AATTCTGCAAAAAAAATTCTAAAAAATTTTGAAATTTTGAGATTAAATCT
-TTCGCCAAAAAAACGAAAAATTTGAATTTTACAACTTAAAATGCTCAATT
-TTCGAGGAAAATGTAAAATTTTTTTTCAATCTGAAATCTGTAATTTCTTT
-TAAAAAATCGATTTTTTAAAAAATTTCTACTGTAAAATTTTGAAAAAGTT
-GAACGACGTCAAAAAGAAGGTAAAAATCCGAAAAAAAGCAACAAAGAACT
-AGGAATTTTAAAATTTCCAAAAATGGTCTGAAATTTTGAGAAATCAAAAA
-AAACAAGTTTCTTTCAGTTTTTTTTAGAAAAAAAAATCGTATTTCAGAAT
-TTAAATTTAAAGCATATTTTAAACTTTTAAACGCAAAAACATTATATTTT
-TCTTTAAAAAAAAAACAATTTAAACGCATTTATTGCTTTATTAGACTCAA
-AATTGTCTGAAAACACCGAATTTCATAATGAAACTTCTTGAAAAAAAAAA
-GTTCTCAAAAAAACAAGTTATGATTGCTCAAAAAATGGCCTCAAATTAGC
-GGAAATTTGAAATTTGACCGACTTGTCAAGCGGCTGGAAACTAGCTTTCT
-TTTTTGAAATCACCGTCAAATTTTGAGTATAAAATGTAATTATCTTGCGT
-TATCAACTTGATTTAGGTATTTTAAAGTCGATGGACGGCGAGACTTTTAA
-AGGTGGAATACCGAAATTTAAGACTTTGCTTTTTTAGACCGAAATTTTGG
-CAACTTATCGGTGCGACACTGCAAAATTGCCAAAGTTTGAGATTTTAGCT
-AAAAATAGGCCGTTTTTTCCAAAAACTTTGATCGGCCATAACTTTTTTTT
-GGAAAATTTTCAGAACGTCTCATTACGAAATTCGGCAGTTTTGGGCCATT
-TTGGGTCTAAAAAAGCAAAGTCTTAAATTTCGGTACTCCACCTTTAAAAA
-TCTCTCCGTCCATCGACTTTAAAATACCTAAATCAAGTTGATAACGCAAG
-ATAATTACATTTTATACTCAAAATTTGACGGTGATTTCAAAAAAAAAAAG
-TTTCCAGCCGCTTGGCAAGTCGTTGAAATTTCAAATTTCCGCTAATTTGA
-GGCCATTTTTTGAGCAATCATAACTTGTTTTTTTGAGAACTTTTTTTTTC
-AAGAAGTTTCATTATGAAATTCGGTGTTTTCAGACAATTTTAAGCCTAAT
-AAAGCAATAAAAAATTAGAATATACCACTTGAGAAAAATTAAAGATTTTT
-TTAAGTTTAAAATAAAAAAATATGTTTCTTTCCGATTTTTTGATAGTGAG
-ATAAAAGTTTTGGCGGGAAATTCAAATTTTCTAGAAAAAAAATTGAAAAA
-ACTCATAGTGTATAACTGCACAGAACGGCTGGTTATGAGTATAGGTGTCA
-AAGTGTCTCATTTCGGTTTGATCTACAAAAAAAGCGGGAATTTTTCCCAA
-AAAAAGTTACGTCAAGATGCTCTTTTTTATTAAATTTAATTAAAAAAGAG
-AGCATGCTGACGTAACTTTTGAGGAAAAATTCCCGCTTTTTTTTGTAGAT
-CAAGCCGAAATGAGACACTTTGACACCACCACGTTCAGACAAAATCCCCC
-ACTAAATATTTGGTAAAACTAGTTCAAAACCCGACTGTAGTACATTTTTG
-GCAGAAATTTGAAAATTTCAACTTAAAACCGCTCAATTTTTCCAAAATTT
-CACAGTATGCATTTCAAAAATTATGGTTTTGTTTTTTTTTAATCGAAAAA
-TATATTTTTAACAAAAATGGACCATTTTTAGTTGTAAAATTCAATTTTTT
-GGCGCTTTCAAATTTTTAGGCAAAAAATGTGCAATTTTCTCCAAAAATTT
-TCAGATTTTTTAACCCTAAAATTAAAAAAAAATCTAAAATATTAGAATTT
-CCCGCTTTTTTTTTCAAATATTTCAATTTTTCCAATTAAAACACAAAAAT
-TGAGCATTTCTAGTTGGCACATTCAAATTTTTAGGCGAAAAATTTGATTT
-CAAAATTTCAAAATTTTTCAGAATTTTTTTTTGCTAAATGTTCAGATTTT
-TGTGCGCAAAAATATTTGAAAAATCCAAAAAAAAAACTCGAAAATTGAGC
-ATTTTCAGTTGTAAAATTCAACTTTTTAGGCGGAAAAATGTGCAATTTTT
-CCCCAAAAAATTCAAATTTTCCAACTTTTCTCTCAAATAGCACAGAAACA
-GAAAATTTGTTATACCTAATGTGGAAAAACTGAATTAAAACAGATTTTTT
-GAAAAAATGCACTTTTTTTTTTGCCAAAAAATAGTTCAAACCCCGACTTT
-TTGTTCCAGAGTTTCCAGGTCATCGGTATCATCGCATAAATAAATTTTGC
-GGGAAAAATTCCCGCTTTTTTTGTAGATCAAACCGAAATGAGACACTTTG
-ACACCCCACGTTCAGACAAAACCCCGACTTTTTTCCAGAGTCATCGGCAT
-CAACACGGTAAACTTCGTCGGCGGTACGAAGCTCAACTCCACCGGACAAC
-TCGAGGAGAAGAAGCGCGAAGTTGCTGCCGCCGTGAGCTCAGTCGGCCGG
-AAAACCGGTGGTGCTGCTGCAACGACGACGATTGAGGTGGAAGACGAGAA
-GCTCCGAGCAATGATCGCCGCCGAGGAGGTACAACCTGTCGGCGAGGAAC
-ATGTCACTGAAGAACGTGATGCTACCGGAAAACTGGTGCAATTCCATTGT
-AAACTGTGCGATTGCAAGTTCTCCGATCCGAATGCCAAGGAGATTCATAT
-CAAAGGTCGTCGACATCGTGTCAGCTATCGGCAGAAGATTGATCCGACGT
-TGGTGGTGGATGTGAAGCCATCGAACAAAAGATCACAGGAGAAGCGGAAG
-AATCAGCTTCCAGCAGTTCATGGTGTGTGGATTTTTTAACAAAAAATCAA
-CAACAACACAAAAAACATGTTCCAATAAAATTGGAAAAAAAAATTTAAAA
-AATCCCAAATTTCCAGGTGTCTAAAAATCTCATGCATTTTTAGGGTTAAA
-ATTGGAAAAAATTATCAATTTTTCGAATAAAAATGGAACAAATCTGATTT
-TTATAGAAAAAATAATAATTTGTTGGCAAAAATTGAATATTTCAGGCTTT
-GGAAGTTCAAAAACTATGTAGAAAATTCAGAAAAAATCGAAAAATTGGAA
-GAAAAAAATTTTTAATTTGAAAAAATTCAAAAAAATTTAAATTTTTTTAA
-AAATTGAATTTTTGAGTAAATAATTTTTTGCTATAAAATTCAATATTTTC
-AGGCTTTCAAGTCCAAAAACCGTGTTGAAAATTCCGAAAAAATCGAAAAA
-TTGGAAAAAAAATTTTAATTTAAAGGTGGACTACGCTCAGTGGGGGGAAA
-TTGCTTTAAAACATGCCTATGGTACCACAATGCCCGAATAGCATAATAAA
-AAAATTTTAAAAAATATTCTAGATTTTATATGATTTTTTGAAAATTGGAA
-AAATCACAGTTTTTGCCTAATTCCTATTTGAATTACCGCCAATTGGATTT
-GTTCGGTGGAGCGCGCTTGCATGTTTTTAAATTTATTTATTTTATTTATT
-GTTATTTTCCACCGATTTTTAATGTTTTCGATGTATTTTTGTTTGAATTT
-TAGAGAAAAAGTCAAAATAAATACTAATTATCGATTAAAAAGCACGCTTA
-CAGGCGTAAATCAGTGAAATTAATTAACTCAGGTTCGAAATCGTTTAAAA
-TCGTTACTTTTTCATTTTTACGCCTGTAAGCGTGCTTTTTAGTCGAAAAT
-TTGCATTTATTTTCACTTTTTCTTTAAAATTCAAGCAAAAATACACCGAA
-AACATGAAAAATCGGTGGAAAATAACAAAAAATAAAATAAATAAATTTAA
-AAACGTGCAAGCGCGCTCCATCGAACAAATCCAATTGGCGGAAATTTAAA
-TGGGAATTAGGCAAAAACTGAGATTTTTCCAATTTTCAAAAAATCATATA
-AAATCAGAAAAATTTTTGTTTTTTTTTTAATTTTTTTAAACATGACATTC
-GGTCATTGTGACCCCATAGGCATGTTTTAAAGGTGGTGTAGTCGAATTTT
-TTTTATTTCTTTATTAGACTCAAAATTGTCTGAAACCCCGAATTTCATAA
-TGAAACTTCTTGAAAAATTTTCAAAAAAAAGTTATGGCGGCTCGAAAAAT
-GGCCTAAAATTAGTGAAAATTTGAAATTTGACCAACTTATCATTGTCGCA
-TCGGCTGGAAACAATTTTTTTTTTGAAATTGTCGTTCAATTTTGGGTGTA
-CAGGTCGATTATCTTGCGTTTTCAGCTTTATTAAGGTATTTAAAAGTCGA
-TGGACAAATGGATCTGTCAAATTTTTTACCAAATCTTTTCGTCCATCGAC
-TTTTAAATACCTAAATAAAGCTGAAAACGCAAGATAATCGACCTGTATAC
-CCAAAATTGAACGACAATTTCAAAAAAAAATTGTTTCCAGCCGCCGCAAC
-AATGATAAGTTGGTCAAATTTCAAATTTTCACTAATTTTAGGCCATTTTT
-CGAGCCGCCATAACTTTTTTTTTTGGAAAAGTTTTCAAGAAGTTTCATTA
-TGAAATTCGGTGTTTTCAGACAATTTTGAGTCTAATTAAGCAATAAAAAA
-AATTCGACTACACCACCTTTAAAGCAATTTCCCCACTGGGCGCTACTCGA
-CCTTTAAAGGGGGAGTAGAGTTTGTGGGTATTTTGCTTAAATAGACTAAA
-ATTGGTCCAAAACCACCGAATTTCATAATGAGACTTCACAAAAAATCTCC
-AAAAATTTTTTATGGCCGGTCAAAATTTCGAAAAAAAAAGATGCAACTTT
-TGCTAAAATCTGAAATTTCGCACACTTTTCTTTGTCTAGCAGCCGCTGGA
-TTTTAGTTTTTCTAAAATTATCACCCTCTAATCCTTCTTTTTGGTAATTT
-ATCTCGCGAAAATCCGTTGATTGAGACAACTTTTAGGCCGATAGGCATCC
-AAAAATGATCAATCTAGGGATGCCTATCGGCCTAAAAGTTGTCTCAATCA
-ACGAATTTTCGCGAGATAAATTATTAAAATAAGGATTAAAGGGTGATAAT
-TTCAGAAAAACTAAAATCCAGCTGCTGTGACAAAGAAAACTGTGCGAAAT
-TTCAGATTTTAGCAAAAGTTGCATCTTTTTTTTCGAAATTTTTTATTTTG
-ACCGGCCATAAAAAATTTTTGGAGATTTTTTGTGAAGTCTCATTATCAAA
-AATTCGGTGGTTTTGAACCAGTTTTAGTCTATTTAAGCAAAATACCCACA
-AACTCTACTCCCCCTTTAAAGGAATGAAAATAATTATTGGAACGTTTGTT
-TTTTAAAATGATTTTTTGTTAAAAAATCCACACCGACGAAAAATCCACAG
-TTTCAGAGCCTCCGAGCTTCATGAAAACGCCGTGGTTCGCCCCACCGGCT
-CCAGAAGGCCGGGAATTCAATATAGTAGATGATAGAACTATTAACGAAAA
-GTACGCCGGGCTTAATCCGGGCGTCGAGTTCATTTCCAATGTGGATCGCC
-TTATTTCGGATATCAATGAATCGCTGAAGTATGTGTCGGATAAGATCGAG
-CGAGACGTTCGGAAGATCCCTGAAGACGTGGTGGAGCTTCCCACCACCAC
-CACCACAACGGAGCAGCCGCCGCGGACAGTGTTGGGATGCTCGAGAGTTG
-GAATTATTGCGAAGGGAACGTTCATCAAAGGGGATCGGTGTGCGGAGGTG
-GTTCTGACGTGTACGCCGGTGCCGACTTCGGGGCTTGTTGAGCAGATTAG
-GCGGTTGTTTGGAGAGTCGACGGTACGGGCCGGCCTTTTTTTTTTGCCGG
-AAATTTGGGGATTTACCGGTTTGCCGGAATGTTTTTTTTTCCGGCAAATT
-GCCGGTTTTCGCCGGAAATTTGAAAAACGGCAAACTGGCAATTTGCCGGA
-AATTTTCAGTTTCGGCAAACTGCCGCGATTTGCCGGATAACAATCGTTTA
-TTCCGGCAAATTCGGTAAGTTGCCGGTTTGCCGATTTGCCGGTTTGTTGA
-ATTTAGCGGAAATACGGCAAACGGCAAGTTGCCGGTTTCCCGACTTACCG
-GAAATTTGAAAAACGGCAATTCGCCGGTTTGCCGGAAATGTGAAAAACGG
-CAAATTTCAGAATTCGGCAAGTTGCCGGTTTTTGCCGGAAATTTTCATCT
-TAGGAAAATTGCCGGTTTTTGCCTGAAATTTTCATTTCAGGAAAATTGCC
-GGTTTGCCGGTTTGTCGAATTTTCCGGAAATGTGGAAAACGGCAAGTTGC
-CGGTTTGCTGATTTGCCGGAATTTTTAATTTTCGGCAATTTACCGATTAG
-CCGGAAATTTTTTAACGGGATTTTTGATAAGACGGATTTTTTTCCGGCAA
-ATTCGGCAAGTTGCCGGTTTGCCGGAATTTTTCATTTTTGACAAATTGCC
-GATTCGCCGAATAATAATTATGCCAGAAATTTGAAAAACGACAAGTCGCC
-GGTTTGCCGATTTGCCGGAAATTTCAAAAAACCGGCAATTTGCAGAATTT
-TGCCGGAAATTTTCATATTCGGCAAAGCTACCGATTTGTCGGATTTTTTA
-AACCGGTTTTTTCATAAGATAGATTTTTTTTCCGGCAAATTTCCGGCAAG
-TTTCCGGTTTGCCGGAAATTTCAAAACCGGCAATTTTCCGAATTCTGCCG
-ATTTCTTGTTTGACAATCTCAATAATTACACAGACATCTCTAACAATTGA
-GCCGGATCCCGAGTCCCCATCAAGCCTTATCGTCACAGCTAACTACTTTC
-CCAATATGAAATGTCGTATTCTAATCACTTCAGCTGTAGTTAGAAAAGAC
-GATGATAGTATTGTAACTGGATGTGCTGCTGATAAGGATTTGTGCATTTA
-TGCGCTCGCTTCTATTCGGAATACAAAGTGGTATGATGTGAGTTTTTTTT
-AAATTTTACACATATTTTAAATTACTTTATCATTGGAAAATCTAATAAAT
-TAGAGCCCAGTTTACAAAAAAATCTATATTTTTCCAAAAAAAAAATTGAA
-AAAAATCGATAATTTCTCAAAAAATGTTTACAAAATCGAACTTTTTCCAA
-AAAACTTTGAAAAAATCGATAATTTTAAATAACTGCTGACAATTAAAAAA
-AATCGAAAATTTCTCAAAAATTGAAAAAATTAATATTTTTCCAGAAAAAA
-TTGAAAAAAATCGATAATTTCAAATAATAGCTGAAGATTTTTTAAAAAAA
-TCGAAAATTCGAACCTTTCTCAAAAAATTTGAAAAAAATCGATTTTTTTT
-CCAAACTTTTTTTCATCAAAAATTTCTCAAAAATTTGGAAAAAATTAGAA
-AAAATCAATATTTTTCCGAAAAAATTTGAAAAAAAAATCGATAATTTCAA
-ATAATAGTTGCAATTTTTAATTTAAAAGCGAATTTTTCAAAGATTTTTCA
-AATTTTTCACGTTTTTTTCTCTGGTTTTTTTAAATTAAAAAGCGTAATTT
-TTACCGAATTTATCATTAAATTACATGAATTTTTCTGAAAGAGCGAGAAA
-ATTAAAATAATTCGGAAAAAAAACAATTTTTTTCCAAATTTTCCAAAAAA
-TCCCACAGAAACCACCAAACTTTACTTTTTTTTTTTAACAAAAAAAAGTT
-TTAAAAAATATCAATTTCCGGCTTTTTTTCTGCCAAAAACTTTGGAAAAT
-GTGGGTAATTTTGGCTTTAAAAGTTTAAAAATTGAAAAAATCAGGAAAAC
-TTTTTGAATTTTCAGAGTCACTGCCAATACTTGAACTCGTGCCAATCAGT
-TATTCGACTGCTCCGAGATTTGCGAAATAAATATCCTGAAGTTGCGTGTC
-TTGATGATTATGTAAGTTTGAGAGTTTGGAAAAATATTCGAAATTTTTTG
-TGAAAAATTTGGTAAAAGTTCAAAATAATGTATAATTCTTTAATTTTTTT
-GCGAAAAAATTAATTTTTTGAAAAAAATTCTCTATATTTTTTGCTAAAAA
-GTTTAAAAATCTAAATAGTATGAAAAAATATTTTAGCAGAATCAACAAAA
-ATTGTATAAATTCATAATTTTTTGAAAAAAATGAAATAAATTTTTTTTTG
-CGAAAAAAATATGCGAAATAGGTTTTTTTAATGCAGGAAATAGTTTTATA
-GCTGAAAAAATGAGAAAAAACGGAGAAAATTGAAAAATTACGTACATTTT
-GCAGATTTTTTGCTCACAATTTTGTAAAAATTTCGGCAAAAATATCACCT
-TATTCAAAAAAAAATTGCTAAAAAAAATTTTTATAATACAAAAAAAATAT
-GAAATCTATCTATTTTTTTCAAAAAATCTACCTAAAAATCTATTAATAAT
-TTTCAATTTTTTTGTGAAAAATTTTGAAAAAATTCAAAATAATGTATAAT
-TCTATAATATTTGGCGAAAAAAATTAATTTTTGAACTATAATTTTTTTTT
-TGAAAACTAGTTTCAAAAATCGATATTTCACCTAAAAAAAACCCTAAAAA
-TAGGCGGCAAACTATTTTTCCGGCAAATCGGTGGTAATTGCCGAAATTTT
-TGGCAAATTGTGGCTTTGCAATTTTTTTTTTGTTGGAAATTTCAGATTTT
-CAAATTTAATCGGCAAGAAAACTGAAAAATCCCGTTTAAAAAATTCCGGC
-AAATCGGCAAACCGGCAAATTGCCGAATATAATATTAGGTCTCCTAATAA
-GTTCCGGGTCAAAAATCATAACCTTGTTCGCTGTGTATCGATTTTTATGA
-AACTTTGGGAGTTTATGTTATCAACCATGATCTTTCAATTGACAATAGTC
-ACAAAATTTTTTGACCACCCCAAGTGCCCGTACTCGGAGCCAATTTTTTC
-AGGCATTTTTCTGATCTCGCTTCTTTTTATCTTTGAATTGAGGTTTGTGT
-GCGGATTTTGCTTTGTTTAGAATACATCATTAGAAAACGAGAAAAGTTTG
-GAAAAAAATCTGTCCAAAAAATTTTTTTTGGTTGATCGTCAAAAAAGCTT
-CAAAAAGATTTTTGTCGAAAATTCTAGATTTTTCATACAAAAATGATGTA
-ACCAAGTGTAAATTATTTTTATACATACAAAACATATCAATTTAGTTCGA
-TACACTAAAATGATAATAAAAAATATAATTTTTTCGGATAATTTTTGAGT
-TTTTTGAATATTTCTTAAGTTTCAAATTTCAAACTAAAAGGATTTGTGTG
-TGTAAAAATAATTTACACTTGGTTACATCATTTTTGTATCAAAAATCTAG
-AATTTTCGACAAAAATCTTTTTGAAGCTTTTTTGACGATCAACCAAAAAA
-AATTTTTTGGACGGATTTTTTTCCAAACTTTTCTCGTTTTCTAATGATGT
-ATTCTAAACAAAGCAAAATCCGCACACAAACCTCAATTCAAAGATAAAAA
-GAAGCGAGATCAGAAAAATGCCTGAAAAAATTGGCTCCGAGTACGGGCAC
-TTGGGGTGGTCAAAACATTTTGTGACTATTGTCAAATGAAAGATCATGGT
-TGATAACATAGATTCCCAAAGTTTCATAAAAATCGATTTGCAGCGAACAA
-AGTTATGATTTTTGACCCGGAACTTATTTGGAGACCTTATACAATTTTTC
-AACATTTTCCAGAAAATGGAGCTAATCGTCTCGAACATTATCGATTCATC
-TCCAATGTCACTTGGACTATCCGATGCGTTTAAGCGAATTGTCGAAGCAC
-TTGCATCTGGATATTTGTATTCTGGTAGGGGGGTTAACATTTAATTTTTT
-TAAAATATTGAAAAATGAGCATATAAAAAGTTTTAAAATAATTCAAATTT
-TTACAAAAAAAAAATTTTTTTTTTCAATTATTTTGCGTTTTTGTATGAAA
-ATTGTGTTTTGAGAACGGAAACTCTTTTTTTTTAATTAAAATTTTGAAAA
-AAAATCCTGGAAAAATGCTGAATTTTTCGGGATTTTTCGGAGCACATTTC
-CAAGCTCTAAAAATTGCTGAAAATTGAATTTTTCAGAATTTTTTTGAATT
-TTGCACAAAAATGACTATTTTAGGAACAAAAAAAACATTTTTCAATCACC
-GAAAAAATGTATTAATTTTATATTTTAATGTTAAAAATACGGTATTTAAA
-TTTTTTTTAAACGTTTTTTTTACACAAAAAGTTGAAATTAGGTTGAACCC
-GGATAAAATTTAGAAAAATTAAAATTTCAATTTTTTTTGCGTTAAAATAT
-GTTTTTTAAGGTTGAAAAAAATATGTTTATTCAAATAAACACATTTCTTG
-AAAAGTTCTTTTGATTTTTAATATTAAAAAATTTATTTTTCAAAAAAAAA
-TTTATTTATTTAATTTTAAAATTTTAAAAACTTTAAATGTGGTGTAGTCG
-ATTTTTTAAATTGTTCTATTAGACTCAAAATTGACTGAAAACACCGAATT
-TCATAATGAAACTTCTTGAAAACTTCTCAAAAAAAAGATATGACTGCTCA
-AAAATGGCCTAAAGTTAGTTAAAATTTGAAATTTGATCTACTTGTCAAGC
-GGCTGGAAACTATTCTTTTTTTTGAAATCACCGTCAAATTTTGAGTATAA
-AATGTAATTATCTTGCGTTATCAACTTGATTTAGGTATTTTAAAGTCGAT
-GGACGGAGAGATTTTTAAAGGTGGAGTACCGAAATTTAAGACTTTGCTTT
-TTTAGACCCAAAATGGCCCAAAACTACCGAATTTCGTAATGAGACGTTCT
-GAAAATTTTCCAAAAAAAAGTTATGGCCGATCAAAGTGTTTGGAAAAAAC
-GGCCTATTTTTAGCTAAAATCTCAAACTTTGGCAATTTTGCAGTGTCGCA
-CCGATAAGTTGCCAAAATTTCGGTCTAAAAAAGCAAAGTCTTAAATTTCG
-GTATTCCACCTTTAAAAGTCTCGCCGTCCATCGACTTTAAAATACCTAAA
-TCAAGTTGATAACGCAAGATAATTACATTTTATACTCAAAATTTGACGGT
-GATTTCAAAAAAGAAAGCTAGTTTCCAGCCGCTTGACAAGTCGGTCAAAT
-TTCAAATTTCCGCTAATATGAGGCCATTTTTTGAGCAATCATAACTTGTT
-TTTTTGAGAACTTTTTTTTTTCAAGAAGTTTCATTATGAAATTCGGTGTT
-TTCAGACAATTTTGAGTCTAATAAAGCAATCAAAAAAATATTCGACTACA
-CCACTTTTTGGCCTATTTTTTTGGCCTAAAATTGAAATTTTTCCAGCAAT
-CCTAAGCGATCCGTGTGAGACGTCTCGTCCGAACGTTCTCGATGCTTTAA
-CCGACGAGCAGAAGCATTCGTTGACCGCCCTGGCACAGAATTTTGTTCGG
-CAAATTGCATTCAATCAGATACATGAGGTATGCGGGGATTTTTCCTGTGC
-AGAAAAAATGTTTAGTAAATTAGGGAAAAAAACCTTGAGTTTTTAAAAAA
-ATCTGTGGAAAATTTGAAAATTTTCGCAAAAAAAAAATTATAATAAAATT
-AATTTCAAATTTGCAAAAATTTCAATTTTTCAAATAAATTTTGAATTTGC
-ATTCCAAAGTCACTAAAATGGAAAAAATTGCTAAAAATTGAATTAAAAAT
-ATTTCTTTCCTGAAAATTTTTTATTTTCCGAGAATTCTGAAATTTCTTTT
-AAAAAAAATTAAATTCGCGAAAATTTGAAATTTTTTGGAATATTGCAAAA
-AATTGCTAAAAATTGAATTTTCCTATATTTCGATTTTTTAGATTTTTTAA
-AAAAGTTTTTTTTCAGCCATTTCTGGCCGAAAATTGAGAAAAAATAGTCA
-GAAAATTCAAAAAATTGCTTTTTTTTTTCAATTTTCCGAAATTTTGAATA
-TTGATCGTCCGAAAATTTAAAAAATAATCGCTAAAAAGTTGAAAAAAAAA
-TTATTGAAAACAATTTTTTTAAAATAATTTCTAGCAGATTCCATGAAAAA
-AGGCTGAAATTTACGAAACAATTTTTTTTTCAAATTCAATTCAGAAAAAA
-TTGAATTTTCTCTGATTTTGGGCCGATATTTATAAGATTTTTCAGAATTT
-TCCAAAAATTCTTGAGAAAAATTGAAATTTTTCTGCCGTATTCCTATGAA
-AACAGCGGAAAATTGAATTTTCCAAGTTATTTTTATAGGGAAAATTATAG
-TGACTCTATAGAATTCATGAAAAATTCTGACAAAAAACCAAACATTTTGG
-CCCAAAATCAGAGAAATTTCACAAAAAAAAATGCTGAAAAATTTAATTTT
-CAGCAATTTTTTTTTCAAATTTTTTTAAAAAATAAATTTTCGTAAATTTC
-ATAATTTTCAGTTTTTTTCCATTTTTTTAAAGAAAAATTATTTTTCCAAA
-AATGTGCAGAAATTTCAGAATTTTCGGAAATTAAAAAAATTTTTAGCAAA
-AAAAAAAATTTTTTAATCCAATTTTTATGATTTTTTCACTTTTTCGGTGG
-TATTAGGACTGCAAATTCAAAGTTTCTTGGAAAAACATAAATTTTCAGAA
-AATTTAAAATTAATCTGATTATAATTCGGAGCATAAAATGTGCTTTTATC
-AACAACATTTTTTTTTTCGAAAAGTCAAATTTTTCCACATTTTTAAAAAT
-TCCTTTTTTTTGTATATATTCGGATTTAAATTTTTTTTTTAACGGGTTTA
-AGCTATTTTCTGAGCAAAAAAATTGAATTTTTCTAAAATCACCATTTTTC
-TTCCAGATTCTCGGAATCGATCGTCTTCAAGACACTATTGATCTACCAGA
-GGATGCTCCGATGCTCAAAAGACCACTGGAGAGCAATGAAAATGCTGAAA
-ACGCAGAAAATCTCGACGATTCGCCAGTTTCCAAAAAGGAGAAGCTCGAC
-GAGGAGCCCGCCGATATTTGAGCATTTTTATTTTAAATTTGGTTTAAATT
-ATTTAATTTTCCTCTAATTTTCCTCATCTCTGTGTTTTTTTCTAATGTTT
-TTGGGTCCCGTAGCGAAAAAACGAATGGCTCTCTTCGCGGTGAGACCTTG
-AAATTTTTATTTTTCTACTATTACCTCCCCCTGCAAACGCGCTCTATTGA
-CGACAATTCGCAATGGAGCGCGATTGCATATTTTGTTACTACATTTTCCA
-CACTCATGTTCGATCTTCCACTAGGGGAGGGTCTCGCAGAAGGATTTTTT
-GAAAAATTTAGATTTTTTTTTGAAAAATATTCGAAACAATTTTACGTTTT
-TCGAAAAAAGTCCTAATTTAGCCTAAAAAATCAAAAATTGATAGGATTTT
-TGAAAAAAATTCAAAAAATCAAAAAAAATTGCAAAAATTTTTATTTTTTT
-TTTTGAAGAAAATTTTTTGTAAAAATTTGATTTTTTTGAAAAAGTTTGAA
-TTTTGAATTTTTTGAAAAATTCTAAAAATTTTGAATTTTTTGAAAAAAAC
-TCAAAATTTTTGGAAAAATTTTGAATTTTTTTGAATAAATTCAGAACTTT
-TTGAAAAAATTCGAATTTTTCTGAAAAAAACTCAAAATTTTTGGAAATAA
-TTGAATTTTTTCGAAAAAATTCGAGAAAATTCCTAATTTAGTCGGAAAAA
-AATATTAAAAATTGATACGATTTTTGAAAAATTTTCCCAAAAATTCTATA
-GAACTGTCCTGAATTTCTAAAAAAAATTCAAAAAAAAAACAAAGTTTTTT
-AGAAATTTGCAAATTTCTTTAAAATTTTGGAAAAAAATCTATTTTTTGTT
-GAAAAGTCTGCAATTTCTAAAATTTTCCTATTTTTTCTGCTAAAACCTGC
-AAAAAAGGACCCTCCCCCTAACTATCTTGTTCCTCCAAAAACCGACAATT
-CTTCTGTTTTTGTGTTATAATCGTCCTTTTTCTTGTTCAACAAAACAAAA
-ATTAAAATAAATTAGAAGAAACGGTAAATTTAGATACGTTTTTGCCACGT
-GGCCGAGGTTTTTCACGGCCACGTGGCAAAGGCCGGCAAGAAATGCGCTG
-TGGTGGGAGAGGAAATTGATAGGGAAGAAGGAAGAAGAAAAAAAAAAGAA
-AAAATCAATATTTTAAAGCCAAAAAAAATTTTTCTGAAAAGACTAGCAAA
-ACAGGAATGGTTATGGGTAAAGCCGAGGTTTTGAAGGAGAATTTTTGGGA
-AAAAAATTGCAAAAAAAAACGAATCGGTAGGGACGGACCGGCAAGATTGA
-TTGAAAAATTGACGAAATTATCGATTTTTTGGCGGCGCACGGGGTTCTGG
-CCTTCCCTCATAAATGGAAGAGTTTTTGCCGAACTAGGCCACCAGGTCAT
-AACTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCAATTTT
-AGTTGTAAAACTAAATGTATTTGTCCGTGTGAAGTACACGACTTTCCCGG
-CGCGCGATTGTCAATGGAGCGCGAAAAATTAAGGGCCAGAAGTCCTCAGA
-ACCCCGTGCAAAAATCGATAATCCCGTTTAGAATCGGTGAGGGCGTGGAA
-AGAAAGAGATGATGAAACGGGAATGAGCAAAATTGCAAAAAAAAACAACA
-AGAAATTCCAGAAAATTCCATAGAAAACGGGGTCTAAAGCACCAGATTAG
-TGTTGTGCGTGGGCGTCCACTGTGACGTCATCACCTTCCACTTTTCGTAG
-TTCGACTCGAGCTGATCGGAGAGCTCGCCGAGCTTGGCGAACTCGGTGAA
-TGTGGCGAATGCTTCGCGGGCGAACATGTCTGTAAAATCAGAAATCAGGA
-GAAAATTCAATTTTGCGCGTCAACTTTGATGTTTTTTTGTGTTGGTGAAC
-TTCAGAAAATTGAATTCGCCAAATTTTACGAGCAAAATTGGGTTCTTTTG
-GTATTTTTCGTGGAAATTTAACCAAAAATCGAGTTTTCTACGGAAATTTA
-ACGTATTTTATCGATTTTTCATCAGAAATCAGTAGAAAATTCCGTTTTGC
-GCGTCAATTTTGATGTATTCGGGTCGGTGAACTGCACCAAACTGGATTCG
-CCAAATTTTACGAGCAAAATGGGGGTTTTTGCAAATTTTTCTTGGAAACT
-CAGTCAAATATTGAATTTTTCGTGGAAATTTAACCAAAAATCGGGCTTGC
-TACGGGAATTTAACAAATTTTATCGAATTTTATTTTGCGCGTCAAATTTG
-ATGTTTTTTGTGTCGGTGAACTTCAGAAAACTGTATTCGCCAAATCTTAC
-GAGCAAAATTGGATTTTTTGGGTATTTTTCGTCCGAAATTGATTTGTCCA
-GTGAAATTAAACGCGATTTATCGATTTTTTATCGGAAATCAGTAGAAAAT
-TCAATTTTGCGCGTCAAATTTGATGTTTTTTGTGTTGGTGAACCTCAAAA
-AACCGTATTCGCCAAATCTTACGAGCAAAATTGTATTTTTTGCGTCTTTT
-TCGTGGAAATTTTTACAAAAATCGTTCTTTTAAAAAAAAAATTCCACACA
-AAAGTACAATTTTCACACAAAAACTGCAATTTGCGCGTAAAATATGGCGC
-AATCGGTTGAGTGCGGCACGCCGACTCAAAAACACCATATTTTACGCGCA
-AATATTAATTGAAGCGCCTTCACGTGGTGTCAGGTTGTGTCATCACGGTT
-TGATCTACAAAAAAATGGGGGAATTTTTTGCCCAATAATATGTGACGTCA
-GCATGTTCTTAGCCATGCAGAATCCGTCTAAAATCCCGCATTTTTTGTAG
-ATCAACGTAGATCAAGCCGAAATGAGACACTCTGGGCTTCAAAACACTCA
-CCAATAAAACCGCATTGTGTGATCGGAACGTTACACGTGTTCCGATCGAA
-TACCTCCATCGTCACAGGCAGCCCTTTCTCTTTTTCTTCTCGAGTCTGGA
-AAATATTGATTTTTATTTTATTCTTGGAATTTTAAATTTCAAACAGTAAA
-AAACCAAAAATTATCAGTTTTAACTTATCCAAGTTAAAGAACTACAGTGA
-AGAGAACTACAGAAATATTAAAAAATATATCGATGCACCAAGAGCCCAAG
-AAATCTCTGAGAGCCCATATCTCGGCTCATTTCGAAGTTACAAATAAACT
-GCAAACTATAAAAATATAGAAAATTAAATTTCAATTATTTTGTTAGTTAA
-CAAAATTTGGCTAGAATTGAAATGAACTGGGATATGGGCTGGCAAAGTTC
-ACTGAATTTTTTCTTTTTTTTTCTTTTGTTTATTTTGATCTCTACACCAG
-GGGTGAGCAGCAAACGATTTTTTCCGGCAAATCGGCAAATCGTTAGCTTG
-CCGGAATAGAAAACTTCCGGCAAATCGGCAAACCGGCAAATTACCGATGT
-GCCGAGTTTGCCGGCAACCGTATGTTCCCTATGAGTATGGCCACCCATCA
-ATCGACTTTGTCGGCTTATATTTCAGCGGTTTCAGAAGTTTTTTGATATT
-TTCAAAAACCAGAGGATAACGATAGATTTGAAAAATATTTTGTCGTTTGA
-ATTTTTAAAATATGATAAAAGACAACCGAGATATAAACGGTCAAAGTCAA
-GGGGGGCCATACAAAAATTTTTTTTTGGAAATTTAGAAAAAAATGTGTTT
-CCGTCTTATTAAAAAAATCTCTCTAAGCATTTCCGGCAAACCGGCAATTG
-CCGCCCTCCCCCGACCTACGCACCTGTTCAAAGTACTCCTCAACAATCCG
-ATGCGCCCATCGCTGACACAATCCCCACTCTCTCGCCGGATTGGAGATGT
-CGGCGCACTTGACAAGCATATCACATATCGTAAGTGAATTCGTGTCACGT
-TGCTCCTCCGGCACATCTGTCACATGCATCTTGTTGAACTTGGCGAGGTA
-CTCAAAGTGTCGACTGATGTCCGTAGCCAACACCATCTCCACCATCGCAT
-GTCGCATTTGGATGAACTCCTCGCGCGACAGACTCGAGAAGATGTTCACG
-TTGGCGTTGTGCTGAAGGGTTAGCTGAAAGGCTAGTGCGATGTGATGATT
-CTCCAGGATCGAGTTATCATTGTAAAGTATTGCAAGCGACTGTCGCGTAT
-TGATCAGGTACGCGTTTCCTCTTCCAGGATGGTCTAGATCATGCACCGCC
-GCTGCGAGAAGAGCCGCCACCGCATGACTTTCATTCACGTGCACGGCGAC
-CGACGGGGAGTCCAGGAAGAATGAGGTGGCCTGTAGGACGTCGGCTGCGT
-GAGTTGCGTTGTGATACGTGTTTCCCGCATGGTAATGAGCCTCGATGGAT
-AGAATCCAACGGTGGAGGAGATCGTCGGAGCAGCCGAGCACATCGCAAAC
-CTTCCACCTCTCGAAGACTTTCATTCCGACTTGGGAAAGAGCGTGGTGAT
-CCGACACCTTTTCCAGATGAAGGATGTCGAATTTCCAGCAATTGTCGTTT
-TCCAGCGCGTTCTTCACGTCAGCAGATACCCGCCGACGTTCTCCATGGGA
-TCCTCGCTTCTCTCGATGCGCGTCGACGACGCTTCGCTTTCGCTGCCTAG
-CTGGATGATGGAGGCGAATGAGACCATCGTAATATTGAGTTGCTATCCGA
-TCGGCGTCGCGGAATCGATTGATCGACGGCGCGTACAGCTCGTGCGACGA
-CAGCACCTTCATCGCGTCCTTTATCGTTTGTGCCGGTTCTCCGTCGACCC
-GTGCCGACACGTCTCGGAGCATTGTGAGCACCTCGGAGATGGGCGCCTCG
-ATGCCGCCCGTCTGCGATTTCAGGCTTTTCAGGGAGACGTCGCGGAAGAT
-TGCGGCGGTGTCACCGGTGGTGTTTGAGCGTTTCATATACACGAATTGAC
-TACTGCAAAATTCATAGAATTTTTTGATTAATTGGTGGCCGAGTTTTTTA
-AAATGGTGGCCGAGATCTTTAAGTTGATGGCAGAGTTTTATAGGTTGATG
-GCCTAGTTTTTTAAAATGGTGACCGAGTTTCTATGCAATTTTGTGGCCGT
-GTTTTTGTATAAGTTGGTGGCCGAATTTTATAAATTGACGGCCGAGTTTT
-ATAGGTTGGTGGTCGAGTTTTATGAATTGGTGGACGAGTTTCTATACAAT
-TTTGTGGCCGAGTTTTTGTATAAGATGGTGGCCGAGTTTTTTCAAAATGA
-TGGCCGCGATCTTTAAGTTGATGGTCGAGTTTTATAAGTTGGTGGCCGAG
-TTTTATAGGTTGATGGCCGAGTTTTTATGTAATTTGGTGGCCGAGTTTTA
-CAAGTTGATGGTCGAGTTTTATGAATTGGTGGCCGAGTTGCTATACAATT
-TTGTGGCCGTGTTTTTATATAATTTGGTGGACGAGTTTTATAAATTGGTG
-GCCGAGTTCTAACGGATTAAGCAAAGGAAACTAGAACAGAATTTTATTGA
-AGAGAAAACTAGGCCATCAGCTTTTCAAGAAAAACTCGGCCACCAAATTT
-TCCAGCAAAAAACTAGGTCGCCAGTTTTTCCAGCAAAAAAACTCGGCCAC
-CAAATTTTCCAGCAAAAAAAACTGGGCCACCAAATTTTCCAGCAAAAAAA
-AAATCGGCCACCAATTTTTCCACGGAAAACTAGGTCATTTCATTGTTCGT
-TTGAGAGAAAGCTAGGTCACGTACATTTTCAATAAGAAAACTCGGCCACC
-AATTTCTTGAGCATAAAAAATTCGGTCATCAATTTTTATAGAGAAAGTTC
-GGCCATCAAGGTTGAAAAATAAGCTAGGCCACCGATTTTTTTTGTTGAAA
-AAAACTCGAACACCTAACCTATTTTCCTTTTTTTTTCAAGCCTAGAAAGC
-TCGGTTATCGAGTTTTTAGGCCACCGATGCATTTTTTTAATCGAAAATCG
-AAAAAAAAAATCGGTGGCCGACTTTTTCATTTACGGCCACCAATTAAAAA
-AAACTCACTTGTTAGCAAACGGGACCCGTATAAATTTCCAGTCGCAACTC
-CGCCGCCGCTCCTCTTCGCCACGTGCCCTCGGCAGGGACTTTCGTCGCAT
-TTCCGATTCGGGTTGTCCGATCACCTCGGATCGTATGCATCCCGTCACGT
-TCTCGTAGGCGCGGTTAACGTACTGCACTACTCGTTGCTCATCACATATT
-TCCACTGCTTGATCCGTCTGAAAATACGCAAAATTTGAAGGTTTGTAGGC
-ACACGTGGCGCCAGTCTATCCCATTACGGTTTGATCTACAAAAAATGCGG
-GAATTTTTCACCCAAAAATATATGACGTCAGCTAGTTCTTAACGATTCTC
-AACTCCCGCATTTTTTGTAGATCTACGTAGATCAAGCCGAAATAAGAGAC
-ACTCTGACACCGCGTGTAGGCAGGTAGGCGTTCAGCCAGGCGATTAGGCA
-GGCAATTAGGCAGGCGATTAGGCAGACTAGTAGGAGGTAGGCAAGTAGGC
-ATGGAGGCCAAAAGCTCACCTCATCCAAGACGGCGAAAAGGGCGGGCAGC
-GCGCGGATCCGATTCGCGAGCCGCCCGACGTAGTCGAAGAGCACCACGTC
-ACGCGTATTCCACGTCACATGCTGAAAAGAAACGAATGAATGGGAATCAG
-TGTGAATGAAATATTAATTAGAATTGAAAATGAGAAAGTGAGAAAACGGA
-TGACTTACATGAATGATGTTGGACTGCGCAAGAGCTCTCCGTCGCTTTTC
-GCTGATGTGTCTGGAATATGTGATTGTTAGATTGACAATTCTGGCAGAGT
-GGTCTAGAAAATTGGGGAAAACTCGGCCACCGATATGTTTTCTTTGGTTG
-TGGTTGGAAAATTTTGGCGACCGAGTTTTTCAACGTATCCAAATTTATGT
-GGCCGTGGCCGACTAAGGCCACATAGAAAAGAAAAATACCGAAACAATTG
-GTGGCCGAGTTTTATCAACGTAGCCTAAATTAGGTGTACTTGGCCGAACT
-TTTCTTCTGACGGCCACGCAGCAAGGAAAAAATAATGAAAAAAAAGTTGG
-TGGCCGAATTTTAAGCCTACACAAAAAGTTGGTGGCCAAATTTTAAGCCA
-ACAAAAATTGGGGGCCGAGTTTTTGTTTTTTGAAAAAATTCGTGGCCGAG
-AAAATGGGAAAACGCGGCCACCGATATTTTTTCTTTGGTTTCTGGCTGAA
-TAATTTTGGTGGCCGAGTTTTTGTTTTGGATAGGTTGGTGGCCGATTTTT
-ATCATTTTAACCTAATTTACGTGTTCTTGGCCGAACTTTTTTCTGACGGC
-CACATAGCAAGGAAAAAATAACGAAAAAAAAGTTGGTGGCCGAATTTTAA
-ATTCACAAGAAAAGTTGGTGGCCGAATTTTAAGCCTACAAAAAGTGGCGG
-CGCTTTTTCTACAAAAAATTGCTGTCATTATTTTAATTGGAAAAACTTGT
-GGCAGTGATTTTGTTTTGAAAAAAATCGTGGCCGAGTTTATCTGTAAAAT
-TGGTGGCCGAGTTTTATTCACGTAACCTAATTTACGTGGCCGTGGCCGAC
-TAAGGCCACATGGCAAAGAAAAATACCGAAACAATTGGTGGCCGAATTTT
-TAGTCTAAAAAAATGGCGGCCGAGTTTTTGTTTAAAAAACCGTATTTAGT
-ATATCTGGGACGAAAAATGGTGGCCGAGGTTTTTCAATGTATCCAAACTT
-ATGTGGCCTTGGCCTATAGCCTAGCTTTCCTAAACCATTTGTTTAAAAAG
-TTGGTGGCCTAGTTTTCCAGCATAATCCAACTCACTTCTCGGCGATCGAC
-ACAATCAACACCTCCTCTGTGCTCACCGATGAGACGTCTCTGAAAAAACG
-TTTCGTTAGTAGATCATGGCTGACGATCAACGCTGCTCCCTTACTTGGCG
-ATTTGCGATGGATGAGGTACTCGAAGATCTATGAATACAGCTAAAGGGCA
-TATTGATTCAACGTCGGATGTTGCCTGCAAGAAAGTGTACATATTCAAAA
-ATTTCCAAAATTCAATTTCCTTTTTCCCGCCCGTGTCCGAATTTCCGGAA
-CTGACCACGTTTCAGTCATGGTCTTCGTAATTCCCAATTTCCTTTCTCCC
-TTATCTTTTTACGTCAATCATGATAGCGGTGATACGTGTTTCGAGGGTAT
-ACATGCTCACACAACAATGCACTTAATCAGCTAATCTCTCCCACACCTCC
-ACAGAGAGAGTGTATGAGCAAGAGAAAGAGCACCTGCTTCTTCCAGATTA
-GTGAGCGAGCCTGTTGTCATCTGACTTCTGCTGACGGAGGGAGCTTGAAA
-AGCGGAGCAGGAAGAGGAGAAGAAAAAGAGCATTCAGAGATAATTACGCG
-CGAGTCGTAGTAGTATGTATACACTGACTTCTTCTTCTTCTTCTTCCTCT
-TTTTCCCCGTCTTCTGCTCGTTGATGTCTGCCATTATATTGATCATTAAC
-GAGGGCCTAAGAATCCTGGAAGAGTTGTGAGGTCACACTGATGGCCTAGG
-AATCTCAAAGGCAGGCCATATCATATTGCAGGCCATATCAGGCCCCATAG
-CCTGGCCATAGTAGGTCACCACAAGCTATGGACTGCCCTCAAGATTTTGG
-CTCAATTTGGATAAGCTTCTTCGGAGCCCCTGGGCTTAACAGACTGACGT
-CATAGGTGGTATATCTCGGCTAGGCGGAAACTCGGAAATGTGAATTTTTT
-GACGCAAACCAAAGATCTTATAGATCCTTGAAATCTTCCACAGGACTTAG
-CAGACCGGAGGCCTGGGAACTATGCAGTTAGAGGTAATCGCCAAGTCCAG
-GGCTCCGAAGAGAGAGGGCCCAGGGCTCCGAAAAAAGCTTAAATTTTGGG
-CCAAAATTTCCCAAATTGGGCCAAAATTTCAAAAGTATGTAGTAGGTTTC
-AACCCTCATATTTCCCGGGATCATGATTTTGTGGACTATTATTTTCAGGC
-TGTGGTGGCCTGCTATACCCAGACTATGTACTGGGCCAAGCTCTGGCCAG
-GTTATGGCCTTTAATAGCCTTGAATTTTGGAGTCAAAGTTCTTGCAGAGC
-CTAGGAGACGCTTACCACTTCGGATCAAAGGCCTGATCTAAAACTCAATG
-GATCATGACCCTAGAACCTCAATTTTCATAAGCCTAATACGCAGCTACTG
-GTCTAAGCTCTGACCAGGCTATATGGCCTGATATGGCCTGAACACTTCGG
-TGGCCTAGTCTAGGTTTTTCCAAGCCCCAGCGGGCCTCAATTTTCATAAG
-CCTAAAGACGCAGCTACTGGGCCAAGCTCTGGCCTTGAATTTTGGAGTCA
-AAGTTATTGCAGAGCCATCATGCCTAGGAGGCCTAATCTAGATTTTTTCA
-AGCATTGAGGCCCCCACGGGCCTCAATTTTCATAAGCCTAAAAACTCAGC
-TGCAGCCTTACCTGTGTTGGAAATGATACTGTACAAATCCATCCGGATGC
-CCGTAACGAGTCGAGGAGCACACTCTCGCCGGTGCCTTCCGTCACGATCA
-CAGCCTGCAAAAAACGCATTATTTATAAGATCTTACAGGGGATTTTCAGG
-ATTTTCAGGAGGATTTTGTCGTGTGCCAGACCTCAAAGCTCGTCGGGATA
-AAATGCTGATATTGATTGACATGCATATATATAGATATATATGAAGTTGG
-AAGAGCGGAAGCAGCAGCAGTGGCAGCAGAACTTGTGTGTGACGGGGATT
-TGTGGGAACAAGGCGCCAAAGAAGACGAAGCAGAAGAAGAAGAAGAAGCC
-GGGGGCAAGCAATGAATGCAATGTATGTAGGAGTATGTAGGAGTATGTGT
-GTGTGTGTGTGTGTGTGCGAAAGTCTCTCTATGTGTGTGTGTGTGTGTCA
-CAGGTTATATATTGCGTGTGCACAAAAAATGTATGAGGTCTCCTGATGTG
-TGTGTGAGTCTGTGAGTCTGTGAGTGCAGTGTACAACACCTTTTGCGGAG
-TCTTATCACATACTGATACGAAAGTGTTTGTATTTTTATATTTCTTTGCC
-ACGTCACACTTTATTCAATTTTTCGCGTGTGCCTCTCGCCCCGTCATTGG
-CACGCAGTAGAAAAAGAAGTAGAAGAAGATGCGTCTTCTTGTTGCCATAT
-CCCATCCAACTTTGTTACTTACGGAATTCGCGCGCGCGCGCGGGGAGGAG
-AAGCAGAAGACGACGACGACGAGCTCGAAAGAAGACGAGTCCGCCTGCGT
-CTCTGCAGTGATCTCGTGTCCCTCGGCAGCGGCTGCGGCGCGCGCTTCAA
-TGAAGACGAGAGCTCCCCCCCCCGGCGGCGCCGAATACGCGATTTGTCAT
-CGAGATGAGCGCTTTGCTGACAGAATAGAATGGGCAAAAACAGGAATACG
-GAATACAGTAGTCATGTTTTGTTGCAATGTTATGGGAAAGCTGGCTTGGC
-GTGGTCGTCGAATTTTTCGCGCTTCATTGACAAAGAACAAGGGAAAGTCG
-TGTTCTCCACACGGACAATCACACTAAGTTTTAGGACTAAAATCGAGCCG
-AGCCAAAATGGCCTAGTTCGGCAGAAACTCTTCCATTTCAATTTGTGAGG
-AAAGCCAGAGTTCTGTGAACCTCGGACCTGCGATCGCCGACCTGCGATCT
-CCTAGACAAATGCTCACCCCAGCGCGGGACTCGGGAAAGTTAGCGCCAGG
-AGAATAATTTTTGAATTTGAAGAAAAAAAAAGAGGAACTTACAGTTTTCA
-GCATCTTCACTTGCATCGGCCCAAACGTGTCATGTGCCGTGGAGCTGCTC
-GTTGCGGCGACAGTTAGCAGAGGTGTTGGTGGAGCACCACGCGATCCACC
-TCCACCACCACCATTCTCAGAATACGACCCACCGCAGCACCATCTCATTG
-CAAACACTGGCCTGGATGCTGCTGCTGCTGTTGCTGCTGGTGCTCTCTGT
-GCGCCTCTTCTAGCTGCGGGCGTGTGCTGCTGCCTCCTGCCAGCTTGACT
-GTGTGCGCTAGCCCCGAGCACACTCTTTTCACCCTCTTCTCCCCCCACCC
-CGCTTCTATCGCCCATTCTCTCAATTCTTCTCTGCCTCCTCCTCCTCCTC
-CTCCTCCTCCCAATTCTCATGTCATCGGGGGGCCCGTCGTGTCGTCGAGC
-GCCCTCTCGCGTCTGCAATGTCTCGGCGCCGCCGCCGTCGTCGTCGTCGT
-CGTCGTCGTCTTCGGGGGGTTGTCATCTGCTGTGTTCACACTGATGCCGC
-CGCCTTCACCGCCCATCTCATCGTCTCCTCCTCTGTGTGGACCCGCCGAC
-CGGCCGGCGCGCCTTCTCCCATCAGTTCTATCTCTCTCTCTCACTCACTT
-ACTCTCAAACCGCGTCAATTGATCTCTCTGGCACGCTCTTCGCTCGGCGA
-GCTGTATTCGGTGTCGGTTTTCAGTCTGCGTCTCCGCGCCCCGGTGCAAT
-GCATATGTTCCATCACGTTCTGCTCCTCTTGTTGCTCCGTGTGCTGCCGT
-GTTTTACGCAATTTCAGGTAAAATTGATACAATTGATACAATTGATAATT
-ATCGAAGTGTCCTCTATGTGTACTCACGCTGTTAATTTAATGGCCTAACC
-ACAGAATTATGCTTCTTTAATTTTTGAACTCGTAGCTCCGTATGTTAAAT
-CCACTATGAGATTCCTTGCCATGTTTTTGCAATATTTTTTTGTTTGTTAT
-GAGAAAGTGTATGTGTTCTTTGTTTGGTCACATGGGAACCGCTGGCCTGA
-GAATGGAAGGTTTTCTGGGACAGAGCTTTTGAATCCGATAGCCTACAATA
-GGGCCCCAGTGCAATAACGGTAGGCAGGCCCGAGGCCTAATTTAGTCCAA
-ATAGTCCTTATTCAGTCTAGATGATTCAAAGCTAAAATCAAAGGGCTGTT
-CCATTACGTTGTGATCTACAAAAAATGCGGGAATTTTTCGCCCTAAAAAT
-GTGACGTCATCACGTTCCATGCGTTATTATTTATGAAGTCTGCGTCTCAT
-TCTCCCGCATTTTTTGAAGATCTACGTAGATCAACCAAGCGCCTTACCCC
-TAGCCTCTAAGCTCCTAGGGCCCTCTAGGACCATTTAGGCTTTTTGGACT
-GTCTAAGACCAATTGGGCTTTTAGGCTCCTAGGTCCCTCAAGGACCGTTA
-GGCCTCTTGGACTATCTGAAACCATCTGGGCGTCTAGGCTCCTAGGGCCC
-TATAGGACTATTTAGGCCTCTTGGACTATCTAAGACCATCTAGACTTCTA
-GGCCTCTAGGGCTCTCTAGGACCATTTTGACTTGTTCTATAGGACCTTGT
-TCGACTAGCTAAGACCATCTGGGCTTCTAGGCTTCTAGGGCTCTCTAGGA
-CCATTTAGGCCTCTTGGACTATCTAAGACTAATTGGGCTTCGAAGCTCCT
-AGAGCCCTCTAGGACCATTTAGGCCTCTTGGACGATCTAAGATCATCTGG
-GCTTCTAGGCTTCTAGGCCCCTCTAGGACCTTCTAAGACCCCAGTCTTTA
-TTCCCTAGCCTCTAGGCTCATAGGCCTCGATTCCGCAATTCTAATGGCTT
-TGGGAGCCCAGTTCTAAGGCCCATGGACTTCCACAGTAGCTTTTCAGTCA
-ACCATTTCCAAGTTAACCAAGGACCATTTAAGCCTTTTGGGCTATCTAAG
-ACCATCTGGGCGTTTACTTTCTAGGCCTTTTCCTGCCTATTGGGCCCTCT
-TGGACCTTCTAAGACCCTGGCCTTTAATCCCTAGCCTCTAATCCTCTAGG
-CCTCGATTCCGCAAATACAATCCCAGTTCTAGACTCTCAGGGCCCTTGGG
-CTTGTAGGCTTTCAGTTAACCATTTCAAACAGGTGCCGTTCCGCTCCATC
-TCTTCTTGCTCTCTCGTGCTCCTCTCCTACACCATCTTCTCTCATTGTTC
-TGACGGATGGATGAGCTGTCATCATCATCATCAAAGCTCCAAAGACAATT
-GCCATCAATTTGTGCCGCCGCTGTGCTAAGTGGTCTTATTCCGCCGGGAC
-AAAAAAAAAGGGAAAATTCTCTGGGAATTTGGACTAACACCACCTACTAT
-TACTGTAAAAAAACATTTGGAGAAGGGGGAAACGAACTAAAAAAAAACAA
-ATTAAAATCGGCGTATCAAATTGAAATCATATGATTCGTTGCCGTCGTCT
-TCTCTGCAATGATCGTTTGTTCCGTCGTGTCAAACTAACCTACTCAATGT
-CATAAAGAACAAAGAATGAATTCAATAAAACAAGACGAAAAAATAAATAC
-ATTCAGGTACTGTACAGAGAGAATCAGGATCACATCTGGAATAGCTCGCA
-GCCTGTTCGATTCTGGGAGCTTGTTGAGTATAGGCCGACCACTACGCCGC
-CGCCGACCACTACGACAGAGTATATACCGCCACCGACGACTACGTATGTT
-CCCTGAACTTTAAAGTTGCATTTTTTTTTAAAGGATTAGGGGTTTTAATT
-GAAATTTCAGAATTTTTGGTAAATTTTTTAAAATTAGTTTTATTTTTTTA
-CGGGCTTTTGCGATTATTACTGGTAGAATGAAAGTATGTACATTTCTTGT
-AGATCAGAAAATTTAATTTTTGATATCCGATAAATGTTAAAAACTCGATC
-GAAAAAAAAATAAATTTTTCCAAAAACTAAAAAGTTGCAAAATTTATTTT
-TTTTACAATTCAAAGTTTGTAATTTTTGACAAAATACATTCAGAAATTTT
-TTTGGAATAGGGGTTTTAATTAGGCTTGGGCCTAGGTTTGGGCTTGGGCT
-TGGGCTCAGGCTTAGGCTTATGGTTAGGCTTAGGCTTAGGATTGGGCTTA
-GGCTTAGGCTTGTGCTGAAGCTTGGGCTTGGGCTTAGGCTTCAGCTTAGG
-CTCAGGCTTAGGCTTGTGCTGAGGCTTGGGCTTAGGCTTAGGCTCTCAGG
-CTTAGGCTTGGGCTTGGGCTTGGGTATGGACTTAAAATTTTTTTTCAAAA
-ATTTTATTTTTCGAAAACTTATGGTTTTACCGGTATAAAGTGCCTTTTTT
-TGTACATAAAAAATAATTTTTAAATTTTTTAACGTTCCTAAAAACTAAAC
-AAACTGTAAAGAAAATTTTGTTTAAAAAAAAAATCAATAAAACATATTTT
-CAGTAATTTCCAAAATTTGATTTCCCGGTAAAAATCAACAATTTTTTATC
-GGGGCCACAAAAAAAATTCGCTGAAAAAAATTCAATTGGATGTATTTTCT
-GCAAATTCGAGTCAATTTTCTGAAAATAGTTGTTTATTTTCCCTGATTTT
-TTGGCGTTTTTTCCTTTTTTAAAGGAATTTTAGGACTTTCTGGGATTTAG
-AAGGGTTTAGCCTAGGGAGTGATTAAGCCTAGGCTTAAGCCTGAACCTGA
-GCCTAAGCCTAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAACATCAAAA
-AAACCGGAAAATCCTAAGCCTAAATAGCGTCAGTAGCAAGCTGACGCTCG
-CCACTGACACCAAGCCTAAGCCTCAGCCTTTAACGAAAAACAATTTTGGC
-ACAAAAATTGCAAAATTTCCGCTTCTCCGCTTCTCTTAAGACATTGAATT
-TCCAAATTTAAAAATTTTTAGAAAAAAAAAAACCTCGGTCCAAAATGATC
-TGAAAATTCTTATTTAGGCTTTAAAAAATTTCACTTTTTTCTGCGACACT
-TTCCATAACACCACAAATTCGGCGAATCGACCTGTTGATGATCTTGTCTC
-GACCCGCTCTCTCTCTAAGTGATTATAACAGAGATACACCCACACACCCA
-CACACGTCATCTATTATGTTCTAGAACTTTATACTTTATGATCAAAACCG
-AATGCTACAAACTAAAAAAACATCACCACTTTTTCCAAATTTTCGTCACA
-TTTTTGCAGTCCGACCACAACTACAACCACCAAAGATCCATGTGAATCAT
-CGCATCCGTTGGATCTGACGCGTCGGCTACGGGACACTGCCGGCTACAAT
-CGTATCTATATGGCCAGCGACTTTTCGTCGGCTCGCAATGAGTTTCCTGA
-TCTCAGGGGTTTGGCTCACAAAGCTTCAACGGACTATCATTGCGGGAAGA
-GGTGCCAACGGTGAGCTCTCAATGCCTACCTGCCTACTTGTTTGCAGTAT
-CAAACATATAATGCCTACAAGCCTACGCGCCTACCTTGGTCTACGAGCCT
-GAACTTGCACATTTTCTGTGCCTAACATGCACGCTATACTTTTGTCTGCC
-GTTACGCGCCCCCCCCCCCCGCCTATCTGCCTACAAGTCTCCCTTTTGTC
-TTTATGCCTACGCGCCTATCACATGCCTACCTGCCTATTTGCTTGCGGTC
-GAGTCGATACATATCATGCCTACGAGCCTACGCGCCTACCTTGGGCTACT
-AGCCTGAATTCGCATTTTTCCAGTGCCTAGCTTGCGCGCTATACCTATGC
-CTGCATTTACGCGCCTTCTCCCCGCCTAGCTGCCTACAATCGCACTTTCT
-GCCTACCTGCATGCTTTCCTACCTATTCGCATACTTAGGCGTACCTACCA
-CAAGCTTAGCTACCTACAAAACTGCCTTCTGCCAACCTGCATGACTGCGT
-ACCTTTTCGCCTGCTTAGGTGCCTACCACAAGCCTCCCTTTTGTCGATAT
-TCCTACGCGCCTATGGCATACCTACATGCCTACTTGTTTGAGTCGATACA
-TATCATGCCTACGCGCCTACCTTGGCCTACCTTGGCCTACAATCCTGAAA
-TTGCACTTTTCCTGTGCCTAGCTTGTACACTATACTTATGCCTGCCTTTA
-CGCGCCTTCTCCGCGCTTATCTGCCTACAAGCATACCTTCTGCCTCCTTG
-CATGCCTACATACCTATTAGCCTGCTTACGCGAACCTACCACAAGCCTAG
-CTGCCTACAAACCTCCCTTCTGCCTATATGCCTACGCACCTAACTCCTGC
-CTGCCTATACGTCTACCTCATGCTGAAAACAGACCTGCCTTGTACCTACC
-TATGCGCCTACCTAAGATTTGCCTCCTACGTGCCTGGCTGCCTATTTTGC
-CTATAGGCATTACTGTCAGTGCGTCTACCCAGAGCCTACCTTTAGGTAGA
-CGTTTGCCTACCTAAAGCAACCGCCTACAAGTCTATTCGCCTGCCTCCTT
-GCCTACCTACACACCTCCCTTATCCCGGCTTTTCCACCTGCCTATGCGCC
-TATCTCATGCCTACCCAAGACCTGCAAACGTGCCTAGCCGTATGCCTACC
-TAACTTCGCGCCTACATATGCCTCCCTTTCAGATCGAGTCAACTAATTCG
-AAAAATCATAAAAACCGGCCAACCGGCAGAAGCCGAACGTGCTTGGTGGG
-ACGAGGAAGAGTGGGAGGAGGGCGAGAGACGCAGGAAACGAGCCATCGAA
-TGGAAGGATACAGATGATCGTCTGCTAATGCGAAATACCGGAACATCACG
-TCATATTTTGGGTAGGTAGGTGGGTGAACACAGCAAGTGCGCTCCATCGC
-GCGGGACACTTTTCCCGCGCTTTTTAGGAGGTCAAACACGGAATTTTTCC
-AGGAATGACTGTGGCGGTGGAATGCGATGATGAGACTGGAGAATTTAATA
-GTGGTGGATACTCGTTGTGTACTACGTGCCGTGCTGTTCGACACTTGCCA
-TCCACGTATTTTCCACGTGTCATTAATGAGCTGATTTGCTCGCAGAAAGC
-GTGTTTGCGAGGAGAAGGAAAATGCATACAACGGGTTATGCCGATGAAGG
-TATGTAATTTTTTTGTTTTTGCAATGGAGCGCGTTTGTACTCACTCCACG
-AGAATCACGTGGTGTCAGAGTGTCTCATTTCGGATTGATCTACAAAAAAT
-GCGGGAGAAGAGACACAGAGTTCTCAACTGATTTTGGATGATTAAGAACG
-TGCTGACGACACATTTTTATGGGCAAAAAATTCCCGCATTTTTTGTAGAT
-CAAATCACTTGGAGAATATTATTTTTATTTGAATATGATCCTTTAAAGAA
-AAAATAAAATTTGACTGAATTTCCCGCCAAAAAATTTTCGCAGAAAATTT
-AAATTTCCCGGCAAAATATTCACGGATATCTGGCTTCCCTCATAAATTGA
-AATGGAAGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGATTT
-ACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAA
-TATATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGGTGATTGTC
-AATAGAGTGCGAAAAATTCAATGAGGAAGGCCAGAACCCCGTGAATATTT
-TCTCAAACATTTTTTTTGGAATTAATGTGCAATCGCGCTCTAACGCAGTA
-TCCAAAACTTGGGTCTTTTGGCGGGAAACCCGAAAATTCAAAGTTTTTTG
-CTTTAAAATATCGTGAAACAGACGAAACTAGTCGCAAAATTTCAAATTTA
-CGGTCTTGCCGCGCCAGTGCGGTGGATCACGATTGCACTTAAGAAAAATG
-GCGAAAATCAAAAATTTGGTTTATTTTTGGCAACTATTTTTCATTCTCTA
-TCAAATTCATACTGTACACGTGGAAAATCATTGATTTTCCCGAAAATTTG
-AATAAATGGGATGCAAGATGCGAGCGCGCCCTATTGTGATTCGTTAAAAT
-TCGTTAGAAGCGTCACTGAAATCGAAATTTTTTCTCGAAAAATTGCAGTG
-TGCCACGTTGTAAAATATCGATTTTTTGGAAAATTTAATATTTAGAAGTG
-CGGATGCATCCTATTGTGCTCCAATAAAATTACACGGGCTTCTGGCATTC
-CGCATTGAATTTTTCGCGCTCCATTGACAATCGCCCGTGTACTCCACACG
-GACAAGTGCATTTAGTTTTAAAACTAAAATCGAGCCGCGACGCGACACGC
-AACGCGCCGTAAATCTACCCCAGATATGGCCTGGCCTAGTTCGGCAAAAA
-CTCTTCCATTTCAAAATATGAGGAAGGCCAGAACCTCGTGGAAAATATCG
-ATTTTTCCATTTCCACGTGGCCAAAGGAATTGCAAGCGCGCTCCAGTGAA
-CTCGCCCAATTTCCATTTTTTTTCAGGTTCTCCGAAACGTGGGCACCCGC
-GAGTGTGCTCGCTGGCAAATGAGCCAAATCGACGTGCGAACGTGTTGTGA
-TTGTATGCTCAATCCGTCATCACCACTGGTCACCTATTTATGAGCGAAAA
-AACCGGGGAAAAAAACACACAAAACAACTCAAAACTCAACAAAAAAAAAT
-AATTTTACAAGATTCAACGAAACAACAAAAAAAAGAAACAATGGAAATTA
-AATACGGATGCTGCTGCCAAATATGCTGCCAAATTCAAATTCTCGCCTTG
-TACACACGATCTTTATTGAAAACGGTGATCAACGGGCACCCTCCACTCTG
-ACCTTTTATCTGAAAATAATTGTTTTAAAGATTTATTTGATTAAAAACCT
-CGGCCACGGCCGCGACGCAGCCGCTCCGCACGCAGCTGCGTCGCGGTCGG
-GTGGATCCTAACCTGAACTTCTCCCTCCAGCTCGTTATCGTCGTCGACCA
-CCTCGAACAGTTTGCTAGCCTCGAATAGAAATCTGAAAAAAATAAATTGG
-TTTTTTTTGAAAATATATAATGTTTTATGTTTGGGCTTCTGGCCTTCCTC
-ATTGCATTTTTCGCGCGCTCCATTGACAATCGCCCCCCTGTGTACTCCAC
-ACGGACAAATCACATTTAGTTTCACAACGAACGACACGCAACGCGCCTGG
-CCTAGTTCGGCAGAAAAACTCTTCCATTTCAATTTATGAGGGAAGCCAGA
-AATCCGCGTGTGTTTTATTGATTTTATTGATTTTTTTACTTTCGAAAATC
-GCGTTCCGGCTGGTAGAAGCACAAGGTTTTGCGCGTGTCGGCGATTCGAT
-CCCTCGACCATTCTCTGCAAAAAAAATATTTTTTTTTGTGTAAAATTCCC
-AATCTGCGAGAACGGGATCTACGAAAAATTTTTTTTTTAATATTTTAATG
-ATTTTTTCAGAGATCACATTCTTGCAGATCATCTTTTCGTGGGGCCTCCT
-AATTTTTCAGTGCTGCACATTTATTTAACATTCAAAAGTGCTTTTTTCAT
-AAAAATTTGAATTTTTTGCCCAAAAATCGAGAAAAACGCCGCTCCGCCTC
-TTTTTCCGTGCGGCACTGTGCCTTTTGCAAGCTGGGCACAGTTTTGTAGG
-CGTGAGCATGGTCTTACTTGAGCGCTTGAGTGATCTACGAAAAAAAAAAA
-GCTTTTTTTAAAATTTATGTCGGAGATCACATTCTTGCAGATCATCTTTT
-CGTGGGGCCTGCTTATTTTTCAGTGCCGCTCGGAAAAAGAGGCGGAGCGT
-CGTGAGGCACGGTTTTTTGTCACGATTTTACAGTTTTTTGACTAAAATTC
-TTGATTTTGGATCATTTTCGTTGATTTTTTTCGGAAAAAGCTGATTTTGG
-CAAAAAAAAAATTTTCGCTTTTTTTTGGACAAAGAAGAGCCAAAAAAAAA
-AATGAAAAAATCATAAATTTTTTAGTTTTTACATTTTTTTTTTTGAATTG
-AAAAATGTTTTTTTGTGTTTTTGGTGAAAAAAACTACTTTTTTTTGCGAA
-AAAAAAATAGCAAAAATGACCAAAAATCGGAAAAAAAAAACGCCGCTCCG
-CCTCTTTTTCCGTGCGGCACTTCGCCATTTGCAAGCTGGGCACGGTTTTG
-TAGGCGTTGTCATGTTGTCATTACTTGAGCGCTTTGAGGCAAAGACTTAT
-GGGAGAACGGTGAAATCCAAAATTGGTGGCGTTCGGGAAGAGACGGGGGT
-GCTTCTGAAAAAAATTGTTGAAAAATGCAAAAAATCTGAAATTTTAGAGC
-ATTTTTCTGAAAAAAATGCAAAAAATCCGAAATTTTTGAGCATTTTTCTG
-AAAAAAACGCTAAAAATCTGAAATTTTAGAGCATTTTTCTGAAAAAAACG
-CTAAAAATCTTAAATTTCTGAGCATTTTTCCCGGAAAAAAAAAGATTTTT
-ATGCACCTCTGCGAAAACTTCATCCATCATGGTAATTGAAAAATCACAAC
-TGTCCAAAAGCACCGAATTCACAGTGTCGAGCTCGAAAACGCCGACATCT
-TCGACCTAAAATGCTCAATTTTAATGGGGAAAAGCTCTAAAATCATGGGC
-TTCTCGCATTCCTCGTTGAATTGTTCGCGCTCCATTGACAATCGCCCCCG
-TGTACTCCACACGGACAAGTGCATTTAGTTTTAAAACTAAAATCGAGCCG
-CGACGCGACACGCAACGCGCCGTAAATCTACGAAAAAAAAAAGGAATTTT
-TGCTGAAAAATCGATAAAACACGTTAAATTTAACCAGAAAAATCAATTTT
-CGCACAAAAATTCGCAAAAAAAAAAAATCAAATTTTGCTCATAAAATTTG
-GCGATTTCAGTTTTCTGAGGTTCACCGACCCAAAAAACGTCAAATTTGAC
-GCGCAAAACTTGAATTTTCTATTGATTTTTGATGAAAAATCGATAAAATA
-CGGTCAATTTAACCAGAAAAATCAATTTTTAACGAGAAAAGCCAGAAATC
-CGTTGAAAAAGCTCTAAAAATCAAAATACAAACATTCGAGAGAGTCAGAT
-GACGGAGACAGACGCATTTTTTCAGAATTTTCTGCAAATTTAGGTCCAAA
-CTGACGAAATAGAAGACACGGAGCACACTGGAAATGAAAAAAAATTAATT
-AAATGCTAGATTTTTAGCATTTTTTCAGAAAAAATGCACTAAAATTTCAG
-ATTTTTAGCATTTTTTTCCGGAAAAATACACTGAAATTTCAGATTTTTAT
-TTATTTTTTTTTGAAAAAATGCTACAGACCGAATAGTTTGCCAGGCATTT
-CTGCCGCGGAGGAAATCGGCGATGAACTCTGCCACGTAGCGGCATTCGAT
-GGGCGGTGGCTGAAAATTTGCAATTTTTTGGCCTAAAATTTGGTTTTTTC
-TGGAAAATTCTCTTACCAACGGGAAGGTTTTCGTCTTCGGAATGCCTAAA
-TTAACAATACAAGCCCTCGGAGCAATTCTCGCAAGAATTGGAGCCAGCTC
-CTTGGCATAAGTGAGATCATAGATGAAGAAGACGAGCCGCTTCACCATTA
-CGATGCTCTTGCAGCGTTCACGGCGTTCTGCGTATTTTTCCAGGATACTC
-TGAAAAAAAATCCGTTAATTTTAGCCAAAAAATCCGTTAAATTTAGCCAA
-AAAATCCGTTAATTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATC
-CGTTAATTTTAGCCAAAAAATCCGTTAACTTTAGCCAAAAAATCCGTTAA
-TTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATCCGTTATTTTAAG
-TCAAAAAATCCGTTATTTTAGCCAAAAAATTCGTTAATTTTAGCCAAAAA
-TTCGCTAGTTTCAGCCAAAAAAATCCGTTAATTTTAGCCAAAAAAGAACC
-GTTATTTTTAGCCAAAAAATCCTTTAATTTTAGCCAAAAATTCGATATTT
-TTAGCAAAAAAAATCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGCC
-AAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTTAGCCAAAAAA
-ATCCGTTAATTTAAGTCAAAAAATCCGTTATTTTAGCCAAAAAATTCGTT
-AATTTTAGCCAAAAATTCGCTAGTTTCAGCCAAAAAAATCCGTTAATTTT
-AGCCAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCGTTAATTTTAGCC
-AAAAATTCGATATTTTTAGCAAAAAGAATCCGTTAATTTTAGCCAAAAAT
-CCGTTAATTTTAGCCAAAAATCCGTTAATTTTAGCCAAAAATTCGATATT
-TTTAGCAAAAAAAATCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGC
-CAAAAAATCCGTTAATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAA
-AATCCGTTAATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCC
-GTTAATTTTAGCCAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCGTTA
-ATTTTAGCCAAAAATTCGATATTTTTAGCCAAAAATCCGTTAATTTTAGC
-CAAAAATCCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCAAAAAAAA
-TCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGCCAAAAAATCCGTTA
-ATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTT
-AGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTAAGTCA
-AAAAATCCGTTAATTTTAGCCAAAAAAGAACCGTTATTTTTAGCCAAAAA
-ATCCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCAAAAAGAATCCGT
-TAATTTTAGCCAAAAATCCGTTAATTTTAGCCAAAAATCCGTTAATTTTA
-GCCAAAAATTCGATATTTTTAGCAAAAAAAATCCGTTAATTTTAGGCAAA
-GAACCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCCAAAAAATCCAT
-TAATTTTAGCCAAAAATTGCTAATTTTAGCAAAAAAATTCGCTATTTTTA
-GCCAAAAAATCCGTTAATTTTAGCCAAAAAATTCGCTATTTTTAGCCAAA
-AAACTGTTAATTTTAGCCAAAAATCCGTTGATTTTAGCCAAACAATTAGT
-TATTTTTAGCCAAAAAATCCGTAAATTTTAGCCAAAAAATCTGTTATTTT
-TAGTCAAAAAATTCGTGAATTTTAACCGGAAAATCCGTTATTTTTACTAC
-AAAAATAGCGAATTTTCGCCAATTTTAACCAAAATCTCTCGATTTTTTGT
-CAAAAATGCACCAAATGTGCGCTTTTTTTCGTTTTTTTTTGGCATTTTCC
-CTACTTCAATAGCGAGTTTGCAGGTCGTCGTGCAAATTTTGACTTCGATT
-TCAACAGAATCCAGCAGAATTCGATCATCAGTCATACATTCCAAACAATT
-TTCAGCATCCTTTATGGGCACTTCGATGAAATCTGAGAGAGCAAACACTT
-TAGAATTGCCAGGGTTTACAGCTCTTTTAATCACCATCCAACTGGCACGC
-GACGTCCATTTTTGGCTGCCCATTCACCCGCTCGCCGCCACCCTTGCAAA
-TGTTGTGAAATTTGATGACAAACGGTTCAGAGTACTCGAAATTCTCCAGA
-TCGCCGTGCTCGACGAGCTCGTTGTTCGATGGTGCTCTTTCCGGCGTTCT
-TTTCCATCTGAAACTGCTGTTTTTCCTTTTTTTTTTTGTCGCAAAATCTT
-TTTTTTCACCGAATTTTTCCACCAACCTGAACAGCGAATCTTCGAAAAGA
-GACGAAGAATTCGATTTTGGGCTTTCCAAATTTGAAAAATTCAAAGAAGT
-TGTCACAGAACTAGCCATTTCGAAGTTGAAATGATTAAAAATCAAAAACA
-AAAAATTTCGATAAAAATCAATGTCCGAGAGGAGTACACGCTTGGGAACC
-ATGCGCGGGTCTCGCACGGAAGAGACGAATTGAAGTACGGTAGCTCGTAA
-ATCCTGTTCCACGATTGATTTTTTTTTAATTTTTGATCAATTTTTTCGAT
-TTTATCCCAGAAGTTCTTGAAAATTATCCGTTTTTTTGCAATTTTTTCGG
-AAAAATGCTCTAAAATTTAAGATTTTTAGCATTTTTTTCCGAAAAAAATG
-TTTTAAAATTGCAGATTTTTAGCATTTTTTCACAAAAAATGCACTAAAAT
-TAAGATTCTTAGCATTTTTGCGGAAAAAATGCTAAAAATCTTGCAAAGAC
-TGAAAAAATTCGAATTTGTTGTAATATTGCATGTTTTCCGAGGTTTTACA
-TCAAATATGTGTAGTTTTCCTTGAAATTTGACGTTTTTCACTGAAAAATT
-CTACAAAAATAAGCATTTCTGAGCTCTTTTGTCGCAAAAGTTGATGAAAA
-TCGCCAATTTTTCAATAAATATTGCACAGAAACCGTCAGATTTTTAGCAT
-TTTTTCGGAAAAATGCACTAAAATTTTAGATTATTAGCAATTTTTCAGAA
-AAATGCTCTAAAATTTAAGATTTTTAGCCCTTTTTTTCAGAAAAATTCAC
-TAAAATGCAAGATTTTAATCATTTTTTTGCAAGAAAAATGCTCTAAAATC
-TAAGTTTTTTAGCATTTTTTTCGGAAAAATGTTTGAAAATCCCTTCTTTA
-ACGCCTTTTTCGCACTAAAAGATGCTCAAACTAGTTTAAACTTTCAGAGT
-TTTCCCATGCTTTTGCCCCCTCCACTTCACAAGAAACAAGAAACAAATAC
-GGCGGGAAAAAAGCGAAAATTCGCGGAAAACATCATTTTCAATGCATTTT
-TCATCGCGAAAATTGCCGAATTTCATTAAAAATGGCCAATTTTTGTGCCA
-GTTTTCCCAATTAATCATGTATTTTCGATTAACTCGAAGCCCCTGCGCAG
-AGAAAAACACAAAAATGTTGCAATTGTTTGTGTAAAGCACTTCTCTGCGC
-GTCTGCGGCATCCGATATGACGAGCAATATATATCTTTTTTCTGGGAGCC
-TTTTATTTTAAATTTATCATTTTTCATTTAGTTTTTGAGAAAAAAATTCC
-CCCAAAATTAACCTAAAAGCCTTGAAAATGTGAATTTTGAGTGAAATTTG
-ACGTTTTTCAGCGAAAAATTCTCAATTTTTAGTGCATTTTTGCCGGAAAA
-ATGCTAATAATCTTGAATTTTAGTGCTTAGCGGAAAAAAAATTCAAAATG
-AAAATGTCGAATTTGAAATAAAATGCTTTAAAATTTAAGATTTTTAGCAT
-TTTTCCCGAGAAAAGCTAAAAATCTTAATTTTTATAGCTTTTTTGTTGAA
-AAAATGCTAAAAATCTTAAATTTTAGATCATTTTATTTCAAATTCGACAT
-TTTCATTTTGTATTTAAGAAAAAATAACCTCAAAGTCTGAAAAATATCGA
-ATTTTGAGTGAAATTTGACATTTTTCAGCGAAAAATTCTCATTTTTCCGG
-AAAAAATGCTAAAAATCTTGAATTTTAGTGCATTTTTCCAGAAAAAATGC
-TAAAAATCTCAATTTTTAGTGCATTTTCCCGGAAAAATGCTAAAAATCTT
-AAATTTTAGAGCATTTTCCAGAAAAAATGCTTAAAATCTTGAATTTCAGA
-GCATTCTTAATGAAAAATGCTAAAAATCTTAAATTTTAGAGCATTTTTCT
-CGAAAAAATGCTTAAAATCTTGAATTTCAGAGCATTTTTTTCGGAAAAAT
-GCTAAAAATCTCAATTTTTAGTGCATTTTTCTGAAAAAATACTAAAAATC
-TTGAATTTTTAGAGCATTTTCGCTGAAAAATAATAAAAATTTTAAATTTT
-AGAGCATTTTTCCGAAAAAAAAAACGCTAAAAATCTTGTAATAACTGACA
-AATTTCGAATTTTGAGTAAAATGGCATGTTTTTTGAGGTTTTTCCTTGAA
-ATTTGACGTTTTTCACCTAAAAATTCGACAAAAATGAGCATTTCTGAGCT
-CTTATATTGCAAAAATTGACAAAAATCGTCAATTTTTCAATAAAAATTGC
-CCAAAAACCTTAAAATATTCTGAAAAAAGCCGAAAAAACCCCATTTTTTA
-GCCATTTTCTACAGAATTTTACATTTTTCTCAACTTTCTTCACCTAAAAT
-CGCCGATATTATTCACATAAAATTCCCTTTTTTTTCAGCGCAATGGGGTG
-TATTATGAGCCAGGAGGATGAAGCAGCGAAACGAAGATCCAAGAAGATTG
-ATCGATTGGTAAAAATTGGGGATTTTTCGTTGAAAAAACTCGATTTTTTG
-TGAAAAAATATAGAAAAATCATCAAAACTGCTTCAAAAACCGAAAAATTT
-CACTAAAAACTAGAATTTTTGCTCGAAAACCTCAAAAAATCGCAAAATTT
-GCAGTGAAAACTAGATTTTTATTTTTAAAAAATTCAAAAAGTTCATAAAA
-ATCAATAAAAAAATCGGATTTTTTTTCTTAAAAAATCTGGAAAACTGTCT
-AAAAATCTACTCAAAATCAGTTTTTTTTGTAGAAAATCTGAAAAATAGTC
-TAAAAAATTAATAAAAATCGATTTTTTGGGAGAAAATTTGAAAAATTACG
-AAAAAAATCAATAAAAAATCGGTTTTTTGGGAAAAACCCTGAAAAATTGT
-CTAAAAATCTATAAAAAATTGGATTTTTTAAATAGAAAATCTGAAAAACT
-GCCAAAAAATCAACAAAAAATCGATTTTTGTGTGAGAAAACCTGAAAAAT
-TATCAAAAAATTGGTTTTTATCTAGAAAATCTGAAAAATTACCTAAAAAG
-CAATAAAAAATCGGTTTTTTTTCTGGAAAAACTGTAAAATAGCCTAAAAA
-TCAATTTAAAAAAAGTTTTTTTTTTTGTAGAAAACCTGAAAAATTATCAA
-TAAAAACCACGAAAAACAGTTTTTCGCTTATAAAAAGTCCAAAAATCCCA
-AAATTTGCATTAAAAACTAGATTTTTATTTCAAAAAAATTCAAAAATTGC
-CTGAAAATCAATAAAATTGTTGTTTTTTTTTGGAAAAAAAAACCCTGAAA
-AATTGGCTAAAAATCCCAAATTTTTTTGCAGCTCAAAGAAGACGGCGAGA
-ACTCAATGCGAACCATCAAGCTTCTGCTCCTGGGAGCCGGCGAGTCTGGA
-AAATCGACGATTTTAAAGCAGATGCGTATCATTCACGACGTCGGATATAC
-GACTGAAGAGAGAAAAGTGTTCAGAGGCGTCGTTTATGGAAATATTATTT
-TGGTCAGTGCTCCGATGCACTGAAAAATGACAGGAAATTGGCAATTTTGA
-CCAAAATTCGTGGATTTTAACCAAAAAATCCGTTAATTTTAATCAAAAAT
-CGGCTAATTTTAGCCAAAAAATTCGCTATTTTAACCAAAAAATCCGTTGA
-TTTTAGTCAAAAAATTCGCTATTTTTAGCCAAAAAATCGCTATTTTTAGC
-CAAAAAATCCGTTAATTTTAGCCAAAAATTTCGCTATTTTTAGCCAAAAA
-ATCCGTTAATTTTAGGCAAAAAATCCGTTAATTTTAGTCAAAAAATCCGC
-TATTTTAACCAAAAAATCCGCTATTTTAACCAAAAAATCCGTTAATTTTA
-GCCAAAAAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAA
-AAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATTC
-GCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATTCGCTATT
-TTTAGCCAAAAAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGC
-CAAAAAATTCGCTATTTTTAGCCAAAAAATTCACCAATTTTCGTTTAAGA
-TTCTCCAATTTTTGACAAAAAAATTCACCGAATTTGCTCAAAATTCTCCC
-TTTTTTGGCTAAAAAATGCATAAATTACACAATTAAACCAAAAATTACCC
-AATTTCGCCCAAAAACTCTAATTTTTACCAAAAATTCTCCTATTTTTTGT
-TGAAAATTCACCAATTTTTTTGCCAAATTTTAACAGAAAAATCTATAAAA
-TATCAGGCGAAAATAACCTAATTTTGGTCAAAAATTCACCGATTTTTGTT
-CAAAATTCTTCAATTTTACCCAATATCCACCAAATTTTAACCAAAAAAGT
-CTAAAAAATTATTCAAAAAATCCCTAATTTTGGCCCAAAATTCTCCATTT
-TTACTCAAAAATTCTCTCTTTTTAACCAAAAAATCTAGAATATTAGGTGA
-AAAATGCCTAATTTTGGCTAAAAATTCACCGATTTTTGACAAAAAAAACC
-TCCAATTTCAGCTTAAAACTCTCTGATTTTTACCAAAAAAATCTAAAATA
-TTAGGCGAAAAATCACTAATTTCGGCTAAAAAATCACCAATTTTTGACAA
-AAGAAACTCCAATTCCAACAAAAAATTCACAAAATTTACTCAAAAATTGT
-CTGTTTTTCACAAAAAAAAAACCTACAATATTAGGAGAAAATTCACAAAT
-TTTGGCCAAAAAATCCCTAATTTTGGCCGAAAAATTTGCCAATTTTGTTC
-AAAATTCTCCAATTTTCGACTAAAAAAACCTGCCATATTCAGCAAAAAGT
-TCACCAAATTTACTCAAAAATTCAAAAAAAATCTAGAATATTAGGCGAAA
-AATCCCTAATTTTGTCCAAAAATTCACCGATTTTTGACAAAAAAAACTCT
-AATTTCAGCAGAAACTTCACCAAATCATAGCCAAAAATTCACTGTTTTTT
-ACCAAAAAAATAGAATATTAAGAGAAAATCCCTAAATTTGTCCAAAAAAT
-TAAACAAATTATAGCCAAAAATGCTCTGTTTTTTACCAAAAATTCTAGAA
-TATTAGGTAAAAAATCCCTAATTTTTCCCAAAAAATTCACCGAATTTACT
-CCAAAATGCTCTGTTTTTGACAAAAAAAAACTCTAATTCCAGCACAAAAT
-TTACCAAATTATAGCCAAAAATGCTCTTTTTTTTCCAAAAAAAATCTAAA
-ATATTAGGCGAAAAATCCCTAATTTTGTCCAAAAATTCACCGATTTTTGA
-CAAAAAAAACTCTAATTTCAGCAGAAACTTCACCAAATCATAGCCAAAAA
-TTCACTGTTTTTTACCAAAAAAATAGAATATTAAGAGAAAATCCCTAAAT
-TTGTCCAAAAAATTAAACAAATTATAGCCAAAAATGCTCTGTTTTTTACC
-AAAAATTCTAGAATATTAGGTAAAAAATCCCTAATTTTTCCCAAAAAATT
-CACCGAATTTACTCCAAAATGCTCTGTTTTTGACAAAAAAAAACTCTAAT
-TCCAGCACAAAATTTACCAAATTATAGCCAAAAATGCTCTTTTTTTTCCA
-AAAAAAATCTAAAATATTAGGCGAAAAATCCCTAATTTTGGCCAAAAAAA
-TTACACCAATTTTCCCCAATTTCAGCTTAAAATGTTCAATTTCTAACCAA
-AAAACCCCCAAATTTTAACCCAAAAATTCCCTCGAATTTCACCCCAAAAC
-CGTCCAATTTTCCAGTCTCTCAACGCCATCATCCACGCTATGGAGCAGTT
-AAAAATCAGCTTCACCACACTCGATCACGAATCAGATGCCCGAAAGCTTC
-TAATGTTCAGCACAACAGGCGAAGAGGATGAGCTGCCCGAAGAGCTCGTC
-GTGCTCATGAAGAGTGTTTGGTCCGATTCGGGAATTCAGAAAGCGCTCGA
-AAGGTGGCGAAATTTCGCTGAAAATTGAGAAAATTCGAGGGATTTTCGCT
-GAAAATCGAGAAATTTCGGTGGAAATTAGCTTATTTCCATGAAAAAATCG
-TTAAAATCCCAGAAAATTGCGATTTTGGACTATTTTTGAGCATTTTTCGC
-GTTTTTTCCATGAAAAATTCAATGAAATCGATTTTTTAGGTCATATTCGC
-TGAAAATTACCGCTTTTTTCGATGAAAAATTCGTTGATATTCGTTGAAAA
-TTATCTATTAGAGCTAATTAAAATTTAAAATTCCAAAAAAAAAAATATTT
-TAAAATAATCAATCGAATTATTTTTTGCTCACACTTTCAAAAACCGCTAA
-AAATTCTAAAAAAAAAATTTTGGAGCCCCTTTTCCGCTAGAAAATAGCTT
-TTTTTCCCTCAAAATCCGGGAAAATTCAGAAATATTTAATTTTTTGGCTA
-TTTCTGACTCTTATTCCCACACAAAAATAGTTTTACCAAAAAAAAACAAT
-TTTTGTCAAAAATTCGAAAAAAAAATTTCTGGGAAATATTTTTAAATGAC
-TCTAAATTTTCCCCTGTACCCGAATATCGATGTGAAAAAATTCAGAAAAA
-TTTTCCGCGATTTTATATGATTTTTTGAAAATTGGACAAATTTCAGTTTT
-CCCCCCTAATTCCTATTTGAGTTACCGCCAATTTGATTTGTTCGATGGAC
-TTGCACATTTTTGAATTAATCTATTTTATTTTTTGTTGTTTTTTCCACCG
-ATTTTTAATGTTTTCGGTGTATTTTTGCTTGAATTTTAGGGGAAAAGTCA
-AAATAAATGCAATTTTCGATTAAAAAGCACGCTGACCGGCGTAAAAATGA
-AAAAGTAACGATTTTAAACGATTTCAAACCTGAATTAATTAATTTCACTG
-ATTTACGCCTGTACGCGTGCGTAGATCAGTGAAATTAATTAATTTAGGTT
-CGAAATCGTTTAAAAGCGTTACTTTTTCATTTTTACGCCTGTAAGCGTGC
-TTTTTAATCAGAAATTTGCAATTATTTTGACTTTTTCTCTAAAATTCAAG
-CAAAAATACACCGAAAACATCAAAAATCGGTGGAAAATAACAAAAAATAA
-AATAAATAAATTTAAAATTGTGCAAGCGCGCTCCATCGAACAAATCCAAT
-TGGCGGTAATTCAAATAGGAATTAGGCAAAAACTGAGATTTTTGAGGCAC
-CACGTTTTGAAGATCTGTTCAAAAAGAAGATCTACGTTTTCAGGATCTGG
-CACCGTGCCAACTGCGGTTTTCTCGATGAAAAACGTAACAACGATGCTCC
-GATGTTACGCGTCGCGTGTTGTTTTGCGTTCAGAAAGATATTTTTTGAAA
-TTTTCTTCTTGAAGAAACGCTTAACGACACGCAACGCGTAACATCGGAGC
-ATCGTTGTTACGTTTTTCATCGAGAAAACCGCAGTTGGCACGGTGTCAGA
-TCCTGAAAACGTAGATCTTCTTTTCGTAGATTTTCAGAATGTAGATCTTC
-TTTTGGTAAATCTTCTTTTCGTAGATCTTCTTTTCGTCGATCTTCAAAAT
-GTAGATCTTCTTTTGGTAGATCTTCTTTTCGTAGATCTTCTTTTCGTAGA
-TCTTCTTTTTCGTAGATCTTCTTTTTGAACAGATCTTCAAAACGTGGTGC
-CTCTGATTTTTCCAAATTTCAAAAAATCATATAAAATTTAGAAAATTTTT
-TTGAATTTGTTTATCAGCATATTTGGTCATTTTGGTACCATATTTTCCCC
-TGATTCCGAATATCAATGTGAAAAAATTCAAAAAAAAAATCCCTGATTTT
-ATATTTAAGCTTGAAATCGCCGAATGAGATTTTTCAAATACGCGCGCACA
-AATAAATTCTCCTTGGAGCGCGTTTGCCTCATTTGATTTTCTCCATATTT
-ATTTTTACTTTTTTTTCAGTTTTTCACAGCTATTTTCATTCATTTTTATT
-GTATTTTATAGGTTTTTTTTTTTGAAAAATAAATTTTTCCGTGTGAATTG
-AACATTTTATTTGCATAAAAATGAATGAAAATAGCTGAAAAACTGAATAA
-AGTAAAAATAAATATGGAGAAAATTAAATGAGGCAAACGTGCACCAAGGA
-TAATTTATTTGGGCGCGTATTTGAAAAATCTCATGTAGGAGGCAAATGAA
-ATTTAGGCGATTTCTAGCTTAAATATAATATCAGGGAAATTTTTTTTTTG
-ATTTTTTCACATCGATATTCGAATCAGGGGAAAATTTGGAGCCACCTGTA
-ACAAAATTTTATGAAAAAAAAAACTGTATAATTTCTAACAACTTTTTTTT
-TGTAGATCACGCGAATATCAGCTCAACGATTCGGCCGGCTACTATCTGAG
-CCAACTCGACAGAATTTGTGCTCCTAATTACATTCCCACACAGGTATTTT
-TCACTGGAAAATTCACAAATTTTTCCACTACTAAAAATTCAAATTTCCTT
-TGCAGGATGACATTCTCCGCACAAGAATCAAGACAACAGGAATCGTGGAG
-ACGCAGTTTGTCTACAAAGATCGCCTATTTTTGTAGGGGGAAAATTAATT
-TTAAAAAATTGAAAAAATCGTCGCCGAAATTCAGGGTTTTCGACGTTGGC
-GGACAGCGATCCGAACGAAAAAAGTGGATTCATTGCTTCGAAGACGTGAC
-GGCACTCATTTTCTGCGTTGCACTGTCAGAATATGATATGGTTCTTGTCG
-AAGATTGTCAGACGGTGCGATTTTCGAGTTTTTTGCTTTTTTTTCGTTTT
-TTTCCCAAGTTTAGGGTTTTTCGGTGAAAATCTCGGTTTTCTTGGTTAAA
-ATGGTTTTTTTTTTGGCAAAAAACGGCAAAAATTGAGGATTTTAGCGTAT
-TTTGGCGAAAAATTGAGTTAATTACATGGAAAATTTCAGAATTTGAGTTA
-AAATTGTAGTTTAAGGATTTTTTAGTGATTTTCTCGATTTTTGAACCGAA
-AAACGTTCGAATTTCATTTATTACGCGCGACCACAAAATGCTGAGAACGC
-GTATTGCACAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTAAA
-GTAATTCTATAAATGACTACTGTAGCGCTCTTGTGTCGATTTACGGAAAT
-CGTGTATTAATCGATAAAGTATTTTTTTTAGAAACACAAAAATGACAAAA
-AAAATACGAAAGAAAATTGAATTGTTTCGAAAATCGAGTCCTCCCGTAAA
-TCGACACAGTTGCCATTAAATTAAATAAAATTAATGTTAACTGTGTCGAT
-TTACGGGAGGACTCTCGATTTTCGAAACAATTCAATTTTCTTTCGTTTTT
-TTTTGTCATTTTTGTGTTTCTAAAAAAAATACTTTATCGATTAATACACG
-ATTTCCGTAAATCGACCCACAAGAGCTACAGTAGTCATTTTCAGAACTAC
-TGTAGTTTTCGCTACGAGATATAATTGCGCATCAAATATGTTGTGCATGA
-CGGATTCTCAGCATTTTGTGGTCGCGCGTAATGAAAAGCGAAAAAATCGA
-TATTTTCTGATTTTTGCGCCGAATTTTGTTAATTTTTCTTTTTTTTTTTT
-CTGCGAAAACCACATTTTCCTGACTAAATTCAGGTTCAGCCATTTTTTTT
-CGCAAAAATCGACGAAAATTGAGAATTTTAGCGTACTTTTAATTTTTTTA
-AATTTTTTTCGCTCTGAAAATTATGAAAAAATCAAAATTTTCTCGATTTT
-TGAACCGAAAAACGTTCAAATTTCATTTAAAAATCGAAAAAATCGGGAAA
-AAATTTTCCGATTTTTGCACCGATGATTTTCGCTAATTTTTCACCACATT
-TTTTGCGTTTCAGAATCGAATGCGAGAATCGCTAAAACTGTTCGACTCGA
-TTTGCAACAATAAATGGTTTGTCGAGACGTCGATTATTCTATTTCTCAAC
-AAAAAAGACTTATTCGAAGAGAAAATCGTTCGATCTCCACTCACACACTG
-CTTTCCGGAATATACGGGCGCCAATAATTACGAAGAAGCTTCTGCGTACA
-TTCAACAACAGTTTGAGGATATGAATAAGAGGACTACTGGAGAGAAAGTT
-GGTGGTTTTTTTGAATTCACTGCAACTTTTTCCTCACGAGGGACGAGGAA
-AAGTGGTTTCTAGGTCATGGCCGAGGGGCCGACAAGTTTCAGCGGCCATT
-TATCTTGCTTTGTTTTCCGCCTGTTTTCTTTCGTTTTTCATCGATTTTTT
-TCGTTTTTTCGTAATAAAACTGATAAATAAATATTTTTTGCAGATGCTAA
-AACAATTTCCAAGTAAAAAAATCATGTATTCAGTCGGCAAGCAGCGATGA
-AAGTGGGCATTGTAATATGATGGATTACGGGAATACAAAACCTAAACTTT
-TTCTGAAACATGAAACATATGATGCTTAGATGCTGAAATTACCTGATTTT
-CATAACGAGACCGCTGAAAAGTTTTGAGGTTTCCACAATTCAACTTTTTG
-TGCGAAAATCTCGACTTTTTCACCAAAAAAGTTGAATTTTGGAAACCTCA
-AAACTTTTCAGCGGTCTCGTTATGAAAATCAGGTAGTTTCAGCATTTAAG
-CAGCATATGTATCATGTTTCAGAAAAAGTTTAGGTTTTGTATTCCCGTAA
-TCCATCATATTGCATTGCCCTTGTTTCACCGCTGCTTGCCCACTGAATGC
-ATAATTTTTTTACTTGGAAATTGATTTAGCATCTGCAAAAAATATTTATT
-CATCAGTTTTATTAAGAAAAACGAAAAAAATCGATGAAAAACGAAAGAAA
-ACAGGCGGAAAACAAAGCAAGATAAATGGCCGCTGAAACTTGTCGGCCCC
-TCGGCCATGGCCTAGAAACCACTTTTCCTCGTCCCTCGTGAGGAAAAAGT
-TGCAGTGAGAAAACTCAATTTTTGAATTTTTTTTTCATGAAAATCGGAAA
-ATCTTCAATTTTTCCTAATCAATTCCATCTCTACAGAATCAAGAAATCTA
-CACCCAATTCACATGTGCCACCGACACTAACAACATTCGATTCGTTTTCG
-ATGCCGTCACCGACATTATCATTCGAGATAACCTCCGCACGTGCGGGCTC
-TACTAAATTTTTCCGCTAAATTTTAAATTCCGTTTTTTCCCCCCAAAATC
-CCCTCCCAGACATTTTCCGGTATTTATGTATTGACCACACACAACTCTTC
-TCTCCCGTCTCCGCTGTTCAATGCTACGGTTATTCTCTTTTTTTTTCTTT
-TTTTTTCCTGAAATTCCAAGGGTGTCGTTGAAAATCGAAAAATTCGAAAA
-ATTTGGGTTTTTTAGAGGAAAAGCCAAAAATTCAATTTTTTTTTCGATTT
-TTATTCCGGAAAATTCGAAAAATTTCGATATTTTTTAAATTTTTTACAAA
-AAATTCGAAAAATTTGGATTTTTTCAGGAAAAAGCCAAAAAATTACAATT
-TGTGTTTAAAAAAACGAAAAAAAAAACCAATTTTTCTGATTTTAATTCCG
-GAAAAATCAAAAAATCTCGATTATTTTCAGAAAAATTCGAAAAATTTGGG
-GCTTTTTCCAAAAAAGAAATCGTAAAATTTCGATTTTGTCCAGGAAAAAT
-CGAAAATTTAATGTTTTCTTTTTTGGCTTCTTCCGGAAAATCCAAAAATT
-TTGAATTTTTTGGATTTGTTTTCAGAAAAATTGGAAAAATTTGGATTTTT
-CAGGAAAAAGCCTAACAATTTCAAATTTTGCTTTAAAAAAACTTTAAAAA
-ATTGATTTTTGAGGAAAAAACGAAAAATTTCGACATTTTTTGATTTTTTT
-TTTACCGAAAAAAAAATTGATTTTTTCCAGGAAAAAGCCAAAAATTTTCA
-ATTTTTAAGGAAAAATTCGAACAATTTTGATTTATTGATTTTTTATTACG
-GAAAAATCGAAAAATTTGGGTTTTTTAGAGTGAAAAGCCAAAAGTTCAAT
-TTATTTTTCTGGAGAAATCCAATTATTTCAATTTTTGAATTTTTTCAAGA
-AAAATAAAAAAATGTCGATTTTTTCCAGAAAAATCGAAATTTTTCGTTTT
-TGAATGAAAAAAAATTTTTCCTTCAATTTTTCCTTTAAAAAAAATAAATA
-AAAATGTTCGAATTTCCATGAAAAAAAGTCAAAAAAATTCAAAATTTTCC
-ATTTTCCCTGACAAAAAAATCAAAATTTTCCGATTTTCCTAAACCAAAAT
-CCCAAAATTTTCTGATTTTCCAATTTTCTCTGAAAAATCGAATTTTTTGC
-CGCACACCCCTGGTTTCACGTGGTGGTCAGGTTGTCTCATTGCGGTTTGT
-GATCTACAAAAAATGAGGGAATCTTTCCTCCCCCGGGAAAATCTGACGTC
-AGCGCACTCGTGTAACCATGCGAAATCCTCTGCTGAAAAGTCTGCGTCTC
-TTCTCCCGCATTTTTTGTAGATCAACGTGTAGATCAATCCAAAATGACAC
-CTTGACACCACGTGCCTAAGCCCAAGCCTAAACCAATCCATTTTACCGGT
-ATATCTCTACAACCTTTCACTGTCTGAAATATCGCGTCATTTTATATTAT
-TATTATTATTGTATTCGCTTAAACGACAACAATTCCCCCATTTGATTCAA
-AAAGTAAACATTTCCGAACTTTTTAAAAATTTGAAAAATATTTTTAAAAA
-ATTTTAGCGTGAAAAACTTGTCCCCCCACCCTGCCTCTCCAAAAAAAATT
-AATTTCGGAAGAATTCAGTCCTTGTTTTTGTAAATTGAGAACGTAATGCG
-CTTTTTGGTGGTTTTTGCATATTTATCGACACTTGCGTACGCGAGGTATC
-GATTCAGATTCCGTGAGTTTTTTACAACAAAATATCGCTAAGCAATCGCG
-CTCCAGCGCGAAACTTCAAAAAAAGGCCAAAATTTTGCGTCGCTTTCTAT
-GATTTTAAGACGAAAAGCGAGGAAAAATCAATAAAAACAGCGAAAACTTT
-GAAATTTACGGGTTTGCCGCTTTTTTTGCGCTAGAGCGCGATTGCTCACT
-GAGTTCAAGCGCCCTTCTTATTTTGAAATGGAAGAGTTTGCCGAATTAGG
-CTATTTTGGTGCGGCCACGGCTGGGGTCAATTTACGGCGCGTTGCGTGCC
-GCGTCGCGGTTAGGTGGACCACGCCTTTCCCACGCGTAGACGATTGTCAA
-TAGAGCGCCGAAAATGCAAGGCCAGAAGCCCGTATGAGTGAAGTTTTTGT
-TCATTTTCACTTTTTTTTCGTCGTTTTTAACGGTTTTTATGTGAAAATCA
-ATAAAAACGGCGAAAATAATTAAAAATTTTCGATATTCCGGGTTTGGCGC
-TTGCTTTGCGCTAGAGCGCGATTGGTCACCGAGTTCAAACGGCGCACTCT
-GGCTTCCCTCTTAATTTGAAATGGAAGAGTTTGCCGAATTAGGCCATTTT
-GGGTCGGCGGGTAGATTTACGGCGCGTCGCGTGTCGCCTCGCGGCTCGAT
-TTTGATTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGCGACTTT
-CCCACGCGTTGTCCAGCAGGTTATTGCCAATGGAGCGCCGAAAATGCAAG
-GCCAGAAGCCCGCCGTATAAGTAGCCCATATGAGTGAAGTTTTTGTACAT
-TTTCACTTTTTGTTTCGTCGTTTTTATGGTTTTTATGTGAAAATCCACAG
-TCTCCTCGTCATCGAAAGCGCACAAAAAACTGCTTACTGGCGCGTTTCGC
-GTTTTTGCTAGCGCATTTTGTGGATTTCTCCGAAATTCAGAAATTACGCG
-GAAAATAGGCTAGAATTCCAAAATTACAGCCCCGCCTCTTTTGATAATTA
-TCTTCAGGATGAAGAAGATGATCGCGAAGGTGGGTGACTTGAAATATACA
-AGAAAAATATGATTTCTTCAGAGAAACACCATTTTTACCGTTGATTTTTT
-AATATCCCTACTCCTCCTTCAGTTTTTGACCAAATTTTCTCTTTTAATGG
-TCTTTCATTTCATTTTGTGCTAATAAACAAATGTTAAGTTCGAAATCTGC
-GAAAAAATTCGTTTCAACGCTAAAAAACGACGAAGTTTATTTTTCAACAC
-TAAAAAGATTCACTCCCTCCCCCGGCTGTGCCAATGTGCAAGTGCGCCCC
-AGCCCAATTCGACGCCGAGGAGACTGTGAAATCATTAAAAACAGTGAAAA
-TAACGGAAAATTTCTGAAATTCCGGGTTTGCCGTTTTTTTTTGCGCTGGA
-GCGCGATTGCTCACCGATTTCAAATAGCGCACGCGCTTCTGGTTTCCCCC
-ATAAATTGAAATGGAAGAGTTTTCGCCGAACTAGGTCATTTTGGCGCGGC
-CACGACCGGGGTAGATTTACGGCGCGCTACGTGTCGCGTCGCGGATCGAT
-TTTAGTTGTAAAACTAAATGTAGTTGTCCGTGTGGAGTACACGACTCTCC
-CGTCCGGCAGGCGATTGCCAATGGAGCGCGAAAATGCGAGGCCAGAAGCC
-CGTGCATTTTTTTGCGGGTCCCGCCACGACATTTACCCTTTCAGACACGT
-GTATCAAAGAGGACCAGGCGATTTTGGAGAAGGAAAATGTGAACTCGCCA
-CGCCAATTTCTTTTTATCGATGACGGACAATCGCCAAAGTGGAGGGAAAA
-TGATCTCGAAGGAAAAGGAATTCTTATGAGCTTCGGAAATCGATTGAAGA
-ATCTGACAAACGGATATGAGACTGTGAGACTTTTTTTACGGGTCTCGACG
-CGATTTCCCACGGATTTCGGGCTTCCCTCATAAATTGAAATGGAAGAGTT
-TTTGCCGAACTAGGCCCCGGCCATATCTGGGGTAGATTTACGGCGCGTTG
-CGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTGAATGTATTTGTCC
-GTGTGGAGTACACGGGCGATTGCCAATGGAGCGCGAAAAATTCAATTTGT
-GTCTCGTAACGATTTTATCGATTCTTTTTCAGGGTGCCGAACAAGCTCTG
-CGTGTCCTTGAATTCAACAATACGGAACACTTTCTTGTGATCAATTTTTG
-GATGAGAAGCTACTATTTCATGAAAAACGGTGATAAATATCAGCTGTCAT
-ACACCGGAACCACCATCAAACCCGATTTGAATCACTTTATTCGGTTAGCA
-GGCTTGGAGATGCAATATCGCTCCATCGCAACCATTTTTTCAGCGTATAC
-TTCATCTGCGCTCCAGCGAACAGTCAGAGTGCGTTGATCGTGTTTGGGGA
-TCAGTCGAAACCGCGAGTTTTAAAGTCGAAAAAATCGAAGAGGGAAGCAG
-CGCTGATTGATGAGAATTCGGGGAAGAAGCTGAAAAAGTGCCAGAAAATT
-CGGACGAAAAGAGCGGCGGCGGTGAATAACTCGACGGAGTGGACACAGAC
-GCTGAAGGATACTCGGAGACTTAAACAACGTAGCGAGTGAGTTTGTGCCA
-AACGATACTCCGATGTTCCGCTTCCGCTGAGGACACCGCGTCGTTTGATC
-TCTGAAAATTGCGAGAGTCAGCCTCGTGTAAGTTTACCGCAAATTTGGAG
-GTCAAGCAGCGAGGTCCTCATATTTTGAAATGGAAGAGCTTGCCGAATTC
-GGAGTCGATTTACGGCGCGTTGCGTTGCGTGTCGCGTCGCGGCTCGTGAT
-TTTCGCATATTTATCGACACTTGCGTACGCCAGGTATCGATTCAGATTCC
-GTGAGTTTTTGCAACAAAAAAATCGCTGAGCAATCGCGCTCCACTGGAAA
-ACACCCGAAAAGTTTTGAAATTCCGGGGTTGCCGCTTGTTTTGCGCGCTA
-GAGCGCGATTGCTCGCCGAGTTCAAACGGCGCTCTCTGGTTTCCCTCTTG
-TACGAGACGAGCGTCGCGGTTCGGTCCAGCAGGCGATTGTCAATGGAGCG
-CGAAAAACACGTGGTGTCAAAGTCTCCAATTATGGTTTGATCTTTGATAA
-ATGCGGGAGACGAGAGACACCGACTTCTCAACTGATTTCGCATGGTTAAA
-AGTGTTCTGACGTCACATTTTTCTGGAAGAAAAACTCCCGCATTTTTTGT
-AAATCAAACCGGATTAGGACAGCCGGACACCACGTGGAAAAACAAGATGA
-GGGAAGCCACAGAAGCCCGTGCAGAGTCTCGGTTTTATCAGTTTTCGAGT
-AGTTTCGCACCACAAAAAGCGTGTGACGTCACATTTTTCCGGCCGCAAAA
-TTCCCGCGTTTTTTGAAGATCAAACCGAAATGCATTGTTTCAGAATCTAC
-TCTTGGGCACGTCTCTCGTTCATTCACCTCGGTTTCGGTATGGTAGTGAT
-CGTCAACGCCATCGTTTTTTTGTTCTTTTTCAAGTATTTCAAGAAGTTCA
-ACTCGACGGTGAAGAATGGAGATCAGAAGCAGGAATCGGATGAGACTGAT
-GAGAAGACTGAGAAGACTGAGAAGCAGGCGAAATAGAACTTTTTAGTCTA
-TCTGTGTTGAAATAAAGGAATTGAAAAAAAAAAAAAAAAAAATTTTTTTG
-CATATATGCATGTGGTGTCAGAGTGGATTATTTCGGTTTGATCTACGTTG
-ATCTACAAAAAATGCGGGAACTGATTTTGCATGGTTAAGAACGTGCTGAC
-GTCACATATTTTTTGGGCGAAAATTCCGGCATTTTTTGTAGATCAAACCG
-TGATGGGACGTCTGGCATCACGTGTACATGTAGAAATGAGATACAACATG
-TTATGTACCGTTATCCTACAGTACTATAGGTGAACCCCTCAATTTTTGAC
-CTCCAAAAATTGCGGGAATCTTATAGGTCAACTTGCAGGGGGTCGTGGAC
-ATGAATAAGCCAAATTCAAATTATTCAAGCCAAAAAGATGATAGCGCAGA
-CACGTGCCCCCAATTTCGGTTTGATCTACTGTGTAGATCTACAAAAAATG
-CGGGATTTAGGACGCTGAGTTCTCCACTGATTTTGCAACAAATTCCCGCT
-TTTTTGAAGATCAAACCGGACAACCTGACACCACGTGAAGGAATAAACCA
-CGCTCTTTTGCCAAAATCTTAAGAGTTTCTACAATTTCAGTGAAAATCCA
-GTATTAGATTTGATATTTGAAAAAAAAAAGTTAAATAATGGACGCGGCCT
-AGTCTTTCCTCTTCTACTAGCAAAACGCCCTGTTTTACAAAAAAAATCTA
-TAGTTTCTGAAAAAAAAATCAGTGGCAAATGTCTACAATTTTCAATATTT
-CATACTAAAAAAATCACAAAAAATTATTTTATGGCCGCGGTCGAGTTTTT
-TACTCTTCCACGTGGTTTCAGAGTGTCCAATTTCGGTTTGATCTACCGTG
-TAGATCTACAAAAAATTCGGGAGTCGAGAACTGATTTTGCATGATTGCTG
-ACGTCACATTGTTTTGGGTAAAAAATTCCCGCATTTTTTGTAGATCAAAC
-CGGACAGCCTGGCACCGCGTGCGCAGAGAAGAAAAAGCTAATGAGCACGC
-GGTGTCAGGCACGGCTTGATCTACAAAAATTGCGGGAATTTTCAACCCAA
-AAATATGTGACGTCAGCGCGTGCTTAACCATGCAGAATCAGTTCTCAACT
-CCCGCATTTTTTGTAGATCTACGTAGATCAAACCGAAATGGGACACTCTG
-ACACCACGTGAATGAGCCAATTGAGCAAAAATCGTACTGAAAGAGATCGT
-TTTATTCGCGCAGAGGTTAGTTACACGAATTGAATAGAAAAAATAATGTT
-TTGCAAAAAAAAAGTAATGTACATACTCATGGAAATAAATTTATTATGGG
-GGAGCTTGATTATTACAAGTCGACGAAGAGCAGCACTCCTTCTTCTCCTC
-CTTTTCCTTCTCTTTTTCCTTTGGAAGCTGCGGAGAATTCGACTCGGATT
-TCGACATTAGACGGGAGCTGGAGCATCTGAAAAAAAAACGCGAAAAATGG
-TAGATCACACGTTTTCCAACCTATTACCTTCTCAAACTAAGACTGGAGAA
-GAGCGGTGTACACTTGAGCATGTCCTTCAACTGTATCGACTCGTAGTTTT
-CGATCGATTCCTGGAACTTTTCGATCCACAGCTCCTTGTCCGCCTTGTCG
-GCGGCTTGTAGGGTGTAGATGCCGACGACTTGGTAGTAGCGGGTTAGGTG
-AATTATGACGAACGCGAATTTTAGGGACACTGGAAGAGGAACACACTTAT
-AGTGACACTACAGTAGTCCTAGAAGGTATTGGTAAGGTACTGGTAAGGTA
-CTGACTGCGCTAATTTTTGTACGTTACACATTTTCCTGGAGTTTTGCAGA
-CCTTCAAGAAAATTCTAGCACTTTCCAGATTTTCTCCGAAAAATTCCTGC
-ACTTTCCAGATTTTTCCAGAGAATTCCTGCACTTTACAGATTTTTCTAGA
-AAATTTTGTTTTTCTCAGAGTTTTTCCTATAACTACAGTAATCCTACAGT
-ACCCCGACCATATCGCCCCTACCAACATACAACCCAATATTCCATCAAAA
-GACAAAAACTCAAATTTTCCCGAACTACAGTAACCCTACAGTAACTCTAC
-CGTATACCTACCGGGCCCCTACAGTACTGCTGCAGTACCTTGACATTATC
-CCCTACCAACATACAACCCAATACCTCTTCGAAAGCTGGGAACTCAAATT
-TTCTATAACTACAGTAATCCTACAGTACTTCTACAGTACCTCTACAGTAC
-TACTACAGTACACCGACCATATCCCCCACTAACCCTAAACCAATATTCCT
-TCAAAAGACAAAAACTCAAATTTTCCCAAACTACAGTAAGCCTACAGTAC
-TCCTACAGTCCCCCGACCATATCCCCCTACCAACATACAGCCCAATATTC
-CATCAAAAAACAGAAAAAACTCAAATTTTCCAAAACTACAGTAACCCTAC
-AGTACTCCTACAGTACTCCTACAGTACCTCTACAGTACTCCTACAGTACC
-TGGACATCATCCCTCACCAACTTCCAATCTAATACCTCTTCAAAAGCTGA
-AAATTCAAATTTCCTATAACTACAGTAGTTCTACAGTACTCCTACACTAC
-CTCTACAGTACCACTACAGTACCCCTACAGTACCCCGACCATATCCCCCC
-ATTGACTCTAAACCAATATCCCTTCATAAGCACACTACAAAGACTACGTG
-GACTACAAACTATGTATGGTCAGACGGATAGTTTTTTTTAATATAAGAAA
-TGATGATGAACTATATATACTACTATATATACTGACACTGATTCACCAAA
-ATTAGCGACTCTGGCAATTCACCAAAGATAGGGTACGGTACTGGTATGGT
-ACTGGTACGATACTAGACCCCAGTTCTTTAATACGATTCCCTAAAATTGC
-TCACTCGGCGTTGCCTGGTCGTTGGAGTCCGCATCACAGAACACGCAAGA
-ATCCAACGGTACCGGCTGTCGTTGGACGATGTAGTGCTCGGATTTCCCGA
-TTGGGACTCCTTTCTGCAACTCTTTCAGTAATAAAACAAGTAATAAAACT
-TCGCGGGACTCCTCACCACTTTCAGCTTCGAAGCGCACTTTTTAGTTTTA
-GTCAGCACAAACATGTCGTTGAATAGAAACGCGTACATATCAACGGTCCG
-CCCGTTTTCCACAAGCTCGAGGGGGCCTTCGTGGATAAGCTTTCGACGCG
-GATGAGCCAGAAGGTTCTCGCAGAATTGACGGGATAAGGCGACGCGGAGG
-AACTGGAATTGTAAAAAATCAAGGGAAAATGTTGCAGAGAAAACAAATGT
-TTCAACTTACATCAGGGACATAAGACTTGGGCTCCAAGTCGCTTATATTC
-GGCCAGACAACCTGTGTCTGCAACTGCTGAAGCCTCTCAAAATTATGAAG
-CCACTGCACACTATCATCAATCGATCGGAGTGATTCCGTCATTGTGTCGA
-TCACCTTCTCCACCTTTCCCTTACTCTCCTCTTCCTCCGATCTTTTGTGA
-ATCTCGCGGAGAAGGATCGGAAGCCGAGTGATTCGTTGAAGCGGTGCGAT
-CAAAAGATCCTCGAGCTGTAGACGGAAGCATCGTTCATCGGCCAGACATA
-TCCGCTCGAATTCCGTGAATCGTTCCTCTTTCTGTCGAATTGAGCCGAGA
-TATTCCATGGTTGCCTTGTAGTTGATGCAGTAGGCTTGGTAGGCCGAAAT
-TGTGGAGGGGCCTTTGGAGAACTGGAAGTTTAGAGTTATAACAAGGCATA
-GTCTCAAGCTATTTTCCAGCCTATCCAAGCTGTGGTCCTGGTGCTTAACA
-GTCTTGATTTTTTAGAGCTGGAAAACCGGACTAATCCGGACTACGGAAGC
-CTGGTTTTTGTCTAAACGACAACATTGTGCAACAAGGTACGCTTTTTCAT
-ACTACTTTTTTTTAAACTTTTGTTTTTTTTTGTTCTTTTTCGGCCAGCTT
-TTAGGAACTTTTTTGACCCAACTTCGAAATGTCCCTTTTTTTTGCAATTT
-TAGGAATTTCTAGAAATTTCCCATTTTCTCTTTTTCCAGCCCCTTCTAAA
-CCTAGGCCTAGGCCTACGCATAAACCTAAGCCTACGCCTAAACCTAAGCC
-TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCTTAAGCCTGAGCCCAAG
-CCTAAGCCTAGGCCTAAGACTAAGCCTATGCCTAAGTCCCAGCCTTAACC
-CAAGCCTAGGGCTAGTTGAAAGCCTAAGCCTAACCCAAACCCTAAGCCTA
-AGCCTAAGCCTAAGTCCAAACTTAGGCCTAAGCATATGTCTAAGCCTAAG
-CCGAAAATGTCCCTTTTTTTTGCAATTTTAGGAATTTCTAGAAATTTCCC
-ATTTTCTCTTTTTCCAGCCCCTTCTAAACCTAGGCCTAGGCCTACGCATA
-AACCTAAGCCTACGCCTAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAG
-CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCT
-TAAGCCTGAGCCCAAGCCTAAGCCTAGGCCTAAGACTAAGCCTATGCCTA
-AGTCCCAGCCTTAACCCAAGCCTAGGGCTAGTTGAAAGCCTAAGCCTAAC
-CCAAACCCTAAGCCTAAGCCTAAGCCTAAGTCTAAACTTAGGCCTAAGCA
-TATGTCTAAGCCTAAGTCTAAACCGTAGCCTAAGCCGAATCCCAAGCCTA
-AGCCTAAGCCTAAGCCGACGGAGCACGAGGAGAAAGTCCAAAACTTCACA
-AAAAAACAAACATTTCTCTCAATCTCGGTCAGTTTTCAAAAATATTTCGA
-GTAATTTTTCAGCACAAATAACAAAAACCCACCCTTTCAAACAAGTCCAC
-AACTAGCTGTGTGCAGTCCCAATTCTCCTTGTCTACCGTACTGAGCAACG
-AGAGGAACGATTGACAGAAGGTTCGAGATATTCTGACAAAATAAAAATGT
-GTGTGTGTGTGTGAAATGGCACGTCAGATTAAAGGCAAATAGAAAAAAAA
-AACCAATTAAAAACTGAACGAACCTGCAGAGTTGATCCAAATTTCCGAAA
-AGGAGGTCCGGCTCGACAAGCAGTAGACATCCCTCGACTTGACATCTCTT
-CAGCGGCTCCTTGTAAACATCGCGGAGCACGAAGAGCTGACGATAGAGGA
-AGACGAGCTCCGTGTGGAACAGCTCCCATACCGCTTGAAGGTATTTGTGT
-TTGGATGAGGGAATTGTCGTGGTCTCGTCTCCCATGAACATTTCCTCAAA
-GGATACTGGCTGAAAGTTGGATTTTTTTTTGGTATTGGAGCTCGTCTCTG
-GGCTCGTTTTGCAGTTTGTACCCTTAAAAAGACATTAAAAAGACATCAGC
-AACAAACTCCAAAATCCCAAGTAGTAAACAGATTTTTTCTAAAACGGCAA
-AATTGAGTGAGGAATTTTTATTCGATGCACCATGTTTCTCACTCAAATTT
-GACTACTCATAACTTAGTTAAACCTAATCCAATACTTCCTTAAAAGCTAA
-AAATTCACATATTCCCAAACTACAGTAAACTACAGTACCCTACCGTACCC
-CTACAGTACCCCGACAGTACCCCTACAGTACTTTGACAATATCCCCCATC
-AACTCCCTACAAAATCATCAAAAACAAAAAATTCACAATTTTCAAATCTA
-CAGTAACCCTAGAGTGATCCTACAGTATTCCTACAGTACCACTACATTAC
-CTTGACATATCCCCCACCAATTTCCAACCAAATACCTCTTCAAAAACTAA
-AATTCACATTTTCCAAAACTACAGTAACCCTACCGTATACCTGCAGTACC
-ACTACAGTACCATTAAAGTACCTTGACATTATCCCCCACCAACTTCCAAT
-TAAATACCCCTTCAAAAGCTAAAAATTCAAATTTTCCCGAACTACAGTAA
-CCCTACCGTATATCTACAGTACCCCTACAGTGCCACTACAGTACCTTGAC
-ATTATCCCCCACCAACTTCCAACCCAATACTCAATCAAAAGCTAAAAATT
-AACATTTTCCCAAACTACAGTAACCCTACCGTATTCCTACAGTACCCCTA
-TAGTTTCACCTACCAACAACTTTTCCAGCTCATCATCCTCAATCTCATGA
-TCCTTAGAAGTCTCCAACGCGGCCTGCACATGCTTAATAATCTCCCTCCG
-TTTTGCTCTGCCCGACCACTCGTAAAGTCTCTTCAGAATCCAGGGCGATC
-GATTTTTCTGCGGCTCGGAAGCTTCTGCATAGAAGGCTTGAGAGGCTATT
-GTGGCACGTTGAAGATCTGAAAATGAAGAATCGGTGGGGATCAGTGGTGA
-CAGCGAGGGAGAAGATCTATTTGGTGGGGTGGCACATATAGAAGTGGGTA
-GTAGCGGTTTTTTGTGTGATCTTTGTGTAAATAGACATGATATTAGGGCT
-TCCGTGGTAGGCAGGTGCGGTTTTAGGGCCTGGCGCTTGCCTGACGCCTG
-CCCGTCTCACGCCTGCCTGGCGCCTTTTATTCTGCATTTTGAAGTGAGTT
-TTCAAATTTCAAATTTTCTCATTTTTATCATTTTGTTGAAAATCAAATTA
-AGAAATGAAAAAAAGTTTAAGTAGGTTTCAGCATCAGGCGTGTATTTAGG
-CGAGAGGCAGGCGGGGGTCGCCTCAAAGTCAGGCAGGCAGGCCTTCTTAT
-GCCTACACGGAAGGTGTTCAAAAATCGGTTGCGTGTGTCCAGTAATGACA
-AGAATCATACAAAGCATTCGACTTTTACACAAAACTAGTCTGTATTCCAC
-CTGTACAAAAACCTACCGATCGATGTGATTTTATTTGAATCTGAAAAAAA
-AATTTCTCAGAAAATTTGAATTCCCGCCAAAATGTTTCTTTGAAAGTTTG
-AATTCCCGCCAAAAACATTCTCAGAAAATTCAAGTTCCCGCCAAAAATGT
-TTCTTTGAAAATTTGAATTCCCGCCAAAATTTTTCTTTGAAAATTTGAAC
-TCTCGCCAAAATGTTTTTTTTTTGAAAATTTGAATTCCGATAAAAAACTT
-TTTACAGAGAATTTGAATTTCCCCCTACAATTTTCACAGATCTACTTATA
-TATATATATATATATATATATATAAGTTGAACTTTAGTTTTCAAAAAAAA
-ACCGGTCATTTATTAAAGCACGTGGTGTCAAAAAATATTTTTTCGGCTTG
-ATCTACGCCGATCTACAAAAAATGCGGGAGAAAAGACGCAGAGTTCTCAG
-TTGATTTCTCATGGTTAAGAAAATTCCCGCATTTTTTTGTAGATCAAACC
-GTAATGGGACAGCCTGGCACCACGTGCTAAAGTTATAGTTAATTTACAAG
-TCCTGGTTGGACCTGCAGGATGTCAGGCGCTGAAACGTGTTTCAGGATAA
-AGTTGGTAAACTTTTATAACCAAGAGGAAAGTGTTATCGATATTTTGCTA
-GTTGAACATTTTTTTTTGCTAAAAAGTAAGAGTATTTGAGCCAGGCGTGC
-GCGGCGATCGGTAATTTCCGAAAATCGGCAATTTCGGCAATTGCCGGTTT
-TGTGAATTTTTGGCAATCGGCAATTTTGGCAATTGCCGAAATTGCCAAAA
-ATTCGATTCCGCACACTCCTGCTTTGAACTGTGCATTTCCAAAATCCAAT
-AGAAATTCTGCCGACACTGTAAAATCCCTACCTGCCAACAATCCTCCGCC
-GGAGCTGATTGCCCTATTGAACAGGTGACTCTCGTTAGGGGATATTTGAA
-CATGTGGGACAATGATCACATTGTCCGACGAGCAGCACCCTTGGGATGAG
-GTCTCCTGATTCTCACTTGGCTGATCAGGAATGATTGCATGGCGACGGGA
-AAGTTGCTCCTTGTTAGGGTGAATTGTTTGGGGCTCTCCTTCTTCTGGCT
-GGAAAAATACAATTTTTTGAAGTTTTTGAAAGAAAGCTTGTCATTTTTTT
-GTTGCTATTTTTTACCCTAAAAATGTGGTTTCAAAATTTTTTTACCTCTG
-AATATCTAATCAACGGGGTGAACAACTGCAGATCGACCATACTCGAGCTT
-CTAAAAGTTTGAAGGAAGCTTCTCGTGAAGCACGAAAAAAAAAGAAACAC
-GAAATAGTTACCCTTACAATTATCAGAATAGGATGGGATGTACAGAGAAG
-TAAATAGGAAGAGAAATGAGAAGAGTTGCACTAGAGAAGTATGTACAATT
-AATAATTTATGAGCATCTGAGAAAATGAGAGCGACTTGAAAATCTGAAGA
-GCAAGGAAGATAAAACTCGGTCTCTTATCAGAAAATTTGAATTCCCGCCA
-AAATGTTTATTGTTTAATTTGAACTCCCGCCAAAACTTTTCACAACGAAT
-TTGAATTTTTCGCCAAAATTTTTCTCAGAGATTTTGAATTTTCCCGCCAA
-AAGTTTTACCAGAAAATTAAAATTCCCGCCAAAACTTTTCACATCGAATT
-TGAATAACCCGGCAATTTTTTTATCAGAAAGTTTGAAATCCCGCCAAAAT
-TTTTCACATGAAATTTGAATCTTTCGCCAAAGATTAAAATCGTTGGATAA
-TTTTAATTCGCGGCTGAACGTTTCCAATTCGAATTAAGACCGGCCAAAGT
-TTTTCGGGGTTTTTTTTAAAACTTACTACAAAAAAGCATACATTTATTTT
-CCTAACTAGACGCCTTACTAGGTAAAACCCGCTTTTCACATCAAAAACTT
-CAACAATGCGTCACCGCCAAAAGAGATTCTTGCACTTCACCACGAATAAT
-AGATCAGAAGGAAAAGCGTGTAGTGAGTTGAGAATTATAACTAATTCATA
-TCCCCCGAAAAAAAAAACGCTGATGTCTATATTCTATACATGGTGAGAGC
-TCACCGAAGAATAGACGGGTAATGAGATATATATGTGATACATAAATGTG
-TGCGCCCGGGTATCCGAGAGCCGAAAACAGAAGCATGGAATGGAGCAACT
-AGGGAAAATTGTGTTATCACGAGGCACGGCGGGAGACACAATAATATGAT
-TTTTTTTCGAAAATTTTCCATTTTCACGTGGTTGTCCCATTACGATTTGA
-TCTACCAAAAACGCGGGAATTTTTCGCCTAAAAAAATGTAACGTCAGCAC
-GTTGTTTACCATGAGAAATCAGTTGAGAAATTAGCGTCTCTTCTCCCGCA
-TTTTTTGTAGATCTAACTTGATCAAGCCGAAATGAGACGCTCTGACACCA
-CGTGACGAAAAAAAGTAGATCAAAATTTGGCAAGCCCTTATAAAAGTCCC
-TTTTTCAGTTCTAGGCGGAGCTCAGTTTGACTGATGACGTAAACGCAAAT
-CTTGAAATTTCGAATTCTCTATGGAAATTAGAACTTCCCGCCGCCGCCAG
-ACTTTGTAAAGTTCAACAAAAAGATGAAATATAGAAAAAGTTCAGACTAT
-GATAAGGAACTTATGACTAACGTCTCTTGAGGTGAATGAGTATGATGTGA
-TTAGTGATGCAAGACGACTAGACCGAGAGAGAGAGAGAGAGAGGCTCAGA
-GAGGGGGGAGGGAAGGTAGGTTTGTAGGTAGGCAAGCAGGTAGGCAAATA
-GGGGGTCGTAAGTAGAAATTATGAAGGAACCTAGGTCGGCAGCCATAAGG
-TAGGCATAAAGTAGGTCAGCATCCAAGTAAGTTAGACAGGTACGCATAAG
-ATAGGAAGGTAAGTAGGCGCGGTGGCAAGGAGACTCAAGGCAAAGTAGGA
-CAGGAAGTAGGCAGTAGGTAGGCACGATGAAGGTAGGTGGGTAAGCTTGT
-AAGAAGGCAGCCATAAAGTATGAACGTCGACAGTAGGCATGCATTTAGTA
-GGTAGGTATGAAATAAGAATTAAGGTATGCATAAGGAAGTAAAGTATGAA
-TGATGAAGCCATGTAGATACAGAAATATCAGGCAAGTAGACAGGCAGGCA
-TAATATAGGAAAGTTAGCAGTAGGTAAGCATGTAGTAGGTACGTGGGTAG
-GCATGTAGGTAGGCACGTGGTAGGCTTATGGTAAGCAGAACACAAGCACA
-GAAATATGCATATTGGCAAGTATGTAGGCATGCATAAGATACAAAAGTCG
-ACCAGGCATGTAAGTAGGCACATAGGTAGGCAGGCTTGAGGCAGCAATGT
-AGGTGATCTCGTAAGTAGGTATGAGTAAGGAACCTAGGTAAGTCACAGGT
-ATTTGGCACAACCTGTGTTCTTCTCAATGGTAATCAGGCGAACGTGCCTG
-CCTGCCTACCTAGAAATTCGGTAAAAATTGTGGAAAAAAAACTAGGGGAA
-CCTCTTCCCAATGGAATGCGTAATGTGAGTGGGAGGCGGCAAAAAAAGAG
-CGGACGTAAACACTTTTTCCTAATTCTCTTTTTCTCTCGCTCGTGGAAAA
-TGAATGAATATTTGATACAATTTTGTGGGTACAGCCAGCAGGAGAAGAAG
-AAGCTGATGTCCCGACGCGCGCGCGCGAAAAAAACTTTCAATTCCCTCCC
-CTAATTATCCGCCTAACGCCTAATGTGTGTCAAATTTACCATGTATTTTT
-TTCTCCTCTCGGCTATGTTTTTTTTTCTTTTTCAGCAAAAAAAAGTACGG
-GCACATGAGGTCGGGATGGATAATTAGGGATGTGTGCCAATTTGTTGGAT
-AATAGACAAAAAAAGTACGTGAGATTTTTAGAAAATGCTGAGAAAAATAT
-CACGAGGCGTTGGGGACGTGGCCGCGAATGAGAAAACTAGGCCACCTTCA
-CAGGGCCCTGGCCTTCCTCATTGAACTTTTCGCGCTCTACTGACAAACGC
-CCGTGTACTCCACACGGACAAATGCATTTAGTTTTGCAGCTAGAATCGAT
-CAGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCGAG
-CCAAAATGGCCTTGTTCGGCAAACTCTTCCATTTCAAATTTTTTATTCAG
-TTTAATTTTCTAGGATACGCCTACGAGTGATCTAGGCCAGGCAGTAGGTA
-GGCAGCCAGTGTAGGTAGCCCCCTTTTGGTGTCAGGCTGTCCCATCGCGG
-TTTGATCTATCAAAAATATGGGAACTTTTCTCCCAGTAAAATGTGACGTC
-AGCACGTTCTTAATCAGGCGAAATCAGTTGAAAAGTCTGCGTCTCCTCTC
-CCGCATTTTTTGTAGATCAACGTAGATAAATACGAAATCAGACACTCACG
-TGGTGCCAGGCTGTCCCATCGCGGTTTGATCTACAAAAAATGCGGGAACT
-TGTGCCCAAAATTATGAGACGTCAGCACGTTCTTAATCAGGCGAAATCAG
-TTGAAAAGTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATCAAAGTAGAT
-CAATCCACATTAAGACCTTCTGACACCATGCCCGAGAAGAGTTCAAAATA
-AATTTCGTAGAACATAAATTTTTCCACGTGGATTTTACAGCACAATTGCT
-TATAGAGCGCGGTTGCACCCCAAATTTTACAGGAAAAATAGGAAAATTTT
-ACCAGATTTCCCGCGCAAGACACGAAACAAGGTCTTAAAAAGTGGGAGAG
-CATGAAAAATCCTAAGAAAGTAAGAAACTTCTGGTTTACCACATAACTCA
-AATTGGAGATAGTTCGACCTTAAAAATTTTGCACCAAAAAGGGCGGAGCC
-AAAAACACCAAAACTTACGTGCAAATTTGTACATGAAAAAACTAAAAAGG
-ACACCTAAAACCGGCGAAATATGAAGAAAAACGCTGAAAATGAGCAATGT
-GTATCAATTTTTCCCCCGTTGCTTAATTTAATACATGTCTTCCTCTCCCC
-CTTCCTTCCTGCTTCACACTCTTTCGGGCGGCGCCTCCTTTTGATTTGAG
-ACTTGAGACTTTTTTTTTTGTGATGTGCGTTGAGTAGTGTGGGATGCATA
-TATTATGAATCAAAAATCTGACATCAAAAATATCGCTGAAAAAATAGTTA
-AAATTTGCTTTAAAACTGCCGTTTTTGATCTACAGGGTGCTTTGGCGCGT
-TGCGGTCGCGTCGCGGCTTGGAGTTCTAGGCCACGGCCATTCAATTTGAC
-ACTACTACAATCAGAAATATTTTGTAATTCTTAGGCCATCAAAAAATTTT
-TAAGCCAGAAAACAAATCCGGAAATTTCTAGGCCATCAAGAATTTCTAGG
-CCACATCAGACTACTTTGAAAATTTCTAGGCCACAATGGGAACTAATTTC
-TGAACCTAATTTCTGAAATTTCTTGGCCACGATCTGAAATTTCGAAGCCA
-TAATTTGAAATTTCTAGGCCACGATCTGAAATTTCTAGACCATCAACAAT
-TTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTGTAGGT
-CAAGGTTTGAAATTTCTAAGCCACGATTTGAAATTTCTAGGCCACGATCT
-GAAATTTTTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTT
-TAGGCCACGATCTGAAGTTTTTAGGTCATCAAAAATTTCTAGGCCACGAT
-TTGAAATTTCTAGGCCACGATCTGAAATTTCTAGGCCACGATTTGAAATT
-TCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAAATTTCTAGGCC
-ATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAA
-TTTCTGGGCCACGATCTGAAATTTCTAGGTCATCAAAAATTTCTAGGCCA
-CGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGA
-AATTTCTAAGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGC
-CGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTAGGCCACGTTTTAAA
-ATTTTTAAAATGTTTAAAATTATAGGTTTTCAAAAAAATTCTAGGCCATC
-AAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATCTGAAATTT
-CTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTTTAGACCA
-CGATCTGAAATTTCTAGGCCATCAAAAATTTATAGGCCACGATTTGAAAT
-TTCTAGGCCACGATTTGAAATTTCTGGGCCACGATCTGAAATTTCTAGGT
-CATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAA
-ATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTAGGCC
-ACGTTTTAAAATTTTTAAAATGTTTAAAATTATAGGTTTTCAAAAAAATT
-CTAGGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGA
-TCTGAACTTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAAT
-TTTTAGGCCACGATCTGAAATTTCTAGGCCATCAAAAATTTATAGGCCAC
-GATTTGAAATTTCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAA
-ATTTCTAGGTCATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCC
-ACGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTGGGCCACGATCTG
-AAATTTCTAGGTCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGG
-CCGCGATTTGAAATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAA
-AATTTCTAGGCCACGTTTTAAAATTTTTAAAATGTTCAAAATTATAGGTT
-TTCAAAAAAATTCTAGGCCATCAAAAATTTCTAGGCCACGATTTGAAATT
-TCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAAATTTCTAGGCC
-ATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAA
-TTTCTGGGCCACGATCTGAAATTTATAGGTCATCAAAAATTTCTAGGCCA
-CGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGA
-AATTTCTAAGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGC
-CACGATTTGAAATTTCTAGGTCACGATTTGAAATTTCTAGGCCACGATTT
-GAAATTTATAGGCCGTGATCTGAAAGTTCTAGGTCATCAAAAATTTCTAG
-GCCACGATTTAAAATTTCTAGTCCATCAATAATTTCTAGGCCACCAGAAA
-ATTTGTGTTCACTTTTTTTTTTGGTTTTTGGTATGTATTTTTCAGAAATT
-ATTCAAAATTTGTGGGAGCAACAATATGCTTTTTTAGTTTCTAGGCCACA
-AAATTCTTTGGCCATTTTCACATTTTTTCCCGCCGCCAATGGTTCCACTG
-GATAATTGAATGTATAGAAAAAAGGGAAGAGTTCAGCTGGCGCAAAAGAG
-GGTAATTCGTTGGAAGGGAAAAAAATAAATGCAAATCTTCGCCAAAAACC
-AATTTTCGGTCGGAGCTCGGCGCGGGCCGACACACACAAAAATGGAGCAG
-AAGAAGACGTCAGAATCTTCTTTTTCAGAAGGCTTTCTCACTTTGAAAAT
-GGGGTGTCCAATTTCTTGTTGCTAATTGTTGGATGGGGAAAGAATGATAT
-TTTGTTTCAGGTTTCACACAACATCAGCCTAGACATTTTTTTTTTGTTTT
-CTCCAAGAGGAGTACACACACTATAAATTGTTGTAAAAATCGAAAAACAC
-GTGGAGCCAGAATTTCTTATTTCGATTTGATCTACAAAAAATGCGGGAGT
-TAAAACGCAGACATCTCACCTGATTTCGCAAGAGCGTGCTGACGTCACAA
-TTTTTTTGGAAAAATATTTCCGCATTTTTTGTAGATCAAACTGCAATAAG
-ACAGCCTGGCACCACGTGAAAAATAGTATTCCTCTTGAAAAAGATTTCCC
-GAATCAAGTTCCTTGAAAGGAGTACGCAAAATTTTGCAAAAAAAATCGGT
-GGCCGAGTTTACTCTTCTGGCGGCCACGTAACAAAATTAACAAGGAAGGA
-TAAAAAGGAAAAAAAAATTTTACTCGTAAAAAGGTACCAGGAAGCAATTT
-GAGGAAGGAAGGAAATGTGAGTGTCTACTCTAATGATCTACCAGTTTTGG
-TGGCCGCGGAACAGAGAAAGCTCGGCCCCCAAGTATTTTTTCAAATATCA
-CGGATTTCTGGTTTCCCTTATAAGTTGAAATGGAAGAGTTTTTAAAGAAC
-GAACTAGGCCATTTTAGCTCGGCTGGGGCAGATTCACGGCGCGTTGCGTG
-TCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATATATTTGTCCGTGT
-GGAGTACACGACTTTCCCACGAGTTTTCCGACAGGCGATTGTCAATGGAG
-CGCGAAAAATTCAATGAGGAAGGCCAGAAACCCGTGAGATATTTAAAAAA
-TATTCCAAAACTATTTTTATATTCAAAATTGGAAATTATACATACTATAA
-GTATTTTCAACTACATACATGGCCGCGAAAAAAAAAAACTCGGCCACCAA
-TTTTCGCGGTCACTTACCGCAGATCTCCATCGATCCTGAAGTCTTGCCGT
-ATACAATAAGGGCATTTTTCGGATCATAGTGAATGAATTATTTCAGGAAT
-ATTATTTCAAAGAACACACACCACACAAGAAATGTGAAGGGAAGGAAACG
-GGGAAAAAGAGACAGGTGGAAAAATACATTTTCTCTATTATTTCGCTCTG
-TTTCTGACTAGGAAATGAATCAGAATCAGTGATTAAGAAACTGGGAATTT
-ACGAGGTGTTTAGGGAGATGGTGACCGCGAGGATGAGGAAAAACTCGGCC
-ACCGCAAGACTTACCGGCTTAATCAATTGATTTCCTCGTATGTGATGGAA
-CAATGTGAGAGCCGGAGCTTCACTCGTCATAGCTTTGTGTCTAGGTGGCT
-CTCAAGTACTGCTGGACCTGAAAAACTGCAAATTTAATTTGAAATTTGGG
-ATGCAAAAAAGTAGCAGCCGACACCTGCCGGGTTCCCGCAAGATGTCGGA
-TGCTTCAATTGACCTAGTAGAATCGTTAGTGATCTACCGAGCAAAAACAA
-GTATGCTTGCAAGAAAAAAAGGCGTGTGGCTCAAGTTGACAAATTCGACA
-CTTTGGACACACGAAATTGGATGAGCCACACCACACCGGCTAGCTCAGAA
-GAGCCCCTCCGACGTCAAGGACCCCATGTGCGCGCGCGAGCCGAGATTCT
-GGCAACATGAGAAGCGGAGAAGGCGAAGAGAAGAGTGCTAATTTGAACTT
-GTTGCTGCAGGAAAAATATCTAGGCTTAGGCTTAAGCTTGGGCTTAGGCT
-TAGACTTATGCTCAGGCTTAGGCTTAGGATCAGGCTTAGGCTCAGGCTTA
-GGCTCAGGCTTAGGCTCAGGCTTAGGCTCAGGCTTAGGCTCAGGCTTAGA
-ATTGGGCTTCGGCTTCGGCTTTGGCTTGGCTTAAGCTTAGGCTTAGGCTC
-AGGCTTAGAATTGGGCTTAGGCTCAGGCTTAGAATTGGGCTTAGGCTCAG
-GCTTAGAATTGGGCTTAGGCTTTGGCGTAGGCTCAGGCTTAAGCTCAGCC
-TTAGGCTTTGGCGTAGGCTTAGGCGTAGGCTTAGATTTAGGTTTAGGCTT
-AGGCCTTGGCCTAGGCACAGGCCAAGGTTTCAGGTCACTATCACTTGCTC
-CTAGGTGTGGCTGGGGAAATGAAATTCTAGGCCAGTGACGTCAAGATTCT
-GGAAGAGTTCCGTTGACGCCACCAAAAGCAACAAAAACTTCAAATCTGAG
-AAGATCAGAACAAAATGTACTGAAAGTACAAAAAGCCCGCACTTTTTTCT
-CTATTAATACTACTCATTTGAAGAGTGGGGAAAAGAAAAATGTGTTGCAA
-GAAATAATTCCGTGCGAAAAAAGTTTGAGAGGAATGAATGGAGCGGAACT
-TTTTTTTTTGTTGGAAAATCGTAGGTGTGACGTCACTTCTCTTCCAACCC
-CCAGGTTTCTAGGCCACTTAAGAATTTTGCAAAAAAATCACAGAGCAAAA
-CTACAAAAAGGAAAGAAGAAATGTGCTCTTGGAAAATAATAAATATTGGT
-TACGAAATAAAAGAGAAAAGAGAACGAAAAAAATAAAAAAGAAAATGGTA
-ACCAAGGAGGAATGTGGAGAAGAGGCTCTTGTGAGCCCAGATATACCCAG
-CAATTAGGGAGCGAGTACTACTGCCGGGAGATGACGTTTCGAGGATATTT
-CTCACTGGAATGGAGGGTGGTGGAAGAGTTTTGTAAAGTTCTAGGCCACG
-GGTTTTTTTGGCCAATGAGCATGGTGCATCGATGAAAAGCTATTGGGTTT
-CTCGGCCACAATAAATTACAAAAACCTAGTACGATGGAGCACACTTGCAA
-TAGAATTGCAAAAATTTATTTGAAAATTGAGAAGAAAGAAAATCAGGGGG
-GCATAAATGCTCAACAGTGCAATCAAATTGTAGAAGAGCTTTCGCCCAAA
-AAGCTAGGCCACGGAGGAGACCGCTGGAGAAAGTGACGTGTATATGGTGG
-AAGAGTTTTCTTGTTTTTCTAGGCAATCTTGGGCGATTGCAAAAATTGAA
-TTTATGAAAAGATGGCTTGGAAGAGCTTTCGCATAGAAAATCTAGGCCAC
-GGCTAGCAATTTAATAGGGGATAGAAAACCGCGTCGGAAGATTATTTAAC
-TTTTCCATAAAAATTAGCAAATTTAAGAGAGTTCAGATACTGATCTGGAA
-GAGTTTTTGAGCAAAAAACCTTGGTCACGGCCAGCAACTAAAGTAGTAGG
-GGAGATAGGGTACCCCGCTAATTTTTTATTTATTTTTCAAAGAAAGTTTT
-AAGGTTTCGGGAAAAATTTTGATGAAATGGCTTGGAAGAGCTTTTGCCGA
-AAAAACTTAGGCCACGGCCAGCAATCTAATGAGAGGGGGAGGGTTCCCCG
-CTAAATTTTTTTTTTGATTTTTAAACAAAGTTTCATGGGTTCGGGGGAAA
-ATTTGATTAATTGACTTGGAAGAGTTTTTAAGCAAAAAAAAACCTAGGCC
-ACGGCCAGCACCCTAATGAGAGGGGGGAACATAAGGTACCCCGCTATTTT
-TTTTTGATTTTTCAAAGAAAGTTTTAAGGTTTTGGAGGAAATTTGATTAC
-ATGACTTGGAAGAGCTTTTGCAGAAAAAAACTTAGGCCACGGCCAGCAAC
-CTAAAGTAGTATGGGAGATAGGGTACCCCGCGGAAAATTTTTAAATTTTG
-GTAAACAACAATGGAAGAATTTTCCGGTTTTCTAAGCCATTGCATTTTTT
-CAGCGTCACGGATTTCTGGCTTCCCTCATAAATTGAAATGGAAGAATTTG
-CCGAACTAGGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGT
-CGCGGCTCGATTTTAGTTGCAAAACTAAATGTATTTGTCCGTGTGGAGTA
-CACGACTTTCCCAGGAAGGTGATTGTCAATGAAGCGCAAAAAATTCTCAA
-AAAAAATCCAGATTCCCGTGCAGCGTCGCAGGAGATCATTTTCAAGAAAT
-CTGGCTCAAGAAGGATTCAGTAAAACAAGAAAAGAAATAAAAAAGGAATG
-AAAGGTAAGGGTGGACAAGTCGGCGGGACAACTTGTCACTTGCCATCATC
-ATCATTTTTCTTCTCCTCCTCATCAGCTTCTGCTGCTCCGCGAGCTCGCG
-ATGACTCTTCTGAAATTCTAAACTTGGCCAACACAACGTCGGCAACGAGT
-TTCGAATTTACACACACACACACATACGAAAAAAGCTCATTAATTGGAGC
-AGGAGACGGAAGAGAGGGAGGAGAGGCTGCTCAATGAGTTAGAGAAGAGA
-GAGAGAGAGAGAGACTGAAAGATGAAGTATAAGCAGAAGTCGTCGGGATG
-ACAGAAGAAGGAGGAGAAGAAAACGTGAGAAGGGGGGATGTGGAGACAGA
-AGGATATGTAAATATATTAGATTCAAGGATTACAGCAATTTTAAGGAGGC
-AAAAAAAAACAACGATGCTCCGATATTTTTGGGGTTACTGTAGTTTTTGT
-AGATACTTCCAGAAGTTATAAACAAATCCGAGTTTTTTAAAATTTGCCAG
-AAGCACGGGTTCATTGAATTTTTCACGCTCCATTGACAATCGCCTGCCGG
-ACAACGCGTGGGAAAGTCGTGTACTCCGCACGGACAAATACATTTAGTTT
-TACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGTCGTAAATCTAC
-ATATATGGCCGAGCCAAAATGGCCTAGTTCGGCAAAAACTCTTCCATTTC
-AATTTATGATGGAAGCCAGAAATCCGTGCAGAAGTTTCTCGGAAAAAAAA
-CAGAAAGTTTGCGAAATGGCAACCTCTAATTCATTAACATAAATACATCA
-AATATGACGCGCAAAAATGAATTAATTTACTAGTGAAACATGGTGCATTG
-AAGTCGGTGTTTGCACAATTTGTACAGATCTGAGGTTCACTAACACCAAT
-GCACGGCCCGAGAAGTGGTACCTGTACGCAATTTGTCTACCGTATACCTG
-GACGTTTGGGCGCGTGTATCTCAAAAACGGTTGGTCCAGTTTTTTTGTGA
-TGCATATAAAAAATGTCCGAAATTAAATTCTAAATTTTTTGGACCAAAGC
-TTTTTTCGTTATCACGCGCCCAAACCTGGTCTACACTCAAATTATCAGTA
-GAGCGCATTTGCATGGATGTACCACTTGCCGGGCCGTGTTCAAAGGGGTG
-CAACGATTGCGCGTCAAATCGAATGCAACTACAGTAATCCCTAGTAGTTG
-CGCTTCAAATTTGATGCATTGCACGGCCCGGCAAGTGGTACATCCATGCA
-AATGCGCTCTACTGATAATTTGAGTGTAGACCAGGTTTGGGCGCGTGATA
-ACGAAAAAAGCTTTGGTCCAAAAAATTTAGAATTTAATTTCGGACATTTT
-TTATATGCATCACAAAAAAACTGGACCAACCGTTTTTGAGATACACGCGC
-CCAAACGTCCAGGTATACGGTAGACAAATTGCGTACAGGTACCACTTCTC
-GGGCCGTGTTGAATGTTTGAGAAATGTTAAAATTTTGAGTTATATGTGCT
-GGAAAATTGACATGAACATGGTTTTTTTCATTATTTGCGCGTGAATTATG
-GTGCATTGAAGTCGGTGTTTGCACAATTTTTTTCAGATCTGAGGTCAACT
-GACACCAAAGCAACAGAGTTGACGCGCAAATTTTAAAATGCGCTTAACAT
-TTGGCACGCTTTGCAGTCGGTGTTTGCACATTTTCGATTGTTGTGTGAGG
-TTCACCGACACACCAGATTTGACGCGCAAAATTGTACGAAAACAGTTAGT
-TAGAAAACTAATAAAAACTATTAATAAAAGTATAGTGCATCCTGAAAAAT
-TATTTCTGCAAATGTATCTATAGAATTTAAAACAAAATATACAAAAAAAA
-ATTATGAAAACCACGACGAAAAACCCGGAAATGTTTTTTGGGTAGCTTGT
-CGATTCCGGAGGGTATTGAATTTCGCGCTCGAATAATATTGTTTCCTATT
-CATTTTCCCCAGAATACCTACAGAATTTGGGGGAAAAATATGAACTGGTA
-CCTAACATTAACCTACACGTTTTTTAAATAAGTTTAGGCCACGCCCAGAA
-AGTAGCTGGGCGGGGTTGCAGATTTTTCTAGCTTTCCGAAATATAAAAAG
-TCGGAAAAAAAGTTGTAGTCTGTAGTTTGTAGTTTGTAGTTTGTATCAGG
-TTGTCCCATAAGTTTTTGTACTTTTTTTCAAATATTTTTCCAAAACTTCT
-AGAAAGTTTTAAAATTTTTTCATCGTAGGTCGTGTCAAGGTCGGGTCGTC
-CCCTTTCAGAAAAGATTCATTTCATCCATTTCTACTTTGCCACGATGACA
-ATCATCAAACTTGAACGTCGAGACGTTAGATTGCTTCTTCTTTATGAATT
-TCGTCTTGGTCATTCAGCAATGGAAGCGGAACGAAACATATGCGGTGCGA
-TGGGTGAGGGAGCACTCTCTTATAATACAGCAAAGAGTTGGTTTCAAAAG
-TTCAAGAACGGCGACTTCAGTCTCGAAGAAATAGAACGTTCTGGGCGACC
-GGTAGAGTTAAATGAAGAAGACCTAGTGAAGCTGGTGGAGGAAGAGCCTC
-GTCTTAGTCTTCGTGAAATGGAAGAGAAGCTTGAGTGTTGTCATAGCACA
-ATTGCACGTCACTTGGGTCGCCTTGGTTTTACTTCAAAACTTGGAACTTG
-GGTGCCTCATGAACTTTCGGCATCACAGAAGCTCACTCGGGTCAACGTTT
-GTACTCAACTTCTAACTTTTCGTCGAAAGTTCGATTGGCTGAACAATCTG
-GTTACTGGAGATGAGAAGTGGGTGCTCTATGTTAACCATTCCAGAAAACG
-TCAATGGCTTCCGATCGGTGAGAAAGGAATACCGACGCCAAAGCCTGATC
-TTCACCCAAAAAAGATTATGATCTGTGTCTGGTGGGGTGTTCAAGGACCC
-GTGCACTGGGAATTGTTGCCAACTAATAAAACTATCACTGCTGATTACTA
-TTGTGCCCAATTGGACCGAGTTGCAGAAAAGACCAACGGAAAATATGAAA
-AACTATATTTTCTTCACGATAATGCTAGGCCTCATGTCGCCAAGAAGACT
-TTCCAAAAGCTGCAAGATCTTGGTTGGACTGTTTTACCGCATCCACCATA
-TTCTCCAGATCTTGCACCAACCGACTACCATTTGTTCTTGTCTCTCAGTG
-ACTACATGCGCGACAAGCAATTCGACGACGAAGAGCATCTCAAAACTGAA
-CTCTCCACTTTCTTCTCATCGCGTTCGCCGGATTTCTTCTCCCGTGGCAT
-CATGATGTTACCTAGTAAATGGCAACAAGTGGTGGACACTAATGGTGAAT
-ACTTGTGTGAATAGTACTACTTGTCGCTTGAGAGAAATAAATTTTTTTCA
-AAAAAAAAATAGTACAAAAACTTATGGGACAACCTGATAGTTTTAGTTCG
-TTATTTGCAAATTGTTAACGTTAGTATTAGGAGAGCCGAAATAAATAAAT
-TTTAGAAAAGAAAACGAAATTATATACATAGTTCATTAAAATGTGGTAGT
-TTGTAGTTTGTAGTCTATGTATTATGTCTATTCAAATTGTATTCAACATC
-AAAAATTAAACAGGAAACTTATATTTAAAAAAAAAACGAATACTGAAAAA
-AGGCGGCTGCATAGGAAAAAACAATGATTCTCCTCCAAAAAATAGAATTC
-CGCATTTTTTCAGCGGCTATTTTCACGATGATGAGAGGAGACAACAAAAA
-CATTTGAGATGAGAAATGAGGGGAATATTGCACAAAAATTGGGAAATGAT
-TTTTTTTACTTTATACACAGTTAAAATGCGATGCGCGCATAGTGTTTTTG
-GCGTGGATCGCGAGTGGGAGAAAAAGGAACCGGAAATGATGCGCATTGTG
-CGTCCATCGCGAATTTGAGATGCATTGTGCGAGCATCGCGAACATAAATA
-ATGGGCACATTGTGGATTCTCCTTTCTGATAATATTTTACTCTCTATGGC
-TTCACCAATTATCTTTCTCTCTGTGGCTTCCCACTATATTTTACTCTCTG
-TGGCTTCACCAATTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTC
-TCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAATTATTTT
-ACTCTCTGTGGCTTCCCACTATATTTTACTCTCTATGGCTTCCCACTATA
-TTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCAC
-TATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTC
-ACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGG
-CTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCT
-GTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACT
-CTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTT
-TACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTAT
-ATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCA
-CTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTT
-CACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTG
-GCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTC
-TGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTAC
-TCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATT
-TTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAAC
-TATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCC
-ACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCT
-TCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGT
-GGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCT
-CTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTA
-CTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATAT
-TTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACT
-ATATTTTGCTCTCTGTGGCTTCCCTCTATATTTTACTCTCTGGCTTCACA
-GTATATTTTATTCTCTGGCATCACAATATATTTTACTCTTTGGCTTCGCA
-GAATATTTTACACTCTGGCTTCACAGAATATTTTACTCTCTGGCTTCGCA
-GAATATTTTACTCTCTGGCTTCGCAGAATATTTTACTTTTTGGCTTCACA
-GAATATTTTACTATCTATTAATCTATTTCTTCGTATAACAATCTATTTTT
-TCGTATAACAATCTATTTTTTGTATAACCAACTTCAAACTCAACTTTTCC
-AAAACTACAGTAACCCTACAGTAATTCTACAGTACTCCTAAAACTCCCCG
-CAACCTGCAGTTCAATGACACCTCGTTTTCTCACGCGTGACTCATGACTC
-ATTAGCTTACATTTCCTTCATCCATCGGTGGTGGGGCGCTGTGTAATATA
-CAAGAAGAGACACCACCACACGCTGCTATTTCTGCTGCTGGTCTGTCTTC
-GTTTACAGCCACTTATGACTCAGCACTGCCATCAATGACTACTTCCTTCT
-TTTTTATCTTTTCGGCTTCATCTCGAGTAGCAAATTTAACAAAATTCAAT
-AGGTGTGACGTCATCAAATGCCTTCGTGGCCTAGAAATCCAAGATTTCTC
-TCGAAAGGATCAATGTGATGTCATGGCCTAGAAAACTCCAGTGTGAAACC
-TAGGCTATGTTAAATAGTCTTGAAAACTCTAAACTGAAGCACATAAGGCT
-ATGATGTCATCGCCTAGAAATCCCAATTCTATGACGTCATGAAAGACCTG
-AACTGCACCGAACCTAGGAATACCCTCAAAAGGGGTGCTGTGAAGTCATG
-TCCTAGAAAACATGAGTGCGAAAACTAGGCCGTAATCTACCATGTGGTAG
-ATCATGCGGCCCTATTGATGGCCTAGAAAACTTACAGCTTGAAGCTATGA
-CGTCACGACCTAGAAACTCAATAGTTGTGACGTCATCAATGACCTAGGTG
-TATCTCGAATGACGCAGTGTCTTCTAGAATTTTCTGAATATCACACAAAA
-GTATAACATCTTCTTGAAACCAAATAATTTTGTTGTAACACCCACACAGT
-ATTGTAACAAATGATATAATAGCGATCGGAACATTCGAGAAAACTGGAAA
-TTTGAGGTCTGACCTTGTTCGGGAAACTTACCAGTGATTATGAGGTGTGT
-CGAAAAATGTGGCCTAGAAAATGGGAAAACTCTTCCTTTTTTTTTTTAAG
-TCCAGAATTACGTTTTTGAGAACGAGAAGTGCATTTCATTTTTGTTAGGT
-TGGAAATTTAAAATTTAAATATTCGTCTCCTAGTTACAGCCGTGGAAGAC
-TTTTTCAGAAACTTTAGCCACGTGTCGAAGTCTGGCGGTGCCCACGATAT
-TAGAGAATGTTGATATTTCCTATTTACTTATCTCCTCGAAATTTTAAGAT
-TAAAGTTACTACCGTTAAGTTACACTGGTGGAAGAGTTTTTAAGATTTCT
-AGGCCACGGCAAAGTTTGGGTGTGCCAGTGACCCTAACACTAAATTTTTA
-AATTTTTTTCAGCCAAATCATCATATGGTGGCCTAGAAAATTTAACACCT
-GAAAACTCTTCCATATTTTTTTAATTTCTGAAATCCAACAAAATAATTTT
-CAAACTCCTCTTCCTTTTTTCCAGAAAAATAAATTAATGTAAATCAAGTT
-CATCTCCGATGAGTTGTAACGGTGGAAGAGTTTTTCAGATTCCTAGGCCA
-CGTCAAAGTTTGAGGGCTTCCCGTGACCCTAACACTAAATTTTCCAATTT
-TTTCAGCCAACCCAAATCAGAAGCTTTCTCTTTGTGTAATAACATGACAA
-TGGGCTATTATCATATGAAATTTTTTAGGTTAAATTTCTGAGGTCATTTG
-CAAAGGTGTCATGACTAGTTTGGAGGCTTTTTTGTGACGGTAGGGGTATG
-AAACAGGTTGTTACTTCTCGAAAAGGTATTATGTGGGGGAGAGGAGAAGG
-AAAGAAGGAAGGCAGATTAGCCAACAGAGATACAGCAAATTTTGTGTGAG
-TGGTGGCAGTTTTGAGAAGAAGCCATGCGCCAAGGTCGGTTTGCCTTCTG
-TTTTCTCATTTTTCGGTTTTTTTGTGAATTTTTGTAAATTAAAAATATTT
-TTTTATAGAAATAAAAATTCAGAAAAAAATACTGGAAGTTTCGTTTGCCT
-TCAAACATTTTTTAAAAATTCACAGTTTTTCAAATAGATGTACTTACACG
-TGGTGTCAGAGTATCTCATTTCGGCTTGATCTACAAAAAATGCGGGAATC
-TTTTGCCCAAAAAAATGTGACGTCAGCACGCTCTTAACCATGCGAAATCA
-GTTGAGAACTCTGCGTCTCTCCTCCCGCATTTTCTGTAGATCAGCGTAGA
-TCAAGCCGAAACGAGACACTCTGGCACCATTTTATTTTTTTGGGCAAAAA
-ATTCCCGCATTTTTTGTAGATCAAGCCGTAATGGGGCAGCCTAGCCCCAC
-GTGCACTTATTCCTTATGCCGAACGACACTCCGATATCCCGTTTTTACAG
-TATGACTGTGGGTTACTGTACCATTTTTGGTGCTTTTGTAATATTGTTTT
-CTTTTTCAAAAACCTAGGAAAAATTTGAACAATTGTTTTTTTTTAATATT
-TGAATTTTTTAGGCTCCCACACATTTTTGCGGGATATCGGAGTATCGATG
-TAAACGTTTTTTTTTTGGTTTTTTGTATTAAAAAGGGTTTAAGTGTTGTA
-ATAAGACATTTTGAATAAAAAATAGCTAGCGCCGCCACGACTTACTGGCT
-TCCCTCCTAAATAAAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGG
-CTCGGCCGTATCTGGGGTAGATTTACGGCGCGTTGCGTGCCGCGTCGCGG
-CTCGATTTTAGTTGTAAAACCTAATGTATTTGTTGTCCGTGTGGAGTACA
-CGACTTTTCCACGCGTTGTCCGGCAGGCGATTGTCAATGGAGCGCGAAAA
-ATTCAATGAGGAAGGCCAGGACACCGATTCAAAGATATAACGGCCCACAT
-TTCAACAGCGGTATATCGGAGTGTCGTTATTTTAAGCTTGCACACGGGCT
-TCTGGCCTTTTTCATTGCTTTTTCGCGCTCCATTGACAATCGCCTGCCGG
-GCAACGCGTGGGAAAGTCGTGTACTACACACGGACAATTTTTTTTAAGTT
-TTATAATGAAAACCGCGACGCGACACGCAACGCGCCGTAAGTCTACCCGG
-GCCGAGCCGACACGTGGTGTCAGAGTGTCACATTTCGGCTTGATCTACGT
-AGATCTACAAAGAATTTTGCATGATTAAGAACGTGCTGACGTCACACTTT
-TTTGGGCAAAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGACA
-GTCAAAATGGCCTAATTCGGCAAACTCTTACATTTCAAAATATGAGGGTA
-GGCAAAAGCATGGGGAATTTGTGATTAAATTTTTGAAAAAGGAAACAATT
-TTTTCCAAATTTCTTCTGAAATTTTTTCAAAAATAAATGTTTTTTTTCCC
-TAAAATCTTCAAATTTCTAGTTTCAATCTCTCACTACCGTGACCAAAAAT
-TCCTATGATTTTTGACCTCCCGCCACACAGTTTTACCACCAACTTCTTCC
-CCCCCCACCCACCCACTTACTTCTCGTATCTGAAACTCCGCCCCATTTTT
-CGTGTACTTTACTACTACTTGAATGATGATGAGGTAGAACAAATCTGTGT
-TTATTGGCAGAAGCAGTGGTAGCAACAGGAGAAGAAGAAGAAGCATCACT
-GTGTGGAACCAGCCAGCTGTGTTGTTGTGGTTTTAGTCGTGGAGAGAGAG
-AGGACGACGTCGTGTGTCTTCAATAAAATGAGGATCTCATCGCTCTTATT
-CCTGACTTTCTTGGCTGGAATTGTTCAGGTAAGCTGGGTTTTAAGTATTG
-ATATTGGTGCTATTTGAAAATTATTTCAAAAATTTTTGGAAAATTTTTTT
-TTTTTGGCCCAAAAATTTTTTTTCTAGAACTTTATCATTCCTAGGCATAC
-TCTAAATATGTCTGCAAATATTATTTTTTCTGGAAAATTTTGAAAATGTA
-TATATGGATATATGCAAGTTTGGAAGTTTTTGTAGTATTATTTTGAAAAA
-TTATAAATTTTTTTAAAAAAAATTTTTTATAAATCTAGCAAGAAACGTTT
-TTAAAAACAATTTTAGTCAATTTTCTTTTTTTTTTTTTGGAAATTTCACC
-AAATATCGGCCCAAAATCTATGCAATACTATTTTTTCACAAAGAAATTTT
-CAAAATTTGACATTATACAGATCTAGGGCTTCCATGGTAGGCAGGCGCGG
-TTTCAGGGACCTGCCTGAAACCTACCTGGTTGCCGCCGGCCTTAATTTTT
-ACGGGAATTTAGAAAAATTTCTAATTTTCTCATTTCTATCAATTTGATGA
-AAACCAAAATAAATTGGCGAGAGGCAGGCAAAGGTTGCCTTAAGGTCAGG
-CAGGTAGGCGTTTTAACACCTACCAGCTTTACAAAAGCACTATACAAGTC
-TGTTTTTGAAATCTCTAGCTTTAAAAATCTTTAAAACAAGACATGGTGCA
-AGACAAGACAAAGACATCGACAAATTTTCGACAAAATTAATTTTTTTCGA
-AAAACTTTTAGTTTCTTCCAAATTCGCCAAAGTGAAAAAAAAGTTCCTAA
-ACGTGAGATTTTGTATGTCTTCTACACATACTAGCCAATATCAATTACAA
-TATCTGCCAAGAAAATCTCGAACCAAACACCAAAACGGCGTTTGGTAACC
-GGTTTTTTTTCCAAAAAAACTATACATAGTTTCTAGTAAACAAATACGAA
-TGGAAAATTCAAGGTGACAGAGAAGAAAAAAAGATTAGAAAAAAAATCGT
-TGGTGGTGGCCTAAGAATTGCATGTAACGTCACACCTCGGCCAGGGGTCA
-TGGTACATGCTACATGATTACCCATGGCAAAAGAGTGACGTCACTCTCGG
-CCATGATTTTTAGGTTTAGGCTTAGGTTTAGGCTAAGGCTTCGGCTTAGG
-CTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTCAAGCTTAAGCTTAGGCT
-TAGGCTTACCTTATGAGCCTATAAGCTTTCTGAAAAAGACAAATATTAAA
-AAAAAACCAAAAAAAAAAAAAAAAAAAGACAAACAAACAAATAAAAACAA
-ACAAACAAATAAAAACAAACAAAATATTTGAATTTTTCTAAGAAGACAAA
-TACGTCACTCTCGGTCACGATTTTTGGGCTTTAGGTTTAGGTATATGTTT
-AGGCTTAGGCTTAGGCTTAGCCTTAAGCTTAAGCTTAGGCTTAGGCTTAG
-GCTCAAGCTTAAGCTTAGGCTTAGGCTTACCTTATGAGCCTATAAGCTTT
-CTGAAAAAGACAAATATTTAAAAAAAACCAAAACAAAAAAAAAAAAAAGA
-CAAACAAACAAATAATTTTTCAGGCCCAAGACTTCCTTGCAATGTTCAAG
-CCGTTCCTCGGAGGTGGCGGTGGTGGCGGTAATCCGTTTGCAAATCCACA
-GGCGATCGGCGTAAGTTTTCCGACAGGCAAACAGACAAACAGACAGACAA
-TCGAAAGTGGTCCAGGCGCTGAATGTGTTACGCAATTGGTTTTGGGCGCC
-ACGCGCGCATATTATTTGCATATATACATACATCATTCAGATAAATGGCA
-TTGAAAACGAACAAAAAGTGAAGATTTAGTGGGTTGGCAAATGCATTTTA
-TGTTTCTTTTCCAGGGTCTCTTCCAACAATTCGCCGGTGGAAATGGTGGA
-GGATTCGGGCAGCTTCTTGCTGGAGCAATGGCACCGGTATGTGTTGCGAC
-GTTTAAAACGGAGTGTCGTTGTGAAATTTTCCGCTTTGGAAAACATTGAG
-AATATTCGAAAATTTTTGTAAAATTTTGAGATTTTCTTTTTCCAAGCTTT
-GGGCTTAGGCTTAGGCTTAGGCTTAGGCTTATGCTTAGGCCTATGCTTAG
-GCATAGGCTTAGGCTTAGGCTAAAGCTCATGACTAGACTTATTCTTAGAT
-TTAGGCTTAAGCTTAGGCATGGCCTTAGGCTTAGGCTTTTGCTTAGGCTT
-TTGCTTAGGCTTTGGCTAAGGCTTAGGCATAAAAAAAGAGAAATTCCCAA
-AGTAAAAAAAAAGACAACTTTTGACAAATTTGAAAGTGAAATGTTATATT
-TTAAGCCTATTTTTTCCCTAAAAAGAAAAAAATTACTTTTATAGTTTGAA
-AACGATTTTTTGGCAGTGTTTCAGCAGTCAAAAATATGGCTGAAAAAAAA
-AGTTGATTTCAAAATATTTTTCATCTCAATTAATTCTTTTAAATTTGCTC
-TACCAAATTTGAAAAAAATATTGAAAATTATTTTAAAAAATTTAAATTAT
-TAAATTTCAAGTAAATTCGAAAATTTTGTTTATTTATTTTATGTTCATTC
-TTACAATATAAATTATAATCCTCAAACATTCCAGAAACCAGCACCAGCCG
-CAGCTGGACCCCGCTCAGCTCCAGCTCCAACCAACGAGGACTACAACACC
-GACATCGACGTTCCAGCTCCAAAGGCAAAAGCCCGTGCAGCTCCAACTCC
-ACGAAGAGCACAAGGTGATGATGATGATAATATTGATATGTCTCTGACAC
-GTCTTGGCTAACTTGGCTTGGAAAAGCACAATTCCTTTAATACAAAAAAC
-TTTTCTCAAAGATTCTCAAAATTTTGCACTTTAATTTTTAAGTTTAATTT
-TTAAAAAGTTGTCTCACGTTTTTTAACCAATTTATATGCAAATATGATCC
-TTATTACTAACAATATTTAGTAATCTAAACATAAATTGGAATATTTGGTC
-TTTTTCCCGCCGAAAATGATCAAACATTCCGAAGTTAGCAACAGAAAATT
-GCAGTGAATTGTGTTGGTTTAATTTTACCGTCGTTTTTCATATTTTTTGC
-CCGATAGCTTTGCTGTGTTTTGTGCCATCCTTTTCTCTGTGATATACTGT
-TACTTACTTCAATAAATGATTCTTTTAAAAGTTTTCGCACAAAAAATTTA
-GAGTTGCTGGCAAAAATACACGCCGACACGTGGTGCCAGAATGTCTCATT
-TCAGCTTGATCTACGTTGATCTACAAAAAATGCGGGAGAATGGAGACGCA
-GAGTTTTCTATTGATTTTGCATGGTTAAAAACGTGCTGACGTCACATTTT
-TTTAGGCAACAAATTCCCGCACTTTTTGTAGATCAAGCCGTGGTGGGACA
-TCCTATCCCCACTTGCGCTGGGGGGACAAAACCGACATAACTTTTGAAAC
-ATATTACACATATACATTTAATATATGTTTTCTGAGAGAAAACGTTTTAG
-AAATTTTAGAGAATTTCAGCAAAAAAATTCTGATAGCTTTTTGGAAATTT
-ATATTATAAAATTTTTTTTTTTTTTTAATTCTGATTTTTTCAAAAAAGAA
-ATTTTGCAAACCGCTTCCAGAATATTTGCCTGTCTCAAAATACCCTAAAA
-AACATTAAAATGTTTCAAAAATTATCTTTTGGAACAATTTTACGGGTCAC
-GCGAAATACTTTCTTTGTAAGTTTTTTTTCTTTGAAATTTAGATTTATTC
-CCAATATACGTAAATTTTTCACTGAAAGTTAGAAAATTATACTTGTTTTT
-TTCCAGAAATTGAAATGTACATGATACAAGGCTGCTACATTCCAGCAAAA
-TCTGATAAAATTTTAGAAACAATTTTTTGTCAGAGTCTTGAATATTTGAG
-CTATAAGTTTTTTTTTTTCAAAAAATTAATCCAGTTTGGCCTAAAAACTT
-AAGGCTAAGATTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAA
-GCTTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGC
-CTAAACTTAAGTCTAATCCTAAGTCTATTCACTAAAATTTTGACGTAAAA
-CTTGGGACTAAAAATTTTGGACACAAATTTTTTACCTAATTTTTTGGTCT
-AAGCCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAA
-GTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGT
-CTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCT
-AAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAA
-GTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGT
-CTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCT
-AAGTCTAAGCCTAATAAGCCTAAATAGGGTCTAACGCTTGCCACTGACGC
-CGCTAACGCTCGCCACTGAAGCCACGCCTAAGCCTAAGCATAAATCAATT
-TGAAACTTCAGACTTAAATTTCTTGGTGGCCTATACGACTCTCTGTTAAA
-TTTCGCTTTGATCAGCAAACGGGAACCCTTTGAAAAATTAAAAAACTAAC
-GCTCGCCACTGACGCCAAGTCTAAACCTAAGGGTAATACTAAGCCTAAGC
-CTAAGCCTAAGCCTAAGCGTAAGCTTAAGCGTAAGCGTAAGCGTAAGCGT
-AAGCCTAAGCCTAAGCCTAAGTGTAAGCGTAAGCGTAAGCCTAAGCTTAA
-GCCTAAATCTTTCGACAAAAATTTTGACCTAAAACTTTGACCTAAAATTC
-GAGACTAAATATTTTGGACTCAAATTTCGGCCTGAATTTTTGGACTAATT
-CTGGGAACTATTCCAGAGTAATTTTAACAAATTGAAAACTTTTTATAGTA
-TTCGTAAAACAAAAAATAAATGCAATGTTTTCAGTAATAAATTTGAAATT
-TTTGAAAAATTAAATATTTCTTCGAAACTTCGAAACTTCCTTTTCTCTGG
-CATAACCCCAAATTCCAGCCGATGCCCCGCCAGTATACCGCCAGCCTCGC
-ACAAAAGCCGAAAAAATCGAAAGATTCCGGAATATCGCTCGGACATTCTC
-GCCGTTCGTGTACGAGGTGAACACCACACCAGCTCCTCACTTTGACAACT
-TCATCTGGCAACAAAATGCACCAGCTGTCACACCGGAGCCATTCACATTT
-GCTCCATTCTCCTTCCCAACTCTTGCCACCGTCGCACCACCAGCTCCAGG
-ACCCGGCGGCCCGACTCTTGAGCCATTTTTACCGACGACAGCTAGTCCGA
-AGCTGTTAGCTCATAACACTGCTAGGGTATCAAAAAATTTGAATACTGAA
-TACCTCCCTATAACTTTTTCAAATTCCAGATGATCCGAGAAATCGCTTCA
-TTTTCCGACGGAGGACGCTCCAGGGATCAGGATTTTGGCGCAGTTCAAAC
-GCTCATGCAAGCCTTCTTCGAGGCAGTCTCCAGTGGAAATAATGGTGGAG
-CAGGAGCTGCCGCCGGAGCCGGAACAGCTTTAGGAGTAGGTTAAGCTCAC
-TAAAGAGGTCGTGAAGTTTTACTATTTTTTAGGATGCTCCAATGCTTCAA
-GCCCATCGAGATGGTACCGAGTTGGGAGCCAATCGCGCGCTGACCAACAA
-GCTTTTCGAGTCGGATATGGTGTTGACGGTCAAGCAGATGAAGGCGTGAG
-TGTGGGGTACTGTGCAATAAGATTATTGTAGGGGTACTGTAAGATCTCTG
-TAGGGATACTGTAACCCTACCGTGATATTACTAAAGGGGTGCTGTAAGAT
-TACTGTAGGGGTACTATAGGATTACTGTAGGGGTACTGTAAGATTACTAA
-AAATATACTGTGAGATTACTGTAGGGGATGCTGTAAAATTTCTCTAGGGA
-TATTGTAGAATTACTCTAGGGATACTGTAGAATTACTGTAGGGAACTGTA
-AGAGTACTGTAGGATTACTAAAGAAGTACTGAAGGATTACTGTAGGGGTA
-CTGTAAAATTACTATAGAGTACTGTAAGATTTCTGTAGGGGTACTGTAGG
-ATTACTGTAGTATTACTAAACAAGTACTGAAAGATTATTGTAGGGGTACT
-GTAAAACTACTATAGAGTACTTTAAGAGTACTGTAGGATTACTAAAGAAG
-TACTGAAAGATTACTGTAGGGGTACTGTAGGATTACTGTAGTATTACTAA
-ACAAGTACTGAAAGATTACTGTAGGGGTACTGTAAAATTACTATAGAGTA
-CTGTAAGATTGCTGTAGGGATACTAGAAGATTATCGTAGAGATACTGTAA
-GATTATTGTAGGGGTTCTGTAAGATTTCTGTAGGGTTACTGTAGAATTAC
-TGTAGGGTACTGTAAAATTACTGTAGGGGCACTCTAAGATTACTGTAGGG
-ATACTGTAGAATTACTGTAGGGTTACTATAAGTTTACTATAATATTTCTG
-TAGGGTACTGTAAGATCACTGTAGAGGCTACTTTAAGATTCCTGTGGGGG
-CACTGTAACACTACTGTAAGATAACTAAAACGGTACTGCAGGGTACTATA
-AAGCGACCACCCTAGATTCATGGTTATTTCAGAATTGTGCTCGCCGCCCA
-AGAGGCCCGTAACCCTCACGGACGTAAAAAGCGAAAGGTGATTACGGGAT
-CCGTGTACCGATGGAAGAGTGTGATTCCGTTCCGATTCAAAGGTGGCGAC
-GCGAAATGGAAGAAGCTGATCCGTGAAGGCCTAGGCCTATGGGAGAAGGA
-GACGTGTGTGCGATGGAGCGAGAATGGCCCCGGCAAGGATTATGTGATCT
-TCTTCAGAGGATCTGGGTGAGTTGACATGCCCATGGTTTTCGGATAGTTT
-GGGTTTTTTTTCAGATGCTACTCATCAGTCGGAAGAACCGGAGGATCTCA
-ACTTATTTCGATTGGGTATGGCTGTGAAGATGTAAGTTTTAGTATTTCTA
-CTATACTATTTATTTTAAATTCAAATTTTCTAGAAAGGAATCGTTGCTCA
-CGAAGTCGGTCACTCCCTAGGCTTTTGGCACGAGCAGTCCCGTCCGGATC
-GGGATGACTACATCCATTTAAGAAAAGACTGGATTATTAAGGGAACCGAT
-GGAAACTTCGAGAAACGAAGTTGGGAAGAAATCGAGGATATGGGCGTTCC
-GTATGATGTCGGAAGTGTCATGCATTATGGGTCGAATGTAATTTTAAATT
-TTGAGTCGGTAGTTTTTAGATACTGAAAATGATTTTCAGGCTTTTACAAA
-GGACTGGGACCAAATTACTATTGAGACCAAAGATAGTAGATATCAGGGAA
-CGATTGGTCAACGCCAGAAGCTTTCGTTTATCGATGTTAAGCAGGTTAAC
-AGGCTTTATTGCAATTGTGAGTTGTTATGCAAAAATGAAAAAAATTTGAC
-CACTGAGCGGATCGAACGCCCAACCTTTCGATCTGGAGTCGAACGCGCTA
-CCATTGCGCCAAGCAGTCACATTTTGTTGCAGGAAACGGTGTATAGAGGA
-GAAAAGAAAAAAATAGACAACCCTACGTTTTATCAGTGGAGCGCGGTTGC
-AATTTAACATTCCAATTTTCAGCTGTTTGCCCGGTTGCCTTACCCTGCAT
-GCATGGAGGATACCCCGACCCCAATAACTGTGCGGTTTGTAAATGTCCAG
-ACGGGCTCGGAGGAAAGTTGTGTGGACGTGCCGCAAAGGGCACAGATCAT
-GGTAAAACTCCACTGGAATTTATGGGAAAAAACCGCCCTAAAATTTTCAG
-ACAAATGCGGCGGTGAGCTAACAGCGACCGCCGAATGGCAGGAGATGGTC
-TACAAGGGGAAGCGGACGTGCAATTGGAAGGTGAAGTCGCCGAGCGGTGG
-GCGGGTTCGGTTGGTGCTCACCGAGCTCAGGTACCAGTGTGCACCGGCGT
-GTAAGGCCTACATCGAGATCAAGCATAATACCGACTTCCAGCAGACCGGA
-TTCAGAGTTTGGTGAGAACCCTAGATTCCCAAAAAATTCTACACTTTTTT
-CAAAAAAAAATCGAAATTCGACCCATTTTGGCGGGAATTAAAATTCTTTT
-AAAAATGACAAAAAAAATATTTTTCTGCAGAAAATTTTTCGACTTTTTAG
-AAAGCAAGCTTTCACGCGGTTTTGGCTTCCCTCATATATTGAAATGGAAG
-AGTTTTTGCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATT
-TACGGCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATTTAATTGTCC
-GTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATTGTCAAT
-GGAGCGCGAAAAATTCAATGAGAATCGAGCCGCGAAGCGACACGCTACGC
-GCCGTAAATCTACCCCAGATATCGCCGAGCCAAAATGGCCTAGTTCGGCA
-AGCTCTTCCATTTCAATTTATGAGGGAAGCCAGAAATCCGTGTAAATTTT
-TAATTTTTTGTTGCTTAAAAAAAAAAACTAAACAACTATTTTCCAATTCA
-AATTTCTAGCTGCTTCAACAAAACATATGACGTCATCTCCGACCAATCTG
-AAGCCCTGATCCTCTCCAACGCGAACATCGTGGACTACGAGGTCTCCTAC
-AAGCTGCAATGGATTCAAGGTACCCCACCCCCCCCCCCTTTTCTATCCAT
-AGAGCGCACTTTCTTCCAGACAACGGAAAAGCTCTTCCACCACCGAAACC
-CACGTCGACCTGGGTGCCCGGAAAAGAGAATCGACCATTCCGCGGAGTGG
-AGAACTCGGGCGGCACCATCGAAAAGTTCATCCTGCAAGCGATCCCAAAG
-ATCCGAGACTCGCATCGGCCACTGGAGAGTATTACTAGTATTGTTGCGGA
-ATATGGTCTCGCAACGCTACTTGGTATATCGCATAATGGAAAGTAGTCCG
-TTTGGAACGATTTTTGCAATCGTCAGAGGAATATATATATATATTTGTAA
-ATTTTGTACCATCCCAAAAATCCAATTTTTCTTTCACAATTTTCAAAATT
-TGCTCATCTTTCACAATTACTCGGGTTAACACATTTAATGCCTTTCAATA
-AATAACAGTTCATATTTAAAGTGATTATTATATTACAGGAACACATATAT
-CTGAGAATGCGTATCGCACAACATATTTGACGCGCAAATATCTCGTAGCG
-AAAACTACTTTAAAAGACTACTGTAGCGCTTGTGTCGATTTACGGGCTCC
-TTTTTTGAAATTTACACGGTTTTCTGGCTTCCCCTCAAAAATTGATATGG
-AAGAGTTTGCCGCGAACTAGGCTATTTTGGCTCGGCCATATCGTTCAAAA
-ACTACAGTAATTCTTTAAATGACTACTGTAGCGCTTGTGTCGATTTACGG
-GCTCCATTTTTGAGATTAATTTTCTTTCGAGTTCCCTTCGTTTTTTTTGT
-AATTTTTTGCTTAATTTGAATTTTTTTTTGATAAATTAAAAAAAATGATT
-TTACACGGTCTCCTGGAGTGTTCATAATTATTGGAGCGCACTTGCTGATC
-CTTGCCGCGCTTATTTACTTTTTCACCGTTAGAAAATGAGTAAAATCAAC
-GATTTTGGTCAAGAAATTTAAAATAAAATTATTAATTGATTTCAAAACCG
-AGTCCACGTGGTGCCAGACTGCCCCATCACGGTTTGATCTACAAAAAATG
-CGGGAATTTTTAGCCCAAAAATGTGTGACGTCAGCACGTTCTTAACCATA
-CGTTGAGAGTTGAGAATTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATC
-TACGTAGATCAAGCCGAAATGAGACACTTTGACACCACGTGCGAGTCCGT
-AAATTGACACCAGTGCTACAGTAGTCATTTAAAAAATTACTGCATGTCAA
-AATTAAAATTTCCTGTTCCCGTAATATCGGATTCAGCACGCCACCCTATG
-AAAATACCAAAATTGGAAAAAAATCAATAAAAATTTATTTTCACGGAAAA
-AAAATTGAGACCACCTTTTTGTTTTCTATCTATATAAACCCGTTGTTTTT
-CACAAAAAATTATTGAAAATCCTTCAAATCATATTATTAGTTCGAAACGT
-CGACGCGTAGGTGTTCGATCGTACACTGCCGGGAATTGCCGGTTGCGGGA
-GTTTCGGCACCGCCGGTTGATATCCTTCTTTGCTAACTTTTGATCTGAAA
-ACATTGACTTTTGCTACGTGGCCGTGGAAGAGAAAACTCGGCCACTATGT
-TTGTTTTTGCGACAAGGGTATATGCGCAAACCTACAAAATGATCTTCAAA
-AAATGCGCGAATTTTTTGCCCAACAAAATGTGACGTCAGCACGTTCTGAA
-CCGTGCGAAATCAGTCCCGCATTTTTGTAGATCTGCGTAGATCAAGCCGG
-ACCACAAAAATATCAAAGTTTTGAATTTTTCAAAAAAAAAGCACTTACGA
-GGATCTAGTCAGCTTGAACAGCAAGTAAATAAGACAAAACGCGCACATGA
-TGAAGCTCAAAAGTAGATCAAACGAGAACTTGGTCGCCGAGACCGCATTG
-AAACTTCTGTCAAGTGAGAGAAACGGTTGGGTGGCATCGTTCACAAATGA
-AAGCATGTAGAATAGTCCAGCAATCGGATAGACTGCCGCAATGACTCCGG
-CAAACCCATTGACATCCTGCTCATCAGAGCCCAGAAGCCGGCAGCAAGCA
-GACGAAAGAGCAATGGAGCTGATGAGGAATAGAATGAGCTCCCGGCAGAA
-GTTGAAGATCCAGTCGGTGCCCGGGCTTGCTGCTCCGATGAAGCAGAGTC
-CGGTGAGGGGATTGGCGGCGACGGCTTTTGCGAGTAGCGCGAGCATTAGT
-GGAGCCAGCGGGATTCCCAGGATGAGCATGATCACGCGGGTTCTGGAGTC
-GTCCTGGAAGATCATTTTTTAAAATTTAATTTTTGAAAATTTATCATGTC
-TGGAAAAGGTACAGGCTGACTAGACCTATTTCACGTGGTGTCAGAGTGTC
-TCATTTCGTCTTGATCTACCATGATCTACAAAAAATGCGGGAGAAGAGAC
-GCAGACTTCTCAACTCTCAACGTATGGTTAAGAACGTGCTGACGTCACAT
-TTTTAATGTACAAAAAATTCCCGCATTTTTTGTAGATCAAACTGTAATGG
-GACAGCACAAAATTCAAAGCCCTCACCAATATATGCGATGTCCTTGTCGC
-CTTATTCCACGACACACAGATCAAGAGCCACCAGAGACGTGAGCAAGTTG
-CCGTGTAGTAAATCAGTGAGGCCACTGAAGAACATGGAACATGGGAAAGC
-CCTCCGACGACGAAGAGCAGGTGATGGGTGTAGTCGGTGCACGAGATTTG
-GAACTTCAAAATTCTTTTTGAATGGCTCAAAAATATTGATTTTGAGCCAA
-GTTATGACCATTTGAAGTTGGTGGCCTAGGATTTTCCTAGGAGTATTCTA
-GGCCGCCAACTTTGGACAGCCATAACTTGGCTGAAAATCAAAATTTTTGA
-AATCTAATTTCACAGTTGAATTTAGCAGACCATGAGCTTCAATTTGACAT
-ATTTTTGTGCCTTGCCACGAAAACTCGCAGACCTACAGTAATCCGGCCAA
-AATTAATGTTAACTGAAAGCTCAGAGTCTGCTAAATTTAAATACAAAGTT
-CGATTTCCAAAATATCGATTTTCAGAAAAATTATGAAGACTCTAAGTTGA
-TGGCCTAGCATTTTCCTAAGAGTATTCTAGGCCGCCAACTTCAAACGCTC
-ATAACTTGGCTCAGAATTAATATTTTCGAGCAAAATAAAAAGAATTTAAC
-ATAAAATCTTGTGATCTACCGGAAACTAGATGAGCGCAATTTTAAATATC
-TAGGCCACCAAGTGAAAACCGTGACTCGGCTCAAAACCATTATTTCTGCT
-TCAACCAAAAACCAATTCATTTATTTTAATTGAAAGCCCGGTGTCGGCTC
-AATTCAAATACCAAGTTTATTTTCAAAATACCAATTTTCAAAAAAGCTAT
-GAGCGTTCTAAGTTGGTGGCCTAGGATTTTCATAGATTTTCTAAGCCACC
-AACTTCAAACGCTCATAACGTGGCTTAAAATCAATATTTTCGAGCAAAAT
-AAAAAGGATTTAATATAAAATCTTGTGATCTATCGGAGAATGCATTTTAA
-ACTTTCTAGGTCACTAAGTAAAATATTCGGCCACCAAGCCTCGGCCGAAA
-ATTATTATTTCTGCTGAACCAACAACCAAATTCTCCAAAAACTGCTTACC
-TGATCTTTAAACGAAATGCTCACAATATAAATAACCGATGTCGCACAAAA
-CGAGATGCACGAGAAGAACATGGCAGTTTCCGTAAGTGAGTGGAGCATCT
-CGAGACGTCTAAAGTAGATCCTGATTTGTTTTTGGAAAATTAGGCCACAC
-ATCACACAATCCAAAACTTACGATAAGCCGACTATGAAGACTGATAGAAT
-TGTTAGTATTACAGAGCTCAGCGAGAGAAACAACAAGAGTCGGGTGGCGG
-ATTCACGGTCAGTCTGGAAATGTACTCATTTGTTACTGAACTAGGTCTAC
-TTAAGCCTAAGCCTAAAGTAAGCCTACCTGCCCAACCTTCTGTGGGTTCG
-AGCACAAAGGCACACACTTTGAGGATCGATTCAGGAACACCTCATCCTGT
-GGGCATTTTCCGTTGAGGCGGTCGACCTCCCGTTGAATATCTTCTACTCG
-ATCATTACCGTCGTCCTCCTGGAAAAGAAAGATGATTGATTTGAAGCTGT
-GTATCTAATTACCCCCGTTTGATGATATAGGACCGGAGAGATTACAATCA
-GATGTTCTCTGTTTTTCTCTGTTTTTTGGTAGCTAGTATAGAAAACTATA
-GAGTACTGTAATTCCTATTTGGGAGCTTGGTATTGTGCTATTATCAAAAA
-AATACAATTGCACAAATTTCTCATTGATCTACCTGTTGAACTTGACTCCG
-CCCCCAATCTTGTTACTGTTATTATTAAGGTAGATCAAAAACACAAGGAA
-GATCAAAAATAAATTACGAGAAAATTGTGCGATTGTATTTTTTTCTATAA
-TATCAAACATTTATTGATTTTAGGACATTCTGTGATTAACTTTTATAGTT
-TCACGGATTTCTGGCTTCCCTCAAAAAATTGAAATGGAAGAGTTTTCGCT
-GAACTAGGCCATGTTGGCTCGGCCATGCGTGGCGCGTCGCGGCTCGATTT
-TAGTTGTAAAACTAAATATTTCCCACGCGTTGTCCGACAGGCGACTGTCA
-ATGGAGCGCAAAAAATTCATTGAGGGAGGTTTCTATTTGGCAATGCGCTT
-TTGGTTTTTCAGTGATCTTTCAAAAAATTTTTCATAATTTTCAAATGATC
-ATAACTCTGAAACTAAAATTTTTGGCAAAAAAAGTCGTAATATTGTAAAA
-TGTTGCTCATAATTTCTTCTATACGATAAAATTTTTTCAAAATTTTACAT
-TAAACAGGCCAATAGGTACAGCGCCCGACAACTCGCGGGTCCAAAAATTT
-TTCAAAAATCGTCAAAATTCGACTCGCGAGATGTCGAGCGCTAAATCTAT
-TGACTTTATTTTTTTGAATTTTTGAAAAATTTGTTATCCAATAGAAAAAT
-TTATGAGCAACATCTTATTAGTTAAGCGTTTCTTGCCAAACATTTTATAT
-TCAGAGCTATACTCATTTGAAATTTTTGAAAAATCACTGGAAAACCAAAA
-ACGCGGCAAACGATTTTTTCCGGCAAATCGGCAAATTGGCAAACTGCCGG
-AATTAAAAATTTCCGGCAAATCGGCAAACCGGCAAATTGTCGAATTTGCC
-GAAAATTTCGGCAAATTGTGGTTTTGCACTTTTTTTGGAAATTTCAGAAT
-TCCAATTTCAAATTGCAAAATTAAACTCATCCTATGAATGTTTCTACATC
-TATTTTGAAAAGTAAGTAAATTCTATGAAAATATATAAGGAAAACGAGAA
-AAAATTCAAAAAGACATAGTTTTAAGTGTTTCCGTCTTATTAAAAAATCC
-CTCTAAACTTTTCCGGCAAATTGATATTCGGCAAACGGGAAATTGGCGAT
-TTGCCGGAATTGAAAAACCCGATACTTACACTTTCTTTCGCTGCAAACTT
-TGCCCTCTCATCTTGAATTGCTCCTTGCTCATTTGGCCCTTTCATGCACA
-TTTTCTCTCGATTGTTCTCCAACGGGAACTTATCACAACGAATCACATCG
-GGCCACTTGAAACCGAAACTTTCCAGCACTGGAAGACACTTTTCCTGGAC
-GGAAAGACACAATGGACGGCATGGACCAATTGGGTTGGCTAGCTGAAATT
-TTTTTGAACGATGAAATGATAAAAATGTGCGATTCTTCTCTGATTGAACT
-CACTTTCTCGTTGCACATCGGGAAGTAGACGGAGCACAGGAAGAATTTGA
-GCTGCTCGGAGCAGACAACGGAGAGCAGGGGCTTGTAGGTGAGGATGGAT
-TCGGAGGCGTCTTTCCATGATTCCTCGTCGACGAGATTTGGGAAGCTGGA
-ATAAGGGCTTGTAAAGTTTGAGAAACTTGAGATTTACAGGGTCAAAAATT
-GCTCACGAGCTCTCCCGGTTGCCGAAAAGTTGCCGAAATTTGAGCAACCA
-AAAGTTGCCGATTGCCAAAAATTGTAGGGTACGGCAACTTCGGCAATCGC
-CGGTTACCGAAGATTTTAGAGTTCGGCAACTTCGGCAATTGGCGGTTGCC
-ATTGCTCTCACGAAATTTCCCGCTATTTTTGGAGATTAAACAGCAAGTGC
-ACGTGTGGGTGTCTCAAACAGGAAAGAAATCCTGGCAGGAGCCGACTTGC
-CGGAAATTTTCAATTCCGGCAAATTGTCGGTGTGCCGATTTGCCGTTTGC
-CGGTTCTCAGATTTGCCGGAAGTGTGTAGAGGGATTTTTATAAGACGGGA
-ACACTGAAAACTGTGCCTTTTTGAATTTTTTCCCGTTTTCTTTGGATATT
-TTCATAGAATTTGCTTACTTGTCAAAATAAATGTAGGAACATTCATAGGA
-TGCGTTTAATTTTGCTATTTGAAATTGAAATTCTGAAATTTCCAAAAAAA
-TGAGTACAAAACCACAATTTGCCGGAATTTTTCAATTCCAGCAATTTGCC
-GATTTGTCGTTCTGCTGGTTTGCCGGAAATTTTCAATTCCGGCATCTTGC
-CGATTTGCCGATTTGCCGGATTGCCGAAAATTTTCAATTCGTTAGCCGTC
-CACCCTGGATCCTGCCATCCAAAAAAAAACGGAAATTTTTGGCAAATTGC
-CGTTTTTCCGCCGGCAAATTCGGCAAATCGACAATGTGCTGTTTTGCCGT
-TTTGCCGGTTTGCCGGAAATTTTCAATTCCGGCAATTTGCCGATTTGCCG
-ATTTGCCGGTTTGCCGGAAATTTTCAATTCCGGCAATTTGCCGATTTGCC
-GATTTGTCGGATTGCCGAAAATTTTCAATTCCGGCAATTTGCCGATTTGC
-CGATTTGCCGGTTTGCCGGAAATTTTCAATTTCGGCAATTTGCCAATTTG
-CCGTTTTGCCAAAAATTTTAGGGTTCGGCAAATTCGGCATTTGCCGTTTT
-GCCAAAAATTTTAGGGTTCGGCAACTTCGGCAGTTGCCGGTTTCCGCACA
-TCCCTGTCCCACACGCCCCAGGTGGAAGATGGTGGAAGAGTTTCTAGCGG
-GTCCATCAAGGATGGGAATCATCAGTCAACACAATCCTTAGCCGACCTTC
-CCAAATTCATCATTCCTTCCTTCCAAAACGGTTTCCGGTCCTTCCAACCG
-ATTAATACCAGCCACCACCACACCACCAAACCCTCTCCTTCGAAATAGAG
-AACAAAGTTGCATACCCCCCTCATTTCTTTGTTTTGGAGAAAGGGGCGTT
-TTGTGGTGCTCGGAGAGCCTGAGGACGTGACAAGTGATATATAGACGGGC
-TTATACTATCTGCTCGTCCATATTTCACGCGCCTAGGCAGAGTGCACGGC
-GGGAGGTGGAGACGCAGGTTCCCGTCCAACTGCCGCAGAGCATCCCCTAT
-CTGCTCCTATCAATTGTTCGGAGAGACTTTTTTGTGAATTTTGCTTTTTG
-CAAGAGGTCTGAGATTTGGGATTTGGGCTTTAGGCTTTAGGCTTTGGGCC
-TTGCTTTGCGCCAGAGAATGGAAATTTGTCCGTATTTTCCCGGCTTATAT
-CAAAAAATGATCAACTATAAAAATATAGAAAAAGATTTTTCAAGTTTTTT
-GTCAGTTAGTATTTTTTGATAAAACAAAAGAGAGCCGAGATATAAGCTGT
-CAAAGTAGAGCAAGGGTGGTTTGATCTACAAAAAATGTGGGGATTTTTTT
-TCAAACTTGCTCTACTGATAAATTAATAAATTACTCCCACAAAATCCAAT
-AAGCCTCAAACTTAAGATCCTCCAATCTCATCCCCCTCATAAAACAATAA
-TACTAAATCACTAGATCTCCGGTAGTATATATCAGAAGAACAGTTGCTCT
-CCCTCTCGAACCGACTTACACTTGAGAAAAATAAATTGTGGAAGAGAAGT
-GACGTCATCGTAACCTACCACTTCACAAGTTTATATATATATATATATAT
-AAGTACTAGTTAGGACTAGCTAAGACCTAATTAGAACATAGGTATGGCCT
-GTAAGTTAGGACCTAATTAGAACTCACTAGGACTATATATATATATATAT
-ATATATATATATATGTAAACAAGAACCCGGGCGGGTAACCCCTTACGGTC
-AGAGGGGTGTCCTACACCAAGGGTATGTAAACTGTGTCCCCCAGATGGCG
-AAGTTGAGAGGGAAAAAGTGAAAAAGCGCGCCACATGGCCTCGCGACCGT
-ATGTTGCAATTTCAAGCAACGTTTTTGATTTATTGGAGGAGAAATTTTGA
-AAAAGTGAAAAAAAAGTGTGACCCCATATGAGATGCGTAATAAAATTCCC
-TACAAGACCTTAAGAAAACGTGGCTGGCTGGCAAAAAACAGGTGGCAATA
-ATAACGGAATGTGTATGTGTGTGTGTGTGTGTGTGTGTGCTCGAAGAGCA
-TAGGCTCGTAAATCGTTATAATTGATGCTGGAGGAGAAGGAGACGATGGG
-CCTCCAAAGTGTTACACCTGGTATTTGTTGGGAAAAATTTGGGGGAAATA
-GGCATTAAACTACCTAACCTAATTGAGTTTTTTCAAAGCTTATATTATTA
-TAACTAAGAGGTGTGATAATAAATAATTAAAGAACTTTAAAATTATCAAA
-AACGCTTTCAAATCTGTAAAGCTGATATTTTAAGGATTTAGTACTAGTTA
-AAATCTAGTTGGGACCTAGGTAAGACTATCTAGAAAGTTCGGACGTAACT
-ATTTAGGAACAGTTAAGTCTTAAGGCCTGCTTGGGTACAGGTAAAAATGT
-TTAGAAAGTTAGGAACTAAATAGGTGAAGTAAGTACTAGTTAGGACTAGT
-TAAGACCTAATTAGAACCTAGGTAAGGCCTGTAAGTCAGGACCTAAATAG
-GACTTACTAGGACTTAGGTAAGACTAGTTAATGTCTTGTTAGGACTAGTT
-AGGACTAGCTAAGACCTAATTAGAACCTAGGTACGGCCTGTTAGGGAAGA
-TCTGATTAGGACTTACTAGGATTTAGGTAGGACTAGTTAAGATATAGTTA
-GGACTAGTTAGGACTAGTTAAAATTTAATTAGAATCTAGGTATAGCCTGT
-AAGTTAGGACCTAATTAAGACATACTAGGGCTTAAGTAGGACTAGTTAAT
-ACTAGTTAAGAACTAATTAGAACATAGGCACGGTCTGTTAGTTAAGGCCT
-AATTAGGACTCACTAGGACTTAGGCAGGGCTAGTTTAGTTATTGTTAGGA
-CTAGTTAGGACTAGTTATGTACCTAATTTGGACTCACTAGGACTTAGGAG
-GACTAGTTATAATCTTGTTAGTAATATTTAGGACTAGTTAAAATCTAATT
-AGAACCTAGATATATCCTGTAAGTTAGGACCTAATTAAGACTTGATTTGC
-TAGGATTTAGACAGGACTAGTTAAGATATTGTTTGGACTAGTTGACTAGT
-TAAGACCTAATTAGATCTTAGGTACGGCCTGTAAGTTAGGGCCTAATTAG
-GACTGAATAGGACTAAATTTCTTGTTACGAATAGTTAGGACTAGTTAGGA
-CTAGTTAAAACTTAATTAGCACCTAGGTACGGTCTGTTAGGGAATACCTA
-CTTACCAGGCCTTAGGTAGGACTAGTCATGACCTAATTAGAACCTAATTA
-GAACCTGGGCACGGCCTGTTAGGGAAGACCTAATAAGGACTTACTAGGAC
-TTTGGTAGGACTAGTTAGGACAAGTTAAGACCTAATTAGAACCTTGGTAT
-GGCCTGTAACTTAGGACCTATTTAGGACTTACTAGGACTTAGGTAGGACT
-AGTTAGGACTAGTTGGAAGTTGGGACCTAACTAGTTAGACCCTTAATTTT
-GTACACATGCTTATTAATATCAATAAAAATTTTAAAAAAAAACGACTTTT
-TTAAGTTTAACTATATAAAACTATAATTTGGAAAATTTGCTACTTTGCTT
-AAAAATCGAGAAAAAACCTAGCGTTTCTATAAAAAACCATCTTGAAGTAA
-ATTTTGAAAAAACCCCGTCATCCAACAAAAAAAAATTCACTCACCTCGTT
-AAGTTATACGGCAAATCGTTGCACATCTCATGATCCACCTTTTGACACCT
-CTGCCCGTCCACACCAATCACAAAGAGCAACAGGAGCCAGGTTACTCCGA
-GGTAACCACGAAATGGTCCCATTAATGATAATGGAATTGGGGGCTCACAG
-CCTGGGTGGGGGAAAATATTGAGAGTAAAAGAAACAATGAGAAGAAAGAC
-GGAGGATAGGCGGGGGGGGGGGGGGGGGCACACCAGTGGCAGCACCACCA
-CGGCCTGTCCGTTGACAAATGACCCAAACGGACGGGGGGCGGGAAGAGTG
-TCTGTTGTGTGTGTTGGGAGATGGCTGGCGGTTATCAGATATTTGTATGA
-ATGGTATAGAGAAACAGAGACCAAGAGAGCTGAAAGATGGAGAGGCGAAA
-GAGGAAGAGAGGGGGGGGGGTGGAAGTTTTTACGAGCCCTGTAATAAATA
-TATCGAAGCAGCAAATCATTTGATGATAACGGAGGAGCGCGGGGACGGAG
-ACGGCAATCATCATCATTATTAGGACCAGGGGTGTGCGGCGAATTTTTGC
-CGAATTTGCTGTTTGCCGAGCTCGGCAATTTACCGAATTTGCCAAGCTCG
-GCATATTTCAAAAAAGTAGATTTGCCAAATTTGCCGAACTTGGCATATTT
-CAAAAAAGTAGATTTGCCGAATTTGCCGAGCTCGGCATATTTCAAAAAAG
-TAGATTTGCTGAATTTGCCGAATTTGCCGAGTTTGCCGAGTTCGGCAAAT
-TTGCCTATTTAGCCGAGCACGGCATATTTCAAAACAGTAGATTTGCCGAA
-TTTGCCGAATTTCCCGAGCTTGGCATATTTCAAAAAAGTAGATTTGCTGA
-ACTTGCCGAGCTCGGCAAATTTGCCTATTTAGCCGAGCACGGCATAGTTC
-ACAAAAGTAGATTTGCCGAATTTCCCGAGCTTGGCATATTTCAAAAAAGT
-AGATTTGCTGAACTTGCCGAGCTCGGCATTTTTCAAAAAAGTAGATTTGC
-TGAATTTGCCGAGCTCGGAATATTTCAAAAAAGTAGATTTGCTGAACTTG
-CCGAGCTCGGCATTTTTCAAAAAAGTAGATTTGCTGAATTTGCCGAGCTC
-GGAATATTTCAAAAAAAGTAGATTTGCCGAATTTGCCAATTTTGCCGTTT
-GCCGAATTTGCCGAGTTTGCCGAGCACGGCATATTTCAAAAAAGGAGATT
-TGCCGAATTTGCCGAATTTGCCGAATGTGCCGATGCCGAGCTCCTGTTGA
-TTTTTTTCCAAAAATTCAGTAAAACGACACAAATTTGTTTTAAGAATTCA
-TTAGTTTCGGTGCTCCAAACAACATCAAAAAATATCAAATTTTTCCGAAT
-TTGTTAAGCACGGCAAATTTGCCAAATTTGCCGAATTAGCCGAGCACGGC
-TAATTTTGAGATTTGTCGCACACCCCTGATTAGGACCGAGAAAAGGGCCT
-AACATGATTTCACAATTTGAAAAATGAAATTCAATTTTTCTTGGGAAAAA
-AGTATGAATCTCTTCCTCCGCCCGTTTCCGGCAGAAACAATTGAACCAAA
-CGAGCCAAAAGTGCACATTGTGTAACTTTGTTGGGGAGTGTAGATAACCA
-GAAGAAACAAGATGGAACTTTCTTGCGATGAACAAATTTTGGAACACTGG
-AGGGAAATGATTGGTGTTTTTTAAGCTTTTTAGTCAATTTTTAAAACTGT
-TCTACAATAGGCCCAAATAGGCCTAATAGGCAAATAGGCCAAGTAGATTA
-AATATGCCAAATAGGCAGTATAGGTTGAATAGGTAAACAGGCCAAATAGG
-TCAAATAAGCTAAATAGGCGAGACTGGTGCTCAAATACTTTTTGAACTGG
-TAATGTTTTTTCTTCTACACAAAAACAAAAAAGTCCCTGCTTAGTTCCGC
-AAAATTGTGATTTTTTTCAAAAGTTACCCATTTTTGCCACTTTTCAATAG
-TTTTTGATAGGTTAAATCTAGATTTTCTGAATTCAGCATATATGAATTAC
-CCGTTTTCAACAAATTTAGGCAAATTTTTATTTTTGCCCAATTTTTTTAG
-CCATCTAATGACTGATTTTGGGCAAAAAAAATTTTCCTGAAATTGTACAA
-AACCATTAGAAATTGAAAGGCTCCTCAGTTTAAAGGCACATGAGGTTTTT
-CGGAGTGGGTGGCAATTGTCGTTCGGCAAATTTTTTGGTCGACAAATTCG
-ACAAATTGCTGGTTTGCCGATTTGCCGGAAAGTATTTTCTTACTTTTCAA
-AATATATGTACGAACATTCAGAGGATGCTTACAATTTTGCCGGATAAAAT
-TTAAATTCTGAAATTTCCAAAAAAAATGTGCAAAACCATAAATTGCCAGA
-AATTTTTAATTCCGGCAATTTGCCGATTTGCCGATTTGCCGTAAATATCA
-ATTCTGGCAAATTGAAGATTTGCCTTATTTGCCGACTTGCCGCATTCCCT
-GATGTAGGCATCAAAACGACTGAACACCAAGTTTTTTTGAAATTTTTTAA
-GTTTACCTTTATAATTTTTAGTGCTCAAAAAGTTCCAAAATTAAATAAAT
-TTTGAAATTTGCCGAGCTCGGCAAACGGCAAATTTGCCGCACACTCCTGT
-TTCAAATGTTCACCGCATATTTAATTATTCCGGAAATCCCCTCAAACATC
-CATCAAAAGTGTTTTCCCTGATTTGTTGACTCTGACACCGACGGTGGTTG
-TTCCCCCCCCCCCCCACTCTCTCAATTGGCATGTAAATGAGCCCGTATGA
-ATGAAGTGCCTTTTGGCGGCAAAATGCATATCTCCAAGTACCATTGAATT
-AATCTTCCATCCCCCATTGTCTCCTTCTATATAGGGGGGAGGATGCGTGA
-TTCTTGAAATATGCTCCAAGTGACAAATTGAGCGTGTGTGATGTATCGTG
-GCAGATGGCTGGCTGACAACGGATCAGTTCCAAAAACTGTATCAAACGGG
-GGGAAGAGAGGGGAGATGAAGGATGGGGGCAGATGGAGTCATCGATGCAC
-CATGTTTTTTGGAGCTGTTCACTCAGATATTAGGGTATTTTAATCCCCTT
-TTTAAGGTCTATTTCTGATCGTAAAACTTGGTATTTTCAACTCATTTTTA
-ACTCAAAAATTTCAAAAGTTTGAAAAATTACACAAAAACCTAAATTTTGA
-TCTGGTTTCAGGCATTTTAGTCCCTGTTAAGCGTCTTCGATGCACCATGT
-TGTTGTTCAACTTGTTTAAACTTTTTAGTTCCGCATCGAGGAAAATGGAA
-AATAAAAAATTATTTATGTATTCAAAAACCATACTTTGATTCTCCGTAAC
-AACGCTTTCATGGGAGGCAGGCCCGGTTTCAGGGCCTGACGCCTGCCTCA
-AACCTGCCGGCCTCACGCCGGCCTCACGCTTCATTTCTGCATTTTGGCGA
-AAAATCAAATACTTGGACATAGTGAAAAGGTGATTTTTTCGACGCGGCCG
-ACACTTTTCGGGTTCCGCGCCGCACTATACAGGAGGCGAGGCTCGCGGCG
-CGAGGCAGGCGGAGGTCGCCGCAAGGCAGGCGCGGCAAGCATTTTTGTGC
-TTACATGGATACCCTAGTCTACACAAAGCACGAATTTCTGGCTTCCCTCA
-TAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGGCTCGGCC
-ATATCTGGGGTAGATTTGCCGTCGCGTTGCGTGTCGCGTCGCGGCTCGAT
-TTTAGTTGTAAAACTAAATTTATTTGTCCGTGTGGAGTACACGACTTTCC
-CATGCGTTGTCCGGCGGGCGATTGTCAATGGAGCGCAAAAAATTCAATGA
-GAAAGGCCAGAACCCAGTGAAAAAGATAATTTGACAATTACAAATAATGT
-TTTAAAATTTTTTTTTTGTTTTTGATTTTTGGTTCTCCTTGTGTTTTAAG
-AACATGATGCATCACCGCTGGAAATTGCTGGATATGTAAAAAAATTATTT
-ATGTACATATTTAAAAATCAAATCTTGATTCTCCGGGATAGAAGCATAAA
-TCAAATTTATTACTGTAAATTTTCACTTTCAGTACATTTAATTGAAATTT
-TTAAGCTTTGAAGTTCAGGGTATCATAGTTTTGCCTCCAAAATCCACTTG
-CCCAAAAAACAAGCCTGGGAATTCCCGGCGGGGGACGATGGTTCGATAGC
-ATCAATCATATCTGTGTGTGTGTGTGTGTGTGCAAGGCGGGGGATGAGCC
-GGCGCGCGAAACGAATAAATCAAGAAACGTCTCTCTTTCTGCGAGCACGG
-ATTTTGTTGTGAGCCCGCGCGCGCGCGGTCTATAGGAGGAGAGGGGTATC
-ATGCACTTCTAATACAGGGCATACTTCTTTCATTTCCATGTTTTTGTACA
-TGTAATAAAATTGTTAATTAGCCAAAAGTGGTTCACATGTTCACGTCGTA
-AACGTCGGTTTTCAGGGTGTACTGATAATGAATGTGCTCTGTGTGGAGAC
-AAAGAGGCAGCAGAGAGCAAGAATCAGTTAGGTTAGGCAGGTGACTTTTT
-TCAATTGTGACTAGGAAAAAGTATTTTGGGAATTTTTTTTTATTTTTTGG
-CTTCTGCCCAGATTTTCAGGATTTTTCAAATATTTACAGAAATTTTCGTG
-ATTCTACAATAATATTTTTGTAATTTTCTCAATTTTCAAAAAATTGCCAA
-TTAATTTTGAAGTTTCGAATGAAGCAATTGCCGAAGTTGCCGACTCCCGG
-AAATTTCGAAAACCGGCAATTGCCGAAATTGCCCTTTGCCGGAAATTTCG
-AAAACCGGCAATTGCCGAAATTGCCCATTGCCGGAAATTTCGAAAACCGG
-CAATTGCCGAAGTTGCCGACTCCCGGAAATTTTGAAAACCGGCAATTGCC
-GAAATTGCCGACTCCCGGAAATTTTGAAAACCGGCAATTGCCGAAGTTGC
-CGACTCCCGGAAATTTTGAAAACCGGCAATTGCCGAAATTGCCGATTGCC
-GGAAATTTCGAAAACCGGCAATTGCCGAAATTGCCGCTTGCCGGAAATTT
-CGAAAACCGGCAATTGCCGAAATTGCCGATTGCCGGAAATTTTGAAAACC
-GGCAATTGCCGAAATTGCCCATTGCCGGAAATTTCGAAAACCGGCAATTG
-CCGAAATTGCCGCTTGCCGGAAATTTTGAAAACCGGCAATTGCCGAAACT
-GCCCTTTGCCGGAAATTTCGAAAACCGGCAATTGCCGAAGTTGCCGACTC
-CCGGAAATTTCGAAAACCGGCAATTGCCAAAATTGCCGATTGCCGGAAAT
-TTTGAAAACCGGCCACTGCCGAAATTGCCGACTCCCGGAAATTTCGAAAA
-CCGGCCACTGCCGAAATTGCCGACTCCCGGAAATTTCGAAAACCGGCAAT
-TGCCGAAATTGTCGATTGCCGGAAATTTCCGATCCCTGAGTTTAGCCTTT
-TTCAGCAAATCAAACAGTTTATGATTATTTTTTCAAAAATTGTTCTGCAG
-TGCTCTTGCATCACTATTGTGGCCCTCCTTTAAATACAGTACTTTCTACA
-GTACCACTACATCAATGATCCTTCCAGTAATGCCAACACATTGTACCACT
-ACAGTAATCCTACAGTACCCTATACAGTACCGTCGCAATACAATTACCGT
-AACACTATGGAAATCTTACAATAGACTACAGTATACAAAAACTACAGTAA
-CCCCCTTGAAGTTAGTGTAAAACTTGCAAATGTTCAACTCTTTTTTCTGA
-TTTTTTTTTGTTAAGTTCAGAAATTGTAGAGTGTTTTTGGCTTCTGCTCA
-GATTTTCAGAAATTTTCGTGATTCTATAGTAGTCTTTTTGTAATTTTCTC
-AATTTTCAGAAGTCTGCAAATTCAATTTGAAATTTCGAATAGCTTTAAAA
-AACTCAAACAGTTGGCACAAATTTTCGTAGATTCATGTAGAATTTCAGCC
-TTTTTCAGCAAATCAAACAGTTTTTTATTTTTTTTTGTATTTTTTCAGAA
-ATTGTTCTCACCCTCCAAAGTACTATCACGTCCTAACAGTAATATTAGCC
-TACCGTATCACTACAGTAATCCTCCAGTACTTCTGTGCATGCTACAGTAC
-CCTTGCATCACCATAGTGGTGATCCTTTAAACCTACAGTACTTCTACAGT
-AGCACTACAGTACCACTTCAACAGAATCTTTCCAGTAATATCAGCGTATC
-GTACCACTACCGTAATCCTACAGTACCGCCACAATACTATTACCGTAACA
-CTATGAAAATCTTACAATACACTACAGTATACAGAAACTACAGTAACCCC
-CTTGAAGTTGGTGTAAAACTTGCAAATGTCTACCGTAATCCTACAGTACC
-CCAATACAGTACCGCCGCAATACAGTTGGCATAACACTATGAAATCTTAC
-AGTACACTACAGTATGCAAAAACTACAGTAACCCCCTTGAAGTTGGTGTA
-AAACTTGCAAATGTTCAACTTTCTACAAATTTGCCATTAACTTGTAAGTT
-GGGGGAGCGCATCGAAGTGTATACATATATGTACATGCCAACCAATTATT
-TTCTCAAACAATTTATTAATAGTCGAAGACACCTGAAGCAACGATTAGGA
-GGAAGAAGAGGAAGGAGAGATTGGCAGAAGAAGAAGAAGAAGACGAATTA
-GTTGAAGAATCTGTTGAAACGGAAGACGTTGTTTGTGATGTCTCTAGCCG
-TGCGACAGCTTCCCGTTTCAGACGGAACGATGTTCGCACGGCGATCGGTG
-GCGAGATGTCGGACACGTCGATTGTCGACGAGAAGGGATCAGAGACGGTT
-GAAGAATGCTGAGGAGGAGGATTATGTCGACGTTCCCGTCCACGACACGC
-GGCCTGGGTACACGTGACACAGACGTGAAGGTTACAGAAGATGTTCACCT
-CGTTGCTGGAATAATAGTCGTTGAGAGGTGGGTGGTGAACATGAACAAAG
-AACTTAAGAGGCTTACCTCGTTGGGAATGCCCAGGCCTTTATGTGGTTGT
-AGAAGATGGTCTTACCATTGCGTCGAGTCACTTCAAAGTCTCCCCACACC
-TGGAACAATTTTCTATGGAAGTCTCAAATAATATGCAGTTGGTCGATGCA
-CCATGATGAATTTTGTGCCAAACATGGTGCATCGACGCTAAATAATTTTC
-TTTTGAAATTTAAAGATGTTTTGCTAGACTTTCCCTAAACATCTTTTTAG
-TTTTCCAATGTTCTCTAATATCATCATGGTGCATCGAGAAAAAATGTTAT
-AGGAGGAGTAAAGAAATTTGAGACTTTACTTTTTTAGACCAAAAATGACC
-CAAAACTACCGAATTGTTTAGTAAGACGTTTTGAAAATTTTTCAAAACAA
-AGTTATGGCGGTTCAAAGTTCTGGAAAATAGCATATTTTCAGCTAAAATC
-TAATGTTTTGGGGGCTGGGGGAGGAATAAAAATGTAATTTTTTTTGTGCC
-CCACTGCCCGAAAATGCACTTTAATCGACGAATAAACGGCTTATAAAGGG
-CCACAATATTTATAAAAGAGTGATATTATAGTTATAAATAAAAATTGAGT
-TCCCGACCGAGAAAAAAATTGGCGAAAATTTTGATTTTAGCTGAAAATGG
-GACTTTTTTTCCAAAACTTTGAGCGGCCATAACTCTTTTTTGAGAATTTT
-TCAAAACGTCTCATTTAGAAATTCGGTAGTTTTGGGTCATTTTTGATCTA
-AAAAAGTAAAGTCTCAGATTTTGATACTTTCTCGATGCACCATGATGAAG
-AGAAAAAAAGAGAAAATTTAGAAAAAAAAAAAAAGAACCCTTCCGATGTT
-TTGGGAAAGTTTAGCAAAACAATAGATTTGTAAAAAATTCAATTTCATTA
-GGTTCCTATTAAATTCTCAATTTTTATCAATGCACCATACATTTTCAGCG
-TGAAATTTTGTAAAATGCACAGGAATGAAAATTGATCAGGTGTGTATAAA
-ATAAGAAATTGAAGCATTTTGTTTTTTTTTTTGTCGATACACCATGATGA
-ATTTCACGTCAAACATGGTGCATCCTGGAAAGGAGAGAGTTTTAAAAATG
-TATCATTTTTTTCTCGATGCACCATGAAGATTTATATTAGTAGAACTTAA
-ACCGCACTTAGCATAAGTGGCATAAAAATAAAGGTGGAGTAGCGCCAGTG
-GGGATTTTGTCTAAATACACTTATTATGATCCAAAACGATCGAATATCTT
-AATGAAACACTCCAAAATATTTAAGATTTTTCAAAATTTCCGGTCAAAGT
-TTTGGCAAATTGCCAAAATATTGAAAAAAAATATGAGCTTTTGAGGAAAT
-CCAAAGCAATGTCGCGTGTTTCGACCCACACAATGTTTTTATACAATGTA
-GAAAAAAATTTTTTTTTGGTCGACTTTTAAAATTATGAGTGGCAAAAACT
-GAGTAATTGCCAATTTGACAGTAAATAAAAAATTTTCAAAAACATTTTGA
-AAAGTTTTATTATGATATTCGATTATTCTGGCACCATTTGAGTGGTTTGT
-AGTAATTTCCCCACTGGCGCTACTCCACCTTTAAAATTAAAAAAAAAATC
-ATAATGGGTATTTAATATCAATGAAAATTATCGATTTTTCCAAATGTATC
-AAAATGAGTGTTCAGCGCGAAATTTTGTGCAGGACTTTTTCTTTCAATAA
-TATATCCCGAATGATGCATTAGTTATGGGCTACACGATTTTTAGAAAAGC
-ACCTGGCCATGCTTAAAGGTGGAGAACCGAAATTTGATACTCTGTCTTTT
-TAGATCCAAAACGGTCCAAGACTACCAATATTCGTATTAACCTGTTCTGA
-AAAATTTTCAAAAAAAAAAGTTATGGCCGTTCAAAGTTTTGGAAAAATGG
-TCGATTTTTAGCTAAAATCTCAAATTTTGGCAACTTTTCAATGTCACAGC
-TGGAGCTTAATTTTAGAAACAACACGTGATAAATTGCAAAAACATGCATA
-AAAATATGTTCCAACCGCTCCGACACTAAAAAGGTGCCAAAATTTGAGAT
-TTTAGCTAAAAATCGACCATTTTTCCAAAACTTTGAGAGGTCATAATAAC
-TTTTTTTTTTGAAAAATTTTCAGAACGTCTTAATACGAAATTTGGTAGTT
-TTTGGACCATTTTGGGTCTAAAAAGGCAAAGTATCAAATTTTGGTACTCC
-ACTCACTATCGAAGCAGAGCCCCAAAAGTTTGACCGACCCAATTTTGTAA
-GTTTCTTCGATGCACCATGATGATTTTGAGCAAAATGTTAGTTTTTTTTT
-TTGAAAAACTGGTGGCAGGACCCAGTTTTCGGCAGTTTTAAATGTCGATG
-CACTATGTTTTTTTTAATGAAACCGTACCTCCCCAGAAGTCTGCAAAGAG
-CATCCGTGTGAGTCCGACAGTGGTAGCTCGGATATCCCGTCATTCGCCCA
-ACACCTTCCGATTCGTCCATTCTGATCATCGCTCATTTCAACTGTGTACG
-TCTACAATTTACAAATAGTTTCTTTTGATTTATGGAGTTCCTGACTTACA
-ACTCTATCACCAACTGCTAACGGACGTTGTAGCTGCTTTGAATCCAAACT
-GTCGCCGTCTAGAACACGAACTCGGTAGTCGACTGTCTGAAACATTATAT
-GGGTCTCGCAGCGATAATTTTGAAGCCTTACCTTATTATCCGATAGGCTG
-CTTGCTGTGGTGGCATCCGAGTTGATAGTGATTCCACCAAATGATACGGT
-CACCTGAGATTCTTTAGGAACAGGGGCAGCAGGTATACAGGTCAGAAGGA
-ATCGTTTGTCGGTTTCTGCATTGAATCTTAAAAAAAAACGATGAGGAAGT
-TATTTTTTATTTTTGTCTATTTTTGTTCGTATATGGTTTTTTAGGTACCA
-TGGAATAAAAAAAATGCTCCTAAAAAAATTAGTTTCAATAACAAATATTA
-CTGGTACAGAGAGTGTAGATAGTTAGAGAGTGACTGACATCCGGGACCCA
-ATGGGGCGGGGCGCGCGGAAGAGACGATTCGTGTCGATTTACGAAATGAT
-GACAACGAGGAAAATTTCGTAAATCGACACAAATCGTCTCTTCCGCGCGC
-CCCGCCCCATTGGGTCCCGGATGTCTGTCACTCTCTAACTATCTACACTC
-TCTGTACCGGTAATACCATAATATGATCATCATTCTACATTAGAAAAAAA
-TCGATCTGAAATCACAGATTTTTGGCCTCCCTCATAAATTGAAATGGAAG
-AGGTTGCCAAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTA
-CGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAAT
-GTAGTTGGCCGTGTGGAGTACACGACTTTCCCACGCGTTGCCCGACGGGC
-GATTGCCAATGGAGCGCGAGAATCTCAATGAGGAAGGCCATGGCGCGCCA
-GAACCCCATGATTTTTAGGGTATTTCGAGGTTGGCAAATATTCTGGAATC
-TTTTTGCAAAATGTTTTTTTTTTTTTGAAAAAAAAATTCCAAAAAATATC
-CTGATCGATGAAAATTGTTGGGTGAAAAAAGTTGCAGATTTTAGGAGAAA
-TTTGAGAAATTAGAAAAATTAGAAATTAGGAGAAATCAGAAAATTTCCAA
-ACTGCTTTCAGAATACTTGTATATATTGAAATAGCCTAAAAATCATGAAA
-TTTTTCAAAAATCTCTAAACTAGCCTCCAAATTTGGTAGTAAAAATTCAC
-TGGCAGCAACTTCAGAGCGAGATTTTTCTAGTTTAAAGTGCTCGTATGTC
-GCTGAATTTTTTGTAGGTACCTATTTGAAAGCTCTTTTTTCAAAATTCAA
-AAATTTAATTTTCAAGTTTAAATTTTGAGTAGCGCCAGTGGGGGATTTTG
-TCTAAATACACTTATTATGATCCAAAACTACCTGAGTAATTGCCACTTTT
-TGACAGTAAATAAAACATTTACAAAAAAAAAAAGTTTTATTATGATATTC
-GGTCACTTTGGGACCAAATGAATGGTTTTTCATAATTTCCCCACTGGCGC
-TACTCCACCTTTAAAACTGAGCGGAAATACTTTCCTTGTGAGCATAGCGG
-CAAAAAACCTAGTACCACATGGCAAAAAAAAACCCACTCATTGTTAGCCA
-TGACAACTTCGATCTCATTCTCCAAATTGCCTTCTCCGTTCTCCTTGGTC
-GAGCAGCCAGTCAGCGGAATCTAAGCAAATAATGCCCAAAAATTCAATAC
-ATTCAATAGGCAAACCTTCAACTGATATTTGGTGTCCGATTGAAGCGTGC
-CATTTGCATAGATACACTTTGGATGGCCCGCGCGACTTTGTATCGTGCCA
-CGGAAGTTTTCGTCAAACTTGATTTTCAATAGGAAATCTGTCTGCAATAT
-TGAAGACGTTTTTTTCCTTTTGGGTGGTGACCTTCAAGGTTTTGGCCTGG
-GTTTTTAATCTTCCATTAAATGCCCTTCAAATTCGCTTTTTCGAGAGTTT
-AAGAGAGTTTCTAGGCCGAGGAACTTCTTGCAGCCAAATTTCTAAACTAT
-TGTGTTTTTGCCAAAAACAATGAAACATTTTAGGTCATTTGTGACGTCAT
-ATTTTTTCCATGCAACTTTTTATTGGCTCCACACATCTTCCAAAAAGCCT
-AAGCCTGAGCCTAATCCAATGTCTAAGCTTAAGCCTAAGGTTCAGCCTAA
-GCGTACGCCTAAGCCCAAACCAAAGCCTAAGCCTAAGCCTAAGCTCAAGC
-CTAAGCCTAAGCCTAAAAAAAACCGGAAAATCCTAAGCCTAAATAGCGTC
-AGTAGCAAGCTAACGCTCGCCACTGACGCCAAACCTAAGTCTCGGCTTAA
-GCCAAAGCCTAAGCCTAAGCCTAAACCCATGATTAAGCCCAATCCTAAGC
-CTACGCCTAAGCTTGAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCC
-AAGCCTAAAATTTCTAGGCCACCACTAATATTTTCAAAACTCGATTCTCA
-AATACTTCATTTTTTCAGGATATGAAAGTAGGACAGAAATGGGCAGGGTA
-TATGGTATGGAGCAAATATCACAAGATGGCAGAAACATAGATACGGGGTG
-GGAGTGTTGGACTAGGTGACTTTTCTAGGCCATCCCTACCTTATCACACG
-CAATAGAAGTGTCCACAATGGCCACCGATCGAATCAGCGGTGGCAGCACC
-ACAACCACCGACCAAATGATCCAGTGCAGAATCATAAATTTGTGGAGGGA
-AAAATCGATAACAGTAGTGAGGGTAATAGTAGTAATAATACAAATATATA
-TGGAAAAATGAATACAAAAAGATGTGTGCGCTGGTTGGGGTGGTGGCGTA
-AGAATACAGGTGGGTGGGGGGTATAATTGGAGCGTGGCCGAGGAGGAGAA
-TCGCAAAAAAAAGAAGGAAAGAAAGAGGATAGTAATGACATGTTACGGTA
-GAAGGACAACTACCTAATTATATGAAAGAGGGGGGGGGGGCGACGAGAAG
-AGGAAAAAGTCTTACGCAATTTGCTACTCGACTTTCAATTTCTGCTAGAA
-ATCGAAAAAAAAATAGGAAACAAATTCCGACTCTATTCGATATCATCACT
-TCCGGGGCACGGCACAGGTCGGATCAGATTCAACGACGTCTCGCGATCCC
-GACCCTCTGATCTTACGGCCATCCCATTGTTCACATGATAGTCGATGAGC
-TCGGAGATGTTGCTGAACGTGCGATCGCGGGTTCGGACTCTCTGGAATTT
-TGAGAGGTTTGAAGGTTTGGCGGGGGGGGGGGGGGAGGGTCTTACGTTGT
-GATTGTCCAGTAGGATGAGATGTTTGTGCTCGTTTTCAGCGGTTCGGCCA
-CTCAGCACGTACTTGCCGGGCGTGTGGTCGCTTTGTCTGCAAGGAACTGG
-ACAAGTTTGAGCGGCCGACAGCTTGCGGGTCTTTTTTTAGAGAAGGGGGA
-CTGTGAGGTGTCCGCTGCTTCAGACAATCTTAGCATCATGCAAACCTTGC
-ATCTTTTGTATTTCAGGAAAAAAAACGCAGAATTTTTTTTGAACAAAAAT
-TTCAGCCTAAAACAAAAATCTAAAAAAATTTTGGGAGGATGAACTTATTA
-TACCAAATTTTTCCCTGGTCTTTCAAGAATTATTTAAAGTCCCGTGGCTT
-CTGAACATATTATCAAACAAATTACAGATATGAAATGTGACTGAAGCTTT
-AAGTCAGAAATATATAAAAAAAGGATTTTTCATACTATTTTTTCAGTCAA
-ATTTGATTTTTTTAGACTTTCAGATTTTTCTACGAAGTCTGTTAAAATAG
-GCTTATATTAAAAAGCTATCCGATTTACTATTAGTAAAAAATTATAGCGA
-CCGACATCTCGCAGGTTGTTAAAGAAAGGTGCATTGACCGGCTCACGCAA
-CTTTGGCAGTTTATATCTCGGCTGGTTTTGGTTTTATTTAAAAAATTTCA
-ATTGACGAAATATTTATCACTTTTTCTACTAAAAGTTTGCAGTTGAACAC
-TTTTTGCTAGCAGCGATATTAACCGAGATATTAGCGGAAAAAGTTACATG
-AGAAACATGGTGCATCGACAAGAAATATCTCACAAAACTTTGGCAGGTTA
-TATCTCGGCTGGTTGTGGTTTTATTAAAAAATTGTTAATTAACAAAATGT
-TTATCCTTTTTTCTACTACAACTTTGCAGTTCAACACTTTTTGCTAGCAG
-CGATATAAACTGAGATATGATTGGAAAAAGTTACATGAGAAACATGGTGC
-ATCGACAAGAAATATCTCACAAAACTTTGGCAGGTTATATCTCGGCTGGT
-TGTGGTTTTATTGAAAAATTGTTAATTGACAAAATATTTATCCTTTTTTC
-TTCTACAACTTTGCAGATGAACACTTTTTGCTAGCAGCGATATAAACCGA
-GATATGATTGGAAAAAGTTACATGGAAGACATGATGCATTGATCAGCTAT
-CATAGCTCATATTTTACTTATCTCAGGTTTTACCAAAAAATTGCCAATTA
-TTAAAACATTAGCCTTTTTCTTCGAAAATCAAATTTTGCCCGAATTGCCG
-AAAATATAGATTTGATATTTTTTTGTAGATTTAGGAGCCTAAACATTTTT
-TAATTTTTTAAGTATTGACCGTTTGCTTTTAAAAATGACTAATCGAATAC
-TGAAAACACAGTTAACTTTTTTTTCAATTTTCGAATTATAATTAGGTTTG
-AAAATTGCCGAAAATGTCGGCATTCAGTTGGAATTTTGGCAATTGCCGAA
-AATTTCCGATTCCCACGCGCCCCTGGTGTGAACCTAGTGAGCATGAAGCC
-AAACGTTTTAGAAATTCAGCAAAATTCTAGCTTTTTTCTATAAAAAATCT
-AAAAAACCTTACCGAACCAAAAAATCGCCTTCCGTCTTCAACAAAGCCTG
-TGCATCCTCTCTGGATAAATTTCCATGATACCAAACTTTCCCCACAACAT
-CCTCAGTTACAGTAGGTGCTCGGCAATTCGACACAAATGACTGTCGATGC
-AGGGAACTTCGATGTCTCATCGGCGGCGCCGGCACCGTAAATCCATCGTT
-AGAAGTTGAAGCATTCGCCTGTGCATCAAAAGTGTTCACATTGATCGCAG
-TGGTAAGGACGTCGATGAGCTTGTGCACATCCTCGATGAACACCACGTGG
-CATCGACGATCCGTTCCATCCTTGTTTTTTGCAATGTAGCCGAACATTAG
-CTCCGTGTCCGTACCCTTTTGGCCTTGGGCTCCGAATGAGAAGAATGAGA
-AGGGATGACGTTGAATTAGACGACTTTGTTTTATGATTTTGATCATTTTC
-GAGGAAATGTTGATGTCTACGGGGAAGTTTTCTTTTTTCACTTCACCGAT
-TACCTGAAAATAAGGATGGTTTACCTGGGCTTTTTCATCGACCCGTGAAG
-TGTCGGCTGCAATAATTTTAGTCGAAATTAGTGATAATAACTTTTCTATG
-AATAGCGGCTGACATCATTTAGCGCGATTTTTGATCGACCTGTAAGATGT
-CGGTTGCTTTAGTACATTCTATAGTGGCAGGCTTTTGGCTGAATTTTACT
-GGATATATAAGCTATCAAAATTTGAGCATGTCGATGCACCATGTAATTAT
-CTCAGTTTATTTCGCTGCTATCAAAAAGTGTTAAAATGCAAAGTTGTAGT
-AGAAAAAACGATAAATATTTTGTCAATTGACACTTTTTCAAAAAAAAACC
-AAAACCAGCAGAGATATAAGTAGTCAAAGTTGAGTCAGATATTTCCAGTC
-GATGCACCATGTAACCTTTCTCTAATAACCTGTGAGATGTCGGTTGCTAT
-AATTTTTTAGTCATTAATTTGGACAGCTTGTTAATTTGAAATAATTCTTG
-ATGATATCGTAGCGCGGCCGACATTTCACGGGTCCTTTTTTTTAAACATT
-TTGCAAAGCTGGTCATGCATTTTTGGTAACACTTAATATCAAATTAATGA
-GAAAATGTTTTGTAAATTTTTACCATTAGCCATGCCCAGAAAATGGCAAG
-TTTTTTATTTTATTTTCTTTTGTTTTTTTAATTCACAAAAAAAAACTCAC
-CCTACTAACAACTGGATTGATTTCTCGAGCCGCAGTCACGCCAACAGTAG
-CTGCAACGTGTTGTATACATTCTCTGAAAATTGAACAGTTACTTTATTAC
-GTAGATTTTTTATATATTTGAGCTTGCAGATGTTACCTGCCTTCATGCCT
-GCCTACCGCCTGATTTCTAAATTTTTGAATAAGATTTTTTTTTGATTTTA
-AGCCATAAGAAAAACTAACGAAACAACTTGAACTCTCATCTCGGAAACCA
-TCACGTTAATTGACTCGACTACTGGAACACTTCCGAGGTACTGAAAGACA
-ATTTTATATTTTCGGGGAAAAAACTAATAAAAAACTCACAGTAGCCGACA
-GAGAAACCCCGCTGCTCCGCAGCTCCTCTGCAAATGAGGGCTCCACGTTG
-AGCATCGCCGCAAGTTGATTTTTCGACGGAATTTTTGATTATTTTTAGAA
-AAAATCTAACTCGAAATTCGTTACAACCGAAATTTTGCAAGATTGAGTGA
-ATGAGGAATGACCGGGAGAGAAACGGAGACGCAGGCGGTGAGCGGAGTGG
-GAGAGAGAGCGCGCGAGACGGAGAGGCGCAGGCAGTGGTAGGGAGGAGAC
-AGGGAAAGATTAGATTGGTGTTGACTGGGTGAGTCAGCATTCTAATAAGT
-TAAGTTGACTCATAACTTTGTTTTTTGATCAGAGGGGGGGGGGGGGGGCC
-GTGGCCTAGAAATATCATTGCCTACTTATTACGTCACTAATGGTCTAGGA
-AACCTTGATAGCTTTTTTGGAGAAGATATGACGTCATTGGTGGACTAGAA
-ATCTTATTTTAGTTCTGGAAGAGAAATATTTTGACCGTGGAAGACAAATT
-AATGATGTGACCGGTGGCCTAGAAGTTTCAAATTATACCTGGGGAAATAA
-ATGACGCCACTGGTGGCCTAGAAAACTTAAACTATGCCTGAAGACGTCAC
-CGGTGACCTAGAAATTTAATTCTGGCGACGTCATAGAAATTTGAATTTTG
-ATGAGAAATATAATTTTATTGGTTTTCTGAAAATTGAATTTTATTGATTT
-TTTGGCAACCGGGAAATTGGAAAATTTAATAAATTGAACAAATGCAATAA
-AATAAGCAGTTTTTCAACAGTCATTACTTTTTTCCGTGAACCGTTTTGAT
-TTTAATTTGTAAATCTAGGTCGGAAAAGTCACACACACCGAGGAGCTAGG
-CTTCCCTCATCCTCCCTGGATCAGTCGGTAACTGCTTCGACTGGGGAGTG
-GGAGTGGGAGGGGTGGGATGAGTTCAATTCTTCTGGAATTCCATAATTTT
-TATTTTTGTTTTTTTGCGCCTACATATACCTGTGAAAATTGGAACTCGAC
-ACAAAAACCTCTCTAGCGCGGCTTAAATTTACTTCAATTCTTCCGGAATT
-CCATAATTTTTATTTTTGTTTTTTTGCGCCTACATATACCTGTGAAAATT
-GGAACTCGACACAAAAACCTCTCTAGCGCGGCTTAAATTTACTTCAATTC
-TTCCGGAATTCCATAATTTTTATTTTTGTTTTTTTGCGCCTACATATACC
-TGTGAAAATTGGAACTCGACACAAAAACCTCTCTAGCGCGGCTTAAATTT
-ACTTTCCTGTCCCAAAAACTCATCTATAATATTTTTAAAAAATCTAGAAT
-CCAAATCTATCAGATTTTTTTGAATTTTTGATTTTTTTCACATCGAGATT
-CGGAATCAGCGGAAAATTTGGAGTCAATTAAAAATATTTTCCAGATTTCG
-ATACTCCACATTTAAAGGAGATCACCTGAAACGCCAGAATATGATACTTC
-ATACTCTCCATCTTCTCGCTTTTGAAAATAATCAAAAAAAATAGTCGCCG
-TATTTATTGATATAGAAAAAATACCAACAAAATTGTAACTATTGATTAGC
-CATACAGGGTCTTTAAAGTCAACATTCATAGTGGGAGCTGGAAATAAAAA
-TATATAATAACTTGTTAAAAGAATTTATTGTGGAGTTATAACACCTATAG
-ACAATTAAAATCACCTGCTGCCTAAAGAGTATTTACCAGAAGCAAAGGTT
-TTCTGAATTTAGTGGAGTTTGTCCATTTACTTTTTTGCATGTTATTGAAT
-TGAAATGATACATAGTGAAACTAGAGGTAAAATTATTTACTAGGTTTAGG
-CTTAGGCTCAGGATTAGGCTTAAGCTTAGGCTTAGTTTTAGGTTTAAGCT
-TAGGCTTAGAATTACCGATAACTGATAACTTTTGCAAATTTAGTTTCTGT
-AATATCGGCAATAGCCAAAATTGCCGGAAATTTCTGCGATTCGAATAAAT
-AAATTGAAATAAAAATTAGTTCCTAAGATACATGTTATCTTTTTGCAGGA
-AAGTAGTAAACTCATGAAATGAGAAATTGCGATGAGGAAGGAAACATTCC
-TATGGTTCCTTAGACAATTTCTCACCTTACATTAGTATATAATATATAAA
-TGATGAATTTGACTTTTTGAAATTCTCTTCAATAAATACATTTAGTTGTT
-TTTTTTTTAATGAGTAAAGTTGCAGAGTGTGGAATTTGCTATGAGGAATA
-TGGTGAATATTGTTGGAAATTTTTCTGAAAGTTTTCATTTTTTTTGGAAA
-TTTAGAGAGTTGGGTGTAATTACTGAAAATTATGTTTTAAAAAAATTATT
-TTAATGATTTTTCAAATTTTACAAAAAACTCATTTTTAAATCATTAGAGG
-TGAAGTAGCGCCAGTGGGAAGATTGTTAAGATCCACTCCTTTAATCCGAA
-AAGTACCGAATATCATAATAAAACTTTTCAAAAGTTTTTAGAAACTTTTT
-TATTTACTGTCAAAAAGTGACAACCACTCAGTTTTTGCCACTCATAATTT
-TGGAAGTCGACCAAAAAAAAAATTTGTTTTCCTACATTTTTTATACTTCA
-ATTTTGTTTTAATTATTTGTATTGAAAAATTGTAGGGGTCGAAACATGCG
-ACAATCCTGTCAGTTTTCAAAAATCTCTACTTACAAAATATAGGACACGC
-TCCAAAAATGGATGTTTTTACAGACAACGCCATCCGAATCCCTTGCATCG
-GCACATGCGGTCATACGTTATGTGACAGTTGTCGTGAGAAAATTAGAGAT
-AAAAAATGTCCTCAGTGTAATCAGAAAGGCGCATTTGTTGTGAAAAATGT
-GAATAAACAATTTTGGGATTTAATTGTTTTTTCGCAATTTTTAAAACCCC
-AGGAAGTGGAAGTTGAGGAGACTGAAGAGGTTGGTTAGAACTTTTTTTTT
-GGATTTTTCGGTATTTCCGGGAGGTTATCCTTTGGGCCTAAAACTAGGCC
-TAAGAGTAGGCCTAAGCCTAAGCCTAAAACTAAGCCTTAGCCTAAAACTA
-AGCATGAGCCTGAGCCTAAGCCTAAGTCAAGCCTAAGCCTAAGTCTGCTG
-CTATCAAAAAGTGTTAAAATGCAAAGTTGTAGTAGAAAAAACGATAAATA
-TTTTGTCAATTGACACTTTTTCAAAAAAAAACCAAAACCAGCAGAGATAT
-AAGTAGTCAAAGTTGAGTCAGATATTTCCGGTCGATGCACCATGTAACCT
-TTCTCTAACAACCTGTGAGATGTCGGTTGCTATAATTTTTTAGTCATTAA
-TTTGGACAGCTTGTTAATTTGAAATAATTCTTGAAGATATCGTAGCGCGG
-CCGACATTTCACGGGTCCTTTTTTTTTAACATTTTGCAAAGCTGGTCATG
-CATTTTTGGTAACACTTAATATCAAATTAATGAGAAAATGTTTTGTAAAT
-TTTTACCATTAGCCATGCCCAGAAAATGGCAAGTTTTTTATTTTATTTTC
-TTTTGTTTTTTTAATTCACAAAAAAAAACTCACCCTACTAACAACTGGAT
-TGATTTCTCGAGCCGCAGTCACGCCAACAGTAGCTGCAACGTGTTGTATA
-CATTCTCTGAAAATTGAACAGTTACTTTATTACGTAGATTTTTTATATAT
-TTGAGCTTGCGATTGTGTAATCAAAAATAAACATTTGAAGCATGATACGA
-AATATTTGAACGATTTTTTTTCGGAAAATCAATAAATGAAAATGGAGTTT
-TTTTTTTGGATTTTAGCAAACTTCCCAAATGACGGAAAGATCATATGAAG
-CGATTATTTTTTCTTTTATAAACCTGTTCAGGATTTGCATTATTATGAGA
-AAATCCTAGGCCAATTAGGCTAGCATGTACGGAAGTATTTTTTAAAAATT
-TATAAAAGTAATGAAAAGCTGATATTTTCAAAATTCCAGAATGACGGAAA
-AATCATATGAAATGCTTTTTTTTTCTTTTTTAAACCTATTTAGAATTGTC
-AAAACTACCAGAAAATACTAAACAAAATAGCTTAGCTTGACCGGAAATAT
-TTTTAAAAAATTGATAAAAATAATGAAAAGCTGATATTTTCAAAATTCCA
-GAATGACGGAAAAATCATATGAAGCGATTCTTTTTTCTTTTATAAACCTC
-TTTAGAATTGTCAAAACTACCAGAAAATACTAAACAAAGTAGGTTAGCTT
-AACCGGAAGTAATTTTTACAAATTGATAAAAATAATAAAAAGATGATTTT
-TTCAAAATTCCAAAATGACTGAAAAATCATATGAAGCGATTCGTTTTTCT
-TTCATAAAATAGTTTAGAATTGGAATAATGATCAGAAAATACTAAACAAA
-GTAGGTTAGCTTGACCGGAAGTATTTTTAAAAAATTGATTAAAAAAACTG
-ATTTTTAAAAAATTCCAGAATGACGGAAAAATCATATGAAGCGATTCTTT
-TTTCTTTTATAAAGTAGTTCAGAATTAGCATTATTATGAGAAAATCCTAG
-GCGAATAAGGCTAGCATGTACGAAAGTATTATTTAAAAATTTATAAAAGT
-AATGAAAAGCTGATTTTTTAAAAATTCCAGAATGACGGAAAAATCATATG
-AAGCGATTCTTTTTTCTTTTATAAACCTGTTCAGAATTGTCAAAACTATT
-AGAAAATACTGAACAAAATAGGTTAGTCCTAGGAAAGACTAGTTAGGAAA
-GAATTCTTAAAATAGGAAGTTGAACAGAAAATCTGGAAGATCTGAAATCT
-GGAAAAAGGAACTCTCAAAAATTCAAATTTTGATTTTAGGAATATATGGC
-TGTGTAGTCTTCATAGACAATCAAAATAAATTATTTTAATTTTCAACCAT
-CTTTATGCACGGGCTTCTGTCCTTCCTCATTGAATTTTTCGCGCTCCATT
-GACAATCGCCTGCCGGACAACGCGTGGGAAAGTCGTGTACTGCACACGGA
-CAAATACATTTAGTTTTACAACTGAAATCGAGCCGCGACGCGACACGCAA
-CGCGCCGTAAATCTACCCCAGATAAAGCCGAGCGAAATGACCTAGTTCGG
-CAAACTCTTCCATTTCAATTTATGAGGAAAGCCAGAAACCCGTTTTTATG
-TAAAAGTTCATACTGTGCAGTTAATTTAAACAAATCAAAATTTGGAAAAT
-GATTTTTGGCTTTGTGCAAACTGTAGCGTTTTAGGCGTTAAAAATCTGCC
-AATGAATAAAAAATTTCTTATAAAATTTTTAAAAAAACAGTTATTTGCCC
-ATTCCGTTTTTCAACATTTATCAATTACGGTTCCAGTGATCAAATGCTTA
-CACGGAAGTCACTGATGACGTTGACTCCATGTTTGGTTGCGATGTGAAAA
-AGGTCGTTTTTTGCCCAAATCGAGAAAGGTCACACACACACATAGACATA
-CACAAAACCTTATATAATTTGTAAGATATTTTGTTTGATTCGAGAAAAAA
-AAGAGAACAGGTATTCCTGCGGCGTCGTTTTTCTAAACGGCAGGAAAAAT
-TGAGAGAAAGAAAGAGAAAGAAAAAAGATGGAAAAAAACAGTTTAAATAT
-AATTATTAGGTTTAATTATTAGGGGTGCACCATATTGTCGTAGGGGCCCT
-TCTCCAAAGTTTTAAGTTTATCGATAGAGCGTGAATACATAAAGAGAGAA
-ATTTGACCTGCAAAAAAAATATATGGTTGGTTCCCATGCCATAAAAAATC
-CATGCAACAAATGAAAACAACACCTGCCAAGTGTCCTCCGCCAGTCTAAC
-CAAGTTTTTCCCTCCAAATGTTCCGTGACATTGTTGTTTAAGGCTTTGTA
-CTTTCCGCAGCCGTCTTATTCTTCCCGAAGTGTTCTCCCTAGATAATCGG
-GTTTTTTTGTTGAATCGGCTGGGGGTAATGATCGGAGAAGATATATATGA
-AATAAATGAATAAAAAAGGAACACCTTTTGGAGAGGCAATGAAAAAGCAA
-GCTATGCAAAGTATTGATCCGTTGTTATGAATGGGCTTGCTTAGGCTTAG
-GTTTTTTTTAGGTTTAGGCTTAGGCTTAGGCTTAGGCTTAAGCTTAGGCT
-TAGGCTTAGGCTTAGGCTTAGGCTCAGGTTTAGGCTTAGGCTTAGGCTTA
-GGCTAAATCTAGGCTTTGGCTTAGGCTCAGGCTTGTGCTTAGGCTTAGAC
-TTAGGCTTAAGCGTAGGCTTAGGCTTAGGTTAGGCTTAAGCTTAGACTTA
-GACTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTTAGGTTTAGGCTTAAG
-CATATACCTAGGCTTAGCCTTAGGCTTAGTCTTAGGCTTAGGCATATGTT
-TAGGCTTATGCTTTGGCTTAGGCTTAGACCGTGTGTATATCCGAATGTGT
-GTTTTATTATGTTCCTGATTCTGAAATCATTTGTTAGTTTAATATCTACA
-AACATTCCAAACAGTCTGTATGTGCTGCCAGGTGGCATTTCCTTAATCAT
-CTCAAATATATTTGGTTTCATTTCCCCCCATCGCAAAATCCCTTTCTTTA
-CCTGTCATTTCGCCTTTACGTTCAACTTATTTGATTTTGTTGTTTTCAAG
-TGATAATCACGATTAAACAACGAATGAAAAAAATAGGTATGGAATTACTA
-CGGTATTCTTTTTTGCCTATCCTTCTTTCTCTCATTTTCCTTTTGTCTTC
-TAACAAGTTCTGCACTTTTGAGGTACATTTCTTCTCCGATTTGATCAGTC
-AAAGCTATTCGGTTTAAACCATCTTCTATTCAATTCTGATGATTACTGTT
-AGGAACGAGTGGTCACTTAATTCAAAAGGTCGAACTGTTGTACTAATTGA
-ATTGGAAAATTTGTAGGTTATTTGACGTTTATCAGAAATTGAAGATTTGA
-TATAAAATTTGGTAAAAATGAAAAATAAAGTTTCATTTAGAGTAGTATTC
-TGGCTTCCCTTATAAATTGAAATGGAAGAGTTGGCCATATTGGTTCGGCC
-ATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGTCGCGGCTCGATT
-TTAGTTGTAAAACTAAATGTATTTGTCCGTGCGGAGTACACGACTTTCCC
-ACGCGTGGTCCGGAAGGCGATTGTCAATGGAGCGCGAAAAATTCAATGAA
-GAAGGCCAGAACTTCGTGTAGTATTAGCAGACCAGGTTTTCACATAAATT
-TGAGCGGTGAAACTAAAATTATGACATTTTTACGCAACTTTATGGGCCAG
-AAAATTTTTTTTGGAATTTTTTTTTGAAAAAAATTCAAAAATTTTGATAA
-AAATAATTGCCAAAAAGACAAATTTTGAGTAATTTTACTGCCTCTAAGAG
-TAATGAACAAATGTTTCCAACTTTTTGCAAATTACTTTCTTAGTTCCCTT
-GCAAATCTATATAGATTGAATTTGGCCTAAAACCTAACAATTTAGCTGCA
-ATATTGTTACAAAAATTTGGGTACAATAGTGTGTTTATTGAAACATGTGT
-TCTTGAAGTTGGGTAAGAACAATTGATGAAGGTTGTACCAAATGAACAAA
-AAATGTTTTTAGAGAAAGTCTGAAACATTACCTTATTTCTGATGGTCGTT
-AATCAAATTTTACTGTAACTGTTATGAAACCTTGGGCATCGTATTTTCTC
-TATTAGTGCAGCCGACCACTTTACTTTGAGACGTTATATCTTGTTTATTT
-TAAAGATCTCAATATTTTAATAACTACAAAATCATAGAAAAAGAACCAAC
-AAAAATTTTGTTAGTTGACAATTTTTAAATAGGACAAACGATAACTGAGC
-TATGAGCTGTCAAAGTTGAACAATGGTGGTGCAATAGAAGGAACTAATAG
-AAAAAATACGGTAACCTAAATTTTTATGTTAAAATAAGAAGTAGCGGGTT
-GATTCCAGAAGTTTTTTTTATAAGGTAACCATCCGCTGACCGCGCCTCCG
-GTATCCCTTCAAAAGGCAAAAAGTAAACTTTTCTAAAACTACAGTAATCC
-TACAGTAGTCCTACAGTACACCTACAGTACCTCTACAGTATCTTGACGTG
-ATCCTCTACCTACTCCCAACCCAGTACCTCTTCAAAGGCTAAAAAGTCAA
-AATTTCACAAACTACAGTAATCTTACCGTACTCCTACAGTAACCCTACTG
-AACCATTACAGTAATTTGACATTATTCGCCACCAACTCCAAACCCAATAC
-CTCTTCAAAAGCTAAAAAGTCAAAAGTTCACAAACTACAGTAATCCTACC
-GTACTCCTACAGTACTCATACAGTACTACTACAGCACCCCGAACATATCC
-CTCCACTAACCCCAAGTCAATATCACTTTAAATGACGAAAAGTCAATTTT
-TCCAAAACTACAGTAATCCTACAGAACTCCTACAGTACCCCTACAGTACT
-ACTACAGTACCCTGACTATGTCTTCCACTAACTCCAAACCAATATCCCTT
-CAAAAGACGAAAAGTTAATTTTTTCAAAACTACAGTTATCCTACAGTACT
-CCTACAGTACCCCTACAGTACTACTACAGTACCCTGACTATGTCCTCCAC
-TAACTTCAAACCAATATCCCTTCAAAAGACGAAAAGTCAATTTTTCTTTT
-TTTTAATTGAAATTGTCCGTTATTCCCTATTATGTAATTTTCCAAAAATG
-CTGCCAACCTCAAAAACTGTTATGTTTTTGTTCATACACATTTAGCCACC
-ACCTGCATATGACCCATAAAAAACCATACTTGACACCTGACATACTTGGT
-TTCGATACAAAAATCGAGAACATTTGGCAAACCTGAGTTGTCATTCTATT
-GGCTATTCACCATGTGCTCTAATAAAGTAGAACTTGGGAATATGTGTCAA
-GGCTGTAAATGGGGGAGTAGTATTGTTAACATATGTACTGTGCAATATTC
-CAGATGCCAAGTATACAGATTATCTAATGACAATAGGTAATTTGATTTTT
-CAGGTGCTATAGTGCTATATTGTTCCAAATACATGATTTTTTTTTAGAAA
-ATTGAGGTGTGGTGTCGAATGTCCCATAATTTTGGATAATCAATGGTCTT
-TAGCGAAATCCTAATTTGAAGCCGTTTAAAGCTCGAAAGTGCAATACATT
-TACAACTGCATTAGCGTTTTATTTTGCTCTGAAAATGACAAATACACAAA
-ATTTTGGATTAAACCGCCTGGTTTTAAAACCGAGCTTAAACAATTTTAAT
-TTTACAAATTAAAAAGTAAAAATTTTCTAAATTCCCTACACTAAAATTTA
-GCGTCCACATCACTTTCTACCCCTTAATTAATTTTTTACTACATTTAACA
-AAAATATTTTGAACCGGCAATTGTCAAAATTGCCTATTCCCAAAAATTTC
-CAAAACCGGCAATTGCCAAAAATTTTCAAAGCCGGCAATTGTCAAAATGG
-CAGCAAACTTCCAAAACCGGCAATTGCAGAAATTGCCTATTGCCAAAAAT
-TTCCAAAACCGGCAGTTGCCGAAATTGCCGAAACTGCCGCAAACTCCCAA
-GACCGGCAATTGCCGAAATTGCCGGTTGCCGAAAATTTTCGAAACCGGCA
-GTTGCCAAAATTGCCGCAAACTTCCAAAACCGGCAATAGCCTAAATTGCC
-GATTGCCAAAAACTTCCAAAACCGGCAATTGCCGAAATTGCCGATTGCCA
-AAAATTTTCAAAAAAATTTCAGAAATTGATACATTTTTTAATTGTTGTGG
-GAATTTTTTTTAATAAATTTGAAACATATCACATCCTCCTGTTTTCAAGA
-AAATTAATTCCTTCAGTTTCTGACGACTCAAATCCTCCTCAAATGCCAAA
-TTTATTTTGGGAAACTATACCAATTCTCAACAGAATTTTAAAGGTGGAGT
-ATTGCCATTTTGTCTAAGTACACTTATAATAATCCAAAACAACCGAATAT
-CATAGAAAAACACTCGAAAAAAAATTTTTTTGGTCGACTTCCAAAATTAT
-GAGTGGCAAAAACTGTGTAATTGCCACTTTTTGACAGTAAATTAAAAAAT
-TTCAAAAAAATTTTGGAACGTTTTATTATGATATTCGGTTATTTTGGGAC
-CAAGTAAGTGGTTTACTCCACCTTTAAAAATTTAGCCGTTATACAAACTC
-CAAATATATCCATTATTCTTTCCCCTATACCCTACCCATAACAAAACAGA
-AAAATTTCAAATTCGCATCGTCGCAACACCACAGCATGTCCATTTGGAGT
-GATGTTCCGAGAGAAAGGTCAAATCGTCTACCTCCTTATTCTAACCATCT
-CTATGCCTATATATGAGGCTTTAATGAACGAGCGCCGCCGCCGCGCGCCT
-AGCGCCTCCGAGTGTCGCAAAGTGCAACTTGTTTGCCACTTAACCTGAAT
-TCTACTGTGTTGTATTATGTGAAGAATCGGATAGATGTAATGTGTAACAA
-TAAAAAACCACGACGACGACTGAATATGGAATCGGCTAGGTGGTGCAAAA
-GTTTCGGAAAGTTTTGGTACCATGGTACCTGTGTAAGCTCTGTGAATTTT
-TGAGCCACGATGGGTCTTGCAACGATATTTCGTCGAAACTTTATTCTCGA
-AAGTTTGTTCAATTTAAATTTTCCGCAAAAAACATTTTTTGAAAATATTT
-TTAAAAATTTGAATTTCTCAGCATTTTTTTTTTAATATGAAGTTTCCAAT
-CCCTCAAAAAAAAATTTCAGAGAACATTTGAATTTCCCGGAAACCCCAAT
-TTCTGAGAATTTTTCAATTTCCCTTTAAAATAAAATTTCGGAGAAAATTT
-GAAATTCCCGCCAAAAATTTATTTTGAAATATTTGAATTTCCCGGCAAAT
-ATTTTTTTTTTTGAAAACTTTGATTTAACGGAAAACCCATTTTCTGAGAA
-TTTTTGAATTTCCAGTTTAAAGAAATTTCCACGGGTTTCTGGCTTCCCTC
-ATAATTTGAAATGGAAGAGTTTGCCAAACTAGGAAATTTTGGTTCGGCCA
-TATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGTTTT
-TAGTTTTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGACTTTCCCA
-CGCGTTGTCCGGCAGGCGATTATCAATGGAGCGCGAAAAATTCAATGAGA
-GGAGGCCAGAACCCCGTGAATTCCAGCAAAAAACTTTTTGAAACTATTTG
-AAATTCCCACAAAAAAACAGTTTTGCTGAGAATGTTTGAATTTCCCCCAA
-AAATTTGACGGAATACTTGAAATTCAAAAAATGTTGTGAGAATATTTGAA
-TTTCACGGAAAACCTGTTTTCTGAGAGTTTTTGAAAATCCCTCAAAAAAA
-ATTTCGGAGAAAATTTGAATTTCCCTCAAAAAATTTCGAGAAATATTTTA
-AATTACCGGCATATTTGACATTTTGAACTCCCCACAAAAAAATTTTTAAA
-AATATTCGAAATCCCGGAATAATTTTTTTCACTATAGTCAGAAAAGATCA
-ACTGACTAACTTTTCACAAACTACAGTACCCCGAGCATAACCCCCATTAG
-TTTCCGATAGCTACAGTAATCCTACAGTACTCCTACAGTCCCCCTTCATA
-ACGTTACCCTGATTACTAAAAAATGCCCTTTTAATGCGTATTATCACATC
-TCACATGATTAAGACCAAAAGGGGTGTCCTTCAGATAAATACCCGTTCAA
-TTTTTTTTACTGCAAACCAGTAGACTTATCTTTTAGGTTATGAAGAGAAG
-ACTAAGTGTAAACAAGGTCGTTGGAAGTGATATGTTAAGAAGTTAACGGC
-AAAATCGATGCCAAAACTTTCTGAGCTTTGACTTCTACTGCTCAGCTCAT
-TCCATAACCATGAGCTCATCAACTTGCCCTCCCCCCCCCCCCACTATCTT
-CCACCACACTTTCATTCCTCATTGTCGCAACAAACCCATCTCCGGATTCG
-TCCTTTATATGTGTCACAACACAGGAGTACTCCTTAGCGCGCCAACTTGT
-AATACCCCCAGCGACTTGGCCCAGAAACTTTCCTCTAATCGCATCCACAA
-TATGGTCTGCAAGTACAAGATTAGCACCCCCCATTGTATGTCAATTTGTC
-TAGTTTTTTATTCCATTGAACTATTCCACAATGTAGAAAATTGGGGTTAT
-GGTACATCGAAACATGGTGCATCACATAATGGTGCGCCCAAATCATGGTG
-CATCGTCAAAAATAAGAATCCGAGTCCTCCCAGACATCCATGTAGGTATG
-CACTTTCCCGCCTGTTCCGCATCTAACCAACGATTAACTGAATCTTTACG
-ACCCTCTCTCCTCCGAATGATGTTGAAAAATGTCGCGCCAGCACCTTTGG
-AGGGGGGGGGGGGGGGGTTAAAAAGATTCCAATCTACCACCTATCTTCTC
-CATTTATCTTCAATTTTGCCCCCCGCGCTCTTAGATTAAATGAACTTTTT
-TGGCTAAATCACAGCACTTTTTATTAAATCTAGGAACTGCATCTAAACAA
-TGCATGTGGTTACAGTTACCGAAAAATGTTGAAAATTTGGGAAAAGTGCC
-AAAATGTTGAATCAAGTCAGAGAGATTCGAAGACGCTTCTAGCAATTTTT
-TGACAGTTCCTGTCCCCTTTCGGTAGATTTGCGGCAATTCTCGGCAGATT
-TACACCCGCTTTTGGCGGTTTTTCGGCAACTTTTAGCAATTTTGGCAATA
-CTTGAAAACTTCTATTTAGCAACTTTTAGTCAATTTTCTGTAATTTCTGA
-GAACTTCCGATTTTCTTTTACATTTTTTTCCGATGCACCATGTCCCGAAC
-GCTCGCGCCACGACTTTTTTATTCATTATAGCAGGTCCTGTTTTGATGCA
-CCATTTCCCAAAGAGCCCTGCAATGCTGGCTCATGTCACGATGTACCATG
-TCCTGAAATGTCCCACCACGTTCCGCAACGAGGTTTTACTGCCAAATTTT
-ATGCAATTCCAAAATATTTTTCGACAATTTTGTTAGCTTTTCCCTTTCAA
-AAAAGTTCAAAATTCTGTTCCAAAACCACACCAAAAAGTCGAAGATCCGC
-AAAATCTGCACTTGAAACACTATTTGACAACCCCCGTCTCAGGCTATCAA
-AAATGCATGCAGTCATATATATGTGCAGCTTGTGAAACAAAAAACGAGAG
-GGATCAGGGGCTCAGTGCTCAAGGTAGATGTGCAACTCTATGAAATTGAT
-CGGTTATGCATGGCAAGTAAGAGTGACAGGGAGCGAAGTATGATGATGAT
-GATGATGATGGTGTGGAGAGAGCGCAACGTATGAGTTATTGAATTTTCGA
-GAAAGGTTATCTTTGATGGGGGGGGGGGGGGGGGGGGGCAGTTCATGGTG
-CATCGAAATATAAAAACTTTCGTGGAGATACGCTTTTTGAAGAATTTTGT
-GACACCTTCTTGGTGCATCGAGACAGTTTTCGTGGCAAGACCTGATTTGG
-TTGAAACTCTGAAGCCAAATCGCGCTCTACGATTTTGTGACCAGGCCAAG
-GTTTTGGTGGCATGGTGCATCATAGTAAAAATTCAAATCCTGGGAAAAAA
-AGCTCTATATATAATATCCAGCCATGGACCGTACCTCCGGCGTGGCCCCC
-TTCTGGAGCTAAAAACTAATTTTTCTAAAACTACCGTAACCCTACAGTAT
-TCCTACCGTACCACTATTGTACCACTACAGTACCCCGACTATATCCGTAC
-ACTAACCCCAACTCACTATTTATCCAGAAGCCAAAATTTCACAGACTACA
-AAGACTACATAGACTACAAACTATGAACACACTGAATAAGCGCTTCATAT
-ATATAGTGAATGATGGTGAGATCCATGTGACATGGTGCATTGTGACAGGC
-ATTTTGGGAAGGGGGCTTTGAGCACAAAACAAAATCTTTAGTTATTTTTC
-CGACAATTTCCAATAAAGTGAAGTTTAACAAGGTCGTGGCGTACTTGTTT
-CCAGTTTCCTCACGAGTGTTGCATATTATACCGCCAGTAATCATTGCGTT
-ATCACATAGTTGACAACGGTTTGATAATGTCACAAAGTGTGGGGGTTTTG
-GAAGTGGCATCAAACCAGCATACGATTATTAGGACGTGATGAACTTATTT
-TACCTGAACATATTATTAGGTGGTGGAGCTGGGAGCTTAGTATTTGGGTT
-TTGAAACAATGCACCATGTCCTAAAAGATGCTTTATTGCTAGGTAGGGTG
-CCGCGACTTTTGTATTCATTATAACAGGTTCAGTTCCGATGCATCTGCAT
-TTTTTTAATACTGTTCTTATTCTTAGCTCAATAATTCAGGCTGAGGGCCG
-CAGGCCCGAACACTTTTGGAAACTGTGGGCCAGCTTTAATCCTATTCCAA
-GCAAATTGTTATTCGCTCAAGCCAACTAACCAGATTTCCTCAAACTTTAA
-TCGCTCATATCTCAGCTCAAAACCATAGCAGAGACTTCGTTTTTTAATCA
-ATCGATCCCAAATTTTAAGGAAATCTCGAATATCCCTATCTCAGGTTTGA
-GGCGAAGCCGAGAACCTGCGCAAGCTACCTTTTTGGGCATCCCCATTCCC
-GAAAGGCTGGCGCGGCCCTGCCGCGCTAGTCATTTGCCAAAACGTCAAAT
-TGGGTCATGTCACGATCCATAATGCCTTGAAGGGTTCTTCTGCAACAGTC
-CTAAAAGAAACTTAGCACTCTGGTTGAGGTATAGATGCACCATGTCCCAA
-AGGGTCCTGCCATGTTGGGACATGTCACGATGCACCATGTCCTGAAAGAT
-CCACGCTCGAAAACTACATTGTTCCGAGTGTTTACCTCTATTTCAATACG
-AAATTTCAGCAAATTTTCATCCAAAATCATGTCATTCTAACAAGAGCCTA
-TCATGTTGACTATAGGGTCGTGACGACCTGCTCGAGTTCGCCTCGCTCTC
-CTGTTATCAGAATAGCTATGCGTTAAGTACGCGATGTATTGACAGTCACG
-ATTTAACGCTTCAGTTTTGTAGTTTTGCTGGAAATTTTTGAGTTTTTCGT
-TTTTTCTTGGCTCAAATCGAGTTTTGCTTTTTTGACGATTAAATAATTTA
-TTCAAACTTAGCGCATTTTTTGACTGATTGTGAGACATGATGCATCGTGA
-CAGGGCTTAATCGTGGCGAGACCCTCTAGTACAAAATTCTTTTAAATATC
-AGTAAAAGCATTATAATCCATGATTCTATACTTATTTTATGGAATTTTCA
-GCCTTAAAAAAATCTGAAATTTACGATGCTAAAATCTACTCAAATTATAG
-TTTCAATCCAAAATTTCTCAGAAAAACTAAAATTAGCATAAAAATGTTTT
-GTCTGAAATAGCCCTAGATTCAAATATCCCTAACACCCCAAAAAACACCA
-ATGTACATCTCCTCTCCGTAAATATGTAGTTTTACAACCGCCTCTCTGTT
-GACTGGGAGCCATAAATGTAGATATATTATCTTTCCAGATCGCCTGCCGG
-CCCCTCCCACCTGATTGTAAAACTGCTCTTTGCTGTGGCGTTTTATCGAC
-TTGTTTTTCTTATATATTCCATTCTACATACCTTAACACATTTTCTTGTA
-TATTTTCTATACACTTTTTTAACTATAAAAAAATGCAACTCCTTTTTCTT
-CGATTTCTTTTTATGCAAATTTTTTGGCTTAAAGGTGGAGTAGCACCAGT
-GGGGAAATTGTTAAAAACCACTCCTTTGGTCCGAAAAGTACCGAATATCA
-TAATAAAACTTTTCAATATTTTTTTGAAATTTTTTTATTCACAGTCAAAA
-AGTGACAATTACTCAGTTTTTGCCACTCATAATTTTGGAAGTCGACCAAA
-ATGTTTTTTCTAGATTTTTTATAATGTAATTTTGTTTTAATTATTTGTAT
-TAAAACATTGTAGGACAAGACAGGGCCGCAACATAAGATATTGCTTTGAA
-TTTCCTCAAAAGCTCATATTTTTCAGAATTTTGGCAATTTGCCAAAACTT
-GGTATTTAAAAATTGTTAGAGATAACTGTATTTAGACAAAACATAGAACA
-TTTGTATTTCAAAATAGTTCAAAATTCTAGTTTTTGAAATTTTGCGGCCA
-GACTGACCCCCACGATGCACCATGACAAATTGCAATTTTTTTTTCAAAAA
-TTGTTTTCCAAAGGGGCGTGTTCCAAACATCTGACCCAAGTTTTCCCGTA
-GTTCTTCTCTCCCCCAGCGGGGTAAACACTGCACTTTACGACTCCGCCCA
-GTGCTTTTTTTTTCGCAGAAACTGAGAGAGAAAGAAACATCTGCGTCTCT
-CTCCCCCAGTACGCTCGTTCCCGCCCCCCACCTCGATCTGCCAGACCACA
-CCGACCTGATTCGAGATTCCTTTTCTTATATGTATATGTTTTTGGAGAGG
-TGATCTTGTTTTTTTTGTTTCTCCTTTGGTTTTGTTCTCTATGCTCTGAA
-CTTTGGTCTCCTACTTTTCTACAGTTTTTTTTTAAATATCCAAATTTTTG
-AAATAGAGGGTTGATCTACATGACCCCCATGCTTAGTCTACTATAATGCT
-ATATCTGATGTTCCTCCGAATGGCCTGGTAGGTGAAGGCTTTTAGCCCAG
-TGAGCCGGCTTACCAAGTCTAGGACCATGGTTCTTACAACTTAAGGCCCA
-AAAAAAGCAGGCATCTGGCCTAACTTCCCCCTCACTAAATCTGTAGTAAT
-ATATAATTTCTATCATACTCCATCTTTTTTTTCTACCTCTTATCATGTTG
-TTATTGAGCAGCAACGCCCTTATATTGTTTGGTATATATATTTGATATAA
-AACCTCGTAGTAAATTTTATTTTACACAACAACATTTATTATTTACTTTT
-TTCATACTATTTTTTTTTTGCAGAACGAAAAAAAAATGCTATTCACAATT
-GAGCAACTGGAGCTCATCAAAAAGCTGCAGCACACCGGGATGTCATCCGA
-TCAGTTGCTCAAGGCTTTCGGCGAGCTGGAAGTTCCAGAGCAGCTTCAGA
-ATAACAACACAATTGCCGCAGCCCTGTACAGCCCACTCCTGGTCCAACAT
-CTCACAACACCCAAATCAGAGACTCCAGTCAAACTCACCGTGCAGACAGT
-GCCGACACCTGTGAAGTCAGAGCCACAATCTTCAAATTGCTCATCACCAT
-TTGAGCATCCGATATGCTCGAATGCTCCGCGGCCGATTAGGAGTCAGCGA
-ACGCCGATGAAGGAGATTACCACACTGGACGATCCGAATGAGCTGGAGGA
-GTTTATGAAGCAGGGCGAGGAGGCGTGCATTTTGGATATGAAGACGTTCA
-TCACACAGTACTCGTTGCGGCAGACTACGGTAGCAATGATGACAGGTTAG
-TTCCCAAAAAAGTGTAGTGGAAGAGTTTTTTTTCTAAAATCTAGGCCGTG
-ACCAGAAATAAATCAGAATACATCCCCGGCGCCTAGATTCCTAATCTCTG
-CTGTTAGCCACAGTGCAATTGAGTATTACTGTAGTTGATTCCTTCTATGA
-CGTCATATGAAATAAAGTTGGCTAAAGGGAAAAGGGGACTCTGGATCTTA
-GGCGAGCAATTCTCTGCAGCCGGCACCAGAATCGATCCCCCGGTGCCTGG
-ATATCTATCCTTCGCTGTTAGCCACTGCGATATGCCCCACCCGCGCTGAG
-ATCGAACCGAGGCGTCTGAATTCCTAGGCGAAGTTGCTACCCACTGCGCC
-ATGTCAATCTTCTAAATTTCCAGGAGTAAGCCAGCCGTACATTTCAAAAT
-TGCTCAACGGCAACCACCGTGAACTATCGCTCCGTTGCCGTAAGAACATC
-TACTGTTGGTACCTGAACTGCCGACGTCATCCCAACAAACTCGCTGCCTT
-CCTCGCCGATCCGACAACTCGCCTCGAGACGAATGGAGATGGCGAGCTGA
-TCCCACAACGTCGAGAACGCTACGTGTTTCGTCCAATTCTGATCCGAATG
-CTCGAATCGTTCTTCACACAAACGCCATTCCCAGATCTTCCACGGCGAGT
-CGAAATAGCGAATGCTTGCAATCACGTTCTGAAGATGGATAAGAAAGGTG
-TTGGGTTGATGCCAAAGGAGGTGGTCAGCCCTCAAGTCGTTTCGAATTGG
-TTTGCAAATAAGCGGAAGGAGTTGAGAAGAAGATCCGCTGAAGCTTCGGC
-CGCCTCCACCTCGTCCGCTTCGTCTTCTGCGTCATCGACTGCTAATCATG
-ATTCTGTCAGTGTGTCCAGCATGAGCCCTCGCGATGAAGAGGTGAGAGTT
-TTAATTTCTCGGCCACGCTGTACTCTGGGTGGAAGAATTTTTTCTAGGTC
-TTATAAGGAATCGCCCTCCGGTTTTCCCACAAGTTAAGTCATAAACATGT
-ACCATCTAGAGGTTAAATTTCTGGAGTTTTATTTATTTGAGAGTGATGGT
-AAACCTGTCAGTCCTTGGCAAACATGTGTCTGTTTGGTCTCAAGGTCTAG
-GTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTTGGT
-CTAGGTCTAGGTCTAGGTCTAGGTCTTGGTCTAGGTCTAGTTCTAGGTCT
-AGGTCTAGGTTTAGATCTAGGTCTAAGTCTAGACACAAATTTCTAGGCCA
-CGAAAATTTCTGCCGTGGCCTAGGATTTTTTAGGCCATATTCTAGGCCAT
-GATCCAAAAAAAACTTTCCCTGTCTCCTCTAACCCATTTTTTTTGCAGAC
-AAGCTCCCGTAACACAACCCCGGAGACAGCAATCTCCCCGTCACCAGCAG
-TGTCCACTTTTGAAGTGTCCCGCCCGTCTGCCATCATCTCTGCCACGTCA
-TCAACAACCTCGCCAATCTCAATTCCAGCAACAATCATTCCATCAGTATC
-GCCGTCAGCTCTCGAACTTTTCGCCATGGCCCAACAGCTTGGAGTTCAGC
-TTCCGGTTCCATTTCCAACATTGCCAACACACTTTTTCCCGTTTCAAATG
-GCTCCGTTCTACGGGAACCCGGCTTCTATTTTGAAGTCTGAGTGAAGCAT
-TTCTAATTTTCTTTTCTTCTTTTCTACACCAATATCTTTTTTCCATTTAT
-TCAACTTATTCTTCATCCCATGACACGAAAACCTCAATTCTTTCATATTA
-CAAACGATGCTCCGTTTCTTACGCCCTGCCCCACACACGCCCCGTCGTCC
-AAAAATCAATCAATAATCGATTTTTCATAATATTTAATTTGTTTTTTTTG
-TGTTTCACTGCTGTTTTAATATTTGAAAAGTACGAGTTTCTTCAAAAACA
-TTTTTTGAATAATATTTGCTTCACACTCCACGCGTTTCGTAATGTATCGC
-TTGCCCTGAAATTTTGTTGGAAATTCCATTTTTTGTGCAATTTTTGTTAT
-TTTTCAAGCGAGAATAAATATTTTCTAGTTCTAGAATTCAATGAAATACT
-TTGCAAACGCGCCCCATTGCACTTGACCGAGGGGTGAAACAAGTTCAGTG
-TTTTCAAGATATTTTTTTTTAAAAACTTGAATTTGGAACAATACAAAAAT
-CTGTAAAATGCAACAGTTTTCCAAATCTTGTCCACGTGGAGTACACAATA
-ATTTTTCATCTATACGGAAAGATTTCAAAATTGGAATGTTAAATTATTTT
-GTGGTTTCTAGGCCATGGGAAAACTAGGCCATCAAAAAAATTCCAGAGTG
-ACCTGGAAGTTCTAAAACTTTGTTGAAACTTGTCCACGCGGAGTACACTG
-GTAGTTTATCAATAGAGCGCAAGTAATAATCCCTTGGAATTTTCCTTTCA
-CCACCCCCTCTCCATTTTATATGAGAGTTTTTTCCCTCGCAATTTCCCAC
-GCTCAAGAGGGTGGCCGCCATTTTTTTTTTGAGGGGGGTCGTATCTAGAT
-TTGAAACACGTCATTTATGCTCAAAATGTGCCAATTTTTATTGTTTTTGA
-GTTTCTAGGCCATTTTGGTAAGTTAGGCCGCATACTGACTTTGCGACTTC
-CAAGGATATGGCCTAGCTTTTTTTTCTAGGCCATATAATTTTTTGAGTTG
-CAACTGTGGCCAATGTTTTTTTTGGGTTTCTATGCCACTTGTGAAAAGTT
-AGGTCATAGAATAACCTTACGGTAAACGGGTCCTCACAATCAGGAATTGT
-GGCCTAGTTATTTTCCTAGACCACGTTTGATTTTTGTCTTTCTAAGCCAG
-GTTTGGGTCTAGCTCTAGACCTAGGTCTAGTTATAGGTTTAGGTCTATGT
-CTAGGTCTAGATCTAGTTCTCTCACGTGAGAAAATTAGGCCACCTTTCCC
-CCTAAACTCTATGATCTCAAAACTAAAACTACTTTCTAGAAAACTCTTCG
-AAAATCATAAAACCAATTTTTTATCACTATTTTCATGCTAAAATCCAATC
-AGAAATTGATCAGAAACACGCATATAAATATTACGACTATAAATTCATTT
-CTTTTTTTCATTTTTCCCTCCAGAAGGCTCTTGGCGAGAAAAATCTGCAT
-ATTTTTTCTACTTATATGTGTCGAGACATGTGATATTCCGGCCGGCGGTG
-GCTCTGAATGAATATTCAATTGAACGAGAAATATATATTCTCTCCAGAAG
-GCGTTTATATTATGTGTTGCTCCTGTTTCTGCTGTATTCGGCGTGGATTT
-GGTATGCTTCTCAGTGGAGTGCAGTTGCAGCATTTTTTTTCTTCAAATTT
-TGCAATACTCTCGAACTTTTTGCACTTTCAAGCCTTTTTTTGGGTTGCCT
-AGAACACTAGAATTTCTGGACTATTTTGAGATTTCTAGGCCATTCTTGAG
-ATTTCTAGGTCATATTGTGATTTCTAGTGCATTTTTGGGTTTCAAGGCCG
-AATTGGAAGTTTTAGGCCATTTTTCGGTCACATTTTTAGGCCACTTTGAG
-GATCTTGTGCCAAACTGGGATTTCTAGGCCATCATGGGATTTTTAGGCCA
-ATTTCGAGTTTTCCAATCATAATATAATTTCTAGGCTATCTTGAAATTCC
-TAAGCCAGTTTGGAATAATTAGGCCATCTTGGGATTTCTACGCCATTCTC
-GGATTTCTAGGTTAAACTGGAAATTTTAGAATTTTGGGGTTTTAGGTCAT
-ACTGCGAATTTTAGTCCACGGTTGGATTTATAGGCTATCGTGGGATATCT
-AGGCCGATTATGGAATCCTAGGCCAACTTAAAATTTCTAGGCCATTTCGG
-GATTTCTAGGCCATCACGCCTCCTAAAAGGCACAGACAAAGTTCAAAACC
-CACCAGAAAAAAGTGTGGTGAATTAGTCAGCAACACCCCATTTTTCTTTT
-CCAAAAACTAAAAAAAAAGATACCCCTGACAGATATGGGCAGAGATGGGG
-GTGCGAATCCTGAAATTTCCGAATTCCAGTGGGAGCTTTTTGTGCCAGAA
-AAAGTAGTGGGGGCAAGTGAGAATGTGTGTCGCCTTCCACTTTTCAAACA
-CCATTTTGTCCGTTTCGCCGGCCCGAAAATAGGCTTGAAAAGCTGTGGCC
-TAGAATTTTTTCTCAAAATTTTTGACGTGGAAGAATTTTAAGATTTTCGA
-GGCCAAGAGGTGGCCTAGAATTCAACATTTATTGGCAATTCTTATCTAGA
-TCCCGAACCCCGACCAGTCAGTTTTTAATTTCCGGTGTCTGAATTTTTAA
-TTAAAAATTATTTTTGGGAGGAGCTCCTGTTTTTTTTTCGTCAAAAAATG
-AAGGTGGCCTAGCTTTCTCATTTTAAGGCCACGAATTCTAGTTAATTTTT
-TGTTGGCTCATTTTTTGTTTCAAAAAACGAAAGTTAGTCAAAAACTTTTC
-TGCATATCAAATGCTCTTTTTGAGGTTTTTTCCTGCAAAATTTTTCTAAG
-AAAATTTGAATTCCCGCCAAAATTTTTCTCAGAAAATTTGAATCGCCGCC
-AAAATTTTTCTCTGAAAATTTGAATCGCCGCCAAAATTTTTCTCAGAAAA
-TTTGAATTCCTGCCAAAGTTTTCACAATGGGTCTCACCACGAATGGTGAC
-AGACCCCGCCCACAATTCTCAGAGACATTGGGTGTGTTTTAGACCAAAAA
-AATAGTTTTTTTGACAAAAACAATTTTCCAGCAAATACTTGATCAGTTGT
-CATTTGTCTGTTGAAAGTGGAAAAAATAAAACATCTTTCCTTTTTTCTGC
-TTCTCCCCCTCCTCGTCCTTTTTGTGCTCAAAACTCAAATGGCTCATCTC
-AATTGCATGACAAATTAGCAAAAGATGAGAGCAATTTTTCCCTGTTTCTC
-TTTTTTTTCCTCCGTTTGGCTCCTCCTCATGTCTTTTTTAGTAGTTTTCA
-GAGTTTTACTATTGAATGTTCAAACTGGCTAAAAAATTTTGATTTTTTTT
-TCTTTTTAAACTCTTACGAAAATTTTGATATAGGTTAGAAGCCTAAAATC
-GACGGCCGACAGCGTTTACATTTGTGGCCTAGACTTCCAAGCCTTGGCCA
-TGGCAAAAACTTGTTTAGCCTACCTTTTCAAATAGTGGCCTAAAAACCCT
-ATACTATTTCTGAACTAACTGTTTACTCAAAAGAGAAAGTTAGTGGCCTA
-ACTTTCTGAATGGTGGCCTAGAAAACTCAATTTTGGCACTTTCATGACCG
-GTCATCAACCTGACATTGATGGCCTAAGTTTTAATGAGTGGCCTAGAAAA
-CCAAAATATGGCCATGCGCTCAGCATGATCTAACTTTCCAACTCTGCTAT
-AAATTCCTTGGGGGAAACCTCGGCCATCACGGGTGGCCTAGAAAACTGAA
-ATTCGGCCAAGACCCCGTAATTCATGGCCTAACCTTTTAAAAGGACAGCG
-TTTGGCTTTGGTGGCCTAGTTTTTTGTGGCCTAAGTTTACAGAAAAAATC
-CTCAGCCACAACCTTTACCCTATACATGAAATCACATAAAAATGTCCAAA
-TATTTTCCAATTAAATTTCCAATTCTCCACCCTTAATTCTTCATTTTCTT
-TTCTTCTTTTATTCCTTTTTCACTCTCTCATTCTGAAACTAATCTTTTCA
-ATTCTCAGCTTCTCTTTTCTGGTGTGGCTCATTTTCACTTTGCTCCCGCC
-ATTTTCAATAGGATTATCCGTGCACACACACACATGGCTCAGTGAGCAAC
-ACCAACAAAAAAGAGCATATATAGATATACAACGATATCTAACTAGTTAC
-ACAGGAGCTTCTGTTGTTCTTCTGTGCCCCTCCGAGCCGAGACAAACTTT
-TGGAAAAGAGCAACGCTTCTGGAGCCGACATATTCGAGAAATCCCGGAGA
-CAATTGAGACCACTATGAGGAAATGATGGTCGAGGAGGAAATGAGAGATG
-GCGTTGCTCAAAGTGCGCGACGAATGCACCAAGTTGGTCGGTTATCAGTG
-AGTTTTTGTTTTTTGTTGGCCGAAGTAGAGATAACTAGGCCACCTAGGTA
-GGCTGACGATCTTCAGTTTGCAAATCCTCTTCCACCGCACTTTTTTGAGC
-GATCTAGGTTTGCAAAAGGTAGGCCGCCTGGTCCACCGTACCTGTCATGA
-TGGCAGAGGTCTGGGAAAGCTAGGCCACCTGTCTGAGCTGATGGTCTAAG
-GTCTAAAGTTTACCAAAAACTCTTCCACCGAAACTTCTAGGGCGACCAAG
-GCTTGCAGAAGCTAGGCCACCAGACTTGGCTGGTGGCCTAGAATTTTCAA
-GAACTCTTCCATCGTAAATTATTAGAAAGCCGCGATAGGAAAAAGCTAGG
-CCATCAAATTACCTTAGTGGCCCAGAATCTATAAAAACTCTCCCATCGTA
-CTTGCAAGGACGGCTGAGCTTGGAGGAAGCTAGGCCACCAGAATAGGCCA
-GTGGCCTAGAATCAACAAAAACTCTTCCACCGTACCTCCTACAATGGCCG
-AGGTAGGGAAAGATGGGCGCCAGGCTAATCTAACTTTCCTAGACTGACCT
-AAATGGGAGAAAACTAGGCCACCGGGTTTACGGAGTGGCCGAAAATTTAC
-AGAGACATTGCCCTGACTATCTGACTGTTTTTTTAGCGAAAGAACTTTCA
-TATTTTCTAGGCCAGGGGCCCCCTACGCCCCAACACAATCCAATTTTTTT
-TTGCAGATTTCTAAACTCGCACATTTGTCTCTGCATATCACTCATCCAAC
-TTCTCGTCTGCTGCTGGGCCGTTGCTCAGCACGTCAACTCCTACATGACG
-CACAGTAAGGTGAGCCAGAGTTCATTGGAGCGAATTTGTAACCAGAGAAA
-ATTCAAAACTTAAAATTCAGATCTTAAAATGTGATTTTCTGGAGGGGAGC
-CTCCCGCTGGAGGCCGTGGACGCTGTAATTTTCGATATCCGACTTTTCCA
-TTACCTATGGGGCATTCGAGGATGTGTGGCAGAGTATTTGGATGGTGGTG
-GGTACTTTTAAGTTTCCCACGAATCTTTACATTTTTCAGGCTTCGGGCGA
-CTTTTGTGGTGCGTTTCCCACTGCTTAACCCTGGTTTTCTCCATTCCGGT
-CACCTTCATCTCCCATCCGAAACCCTGTCTCTTTTGGCCGCTGCTTTTTC
-AGGTGAGTTGGCTGAAAAAATTTGGAAAAAAACTTTTTTTAAATTTTTTC
-CGAAAGGCGCAGTGGGATTTTCCACGACTACCACTCACAACAGCATGGTT
-CGAGTCCGCGTGGGTGTGAATTTTTTTTCTAGTTTTTTTTTGAAGTACGG
-AAATTGTATTTAGCCTTGAAAAATTCTAAAATAAGCAAACAAAAAAATCT
-CCGATCAAAAACCAAGTAATCCGTCTCCAAAAAGCGCAGCAACGTCAAAT
-GGTCCCACGGGGGGCCTGAAACGACAAATTTCCTGACATTTGACGGGTTA
-TCCATCCGCCACCCTCTCTTTTGAAGGAACATTGACTTTTTCCGTTGAAA
-TGGATAAAAAAATTGAAAAGAATTAGATAGATTCGGGAGAATGAATATGG
-TGGCCTAACGTGGTGCTTGACCCATGGCCTAGAAAACCAAAACTCGGTCA
-TCACCCTGATTGAGTGCCCCTTAAGAGATTAGGCCACGTACGACGCAATC
-CTAGGCCACCAATAGTTTTCTCGGCCACAGCCACCCCAAACAAAAATCTG
-AACTTTCTGATCCTTTACATCTGTACCCACTGAACCGTTTGTTTATCTTT
-TTACTCGCTCCACGGGAGCAGAACTTTTTTTTTGAAATTCCACAAAAGAA
-TGGGACAGACACTAGTGTATTTTGTTTTTTATTCAGACATGAGCCAGACC
-AGAAATAGGATTGAATCTCGGATTTCAGAGCCTGGAAAAAATCGGAAAAA
-ATCGGAAAACTGTGGGAGAACTGAGTTGGGTGGTAAATTTGGCAAATTGC
-CAAAATTTGGGGAAATTAACTTTTTCGGTAATCTGTAACTACAGTTTTCC
-TAAAAATGTATGAACCTTTTAGTGATTCTGCATAGTTTTTCAGGTCTTTA
-AAATTGAACCTACAGTACCCCGTACAGTTCAGAAGATTGCAAAATTCCAA
-GTTGACCACTTTTAAAGCGTGTATCTCGGCTGATTGGGAAAGTATCGGAA
-TATTTTAAAATACAAATTTATTGTTGGAAAATTTTTTTTTTACTTAAAAT
-TAATTAAAATTCAGCTTTCAAAAATGAGCAATGTATTTATAGATCCCATG
-CAACTTTGAAATTTTGTATATCCGTTCAGTGTAATGCTATCAAAAAATTT
-TCAACTACAAAATTATAGTAAAATTTAAAACAAAGAAATTGTTAGTTGAC
-AACTTTTTAATGAAATAAAGTACAACCGAGATATGAGTTCTCAAAGTTGA
-GCTACTTTATCGGCAACCACAATATAAGTCGCCCCCGTACAATGCACCAT
-GTGGTAGAAAATTTCGGTTTGATCTACTTAGATCTACAAAAAATGCGGGA
-GAAGAGACGCAGAGTTTTCTTTGCATAGCTAAGAACGTGCTGACGTCACA
-TTTTGTTGGGCAAAAAATTCCCGCACTTTTTTGTAGATCAAACCGTCGTG
-GGACAAACTGGTACCTCTTCGTTTTGTTGGTATGAAAATTTTGAAACTCA
-CTTCGTTTTGTTGGTATGAAAATTTTAAACTAGAAAAGCCAAAGTTGAGC
-TAGGCGCTCAAATTTGGTAGCATTTACTTTTTTCAACAAAAAAATAGCTG
-GCCGAGCTTTCCATTTTTACGGCCACGTTGCAATAAAAATCCAGGAGGTC
-CATGTCATCAACAAAAGTGCAAGGATGTAAAACAATTACACCGAAACGTT
-TGTCGGGAACTGCTTTTTCAAAAAAAAAAGGATCTCTCCGAACACATGTC
-ACCCCCAGGGTTCTAGCGTCTCCCTGACCTCGCGAGCTATTTCCTTGAGA
-CATATCTCTCCGAAACCTTTTGTAATGGTTGTTTCATGTTCTTCTTCATC
-TTCTTCTTATTCTTCTTGCTGGGATAAGCAGTTGAAGAAAACGAAAAGAA
-CACATAAAACACAGGCACACACACACACACATACACACCGTAATATCATA
-TAAAAGTGCGTCTGCGTCTCCCAGAGCGCCCTGGGGGTAAGGAACGCGGG
-CGCCCGCAAGGAAAAAGTGCAAAGAAATTAGAGAAAAAAGACCGGTCTCT
-CACTCACTTCTCGATCCCTTTTCTTCTCTAACTATAAAAAATGTGTGGCC
-TAACGAACGAAAGCGAAAAAAATCATCGAGAGAAGTAGTGAGAGAGAGAG
-AGAAGAAAGAGTTTTTTTGGACGCCGCCGCAGCTGCCAAGCATCAATAAT
-GACATGCTGGAGAAAAAAATTCCAAAGTTTAAATGTATTGGGGATCAGAA
-GCCTAGACCATAAGCCCCTTGTAGAGTTTTCTCGGCCATAGCCTTTTTGG
-TACGGTACATATACATAGAGACTTCAGATTGGGAATTGCGAATCTGTTAG
-AGTAAGAATAGGCCTAAAACATTATTGGGCCTAACGGTGACGGAGACTAG
-GCCTTGTTGGGAGCTTAAACTATGACATTGCCTAGAACGTTGTTCTATCT
-TGGTTATGTGGTGTCGGGCTTTCATGATCAGCTCCTCTACTTTTGTCCAG
-AGAAGTTTTGGACTTTTTCTATGGGTGCTTTGGGCTCTATTGCACAAATA
-GGTGATCTTGCGCACAACACAACGTAGATCAAATTCTTGTCTAGGCTCTG
-CAGGCTCCTGAGAGGTGTTTTGTACAAGCCCAAAGCAAAAGGATCTCAAA
-ATGTTTACAGGACTTCAAGCAGAGGATTTTTCGATGATTGCCAAAAATTT
-TGGAACTTTTATAGGCTTAAGCTTATGGTTATGTTTAGGCGTAGGCTTAG
-GCTTAGGCGTAGGTTTAGGCTTTGGCTTAGGCCTATGCTAGGCCTAGTAC
-CATAATACTATTCTTACCGCCGCGCCTGATCAAACCAAAGAGTAGGTCAA
-CAACCAATATTGACTTGCACTTTTTGCACGGTTAACTATATTACGCATAT
-GGCCAATTTTGTTAGGGAGCATTGATTCATGGAAAAAATTTCGGAATTTA
-TGAATGTTCAATTAAACTGGACTACGACAATTATTGGGTTCAAACATTTG
-AAAATTTTTTGGCCGACGTCGGAACGTCTCACTTTTTCCTGATTTTTGTA
-GTTTTTCCTTTTTACCGAATTTTTAGGAATATCTGGGAATTTCTCGTTTT
-CTGATTTTTTTTCAATTGTTTTTAGATCCCCCAAGCCTAAGCCTAAGCCT
-AAGTTTGAGCATAAGCATAAGCCTAAGCCTATGCCTAAGCCTACGCCTCA
-GCCTAAGCCAAATGCGGAGCCTAAGCCTAAGCCTAAGTCTAAGTCTAAGT
-CTAAGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTGCCGGAGCCTAA
-GTATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTATGCCTAAGC
-CTAAGCCGATGCCTAAGCCTAAGCAAGTTCCGACATTTTCGACAATTATC
-TAAAAATCCTCTGCTTGAAGTCCTGAAAATCTTTAGGGATCCTCAAGTTT
-CGAGTTTGTACGGAACGGCCCAAACGCCTCTTGGGAGCCTGCAGAGCCTA
-GACAAGAATTTGATCTATGTTGTGTTGTGTACAAGGTCACCGGTTTGTTG
-TGCATCAGAGCCCAGAGCACCCACAGAAAAAAGTCCAAGAGTGTATAGCC
-TACGGTAGTCCTTGTTTAGGAGACATAGACAGTCTCTTTCTCTAACGGTT
-TTTGTTTATTCTTTTTTTTTCTCCCCCTACTTTCCGACAGACATTTTCAT
-CTTCATCTCCTTCTGCTGCGCGAATTGAATGGTCTATAAGTGTCTGCGTC
-TCGCCGATTCGTACAGTCTATCGCTTTGAAATCGTCACCCCCAGGCAAAC
-AGGACACCCGAACACACACACAACTATCCTCATTCTCAAAAAAATGGCTT
-CACTGCATAAAAGTGCAGAAATTAGAGAGTATGCGGAGATTCGGAGAATC
-CAGAGAGAACACACAAACACACTCGGAAACTCATATAGTTAGACCAGAAT
-GATGGCTTTTTTGGAAATTTGAATTGGAAAGGGGTTTTTGAAAATTGGTT
-GGAAGCATTTCAGATAGATTTACATTGAAAAAAATTAGCAGGAGCACCTT
-TTCCATTTTAAAAAAATTTGTTGGCTTTAACTTTTTTCACGGATTTCCGG
-CTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTT
-GGCTCAGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGC
-GGCTCGTTTTTAGTTGTAAAACTAAATTTATTTGTCCGTGTGGAGTACAC
-AACTTTCCCACGCGTTGTCCATCTGAAGATTGTCAATGGAGCGCGAAAAA
-TTCAGTGAGGAAGGCAAGAACTCCGTTTTTTTTCAATACTGAAAAGTCTA
-ATATTGAATTAATAAATTATTCAAACATTTAAAAACAATCATTTTTAGTG
-TTTTGAATTTTTTTTTAATTTCAAATTTTTCTTTAAAACATTAAAATTTT
-AAAAACATTTCCAAATTGTTCCAAATAACATTATTGAACTCGTAAAACAA
-ATTTAAAGGTGAATTTTCATTTATTTCGTTAAAAAATTACCTTTTAAAAT
-TTATTTTTTCAAAAAAATCTGGATTTTTTTTCTGCGATAATATTCGAGCA
-GTTTTTTTCGATTTTTTTTCTGAAATTCTGTGAAATTATTAACATTATTT
-GAATTAATTATTCAAACAATTTCAAACAGAAATACAACGAGTTTTTCCAT
-TTTTTATCATTTTCCAAAGTTTCAGAAAAAAATTTCGCAAAAAAAATTTA
-GATTTTTCCAAAAAAATTAAATTTTTGAAAAATTCTCAAACGCACGGATT
-TCTGGCTTCCTTCATAAATTGAAATGGAAGAGTTTGCCGAACTAGGCCAC
-TTTGGCTCTGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGT
-CGCGGCTCGATTTTAGTTGTAAAACTGAATGTATTTGTCCGTGTGGAGTA
-TACGACTTCCCCTCCGACAGGCGATTATCAATGAAGCGCGAAAAATTCAG
-TGAAGAAGGCCAGAACCCAAAGTTTCACCGAAAAATTCGAAATAAAAAAT
-CCTGAAAAATTTTTTAATTTTTCCATAAAAATTAAAAATTTTTAAAAAAT
-TCCCAAATTGTTCCCAAGACACATTTCAGAGCAGGTTTCAAAAAATCATA
-TAAATTATTTATAAGGGTAACAACACAAAATTTGGGTAACAAGAGCAACA
-ATTTTTAATTAAATGTTTCATTTTTCATCAAAATTACTCAATTTTCCTGT
-TTCAGCAATCGGCCTATGGTATTTGCCTCCTGGTTCTTCTTCTAGCAGCT
-CTTCCAAGAATTGTTGTAGTACTTGCGTCTCCACAAGCGGCTCCGTTGAT
-TCCTATTCTGTTTTATCTTGTTGGCACCGCGCTCAATTTTTTTCATGTGA
-GTACTTGCTCACTTTTTTATGGTCTAAAAATTGGCGGGAAATTCAAAAAG
-TTAAGAGTTTCAAAAAGATCGGCATAAAATTTAAATTGAACATTTTTGGG
-GATTTTTTTGGAAAAAAAAACAAATTCGAAATTCGACCCATTTTGGCGGG
-AATTCAAATTCTTTTAAAAATTTCGAAAAACATTTTTCTGCAAAAAAAAA
-TTTTCATTTAAAAAAAAAACATTTTAAAAAGCAAGCTTTGCCGGGAAGAA
-TTCAAAAAATGTGGCTGGGATTTTGGCGCGAAATTCAAATTATTTTAAAA
-AATTTTTGAGAATTTCTTGAAAAAAAAACTGAAAATAATTTTGCGGAAAT
-TTGAATTCTTTAAAAAATGCCAAAAAAAAAAGATGTTTGTGCAGAAAAAA
-TTTTAATTTTTAAAAAGCAATTTTTCACGGATTTCTGGCTTCCCTCATAA
-ATTGAAATGGAAGAGTCTGCCGAACTAGGCCATTTTGGCTCTGCCATATC
-TGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTAGATTTCAGT
-TGTAAAACTAAATATATTTGTCCGTGTGGAGTACACGACTTTCCCTCCGA
-CAGGCGATTATCAATGAAGCGCGAAAAATGCGAAGAGGAATCTGTTCTAA
-AATTAGGCGGGAAATTCAAAAAGTTCAGGGTTTCAAAAAGATCGGCGAGT
-TTCAAAAATGTCAAAAATATTTTTCTGCAGAAAAATTGTCGACTTTTTAA
-TAAACTTTGCCGGAAAGAACACGTGGTGTCAGAGTGTCCGGTTTGATCTA
-CGTAGATCTACAAAAAATGCGGGAGTTGAGAAGCAGAGTTTTCAACTGAT
-TTCGAATGGTTAAGAACGTGCTGACGTCACATTTTTTGGGCGAAAAATTC
-CCGCATTTTTCGTAGATCAAACTGTAATAGGACAGCCTGACACCAAGTGG
-AAGAATTCAAAAAATGTCGCTGGAATTTTGGCGCCAAATTCAAATTACCA
-AACGGTATTTAATACATAGAGCTTCTCACTCAACATCTGAGCTACCGGAA
-ATTAACAACCTTCACATTTTTTGGTCATTACTCACACACATGTGGTTTCT
-AAGCAAGTTTCAGATACTTTTTTTTTTGTTTTTTTTTGAATTAATACTAT
-TTTTTGCAAAAGTCGCTTCGGGACCCAAAAAAAAAATTCAAATTCTTTTC
-AGTTATACGTGTACTGGCACTGGTATTGGCACGTGAGTGCCATGTGGAAT
-TCGGTGGTCCGTGTAAAGTTCGGACAGCGGCTCGAAAACGCGAATAAGCG
-AAGTCGACGGGATAAGCCGATTGTGCCGAAGGAGGAGATCGATGATGCCG
-TTTTGCATTACGTGCCAGCGAATAAGCCAACTGAACAGCAGAATCATGTT
-CAGCACAATCATATCAGTCAAAACGGGATTCAGCAACCAAAGGTAGGTCT
-ACCTACCTGCCTATTTTCCTGCCTACTCGCCTAAGTTTGTCTAAAATCCA
-ACTGCTTGTCTGTTCTGCATACCAATATGCCTAGACATACCCACATTTCT
-GCTCATCTTCTAACATGCCTGCTCGCCTAACTTAATGCTGTATGCCTATG
-TACTAGGTTACTGCCAGCCTGCCTACTTGCCTACCTACACAAATGCCTAT
-CTGACTACATCTATATCTATGCTTCTCTATGCATAAATGCCTGCCAAAAT
-GGCTAACTGCGTGTCAAAGTTCATGCATGCCTGCCTACCTGCCTACGTGC
-GTACATGCCTATTTGCTTACCTAAATGATTACCTGCTTACCTACCTGTCT
-ACCTGCTTAAGAGCCCTACTTATTTGCCTACCCACCTGACTGCGTGTCTC
-CTCTCTTTCTGCCAATCTAGGCCTACATGTCTATCTAGGCCTATATAAAT
-TCCTACCTGCCTACCTGCCTAAATACCTACTTGCCTGGCTATGTCTTCTT
-ACCAACCGTTTTTTTATGCCTACGTACCTGCGCGCATGCCTACCTACGTG
-CCTACCAACACCTACAAATACCTGTCCGCCTTCATCACATTTTTCACTTT
-CAGGTAATCCTTCCACCACCGAACCCCTACAACACCGCGCCCACACATTA
-TCGACGCCGATCCTCCACAGAAGCCCACCGCTACCACCCACCTCGGCAAC
-CGAGAAGCTCGGCGCCAACCCACCACCGAGTACCGGCCGACTATCCGAGT
-GACGAGGAAGACGACTATGATGATACGGAAGGAGACGACGCGGATATTGA
-TGATCTACCCACACCGCCACCGCCGATTTACGCCGTCCGCCTGACCTCCG
-ATTCGTGGGAGAATCAGATGAGCCGCCCGTCGGGTAGACGGCGGTTACCG
-GCGACTCCGAATTTGCCGAAACATGGAGAATTGCCGCAGATATTTAATAT
-TCCTCATGCTAATGTTTAATCAAATTTTTGGGGTTTTATGGGTTTTGGAT
-TTTCGGAGCGGAGCTTCATTTATCGCTTTAATATTGAATCAGGGGTGGTT
-TTCAATTCTGGCAATTTGCCGGTTTGCCGATTTGCCGGAAAATTTAATTT
-TCGGCAAATTGCCGATTTGCTGTTTGCGGGATATCAGATTTTCCGAAAAT
-GTTTAGAGGGATTTTTTATAAGACGAAAACACTAAAAACTGTGTCTTTTT
-GAATTTTTTCCACTTTTTCTACATATTTTCATAGAATTTGCTTACTTTTC
-AAATTGCCGATTTGCCGGAAATTTTTAATTCCGCCAATTTGCCGATTTGC
-CGTAAAAAATCGTTTGCCGCCCACCCCTGTATTGAATTATCCGGAACACA
-GCAACACTCTGAAATTCGAGCATTAGTTAAATGTGATATTTGAAAAGTTT
-TGCAAACAAAATAATTTTCCCCAGCTTTCATCATTTTTTCTTTCAACAAA
-AAAAAACCGAGTGATATTATGATTTCCAATTTGTGCTATTTTGAGTTTTA
-TTTTATTTTATTTTGTTGTTTTCAATAAATAAACGAATATTTTTTGGTCA
-TTTTTTGGCGCTATGAAACTAAAAAATTTCAGGTAACTTAGCGGGAAGTT
-CGTTTTTTTTTCATTTTGGCAGGAAATTTCATTTTATAAAATGGCAAAAA
-CTTTTCGTTAAAAGTTTTTAAATTTTGAGAAAATTGACGAGAAATTAAAA
-ATTTCAAATTTTTTGGCTCTAAATTAGGATTATAATTTTCCGAAAAAAAA
-TTTCCGAATTAAAATTTGGCGTCTCAGTGTGTTATTCAATTAGAAAAACC
-TTCAAAATATTAAGACATTTCGGAGGCACGTGGTGTCAGAGTGTCTATGC
-TCCTTTAAATGATGCATTCAAAGGCGCTTACACACCTGCACGTAATCTCT
-TTTTTGTCTCAAAACAAAAGGAGCTTCAGACTCTCATATCTCTGCAACTC
-TGTGTGAATAACAATTGGAGCCCCAGAGCTCCCGGCTCCACACTGCCCGT
-TTCCATGGAGACACTCCGATTATTATGGGAGCCACCACTGCTCGCCGAGC
-AGCAGCAGCAGCAGCCCATTGTTAACCCGATGACCAATATCTATATTTGG
-GTCCGGACCGCCCGTTCCCTTCAGTTTTTTTATCCGACTATCGATGTGGA
-GGCCGATGGGTTCGGTTGCTTCTATGAGATTTGTTTGGAAATTGTTGGCT
-TGTTGGAGGAGTGCGATAGGATAAGGTAAGCGTGCTCTATTGATAACACG
-AATTTTTGTGATTTTCGGCAACATGGGATCGTGGTTGCCCAAAGGGAAGG
-AAACGCGCCCCATTGATAAAATCATTTCGCAATAGAGCGCATTTTCATCA
-TTTTTTTGCAGTTTTGACGAATTCGAGACCCTCTGCGAGAATAGAATATC
-GGAAGTTTATGTGGAAGCAATTTTTCAAAATGCTGTGGAACAAGGAAATG
-TGAGTTTTTTTGTGATTCTGATGCTAATTTAGCAAGTGCGCTCTATCGAC
-AATTATGACTTTGTGCACGTTCAAGTATTTTCTCAAAGTTTAACACAGGG
-TTCTGGCCTTCCTCATTGAATTTTTCGCGCTCCGTTGACAACGGACAACG
-CGTGGGAAAGTCGTGTACTCCACACGGACAAATCACATTTAGTTTTACAA
-CTAAAATCGAGCCGCGACGCGACACGCAAGGCACCGTAAATCTACCCCAG
-ATATGGCCTGGCCTAGTTCGGCAAAAACTCTTCCATTTCAATTTATGAGG
-GAAGCCAGAAATCCGTGAAGTTTAACAAATTGTGAGGTGTAGCAAACACG
-CTCAAGTGACAATTTTTACTTTATGCGTCATAAATTTTTTTCTGAAACTT
-AGAAAACGCGCTCTATTGCTACTTTGAACGGAAAACGCGCTCTAATGTCA
-ATTTTATTTCCAGATAAACGCCCGCCTAAAGCTTCTCACCTTCTCACTTC
-TCTTCGCAGGTCTCCAACAAAAAACTAAAGATCTCACAAATTCCATCAGG
-TCGGACGTGGTCTTGACACGAATTTCAAAGTATTTTGGTAAATTTGAAGA
-ATAATATTTGTTATTTTTTTGTTTTCCGAACTTTACAGGCCAAATATTCA
-AACTTTTGTTCCAATTAGACGTGGGCCGCCGGTTACAGGACAGAGAAATT
-GTGCACGCCATTGGAAATGGGCAGGTGAGAAGTTCGGCTACAAAAACGTG
-ACGCGTGGCCTAGAAAGATTTGTTTTTCCACAGCTTTTTCCACAGCTTCC
-ACAGCTAACGGGATGGCCTAAAAAACTCCACGGTCGTTTAGCGATAGAGC
-GCACTTGCACATTTTGGGAATCTTCTGGAAGAAAGTAAACGTCACAAAAG
-GCCTAGAAATCTTTATCGTGTGTGGTTTAAGAAACAATTCTCGGCTTTGA
-AATTATGGTTGCTCGGGGAAAAATGATTGTTAGAAGCCGCACGCTTGCAC
-GCTTGCACAGCTTGGGAATTTTCTGGAAAAGAAGTGACGTCACTGGTGGC
-CTGTAAATTTTCGCCATGTGTGAATTAACAAAACAATTATGGGCTTTGAA
-ATTATCGATTTTCACGGATTTTTGGCTTCCCTCATAAATTGAAATGGAAG
-AGTTTTTGCCGAACTGGGCCATTTTGGCTCGGCCATATCTGGGGTAGATT
-TACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAA
-ATTTATTTGTCCGTGTGGAGTACACAACTTTCCCACGCGTTGTCCGGCGG
-GCGATTGTCAATGGAGCGCAGAAAATGCAATGAGGAAGGCCAGACCACGT
-GAAAATCAATAAGTTTTTCAGCAAAAAATGAAAAATGAGGAAATTTCGTT
-AATTTTAGTTTTGTTAGCAGTAGTGCGCGCTCACATAGTTCAAGAATTTT
-TTTTTGAAGAAAAGTGACGTCACAGATGGCCTAGGAATCTCATCTATGAC
-GTCACTTCTCTTCCACTTTATCCTATTTTCAGGGCTATGAATTCCTGGAC
-ACCCTATTTGAGGGAACAGTAAAGCACAGACATGGAAACTCGAACCATCA
-CGGCGTGCGCCCCCTTTCCCATATAATCCCCCAAATTCTCGAAAAAGCGA
-GCAGTATATCCCTACCATTTTTGTGCAATGAAATCCGCCGACACCTTATC
-AAAGACCCGTATCATATTGATGAGTTCTCAACTGACAAACCTGCTCAAAT
-ATTTTCGACGGCTCGCCGAACGACACTGGCACATAATAGTCGACGGGTGG
-TACACTTGCATTATATCAATCGAATTGAAGTGCTGCGGAAGGATGAATTT
-GCGAATGTTCACCTGAGAATTTGTAATGATAAGATTAAGGCGTCGTTCGT
-TTTTGTTCCGTTGAGGTGAGATTTTTTGGCCGAACTTTTTTTTGTTGCTT
-TTTTTGAAAAATTTTTAAGAGATTTCATTTTTTTTTACAATAATAGAAAA
-ATCAGAAAAAATATTCACGAAACCAATAAGTGGGCGGAGCATCAAACTGG
-CACGCTCATTTTCCGTAGATCGTTTCTGCCAAAATCGAAAATTTCTTGAG
-CTTTCTTGAAAAATAACGCTAAATTTAATTGTGAATTTATTATTATCTCG
-AAAAAAATTATCAAACAGTCGAAAAGGGGCGGGCTTACATTTTTTAGCCC
-CGCCCACTTTTAGATTTGTTTTGTTGAAAAATGTCCAAAACTGAGTTTTT
-CTCGGAAAATTTGAATTCCCGCCAAATTTTTTTCCAGAAAATTTGAATTC
-CCGCCAAATTTTTTCCAGAAAATTTGAATTCCCTCCAAATGTTTTTATTT
-TCAGAAAATTTGAATTTCCCGTCAAAATTTTTTTCCCAGAAAATTTGAAT
-TTCCCGCCAAAATTTTCCCAGAAAATTTGAATTCCCGCCAAAATGTTTTC
-CAGAAAATTTGAATTCCCGCCAAAAAAAATTTTCTCAGAAAATTTGAGTT
-TCCCGCCAAAAAATTTTTTTTAAAAGAAAATTTAAATTCCCGCCAAAATG
-TTTTCCAGAAAATTTGAATTCCCGCCAAAATTTTTTCCAGAAAATTTGAG
-TTCCCGCCAAAAATTGTTTTACTGAGAAAATTTGAATCCCCCCCCCCCCC
-CCCCCCCCAAAAAATTGTTTTACTCAGAAAATTTGAATTCCCGCCAAAAA
-TGTTTTTTCTAAGAAAATTTTAATTCCCGCCAAATTTTTTTTTAGAGAAA
-ATTTGAATTCCAGCCAAAATGTTTTCCAGAGAATTTGAATTTCCCTCCAA
-ATTTTTTTTTCTCAGAAAATTTGAATTCCCGAATTTTATTTTTGAAAATT
-TGTGTGAAATTAAATTTTTGGGAATATTCATTGTGGCCTAAGTTGCTCCA
-AATGGAAGAGTTTTTTAAAAATTAATTTCTCGTCCACGCGTCAATTGTAT
-GCAAGAAATTCGAATATTTTCCAGATGTGAAACCGTATTCCTCGACAGAC
-TTATGTACACAAAATGGATAGTTCTTGGCGCAGTACGCGGCATTGTAATT
-GTTAAAAATTGTCAATCGACCCGAATTTCGGTGAGCTGCGACCAGCTGAT
-TGTGCTCGATTCGAAAAATATCGAAATCTACGCCATGTCGCCGAAGAAAC
-CAATAATTTTCAACAGCTCTGCGGTAACTTTTGCCCCATTTAACACGATT
-TACGAGGTGAGTTCGGTGGGGCGCGTTTGCATTTATGAATTCGAAAATTT
->CHROMOSOME_II
-CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC
-TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG
-CCTAAGCCTAAGCCTAAGCCTAAAATAGTGACTCTGGCAGTTCTCTAAAA
-TAAGTGACTCTGGCAGTTCACCAAAAATTGTGACTCTGACCGTTCACCAA
-AAATAGTGACTCTGACCGTTCACCAAAAATAGTGACTCTGACCGTTCACA
-AAAAATAGTGACTCTGACCGTTCACCAAATATAGTGACTCTGACCGTTCA
-CCAAAAATTGTGACAATGACCGTTCACCAAAAATTGTGACTCTGACCGTC
-ACTATTTTTATTGAACTGCCAGAGTCACTATTTTTAGTGAACTTCCAGAG
-TCACAATTTTTAGTGAACTGCCAGAGTCACTATTTTTAGTGAACTGCCAG
-AGTCACTTATTTTGGTGCACTGGGGTGGGTCACGCCCCCAGTTCTCAGTT
-ATGGGTACTCTGATCCACTCGGGACCCACTTTATCGTGTTCCCCGTGCCT
-CATTTACCCTAGAGCTTCCTCCTTTACCTCTCCTCTCGCTATCTCTAACA
-TTCCAATGGAAACTCCTATTTGAATTACCGCCACCGATGTGCCCGACGCG
-ACTTACTGTTAGCCCTTGTTTTGCACAAATCTGTTGGCTTCCATATTTAA
-AAGTTAATTAATGACCCAATGTTCTTTTTTTCTCTAAATCTCCACAAGAT
-GTTCTGTTTTCCCTACTGGACACTATCGTTCACTGCGTCTCACCAATTCA
-CATTGTCTCTACTTTACCTTTTTTGTCATAGTACACGTTCGCCAACGGTG
-TCGACGGCCAAATGCTTTGGGCAGCGTTTGCTTTTTTTATAATTAGTTTT
-ATTTTATTAAAACAATAGCTCTAAAGTTTACAAGTCATTTGTTATAGGCT
-AAATGAGTTATGTCTAATAAGTAATTTGAACTAGATACTTCCGTGTAAGT
-GACAATGTATCGGAAAAGTCCTCAAAGTGCGATGTAGAAGTTCACATGTA
-CTTTGTTTGGCATGTTAGTAAAAGAGCCAGTATGCTGATTCATTTTATAT
-TCTATATACTCATGTAATATGCCCATGTAAGGTTTAATTCCAAAAATATG
-AGCGTGTTCTATTTTATAATATTTTACTAAAATACCTTTCAGTTAATTGC
-ACTCAAATTTGTTGTTCTTCATTCTCTCGTTATGATTTAATCTTATTGCG
-TCAAGGTCATTATTTTAGGTCCATTAGTTATCGATCTGAAACATGTTGTT
-GTATTTTTCTATTCTTGTGAGCTCAGGACACCTCATACAACTCCAGAGAA
-AATGTGTCTCATTATTCTTGTCTTTTTTCAAGATCTAATCAATTTTCTAC
-ATTAACGACGTTTTTGTCGTTCTGCTTCTTTTTTTCGTTCGTTTGTCTCG
-TCCATCAGCTGTCCACTCATTTCTCTCCCACTCACTAGGCAGTGCTTTGT
-TTGGTTCCGATTGGCAGCTGGCTGCAGGGCCTGCATCTCTTCTATGTCTC
-TCATTTACTTGCATTCTTTTCTTCGTTAATTTTTGTTATGATATTTAAAC
-GGGAAGAAGAGTTTGTGGTTCTTCTTTTTATAATCACTAAAACTTTTGGA
-TAAGTAACAATTTTCTGATAAAAATATTTTCACGGCGAAGAAAAAAGAAA
-AAGAAGAGTAGTTTTTGCACGTTTTCATATAATTATTTTCGTTGATCAAA
-TGTTCTTCTGGAGTTTTCTAATAAATTTCTTATCGACTTTTTTTCAGAAA
-TTTTTCTCAACTTGTCATGTCAATGGTAAGAAATGTATCAAATCAGAGCG
-AAAAATTGGAAGTAAGTTCTTTATAATTTCATTTATATACTATAAGTTTT
-CTCGATCACAGGAGAAACAAAAACAACAGACAACACAAAAAACAATAAAA
-CAATATTGCTCTAGTAATCAATAGTGTTGTAAAGAGGGAAGAAAATTGTT
-ATCTGTGTAGCAGTCAACGTTGATTGAGATGTTGTGTTTGACTATAGAGT
-TGAAAATAATAACTTCAAACTTGCAAGTCATGACTTATCAAACACTGCCG
-GAACTTATTCTGGATCAAAGGAAAGTTGTCCAACTGTAGAGTCATGTTTT
-TCAAAAGAAAACACAATTTTTAAGTATAAATATTTTGAAAAAGTATGTTT
-TAGAAGTATGTCAAATTAAAAAAAAAATCCTTGGTTAAAAAATGATTTTT
-TTGGATATATGTGTATTTTTAACTAAAAATATATACTTTACATATATATT
-TTGGCGCAGTTATTTGATCTATAAATCAAACTTTTTGATAGACATTTTTT
-TATATTTACAACAACTAGGGTTGTTATGAAAACGCCTATTATTCTACAAA
-CTAAATTATTTTAATCATACATTCCCCACTATCTAAAAACTAATGCAATT
-TTCAGATTTTGTCATGTAAATGGGTAGGATGTCTCAAATCAACAGAAGTG
-TTCAAAACGGTTGAAAAGTTATTAGATCATGTTACGGCTGATCATATTCC
-AGAAGTTATTGTAAACGATGACGGGTCGGAGGAAGTCGTTTGTCAGTGGG
-ATTGCTGCGAAATGGGTGCCAGTCGTGGAAATCTTCAAAAAAAGGTATTT
-TTAATTTAATGTGCATTTTATAATATAAATTCTTCAGAAAGAGTGGATGG
-AGAATCACTTCAAAACACGTCATGTTCGCAAAGCAAAAATATTCAAATGC
-TTAATTGAGGATTGCCCTGTGGTAAAGTCAAGTAGTCAGGAAATTGAAAC
-CCATCTCAGAATAAGTCATCCAATAAATCCGAAAAAAGGTATTCACAATT
-TGCATGATATTGTTATAATCTAATTTTCAGAGAGACTGAAAGAGTTTAAA
-AGTTCTACCGACCACATCGAACCTACTCAAGCTAATAGAGTATGGACAAT
-TGTGAACGGAGAGGTTCAATGGAAGACTCCACCGCGGTAAGTGTGTTTCT
-TTAAAAATTACTTCCTTTTTTCAATTGTTTGAAATTAACAAGAAACCTGT
-TGGAGCGTATTTCTGAACTTTTAAATCGAAAATATCATTTGCAAAAAAAC
-TTGAAAATTGAGAAACTTTTTTAAAAGTGGAGTAGCGTCTGCGGGTTTTT
-TTGCCCTAAATGACAGAATACATACCCAATATACCGAATATAACCGTAAT
-AAAATTATGCGATTTTTATTTTTATTTTTCATGAATGTTAGGGGCAAAAA
-ACCCACATGCGCTACTCCGCCTTAAGAAGAATCAGCTGTGAGCACTATCC
-ACTATACATTGGAAATTTACAAATAAAATAGAGATTAAGTAATATAATTT
-TTAAGGGTTAAAAAAAAGACTGTGATATACTATGATGATGGGCCGAGGTA
-TGTATTTCCAACGGGATGTGCGAGATGCAACTATGATAGTGACGAATCAG
-AACTGGAATCAGATGAGTTTTGGTCAGCCACAGAGATGTCAGATAATGAA
-GAGTACGTTGTTTTGCAAATTGATTAAAAGTGGAGTAGCGTCAGTTAAAA
-ACTCTAACATGTCTTAGGTTTTTCAAAAGTTTGGTCAAAGTTTTGGCAAA
-CTGCCAACTTCTTGAAAACTTCGTTAAAAAAATTCTTGAAATGATTTGAA
-AATTTGTATTATGTTATTCTCTTATTTCTGCACTATTCTATATGGCGCTA
-CTATACTTTTAATTGATTTCTTGAAAGCAGTTCAATAATAATTAATTTTA
-GAGTATATGTGAACTTCCGTGGAATGAACTGTATCTCAACAGGAAAGTCG
-GCCAGTATGGTCCCGAGCAAACGAAGAAATTGGCCAAAAAGAGTGAAGAA
-AAGGCTATCGACACAAAGAAACAATCAGAAAACTATTCGACCACCAGAGC
-TGAATAAAAATAATATAGAGATAAAAGATATGAAGTAAGTCGAAATTGAC
-AAACAGTGGTTTTTGTTTAAGTTTATTGCGAAATATTCAAAATTAGACAT
-GTTAAAATTTTGCGAGATAATCTAAAGATTAGGTATACAGATTTTTTCAT
-GTAAAGTTACATTCATCAAAATTTTTGTGTTCACCAAATTAGACAAAAAA
-TGTTAGTTACACAGTATATTTATTTTTTATATCAATAAAACCTTTTTCAG
-CTCAAATAACCTTGAAGAACGCAACAGAGAAGAATGCATTCAGCCTGTTT
-CTGTTGAAAAGAACATCCTGCATTTTGAAAAATTCAAATCAAATCAAATT
-TGCATTGTTCGGGAAAACAATAAATTTAGAGAAGGAACGAGAAGACGCAG
-AAAGAATTCTGGTGAATCGGAAGACTTGAAAATTCATGAAAACTTTACTG
-AAAAACGAAGACCCATTCGATCATGCAAACAAAATATAAGTTTCTATGAA
-ATGGACGGGGATATAGAAGAATTTGAAGTGTTTTTCGATACTCCCACAAA
-AAGCAAAAAAGTACTTCTGGATATCTACAGTGCGAAGAAAATGCCAAAAA
-TTGAGGTTGAAGATTCATTAGTTAATAAGTTTCATTCAAAACGTCCATCA
-AGAGCATGTCGAGTTCTTGGAAGTATGGAAGAAGTACCATTTGATGTGGA
-AATAGGATATTGATTTTATAACGTGTAATTGAGTTTTGGCCAAAAAGGTA
-TGGAAAGGTGGCTGTTTAGTTATATATTTTTCTATTATTTATTTGAAACA
-TGCAAAATTGAAGTGAACAATAAGTGATGTTCATGGAAATTTAAACTGTT
-TTATGATACTTTTTTGAGAAATTGAAAAATCTGTTCATTTTAGAAACAAT
-GTCCACATGGTTCTAAGAGCTAAAATTTTTATTTTCATCCATTTAGAGTA
-CTTTCTCTTTTAGAGTACGGCCCCAGAGCGATGTTAGAAACCTGAGATCG
-GTCAACACAGACCGTTAATTTTGGGAAGTTGAGAAATTCGCTAGTTTCTG
->CHROMOSOME_III
-CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC
-TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAAGCGCGAAATCCTATGAA
-ATTTCAAGGATTTATAACTTTTTGAGTCCGAAAAGAGTCGGAAATCAGAT
-AAAAATAAAATCGGGCTTTTCGACCAAAATTAGGCCTCGAAAAGTCTGAG
-AAAGCACGGAATCTATGGATTCACGGCTTTTTGATTCCGAAAAGGTTCGG
-AAAGAGAAGAAAATCGATAAGAATCGATAAATTTGCAGAAGTATTGCAAA
-TAAATTCCGATTTTCACTAGAATTGCGTCATTTGGGCGCAGAAAATCGGG
-CTTTTCGACCAAAATTAGGCCTAGAAAAGCATGAAAGGGGTCCAAATTCT
-GAGATTTCGCAACAGTTTTTGGACAAGGTTATCCCGGAAATTAGCGGGAA
-GCACTGAAGATCGAAAAACTGAAGATCTTGTCGTTGAGAATCGTTCAACA
-GCGTCAGTTACTACTGAAAAACTGATTTTTGAGCAGAAAATCTGCCGAAA
-TGTCCGAAATCGGACGAAAATCAGTGGTTTTTTCGCCAGGAACTCGTAAA
-CGAGCGGGAAAAAACACTAAAATAAAATACATAATCGACGACGGCGTCGA
-AAAATGGACTTTGGAGGCGATTTTGAGATAAAAATCGCCTCTCTGAGACC
-GCGTCACCGCAACTCGTGCCTCCATCTGACTCAGGATCCGAATCCGGCTA
-ACGAGTATACTCGAGCCGGTTCGGTCGATGCACCAATGTTGACACCCATG
-TTCTTCGGGGAGTCAGACCCGATAGGTAACAAACGTGCGGCTTACTTAAT
-GACGCGCGGAGGATACGGAGCTAGTACGAGCGGTGCGACTGATGATGCAT
-AGGGAATAACAGTACACAAGCTTGAATTAATCCAAGTTTATTATCGAATA
-AAAGGATTAATCAAAGAAAAAAGGAGGAAAGGGCGAGCTGCATTGGGAGA
-CGACCTTCCTCGACGAGAGTTGTTGAAGAATTGAATGGATCGTAGGCCAG
-AGGCCTATAATAATTATTGTGTGGATTTACGGGCAACGACACTCCGGAGT
-AACGCTAGTTAGCGAAGGAGCGCGGTTGCATCTGAATAGCGCATATTGGC
-ACGTAATTCAAATTAGAAAAATTACTAAAATGATTTAATTAATATTTTTA
-ATAGAACGAATGGAATATAATCAGCAAATGGTACAAGCGGACGTCACAAC
-ACATTGCTTAATAATAAATTTCCAACTGAAACCAATAGATTCAGCCTTGA
-CACAACTGATCAGAAACTTGTTATACATGTTAAAATACTCGAATTCATAT
-TCATCGCCACCAGAATAATTGGGTTTGAACACTCTTGCAACTTCAACTGA
-GATGGTACCGTAGATCCAGAAGATGCATTGTTGGAATGTACTTCTTCCCA
-AAAGGTTCTGAGATTTAATTGATTTTTAACCTGGGCCTAAAAGTCTCACT
-TACGTACATTTCTAATATTTAAGGCATTTAGTGCTGAGAAGTATTCGACA
-GTGGCCTCGATGTTTTCAAAGTGGAATAAATAGTGAATTGGAATAATGTT
-GAAATAATGACCAAAAACTTTACATTCTTTTGATTTTTTCCACTGATCCA
-TCCGAGTAAGCTGCTCAAAGTCATCGATTGTTTCAAGGCACCACAATTCA
-ATACTTTTCAACTCTTGAGAATCGAAATAGGGCAGCGTAGATATAATATC
-ATTGGGTGACACAAAAATAATCGATAATTCCTTCACATGAATGCATTGCT
-TAGATCTGAGGATGTTCAGAAAATATGTGGTAACGTTAAGGTCTTGTTGA
-GTTTGTACAACAAATTCGAATTTCCTGACACGTCCCAGTAATATTCTCAA
-ATCGTTGAAAGCTAGTTGCATGAAGTTATCTCTTCTGATTACTCTCTTTC
-TTCTGTGAGCCACAATCGAATTCCCGGCATTGGTGTAAATGATTTTCATT
-TTATCAATCCGCATTTCAACTCGACCATTGCATACCCAAAACGAGATAGA
-ATCAAAATTAATTCCATTTTGAACAACGGCAGCTCTCAGACTTTTACAAA
-TTTTGAGGTGAGTGAGTCTGAAGAATAATAGCTTGGTTATGATTTTTCAA
-AGTTAGGGTACCGAAATCTTGGAAATATTTTTAATTGACTCCAAATTTTC
-CCCTGATTCCGAAAATCGATGTGAAAAAAATCAAAAAAAAAATTCCTGAT
-TTTATATTTAAGCTTGAAATCACGCATTTCATTTGCGCCCCGGTCTCTTT
-TTCAAATTCGCGCCCTAATAAATTTGCATTGGAGCGCACTTGCATCGTGT
-CATTTTCTTCGTTTTTTTCATTTATTTTAGCAGAATTCAATGTTTTAAAC
-CAGTTTTATTCATTTGTGGAGAGTTTTTATCGGTTTTTTTTTGACTAAAA
-TGAAAAAAGGGTCCAAATGAAAATCGAGATGAGCTAAGTCAAGCTTAAAT
-ATAAACCAGGGAAATTTTTTGATTTTTTTTTTCACTTTGATATTCGGAAT
-CATGGGAAAGTTGGGAGTCAATTAAAAATATTTCCCAGATTTTGGTACCC
-CACCTTTAAATCAAAATAAAATCAACTAACTGATCCACTGGCTTTAGCTT
-TTCCAATACTTGACCAAGGATCTCTGTGGGCATATCGGAAAGAGTAGGGG
-AAATGTGATCCTGGCTGTAACAATCAAATTGCCATTAACCCAGTATTTCA
-ACAAAAAAAAACTCACAAATTCATATATCGCACAAAATTAATTGCCCACC
-ATTTGTCAAGTTCAGCTCCACGTTCTTCAGTCAGAGCACGTCGGGCTTCT
-CGGCTGATTGTTACCATTTTCAAAAGATATAATTTCTTTAACACAGAAGT
-TAAATAAAATATGTCCGATAGCAAAAAGTAGATGTGAATGAATTGAAGAA
-GAACTGAGAAATAGCTAAATATCTATGTCTTAATTTTCATAGAGTTTCAT
-TGTCAGATACTACAATGTTACTATTGAGAAAAATGTCAAACTGATAAGAA
-TAGCAGCCAGCTTAAAATGAAAATTTGATAAGAAATTGCTGTCTTAATAT
-TAATTATATTGTCGTCAACAAACAGAATTTTCACTTGCTAGTTGTTAGTT
-TAAATTATATTTTGATACCGAAAAGTGTTTGAAAATGGGGGGAAACTAGA
-AAATAAAGTTTTCTACATATTCCATATTTTCAGAATTGATTTCAAGATAT
-GTCGGAAACAAGCCAAGAAGCTCGACGTGCACTGACGGAAGAACGGGGAA
-AGGTGCTTGACAAATGGTGGGCAATTAATAATTTGAGATTCATGAAATTG
-TGAGTTTTTTGGAAATACTGGCTTATTGGCAATTTGATCGTTACAGTCAG
-GATCCCATCTCCCCCACGCTTTCCGATATGCCCTCAGAGATTCTTGTTCA
-AGTTTTTGAAAAATTTGATTCTATAGAACATTAAGTTGCTTTGACTTTTA
-CAACAAAAATATTCGGTATAAAAATGTTCTGACTTATTTGTCGAAAAGTT
-TGTCGAAGTCTGAAGCCCGCCGTGGAAAAAATTGAAATTCATTTTGATTC
-TATTTCGTTTGAAGTATTTAATAAAAATGTTATTATGAAATTGGATGGAT
-TAAAAATTCTCTACAATGATGTCGCAAATGGTGCTTCTATAGTGGCTTAC
-AATAACAAGGAAGCAATGATCAAAGGAGAAAACTTCCTGAAACTAGCTTT
-CAATGATTTGGGAATACTACTGGAACGTGTGAGGAAATTCAAATTTAAAA
-TCTATGGAGACGATGTACATGCCATTGCCACATTTCTTTTAAATGCTCTC
-AAAGCTGATCAGTGTGTTCACGTAAAGAAAGTAGTGCTTTTTTACGTGCC
-ACTCATTGATATTTGCTCAATTCTCTCGTATTTTGATTCTGAAATGTTGG
-AAAGAATTGACTTGCGTTGTAATGATACAAACGCTCATTTTGAACAACTT
-GCTCAAAAAAAATTCCAACGAACAAAATGTGTAGAACTTTACAAACTTTT
-TAATAAAGATTTCCAAATTTTTATACAGATTCACTAAATTTCCAGAGTTT
-TCCCACAAACCGACACACAGACCGACCTGGTAGTGGAGAGGACAACATCT
-TTATTCAATCCAGTCAGTGAAGTGGAATTAAACTGGGCTTCAAGGAAGAA
-ATGGCACAACGGAAAAGGTCGGGAGAAAAACCAAAAGTCGGAAAAATATT
-TTTTATTGAGATATAATTTTTTTTGGTAGAAACATTTTTCTTCGAATTTA
-AATTATATTTCGCGCCAAAAATAAGATTAAAAACCAAAAAAAAATCCGAG
-TGTGGAGAAGTATTTTCGAAAATATTCCTCTAATAATACCCTTTAACAAG
-GGCTATAATAATGGAATTTCGGGTGCTTGAAAATGAGTTTTTTGAGATTA
-GAAGTATGAATTTTTGTGTCTGGTGTTAAGTTATTTAAGTTATATTGAAT
-GGAAATTTTAAAAAAATTCTGAAAAAATATTTATAATTGTTATTTGAAGC
-TACTATTTCACCTGGAAACTTCTAGAATTTCCAATTTTTTTAAAAATTTT
-TTAAAAATTTTTTTATTTTCAATATTTTTCACATATGATACAATTTATTA
-TGAGATTTTCGGAATTTTTTAAGTGAAGTTTTTCCCTAAAGTTTTCAAAA
-TTGACTCGAATTTTCTGGAATTTTTTTTTTCAAAAGAAACACAGCTTTTG
-TTTAATTTCCAGTTAATTTTTAGCTTTAACATTAAAAAAAATTTCTTTCA
-TTTTTAACAAAAATTCCCCTTCTTATTTTAGAATTCAAAGCCAAAAACCT
-TCAAATTCAATTTTATCTAAAACCTCCTCAAATTCGAAAAAGTGTGAGAG
-AGATACGCGAGCTACGAAAAAGAGCAAAAATCTGAGTTTTTGAGCACTTC
->CHROMOSOME_IV
-CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC
-TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA
-AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG
-AAGAGACCAAACCGAAAAATCAATTTTTTAAACGAAAAATCAATGTTTTA
-AACGAAAAATCTATTTTTTAAACGAAAAATCAATTTTTTAAACGAAAAAT
-CCATAAAAAATTGTTATAAAAATTCTGGAAAAAAAACTAAAAACTTAATT
-TTTGCTTTGAACATTCATCTTTCGCGAAAAAAATTTCAGCAAATAAAACC
-GAAAAATACAATTTTGCAAATAAAAAATCTAAATCAACAGTAAAAAACAA
-AAAAGTCAAATTTCAATAGAAAAAAAAATCAAAAATCAATTTTTACTCCA
-AAAATTCAACTTTTGCCAAAAACTAACCCAGAAAAATCAATTCACAAAAA
-AAAACAAATAAAACTGCAACGATGTTTGTGAAAAAAATTTTCTTGATATT
-TTTAACGAATTTTTGTTTAAAAAAAATGCATTTTTGGCCATAAAATTTTT
-TTTTTGATTTTTTCAAACGAATTTCCCCTCAATTTTCTTGCAGATCGACG
-TGGATATTGACGACCTAGATGACGATTTTCTCTCCACAAACGGAATGGAA
-CGACACGGTTCAGAATTACAAGGAGAAGTGGTTTTCACTACGACGAGTAC
-TGCGAATAACAATGTGAAACGAGCCGTCGAATATTTCGAAGATGATAATC
-AAGATGATGCACTAACATCCACTTCATCCGGCAACAGTACACAGAAGGAA
-TCGTCTCCGTTCACAGATTTTGATGATGTTCCGCCGCCACCAGTGGCTCC
-AGAAACTCCGGCTCCAGCCCAAAACCGCCGAGAATCTGCGTCCCCCGAAC
-GTCAATTCCTTGATGAGAGTCACCTCGGCGGAATTGGATCTCCGTTATCA
-CAGAGTACAAGGCTCGATGAGACGTTTATTGAGGAATACTCTATTGAGTT
-GGACACCTCTGGGAAGTATGTGTTGGGAAAAAAAATCCGAAAATTGATTG
-AAAAATTCGAAAAAAAATCCAAAAAACCTTTTTTTAATGAGATTTTTTCT
-GTGCAAAAATTTAAATTTAGAGCTGAAGAATGTGCACTTCTAGAAAAACT
-TATTTTAAAAAATTCACATCCTTTTATCAAATTTATTAGCATATTTATAC
-AAATTGATGGATAAAAATTCCAAAAAAGTTCCAGAAACAACATTTCCTCC
-GCAGCTTCACCTGGTCCCAAGTCTCCATTTGACGATGATTTTACTGATAC
-AGCTGCCCCGGTAGCCCCGCCACCAGCACCTACAAAAGCTGCCGAGGAAT
-ATCGCCGGCAACCACATCAGAATCCGTTTGATGAGGAAGAGGAAGAAGAA
-TCACAGTTTGGAGGGGGAACTCTGTCCGGTAGAGACCCATTTGATGAAGA
-TGTACGTTTTTCGTAAAGTTCGGAATTTTTAGGGTATAAATTGAAAAACA
-AATGGAGAAAATATGAATACCTAGATTTTTTTTTTCAAAAAATCCCAACC
-CTAATATCCACAATTTTTTTTCAGTCTGGAAACTCTAACGAAAACCAGCT
-CCGCGAGAAGAAGCTCCACAAAAAAGAGCAACTAGCTCACCGGCTCTCCT
-CCTCTTCCGAAGAAATTGTGGAAGCCTCAATTCACGAGGATGAGCCAATT
-GTGATGGCTCAAATTCCAGAGGAGAAGCCCAAACCGAAGGCTATCCCGGC
-TTTTGATAACGCCTATGACGCCGACTTTGACAATTCCCCACCACTTCATC
-ATTACTCGGCGGTTCATTTGGAAACTGGGCTCTCACCGCTTGAGGAGGCT
-CAGAGAGCTCTCCGAGCCAACCGAGCAAGGCATAAGCCGTCGAATGTATC
-GTTGGCAGAGGAGGCGAAGCTTGCTGCCAGACAGAGATACTCGAATGCAT
-CGGATATTAGAAGAGAAGAGGAGGAAGAAGTGGTGGAAGAAGATCCAGCA
-GTGGTAGTTCCAGTTCTACGGAAGGATCTGGAAGTTGAGGAGGCTCCGAA
-ATCGGTACGACCGCCTAGATATCGGAAGTCAAGGGAAATTGAGGAACCGG
-TGGTTGTTGATCGGTTTGTTGAGGAAGAAGTTGATGAGAAGGAGGATATT
-GATGCGATTTTTGAGAAATATCGAAAGGTTCGTAAAGATATTTTCGAGAA
-AAACGGCGTTGAAAATTTGAAAAATTTGAACTTTTTTCGAGTTAAAAAAT
-TTAAACATATAGAAAAGATATGAATCTGACAAAATTTAGAGAAAATAAAA
-TGTTATTCACCAAATCGCCAATTTTTCTGCATTTTTTTGTCCGTTTTACT
-TTGGTAATTCTGGTAATACAAAACTAGTTTTTTTTCAAAAAAGAATTGCA
-GGAAAAATATTTTAAATGTTTTTTGAGCACTTGAGCGCATGAGATAGAAA
-AACGTTATTATTATGCATTCCCTCATATAAAAGTTTGTTCAATTTTTTTA
-ATTAAACCCCGCTCTTTGAGAAAACTCTGGACTCTACATGGAGACTACCT
-TAATACAAATTAACTCATAAATATCGGTGATTTTCAACTAGTTATTCATA
-TGATGCAATTACTGATTTAATAACTTATAATTATGTGTCAATTTCAGACG
-TCTGTATCCGCCGATCCAAAATCTCACACGCCGATTTTGATGGCCGACGA
-GTACAAAGAACCACAGAAGCAAGGTGAGTTTAGTTCGAAAAAAAATCATA
-ACACACACCAGTAGGTTTAAAAACATTGTTAGAAAATTTGAAAAAAAAAC
-CAAAAACCGTCGTAAAACTACACTTTTTCTATTGAAAATAGAACAAACAA
-ATCAAATATCCTACATGTAAAATTTAAATCGAGTGGAATTAAATTCTTCA
-AACAAAAAGAAATCTGCATTTAATATCGATTTCTCATTCAATTGTTATGA
-ATCATAAAACATGATTTTTTACGACCTCCTCTGAATTATCTACATTGTTC
-TCTTTTTCATACTTTCCATATTCTAGTATCGATAGGACTAACACAATTTT
-AATAGTGAGTTCGTTTTTCAAACAATTGGGATTAATTTTCAACTGAACTA
-GACTGTTTCTGAACGCTCAAAACCTTCAAAATCAATGCTTCTTCAAAACG
-AAAAAATTGCACACTATAAACCTCTCACTTGAAGTGGCAGCGCTCGTTTT
-ATATTGAGAAAATATATATTCAAAAAAATGCTGCTGCTTCTTCAGCTTCT
-CGCCGGGCGCCGCCGCCAATAGTGAGTTCGTTTTTCAAACAATTGGGATT
-AATTACAAAAAAACTTAACTGCGCAATTTTTAATTGGGAAACTTTCAAAT
-TTTAACCATAACTATCAATACAGCGGTATACGAAATTTTTCTTCAAAATC
-GCACCGATACTGCATTTTTCCGGAAAAGGACAAAGTCGGCTAATTGCCGT
-TTTTTATAATTTTTGCTCATTAAGCTTATTCCATTAAAAATACAATTCTT
-GTTTAAAATTGCTGAACGGCGAATTTTGTCTACCCGTGGTGGAAATTGCC
-GGTTTGTTGATTTGCCGGAAAATTTCATTTTCGGCGTGCCGATTTGCCGT
-TTGCCGGATATCAATTTGCCTGAAACGTTTAGAGGAATACAACGGAAACA
-TTTGAAACTGTGCCTTTTTGAAATTTTTTCCCTTTTTTTTACAATATTTT
-CATAGAATTAGCTTACTTTTCAAAATAGATGTAGGAAAATTCATATGCGT
-ACAATTTTGCCAATTAAAATTTGAATTCTGAAATTTACAAAAAAATGTGC
-AAAACTACTATTCGCCGAAAATTTTTGGCAAGTTGCCGATTTGCCCGAAA
-TTTTTATTTTCGGCAAATTGGCGCTTTGCAGTTTGCCGGAAAAAATTACA
-TACACCTGTTTTCAGCCTAACTTAAAATATGATTTACTTTGAAAAATAGG
-GAATTAAATTTAAATAAAATTTTCAACTGAACTAGACTGTTTCTGAACGC
-TCAAAACCTTCAAAATCAATGCTTCTTCAAAACGAAAAAATTGCACACTA
-TAAACCTCTCACTTGAAGTGGCAGCGCTCGTTTTATATTGAGAAAATATA
-TATTCAAAAAAATGCTGCTGCTTCTTCAGCTTCTCGCCGGGCGCCGCCGC
-CACATTTACCGGCCAACCCGTTCTCTGAGGTTGTCTTGTAAGGGCGTTTT
-CATGTATATTCAGATTATTATGCATGAATTTCATTAATAACGGTATCCAC
-CCACGTATATTTCTCTTCTTCTCTCTTTCTGTTGCGACGGGGGATGTCGA
-TTGATTACGCCACGGGCGCTAGCCTATTCCGAATGCATTGAGAAATTTGA
-GACCAGATTCTGGAGTTTTTGGAAGACGAATCGTCGGCAGCGGAGCTCGA
-TTTTAATTTAATTTCGAGAGCACCCGCGTGCTCTCGCCTCGACACCCTCA
-AACTTCTTCTTCTTCTTCTTTTCGTCGTCTTTCACTTTTTTCCTTTTTCC
-TGTCCTAACCACGGCGTCTTCCTCCAATTTTCAGTTACCACGACGTCATT
-AGCTATTTTTAGTCCGAGTGTGGAGCTTGAGAATTTGAGCAATTCTGATG
-TGACATTCCTGTCGTTTTTAGCGCTAATTTTCCTAAAACCTTCAAAAATT
-TAGAAATTCTCTATCGTCTTTCAAGAGCCTAAGTTTTTTTTTTCGAAATG
-AGTTTTTTAAAATTGATCGAAATGTTTTTAAATACTGAATATTTGGGATT
-CTAGATTTTTACTACAATATTTCCTTTTCAATTTTTAATTGGACAAAATT
-TCAAAATGTTAAAAAAATTCTCCGAATTGAATGCTATTTTTCTAAAAAAT
-TTTTTTAGTGCCTGCACCAGTTGTCGTTGCTCAGGAGTCGCCGATCTTAA
-AACGAAGAAACTCTCTAGTACCATCAAGGATCAGTGGAAGGCAGTCGACG
->CHROMOSOME_V
-GAATTCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGC
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACA
-TAAGCCTAAGCCTAAGCCTAAGCCTAAAACATTTGGAAATTATTTTTGAT
-CGTTTATATTCAAGTAGCAAGAAAGTGTCCTAGCGTTAAAAATAGGAAAT
-TTTTCGCTCTTTCAGAACAGTATACTCATGTCTCTGTACCGACGATATTC
-ATTTCAAAAATCGCAAAAAAAGTTTTTTTCAAAATACCACTACCATTAAA
-ACATTTGGAAATTATTTTTGATTGTTTATATTCAAGTAGCAAGAAAGTCT
-CCTAGCCTTAAAAATAGGAAATTTTTTGCTCTTTCAGACCAGTATACTCA
-TGTCTCTGTACCGACGATATTCATTTCAAAAATCGCAAAAAAAGTTTTTT
-TCAAAATACCACTACCATTAAAACATTTGGAAATTATTTTTGATTGTTTA
-TATTCAAGTAGCAAGAAAGTCTCCTAGCCTAAAAATAGGAAATTTTTTGC
-TCTTTCAGATCAGTATACTAAACATTCACGTGTGGATTAAAATTAAAAAG
-GTAGTGTTAAATAATTAAAAATCATTTAGGGGGGAACGAAACCCATAAGT
-ACTGTCATTTTTATCTTTTACCTTTTTTTTTACGTACGACGTTTTTCGCT
-GTTTTCCCTGATACAAAATGCGTTGTTCTTGTTTATTTATGTTTTTCTTG
-AAAATGTTATCAACACTGATAATCTGAAAAATTATAATTTAAAACTTAAA
-CGAAGCTAAAATGTGGCTGTTATAATACAGCGACTCAATGAAAAACTCAA
-AAAAAAGTTGACTTTGCACGCTATGGTTAAAAATGAATGAATTCTTGGTA
-CATGGTTTTTTTTGTGATTTTTCGTTGAAAAATCCACACCGTGTCAGAGA
-GAGCTGAAAATGTTCATTGAAAGCGCTAAAAAACATTTGAAAAAATGCCA
-ATTTTTCCGTAAGATAATTCGATTTGAAAGTTTGAAAACTGAATAGTAAT
-TGTGTACTTGCAAAGAACCTTGTTTGCTTTTTAGTTTATTTGATCTACCA
-AAGATTGGGTTCACTGTCTGACCATTTGGGTCACTAATCTCATAAACCGT
-CAAAACAATCCAACGTGGTACAAAGTACATCAAGTTTTTCACAAGTCCTA
-TAGTTAGCTGCGCATCCCTAATAGGTATCCCCATTAATTTTTTTTTCAAG
-AAGAATGGCAACACAAACACCCCTCTCTGATGACTCGTGTGTCAAAAACG
-AGCTCACGGAACTCTCCTCTAGTGAAACGGTCTCGAGGATTGACGAGGCC
-CCGAAATTTCATGTCAAAGCTGTCGTCGGGCGTGTTGTGATAAAACATTT
-TGGTGGCCGGGATTGTGTTTGTGTTCAGTCAGAAAGACGCTATTAGGACC
-TCCTCCCATCTTATTAGCTGTTTATCCTTCATCACAAGACATCTCAATAT
-TGGTTCCATAGGTGTAGCTTCTTCTGCTTCTTCTTCTTCTTTTGTACCTA
-CGTCATCATACATTGGTTACTGTCCTACCGAGGTTTGTTTCAAATTTGCA
-CATTTAAAATGGTATACACCTTTAAAATAAACTTAGAAGTAAGGCCTTTG
-GTCCCACTACAAAAAATTTACAGTAGTTTGGTTCAGACTTTTCTAAATTT
-AATTAAGGTTATTTTTTATTGACAAAAAATATTTTAGTTCAAGAAATATG
-TTATGTTCAGTGGGTTTCCTGTCATATACTTCTACTTACCGTATTTCCTC
-TATTAGTCTTGCATGCAAGACTAATTTTCAATTGACCCGTAGGGGTGCAA
-GACAAATAGGGGTGCAAGACTAATAGAGGCTGCAAGACTAATAGAGGAAA
-TACGGTAGTTATACTGGCAAAAGCGATAGCATTTCGAGAGAAAAATATTC
-TTAAATGTGCTCAATATGGCTGATACAGATAGGTTTTTCATTACAGACAG
-GTTTTTCATTTCAATTTTAAAAAAATACCTGACAGTTTATCAAGAAAATC
-CAGCACATTCCAGAGTTATTAGAGTATTTAGAAGTTTGCAAGTTCCCAAT
-TTTGTCAAGGGATTTTTCAAAGTTTCTCAAACTTTCCAAAAAATGCAAAA
-AAAAACATTCCAAAAGTACCAATTTTTCCAAAAAATTCCATAAATATATT
-CAGTCCACCGAACGTTTTTAGATCTAACTGAGAGTTCTCCTGAAGTTTTT
-CAGAGTTTGAAGGAATTTATAGAAGTTTCTGATGTTTTACAGGATTTTAC
-TAAAGTTTCTCAAATTATCTATAAATGCCAAATCTTTTCAGAAAGTTTTC
-AGAAAATTTCCGGAAAACCTTCAATTTTTCAAGTTTTCCAGAAGATTCTC
-GATTTTTCCAAAATCGTTTCAGAATTTTCCTAATTATTCCCATATTTCCA
-TCGACTTCTTATAGTTAATTTGATTTTCATCAAATTGATACAAATGAGAA
-AATTTGAAATTTGATAACTCACGTTTCGATGCAAAAAGAGACGAAAGGCG
-GCGTGATGCGGGCAGGATTTAGGCAGGCGGTAGGCCCTGAAACCGCGCCT
-GCCTACCATTGAACCTCTAAGCTATTCAGTTGTATTTTTTGATATTCCAG
-ATGCGTACCGACGTGGGTTCTATTCCATTAATGTGTATTCTGTCTACACT
-AACGACTGGTGTGTTCGGATATCTTCCGACAGAAGATCTCACAAATTCGA
-TAATTTCTGGAAACGGTGGTTATCCAGTTCCTCCGGACACTATTATACCG
-GCCGATGGAGATGAGGAAGGTAAGTGGATCAGAAATTAATAATTATAAAT
-TTTTTAGAGTAGGGTTTTCTTCTGAAATCTGATATTTTGTGAATTTTGCA
-AAAAATTGGAAAAATCGACAACGAAATGCAAATTGTTTCGTTAAATGCAA
-AATGGATGCGCACCTTTAAAGAGTAAAGTCTATGAAAATGCTTTTATTTG
-GTATTACAGTTCTTTTCAAAGGCACACATATTTTTCCCATTTAACAAAAA
-ATCGTCGTGACCTTATATCGTATTTTCGGCGCAAAAATCGGAACATTTCG
-CGTCTGTATAATACCCCATTTAAAGGTTTACGACGCAATAATACAACACC
-GGGTCTCGACGTGGCAAACGATTGTTTATTGATTTTCACGGGATTCTCGC
-CTTTCTCATTGAATTTTCGCGCTCCATTGGCAATCGCCTGCCGGACAACG
-CGTGGAAAAGTGTAGTGTACTCCACACGGACAAATCCATCGGTTTTACAA
-CTAAAAACGAGCCGCGACGCGACACGCAACGCGCCGTAAACCTACACAAA
-ATCTCGCAGACTCAAAATGGCCTAGTTCGGCAAACTCTGCCATTTCGATT
-TATGAGGGAGGCCAGAATTCCGTGATTTTCCCATTTCTCACGGCCTCTCT
-AAATTTCACGTTTTTCAAAATTCATCTTTTTCTCTCTGCTCTCTCACTCT
-CTCACGTGAAATATTACTTTCTGAATAATAATTTGTGTTTAATTAAATCA
-AATTTTATTGAAATAGAATTCATGATACACGATCTTGAGAAGAGCTCTGT
-CCTCCAGGCTGCGAACTGGAGCGTAGAAAGTTTTCATATTGTTAAAAACT
-GCAAAGAAATGTTCGATTCCTTGTTCTGACGTGTGATGCTTTCTCAAATA
-TGGAATTAAATGACAGACAAGGAGATGAAGTTTCGGAGTGACTCATTATT
-TCATCAGTTTCATTAGGAAAAACACTCTTTATTTATTCAAGGAACTGTTA
-AAGCAAAACTTCAATTTTGTCAATCTCTTGGTCTAAATACGTTCTATCGT
-TAGATAAATCTAACTATCTAACTGAAACGAGTACAACTATATTGTAACGC
-AAAAAAGCTAAGCGCCATAAAACACAAGTAAAACAGGCTCCAGTAAGCCT
-AAACTGTTTTTACTATAAAAAACCATTGTCATTCACCTACCTACCAAATG
-CCAATATAATTGGTTGAAAAAAATTAGTTTAATCTCCTCGCAAGATTTTT
-TTCTCCGAAATTTAAGATTGGGCGCTTAGTGATATCATAACTCTGCAGCC
-ATCAGAAAAACTGAAATGTATTTAAACTGTAAGTTTTAATCGTTTTATGA
-GGATTATTTCTTTAGTTGACAGTTTTTTGATAGCTTCTTTAGTTATTGAG
-CTACGGGCTTCCAAACAAAACCAATCAAAAACCACTATAAACCACAATGT
-CCTAAAAGTGAAATTACTCAGTCAATTTTTAACCAAATCACGGCATTAAT
-GTCTTGATATCTTCATTGAACAATTTGTAAAAATCGTAAGGCGGTAGTTT
-TTTGATAAATGTCATCGTTTTTTAGTAAAATTGCGTTAACCATTCAAAAA
-TGGCCCATTTTTGGTGTTTTCAGGCCTAATTCTTGTTTTTGAAATTCCGG
-AGCCAGTTTTTATCGAAAATTTTTGTGCAATGTCAAAAAATGACCGGAAA
-AAAATTCTCTACAATCGTAAGGCGGTACTTTTTAAAATTTCGTTTCCATT
-CTTCCCCAGGGATCCCGTAAAAAACCAATTTTTCGACTAGGTCTCACATT
-TTGCCCTACAAGAGCATAGTTAATGTTATAAATTTGGATTTTTTGGTCGA
-ATTTGATGAGGTAATATTCAGTTGTTTGTTTATTGTTGGAAAATCTGAAG
-ATTTATCAGCGAATCGCCCGATTTCGCCAATTATGACCAAAAAACCCCTA
-GTTTAGGATTTTCACGAATGGATGAGTTCATTGATACGCTTCCACGCTGT
->CHROMOSOME_X
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC
-CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT
-AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA
-GCCTAAGCCTAATCTGTGCTCCAAAGCCTTCGAACTGACGGACTTGTGTC
-CCGAAGTCGAACTCTTGAAGTTGTCACCGAGTTGGCTAATAAGAAAGACG
-CTACGTTGTCTTTTTAGTAAGTTTTCGTCGAAATTCTGGAAAAAAAATCT
-GAAAAAAATGAGAAAAATTGAAGTTTCTTGTGAAAACGTGCAGCAGCCGA
-CAACTAACGGGACTGGGAAAATTGAAATTTTTAACACAGTTAAAATGCGA
-TGTGCGCATAGTGGGTGAAAGGCCATAATGCGCGCACCGCGTGTGGCGAC
-CACCTATTATGCACCTATCGCGAACGGTTCGCGATGGGTCCATAATGTAT
-CCATGATGCTTCCACTCACGAAACAAACAATTCGAAATATATATTGTTTT
-TCCGCCTATTTTTTTAACATTTTATTGCAATTTTTATTGAATTTTTGATT
-TTCACTGGTTTTTTTTCTTGAAATTTTGTTTCGTATGTGGTATTTTGTAA
-TAATCATAATATTTTTTTCTAAATTGTGTGTCTTTTAGAGAAAACACTGC
-TCTAACCAGTTGAGGCATTTAAAAACATCATTTAAACAACATGGCAAGCA
-TTATTTCGTTCCTAATAAATGGAAGCATAGTCAGGATTACTGTAGTTTCA
-CATGTATTTAGCCATTAAAATTGTAATCTGAGTTTTCATCGGTATTTGCG
-CATACTCAGAAAATTTTGTTAAATATCTTGTCTGTTCCTGTATTTTCAAG
-AGCGAAATATCGTCAAAATCAGATTATTTCGTTGAATCTGGAAATGCCCA
-CTGTTCTTCATGCCTACTCGTGTCTATTTCTCATCAGCGTTATAACTCAC
-CTTTTAAATAATATTGTAGAAACAAATTTTTTGCAGCTTCTCTTCGAGCA
-GCAGACTTCACAAAAACTTCATCAACAAGAAAAAACGTGAAAATCTTCAA
-CATCGGAATGTCTAGGTGAAGGATGTCGGAACGGGCAAGGTTTGGAGCAC
-GGCTCAGCTTTTTTAGATTTTAGATTTTAATTTAGAAACACACCACCGAA
-GAGGAGGAGATAAAGATGGCTCGGCTCCAGAATGCATTGAAAGTTGTTGG
-ATGGTCGAATGGATTGAAAGCAATTGTAAAGAAGGAGTTACCCGGAAGCC
-CTGCCAAAAAGCAAAAACCGGCATCGGTTGCGCCGAAAATTTTGGACTCC
-TCGATCGGAAGAGTGAGTTTGCTGATTTTCAAAAAATAGGATGAAAGGCT
-GAATAATTTGAGCTCTCAATTGCTAAAAATATACGGATGGACAAAACTAC
-GATCATCATTGGTCACAAAGTTGCAGCTCCGAAAAGAGAATTCGTCTGGA
-ATTCTGGAAGTTCACAAGAATGGTGAGTACTTACCTTTCAAGTGAAAATT
-GAGGAAAAATTGAGAAAGAAATGTGTTGAAAGATGCAAAAAAATGACAAA
-AATTCAGCTTATCCTGCTAAAATTACGCGTGAAAAAGCATATTTTGTGCT
-TGAAAATCGCAAAAAAAATGCATTAGAAAAACCGATTTTATTTAGTCCTC
-CTAACAAATCGATTTTTGTAGACCTGGAGTCATCCTAGCAAACGAGGCAA
-CACTGGAAGAGGACGAAAAACGTTAAGATTCCGTATGAAGATGTCAGAAA
-ACCGAGTTAGGAGGAACTTGGAATTAAATTTTTGAGTTTTCTTTTTTCTA
-TAATTTTTTAAGCTCACTTTTTATTCTTTTTGTTGTTCTCCCACTTAGGC
-CATGTTAATAAATGTGTTTTTGTTAAGAAAACTGTCTTAAATGCTCAGGA
-TCAGGTTTTATTATTAAAAAAACAAACCCACAAAGCGCACATAATTTATG
-TTCGCGATGCTCGCAAAATGCATCTCAAGTTCGCGATGGACGCACAATGC
-GCGCGCAATGGGCATCATTTCCGGTTCCTTTTTAACACACGCGCGATCCA
-CTCCGAAAGCACTATGCGCACATCGCATTTTAACTGTGAATGAAAATTTG
-AAAAAAAAAACTAAATTTGAGAATTTTTGAGTTAAAAAATTCCAAATTGC
-AGAGAAATAAAAAATAAAATTTTTAGAGAATATATCGAAAGAAATTCAAA
-TTTTTAAGAAAAAATCCCAAAAATAAATCATTTTTCTAGAAAAAAAAAGC
-AAAAAGTTCCCATTTTGCGATAAAAATCGAAAAAATCCCGATTTTTTTAC
-AATTTTCTAAAAAAAAACTGAAAAAAATCCACATTTTTCAGAAAAAAACG
-CTAAAATTTTAATTTTTTCTAGAAAAAAACAAAATTTTCAATAAAAAATC
-CAAAAATAAAACCAAAATTAAAAAATTATAATAATTACGGGTAAAATCGT
-ATGAAATCCCGTTTTTTTTTTAATCGTAATTATTTTCAATTTTTTGGTTT
-TCTCCTCAAAAAAAATTGTTTTTTTTCCCATTTTTCTTTAAAAATTGAAA
-GTTTTCCAATTTTTCTCGAAATATTGACTCAAAATTAGCTTTTTCTTCGA
-ATTTTTAATAAAAATTTTCACTTTCGCGACCCGTTAGTTGTCGGCTGCAC
-GGTTTTCTGAAAATTGAGAAATAAAATTAGAAAAGTTGCAAAATTGAAAA
-AAAAAACCGCAAAAAACTGAAATTTTCTAGGCAAAAAAAAATAAAAGAAA
-TCCACAAATTTTTCGATAAAAATTGAAAAAATCCAAATTTTCCTGAAAAA
-AATCCCAAAAATCCAATTTTTCTACAAAAAAAACCCAAAAATCCACTCCT
-TTTCGATAAAAATTTGAAAAAATTTCGATTTTTCAAGAGAAAATTCCGAT
-TTTCTAGAAAAAAAACCCCAAAAAACTATAATTTTCCTTTAAAAAAAACC
-CCAAAAATCCAAATTTTTGTACAAAAAATACCAAAAAATCCACATTTTTC
-AATAAAAATTAGAAAAAAAAAACAATTTTTGCTGAAAAAAAACTCAAAAA
-TCCAATTTTTCTACAAAAAATACAAAAAAAATCACGATTTTCCTGAAAAA
-AACCCAAGAAACTATAATTTTCCTGAAAAAAAAATCCAAAAAAAAACCGG
-GAAAAAAACAAAAGAAATCCAAATTTTTCGATAAAAAAATTGAAAAAATT
-CCGATTTTTCAGGAATAAATTCGGGAAAAAATTCAATTTTTCTAGTAAAA
-AACCCAAAAAAAACCCAATTTTTTTGCAGTTTCCGTCACTTCTTCTACCA
-CCGTTTCCACAGTAATCTCATCGAAGGCTCAGGTCGCCTACTCGACAAAA
-TTAATGATACTACTGCTGCCCAACAACAACTACAAACTACAAACGAACTC
-GACGGCGATGGCCCAGAAATTGCAATCGCCGCGGCCAAAGCATTCCATCC
-GACTGAAAAATTCGATTTGGAAATGAATGTGGACGACGATGAAATTCTGA
-AAGTATTTGATATACAAGAACAAGAGCAAATTGTGATGAAAAAAATCCGA
-CATTTGGAGAATTCTGACTTACATTTCGAGCGAATTCATGTGAATTTGGC
-GAAAAAAGAGCGATTTTTTGACGACGTTCAGAGCTCGGAAAATGACTCAA
-GCGACGAAAAACTCGCCGAAATTTGCGATTTTTTGAGCCAAAATTGCCGG
-GAAATCTCGAATGCTGCGAAGCCTCCTCGAGCAACACTTGACGAATGGAT
-TCAGACTGGAAAATTCGAAATACAACGTCGTCGAGAGATCCGGGCGGTTT
-GCCACGTCATCAAGGCCATCGGTCAGATGGGAATTACACTTGGCGAGCTG
-TGTGGAAAATTGAAAATTGCCATAGAGCAAATTGCCGGAATTTTGGCCGA
-TTTGAGCGGAGACAAGAAATGGTGTCCGAGACCTTGGATTGCGCCGGAAG
-GTTTTCTTTTTTTTTTAAGGGATTTTTGGGGCGAAAAATTTGGATTTGGC
-TCACCACGCGCGAGCTTTGATTTAAAGGTGTTTTCGCGGTGAGACCCGGA
-AATTTTATTTTTCCTAAATCTCTCTGAACCCGGTCATGATTATACTTAAA
-TGAAAGCTCACGGCGAGCTGAATTCGAATACTAAGTGTATGGTTGTTTAG
-CTACAGTAACCTGACACTGAATTTCGCGGCGAGACCCGAAAATCCCCAAA
-AACTCTCAAAAACCGTCTTAGAATCGATCAAAATATGTCAAGATTATACT
-TAAAGGAGGACTAACGGTTCGGACGATTTTGAACGTATAGACCAAAAATA
-AGCTCAAATGAACGAAATTCGTAATGAAACTGCTCAAAAATTTTTCAAAA
-ATTTTTTATGGCGGTTCAAAATTTTGAAAAAAATTACACTGATTTTGGCT
-AAAATCACGATTTTTTCTCATTTTTCCGTGTCACATTTGTCCGAAGTTGG
-TTTTTTTAGAATTATCGTCCTTTATTACATATTTTGGTAATAAATCTCAT
-TTAATTTCGTCGATTAAAGTGCATTTAAAGCCGATAAATAACCAGTTTCG
-ATGATTTTTGGTTACCTATCGGCTTTAAATGTACCTTAATCGATGAAATT
-AAATGAGATAATCTACCAATATATGTAATAAAGGACGATACTTCCAAAAA
-AGCCAACTTCGGTCAGATGTGACACGGAAAAATGGGAAAAATTCGTGATT
-TTAGCCAAAATCAGTGTAATTTTTTTCAAAATTTTGAACCGCCATAAAAG
-ATTTTTGAAAAATTTTTGAGCAGTTTCATTACGAAATTCATTTAAGTATA
-ATCATGAGCGGGTTCAGAGAGATTTAGGAAAAATAAAATTTCCGGGTCTC
->CHROMOSOME_MtDNA
-CAGTAAATAGTTTAATAAAAATATAGCATTTGGGTTGCTAAGATATTATT
-ACTGATAGAATTTTTAGTTTAATTTAGAATGTATCACTTACAATGATGGG
-GTTTAAAATTCTATAGTAAAAGTGTTTTTTGTTTTAGCTGTTTTAAGTAG
-GATTATTAGATATATTAATATTGACCCTATAAAAAGAAGTTTTTTTCTTA
-TCTTTTCACTACTTTTTAGTATACCAGTTATTTCAATGAGAATACATATT
-TGGTTTTCTTACTTTATTTGTTTATTATTTTTAAGTGGTATTTTTGTTAT
-TTTGGTATATTTTTCTAGTTTATCTAAAATTAATGTAGTGAAAAGTTATA
-TAGCTGTGTTTTTACTTTTGTTAAGAATGTTATATTTTTCTCCCACAGTA
-TTAACTTATAGAAGATATTTAGGTTTAAGAGGTTTTTATTATAGTATTTA
-CTGGTTTATTTTTTGTTTTATTTTAGTATGTTTATTATTTTTTATAAATT
-TTAGTAGTTATTTTTTAAATTTTTCAGGTGCTTTACGTAAAGTTTAAAAT
-TATGTTTTTATTTGTTAGATTATTTATATTTATTTTTAAATGACAACGTT
-TAATTTTTATTCTAATTTCTTTAGAATTTATAATGTTGAGATTATTTTTA
-AAATTTTCTTATGTTTTAGGGGAAATAATGTTTTTTTATTTTATGTGTTT
-TTCTGTTATTTCAAGAATCCTGGGTATGGTAGTTATAGTAGGTAATATAA
-AATTTTTTGGTAGTGATAATTGTATTTTTTAGTAACAGATATAAGTTAAG
-TTTAAACTATTGATCTTCAAAATCAAAAATTTATTTCTGTAGAGATAATA
-GTATAAATAAGTATGTTTCTTTTTCGCAGAAATGGTTTTTTATCTTATAA
-AGTTTTCTTTCAGGGAATTAAAATTTGATCATGGTTTAAGATGATTTAAA
-ATGGTATTATCTAAATTTGATTTACAGAGTAGGCAATAAAAATTTACCTC
-GGCAATTTATCGCTTGTAAAATACTTGTTCCAGAATAATCGGCTAGACTT
-GTTAAAGCTTGTACTTTAATTGATGTTAATTATGAAATTATTATATTTTC
-TTTTAGATCTATGGTAGAATTTGGATTTATATTAGTGAATTTTCATAATT
-TTAAGATTTGTTGAACAAAGCAGATTAGTACCTGGTTAGACAAAAATTAA
-AAGAGCAGGAGTAAAGTTGTATTTAAACTGAAAAGATATTGGCAGACATT
-CTAAATTATCTTTGGAGGCTGAGTAGTAACTGAGAACCCTCATTAACTAC
-TTAATTTTTTGACTCGTGTATGATCGTTTATTTTATTCTTAAGGATTATA
-ATAAAAAATTTTTAATTTATTAAAATAGATATATACCCGGTTTATGATTT
-AAGAAACATTTGGCCTACAATATTTTATATTATGGATTTTAGTTTTAGTT
-AACTAAATGAAATTGTAAAAGACAGTAAAAAATTCTTAATGTATTTTTGA
-AGATTATCTAGAAGTGGTACAAATCATCCATCAATTGCCCAAAGGGGAGT
-AAGTTGTAGTAAAGTAGATTTAGGGGAACCTGAATCTAGTAATAAAACTA
-TTTTTAAATATGTTTTGAAAACATGTTTTGAGGTAACTCGTAGTTTTTAA
-GAGTTAGTTTAATATAGAATTGTTGACTGTTAATCAAAAGGTGTACCTCT
-TAATATAAGAGTTTAGTTTAAGTTAAAACGTTAGATTGTAAATCTAAAGA
-TTATTGCTCTTGATAATTTTAGTTTTACTTATAGTTATTTTAATGATGAT
-TTTTATTGTTCAAAGAATCGCTTTTATTACTCTATATGAGCGTCATTTAT
-TGGGAAGAAGACAAAATCGTCTAGGGCCCACCAAGGTTACATTTATGGGA
-TTAGCACAAGCTTTATTGGATGGGGTTAAACTTTTAAAAAAAGAACAAAT
-AACACCCTTAAATTCCTCTGAAGTATCATTTTTACTTGTACCAGGAATTT
-CTTTTGTTGTAATATATTTAGAATGATTTACGTTACCATATTTTTTTGAT
-TTTATTAGTTTTGAGTATTCAGTTTTATTTTTTTTATGTTTAATTGGATT
-TTCTGTTTATACAACTTTAATTAGCGGTATCGTAAGAAAATCAAAATATG
-GTATAATTGGGGCCATCCGTGCTAGAAGACAAAGAATTTCTTATGAAATT
-GCTTTTTCTTTATATGTTTTGTGTATTATTATTCATAATAATGTTTTTAA
-TTTTGTTTCAAAATTTAATTTGAGACTTTTAATTATTTACATCCCATTTT
-TAATTATAGTAATTGCTGAACTTAACCGGGCGCCATTTGATTTTTCTGAA
-GGTGAAAGGGAGTTAGTTAGAGGATTTAATGTGGAGTTTGCCAGAGTAGC
-TTTTGTTTTATTATTTTTAAGGGAATATGGAAGATTAATTTTTTTTAGGG
-TACTTTCTTCTGCTATATTTTTTAAATTTTCAATTTTTATAGCATTTAGT
-ATTTTTTCATTATTAATTTTTATTCGTAGTTCATACCCTCGTTATCGTTA
-TGATTTAATAATAAGTTTATTTTGATTTAAACTTTTACCAATCTCTTTAA
-TTATATTGTGTTTTTACGCAGTTATTTTTTATTATTAATCAAGTTTATTT
-TTTAGACATTTTTATATTTGTTTTTGTTTTACAATTTTTGTTTTATTTTA
-AAGAAAGTATATTAAATACTTTAGTGAAAAAATTTCTTAATAGGTTAGTA
-GGAGTATTTAGATATACAAATACTTTACCATTAAGGTCAGTAATTTCTAT
-TTTTACTTTTATTGTTCTTTTAACTTGTTGTTTTGGAGGTTATTTTACTT
-ACTCTTTTTGTCCTTGTGGAATGGTTGAATTTACTTTTGTTTATGCTGCT
-GTAGCGTGATTAAGTACTTTGTTAACTTTTATTTCAAGAGAAAAATTTTC
-AGTTTATATAAGAAAACCAGGAGACACATATTTGAAAACTCTTAGAATGC
-TATTAATTGAAATCGTTAGAGAATTTTCTCGTCCACTTGCTTTAACAGTG
-CGTTTAACAGTTAATATTACTGTTGGTCATTTAGTTAGAATAATGCTTTA
-TCAAGGATTAGAATTAAGAATAGGTGATCAGTATATTTGATTATCAATTT
-TAGCCATTATAATAGAATGTTTTGTTTTCTTCATTCAAAGTTATATTTTC
-TCTCGTTTAATTTTTTTATATCTTAATGAGTAATAAAAAAAAAAAGATGT
-TAACTTAAGTTTTAAAGTGCCAAACTTTTAATTTGGAAATGGTGGACCAC
-ATCTTAGTTGATATAGCATAAGAAGTGCATTTGTTTTAAGCGCAAAAGAT
-ATCCGTCAACTAACGAGTTCATAAAGCAAGTCTTCTAAATTTGTTCTAGG
-TTAAATCCTGCTCGTTTTTGATTGTTTTTATTTCTTTATTTACCTTGTTT
-TTAACATTATTAAGAATTTTGACTAATAACGTTATTGTTTGATGAAGAAT
-TTTTTTATTGATAACTGTAGTTTTTATTCTATTAAATAAAAGCAGCAAGA
-GATATACCAGAATTTTTAATTATTTTGTTATTCAAGAGTCTTTAGGTTTA
-TTATTTCTTCTTTGTAGAGGAGGTCTATTACAATTTTTTATTATTTTATT
-GAAAATTGGTGTAGCACCGCTCCACTTTTGAATTTTTAATGTAACAAATA
-ACATTTTTAATTATGGGCTAATGTGGTTTTTAACATTTCAAAAATTACCA
-TTTTTAACTATTTTATTACAAATTTTTTGGTTAAGATCCGTGTATATTTT
-GTTATTTGGTTTATTGATTTGTTATGTTCAAATTTTTGTCATAAAAAGTT
-ATAAAAATTTGTTAATTATTTCATCCACAGAGTCTTTTAATTGGATTGTT
-TTGGGAGTATTTTTTTCAATGTTTAATACATTTTATTTATTTATTTATTA
-CTTTGTATTAATAGTTTTATTAATTTCTAAGTTTTCTAAAACTAGGGGTT
-ATAATTTTATTAATTGAGAAACAACATTAGTATTTTTAAATATTCCATTT
-AGAGTTTCATTTTTTGTAAAAATTTTCTCATTGAGGGAAATTTTTAAATA
-TGATAGATTCTTTACTCTATTTTTGCTTTTTACAATATTTTTATCTGTAT
-TGGCATTTAGATTTTGATTAATTAACTTGAGAATGAAAAATAATGAAGAA
-ACTTCAAATAATAATAAAATAAATTATTTTATTATTTTTCCGTTAATAGT
-TATTTCTATTATTTAATTACTTTTCTAGTAAAATATATTATATTATCTTG
-ATAAGGTAAAGTTCCAGTTGGGAGAAGTAAGATGTAAAATAGATATTACT
-ATGTTTGGTTACGGTCCAAAAAGATGCACATCTTTGCGATCTAGTTTAGA
-AAAAATATTTGTTTTTGGTGCAAAAGAGTTTGATTGCATTTAGTTTACTC
-TTTTAGTTTATAATTAAAATATGGCCCTGAAGAGGCTAAGAATATTAGGA
-GTATTGAAAATTAATAATAGATTATTAAATTTTGTTAATGGGATGTTGGT
-GACATTGCCATCTAGAAAAACTTTAACATTAAGATGAAATTTTGGTAGTA
-TATTGGGTATAGTTTTAATCTTTCAGATTTTAACAGGTACATTTTTAGCA
-TTTTATTATACGCCCGATAGGTTAATAGCATTTTCAACAGTGCAGTATAT
-TATGTATGAGGTAAATTTTGGATGAGTATTTCGAATTTTTCATTTTAATG
-GGGCCAGGTTATTTTTTATTTTTTTGTATTTACATATTTTTAAAGGGTTA
-TTTTTTATAAGATATCGTTTAAAAAAAGTATGAATGTCTGGTTTAACAAT
-TTATTTATTAGTAATAATAGAAGCTTTTATAGGTTATGTTTTAGTTTGAG
-CTCAAATAAGATTTTGAGCAGCAGTAGTTATTACTAGACTTTTAAGAGTT
-ATTCCAATTTGAGGGCCAACTATTGTTACTTGAATTTGAAGAGGTTTTGG
diff --git a/htslib/test/ce.fa.fai b/htslib/test/ce.fa.fai
deleted file mode 100644
index 2ad2e7f..0000000
--- a/htslib/test/ce.fa.fai
+++ /dev/null
@@ -1,7 +0,0 @@
-CHROMOSOME_I 1009800 14 50 51
-CHROMOSOME_II 5000 1030025 50 51
-CHROMOSOME_III 5000 1035141 50 51
-CHROMOSOME_IV 5000 1040256 50 51
-CHROMOSOME_V 5000 1045370 50 51
-CHROMOSOME_X 5000 1050484 50 51
-CHROMOSOME_MtDNA 5000 1055602 50 51
diff --git a/htslib/test/compare_sam.pl b/htslib/test/compare_sam.pl
deleted file mode 100755
index f98ca41..0000000
--- a/htslib/test/compare_sam.pl
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2013 Genome Research Ltd.
-#
-# Author: James Bonfield <jkb at sanger.ac.uk>
-#
-# 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.
-
-# Compares two SAM files to report differences.
-# Optionally can skip header or ignore specific types of diff.
-
-use strict;
-use Getopt::Long;
-
-my %opts;
-GetOptions(\%opts, 'noqual', 'noaux', 'notemplate', 'unknownrg', 'nomd', 'template-1', 'noflag');
-
-my ($fn1, $fn2) = @ARGV;
-open(my $fd1, "<", $fn1) || die $!;
-open(my $fd2, "<", $fn2) || die $!;
-
-# Headers
-my ($c1,$c2)=(1,1);
-my (@hd1, @hd2, $ln1, $ln2);
-while (<$fd1>) {
- if (/^@/) {
- push(@hd1, $_);
- } else {
- $ln1 = $_;
- last;
- }
- $c1++;
-}
-
-while (<$fd2>) {
- if (/^@/) {
- push(@hd2, $_);
- } else {
- $ln2 = $_;
- last;
- }
- $c2++;
-}
-
-# FIXME: to do
-#print "@hd1\n";
-#print "@hd2\n";
-
-# Compare lines
-while ($ln1 && $ln2) {
- chomp($ln1);
- chomp($ln2);
-
- # Java CRAM adds RG:Z:UNKNOWN when the read-group is absent
- if (exists $opts{unknownrg}) {
- $ln1 =~ s/\tRG:Z:UNKNOWN//;
- $ln2 =~ s/\tRG:Z:UNKNOWN//;
- }
-
- if (exists $opts{nomd}) {
- $ln1 =~ s/\tMD:Z:[A-Z0-9^]*//;
- $ln2 =~ s/\tMD:Z:[A-Z0-9^]*//;
- $ln1 =~ s/\tNM:i:\d+//;
- $ln2 =~ s/\tNM:i:\d+//;
- }
-
- my @ln1 = split("\t", $ln1);
- my @ln2 = split("\t", $ln2);
-
- # Fix BWA bug: unmapped data should have no alignments
- if ($ln1[1] & 4) { $ln1[4] = 0; $ln1[5] = "*"; }
- if ($ln2[1] & 4) { $ln2[4] = 0; $ln2[5] = "*"; }
-
- # Rationalise order of auxiliary fields
- if (exists $opts{noaux}) {
- @ln1 = @ln1[0..10];
- @ln2 = @ln2[0..10];
- } else {
- #my @a=@ln1[11..$#ln1];print "<<<@a>>>\n";
- @ln1[11..$#ln1] = sort @ln1[11..$#ln1];
- @ln2[11..$#ln2] = sort @ln2[11..$#ln2];
- }
-
- if (exists $opts{noqual}) {
- $ln1[10] = "*";
- $ln2[10] = "*";
- }
-
- if (exists $opts{notemplate}) {
- @ln1[6..8] = qw/* 0 0/;
- @ln2[6..8] = qw/* 0 0/;
- }
-
- if (exists $opts{noflag}) {
- $ln1[1] = 0; $ln2[1] = 0;
- }
-
- if (exists $opts{'template-1'}) {
- if (abs($ln1[8] - $ln2[8]) == 1) {
- $ln1[8] = $ln2[8];
- }
- }
-
- # Cram doesn't uppercase the reference
- $ln1[9] = uc($ln1[9]);
- $ln2[9] = uc($ln2[9]);
-
- # Cram will populate a sequence string that starts as "*"
- $ln2[9] = "*" if ($ln1[9] eq "*");
-
- # Fix 0<op> cigar fields
- $ln1[5] =~ s/(\D|^)0\D/$1/g;
- $ln1[5] =~ s/^$/*/g;
- $ln2[5] =~ s/(\D|^)0\D/$1/g;
- $ln2[5] =~ s/^$/*/g;
-
- # Fix 10M10M cigar to 20M
- $ln1[5] =~ s/(\d+)(\D)(\d+)(\2)/$1+$3.$2/e;
- $ln2[5] =~ s/(\d+)(\D)(\d+)(\2)/$1+$3.$2/e;
-
- if ("@ln1" ne "@ln2") {
- print "Diff at lines $fn1:$c1, $fn2:$c2\n";
- my @s1 = split("","@ln1");
- my @s2 = split("","@ln2");
- my $ptr = "";
- for (my $i=0; $i < $#s1; $i++) {
- if ($s1[$i] eq $s2[$i]) {
- $ptr .= "-";
- } else {
- last;
- }
- }
- print "1\t at ln1\n2\t at ln2\n\t$ptr^\n\n";
- exit(1);
- }
-
- $ln1 = <$fd1>;
- $ln2 = <$fd2>;
-
- $c1++; $c2++;
-}
-
-if (defined($ln1)) {
- print "EOF on $fn1\n";
- exit(1);
-}
-
-if (defined($ln2)) {
- print "EOF on $fn2\n";
- exit(1);
-}
-
-close($fd1);
-close($fd2);
-
-exit(0);
diff --git a/htslib/test/fieldarith.c b/htslib/test/fieldarith.c
deleted file mode 100644
index 6d871b7..0000000
--- a/htslib/test/fieldarith.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* test/fieldarith.c -- CIGAR field arithmetic test suite.
-
- Copyright (C) 2013 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-
-#include "htslib/sam.h"
-
-int ntests = 0;
-int nfailures = 0;
-
-void check(const bam1_t *aln, const char *testname, const char *tag, int value)
-{
- int32_t refvalue;
- uint8_t *aux = bam_aux_get(aln, tag);
- if (!aux) return;
- ntests++;
- refvalue = bam_aux2i(aux);
- if (value != refvalue) {
- fprintf(stderr, "%s FAIL for %s: computed %d != %d expected\n",
- testname, bam_get_qname(aln), value, refvalue);
- nfailures++;
- }
-}
-
-int main(int argc, char **argv)
-{
- bam_hdr_t *header;
- bam1_t *aln = bam_init1();
- int i;
-
- for (i = 1; i < argc; i++) {
- samFile *in = sam_open(argv[i], "r");
- if (in == NULL) { perror(argv[1]); return 1; }
-
- header = sam_hdr_read(in);
- while (sam_read1(in, header, aln) >= 0) {
- check(aln, "cigar2qlen", "XQ",
- bam_cigar2qlen(aln->core.n_cigar, bam_get_cigar(aln)));
- check(aln, "cigar2rlen", "XR",
- bam_cigar2rlen(aln->core.n_cigar, bam_get_cigar(aln)));
- check(aln, "endpos", "XE", bam_endpos(aln));
- }
-
- bam_hdr_destroy(header);
- sam_close(in);
- }
-
- bam_destroy1(aln);
-
- return (nfailures > 0);
-}
diff --git a/htslib/test/fieldarith.sam b/htslib/test/fieldarith.sam
deleted file mode 100644
index 180d1e8..0000000
--- a/htslib/test/fieldarith.sam
+++ /dev/null
@@ -1,15 +0,0 @@
- at SQ SN:one LN:1000
- at SQ SN:two LN:500
- at CO For each SAM record that has each listed aux field, performs these tests:
- at CO XQ is the expected result for bam_cigar2qlen()
- at CO XR is the expected result for bam_cigar2rlen()
- at CO XE is the expected result for bam_endpos()
- at CO (Note that these are all zero-based, while POS is one-based in SAM)
-r1 0 one 50 20 8M * 0 0 ATGCATGC qqqqqqqq XQ:i:8 XR:i:8 XE:i:57
-r2 0 one 100 20 50M * 0 0 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCAT qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq XQ:i:50 XR:i:50 XE:i:149
-unmapped 5 two 200 0 * two 200 0 ATGCATGC qqqqqqqq XQ:i:0 XR:i:0 XE:i:200
-hascigar 5 two 200 0 6M2S two 200 0 ATGCATGC qqqqqqqq XQ:i:8 XR:i:6 XE:i:200
-s1 0 one 300 20 2M * 0 0 AT qq XQ:i:2 XR:i:2 XE:i:301
-su1 4 * 0 0 * * 0 0 AT qq XQ:i:0 XR:i:0 XE:i:0
-su2 5 two 400 0 * two 400 0 AT qq XQ:i:0 XR:i:0 XE:i:400
-su3 4 one 500 0 2M * 0 0 AT qq XQ:i:2 XR:i:2 XE:i:500
diff --git a/htslib/test/hfile.c b/htslib/test/hfile.c
deleted file mode 100644
index c4ba91c..0000000
--- a/htslib/test/hfile.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* test/hfile.c -- Test cases for low-level input/output streams.
-
- Copyright (C) 2013-2014 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#include <sys/stat.h>
-
-#include "htslib/hfile.h"
-#include "htslib/hts_defs.h"
-
-void HTS_NORETURN fail(const char *format, ...)
-{
- int err = errno;
- va_list args;
- va_start(args, format);
- vfprintf(stderr, format, args);
- va_end(args);
- if (err != 0) fprintf(stderr, ": %s", strerror(err));
- fprintf(stderr, "\n");
- exit(EXIT_FAILURE);
-}
-
-void check_offset(hFILE *f, off_t off, const char *message)
-{
- off_t ret = htell(f);
- if (ret < 0) fail("htell(%s)", message);
- if (ret == off) return;
-
- fprintf(stderr, "%s offset incorrect: expected %ld but got %ld\n",
- message, (long)off, (long)ret);
- exit(EXIT_FAILURE);
-}
-
-char *slurp(const char *filename)
-{
- char *text;
- struct stat sbuf;
- size_t filesize;
- FILE *f = fopen(filename, "r");
- if (f == NULL) fail("fopen(\"%s\", \"r\")", filename);
- if (fstat(fileno(f), &sbuf) != 0) fail("fstat(\"%s\")", filename);
- filesize = sbuf.st_size;
-
- text = (char *) malloc(filesize + 1);
- if (text == NULL) fail("malloc(text)");
-
- if (fread(text, 1, filesize, f) != filesize) fail("fread");
- fclose(f);
-
- text[filesize] = '\0';
- return text;
-}
-
-hFILE *fin = NULL;
-hFILE *fout = NULL;
-
-void reopen(const char *infname, const char *outfname)
-{
- if (fin) { if (hclose(fin) != 0) fail("hclose(input)"); }
- if (fout) { if (hclose(fout) != 0) fail("hclose(output)"); }
-
- fin = hopen(infname, "r");
- if (fin == NULL) fail("hopen(\"%s\")", infname);
-
- fout = hopen(outfname, "w");
- if (fout == NULL) fail("hopen(\"%s\")", outfname);
-}
-
-int main(void)
-{
- static const int size[] = { 1, 13, 403, 999, 30000 };
-
- char buffer[40000];
- char *original;
- int c, i;
- ssize_t n;
- off_t off;
-
- reopen("vcf.c", "test/hfile1.tmp");
- while ((c = hgetc(fin)) != EOF) {
- if (hputc(c, fout) == EOF) fail("hputc");
- }
- if (herrno(fin)) { errno = herrno(fin); fail("hgetc"); }
-
- reopen("test/hfile1.tmp", "test/hfile2.tmp");
- if (hpeek(fin, buffer, 50) < 0) fail("hpeek");
- while ((n = hread(fin, buffer, 17)) > 0) {
- if (hwrite(fout, buffer, n) != n) fail("hwrite");
- }
- if (n < 0) fail("hread");
-
- reopen("test/hfile2.tmp", "test/hfile3.tmp");
- while ((n = hread(fin, buffer, sizeof buffer)) > 0) {
- if (hwrite(fout, buffer, n) != n) fail("hwrite");
- if (hpeek(fin, buffer, 700) < 0) fail("hpeek");
- }
- if (n < 0) fail("hread");
-
- reopen("test/hfile3.tmp", "test/hfile4.tmp");
- i = 0;
- off = 0;
- while ((n = hread(fin, buffer, size[i++ % 5])) > 0) {
- off += n;
- buffer[n] = '\0';
- check_offset(fin, off, "pre-peek");
- if (hputs(buffer, fout) == EOF) fail("hputs");
- if ((n = hpeek(fin, buffer, size[(i+3) % 5])) < 0) fail("hpeek");
- check_offset(fin, off, "post-peek");
- }
- if (n < 0) fail("hread");
-
- reopen("test/hfile4.tmp", "test/hfile5.tmp");
- n = hread(fin, buffer, 200);
- if (n < 0) fail("hread");
- else if (n != 200) fail("hread only got %d", (int)n);
- if (hwrite(fout, buffer, 1000) != 1000) fail("hwrite");
- check_offset(fin, 200, "input/first200");
- check_offset(fout, 1000, "output/first200");
-
- if (hseek(fin, 800, SEEK_CUR) < 0) fail("hseek/cur");
- check_offset(fin, 1000, "input/seek");
- for (off = 1000; (n = hread(fin, buffer, sizeof buffer)) > 0; off += n)
- if (hwrite(fout, buffer, n) != n) fail("hwrite");
- if (n < 0) fail("hread");
- check_offset(fin, off, "input/eof");
- check_offset(fout, off, "output/eof");
-
- if (hseek(fin, 200, SEEK_SET) < 0) fail("hseek/set");
- if (hseek(fout, 200, SEEK_SET) < 0) fail("hseek(output)");
- check_offset(fin, 200, "input/backto200");
- check_offset(fout, 200, "output/backto200");
- n = hread(fin, buffer, 800);
- if (n < 0) fail("hread");
- else if (n != 800) fail("hread only got %d", (int)n);
- if (hwrite(fout, buffer, 800) != 800) fail("hwrite");
- check_offset(fin, 1000, "input/wrote800");
- check_offset(fout, 1000, "output/wrote800");
-
- if (hflush(fout) == EOF) fail("hflush");
-
- original = slurp("vcf.c");
- for (i = 1; i <= 5; i++) {
- char *text;
- sprintf(buffer, "test/hfile%d.tmp", i);
- text = slurp(buffer);
- if (strcmp(original, text) != 0) {
- fprintf(stderr, "%s differs from vcf.c\n", buffer);
- return EXIT_FAILURE;
- }
- free(text);
- }
- free(original);
-
- if (hclose(fin) != 0) fail("hclose(input)");
- if (hclose(fout) != 0) fail("hclose(output)");
-
- fout = hopen("test/hfile_chars.tmp", "w");
- if (fout == NULL) fail("hopen(\"test/hfile_chars.tmp\")");
- for (i = 0; i < 256; i++)
- if (hputc(i, fout) != i) fail("chars: hputc (%d)", i);
- if (hclose(fout) != 0) fail("hclose(test/hfile_chars.tmp)");
-
- fin = hopen("test/hfile_chars.tmp", "r");
- if (fin == NULL) fail("hopen(\"test/hfile_chars.tmp\") for reading");
- for (i = 0; i < 256; i++)
- if ((c = hgetc(fin)) != i)
- fail("chars: hgetc (%d = 0x%x) returned %d = 0x%x", i, i, c, c);
- if ((c = hgetc(fin)) != EOF) fail("chars: hgetc (EOF) returned %d", c);
- if (hclose(fin) != 0) fail("hclose(test/hfile_chars.tmp) for reading");
-
- fin = hopen("data:hello, world!\n", "r");
- if (fin == NULL) fail("hopen(\"data:...\")");
- n = hread(fin, buffer, 300);
- if (n < 0) fail("hread");
- buffer[n] = '\0';
- if (strcmp(buffer, "hello, world!\n") != 0) fail("hread result");
- if (hclose(fin) != 0) fail("hclose(\"data:...\")");
-
- return EXIT_SUCCESS;
-}
diff --git a/htslib/test/sam.c b/htslib/test/sam.c
deleted file mode 100644
index 5539840..0000000
--- a/htslib/test/sam.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* test/sam.c -- SAM/BAM/CRAM API test cases.
-
- Copyright (C) 2014-2015 Genome Research Ltd.
-
- Author: John Marshall <jm18 at sanger.ac.uk>
-
-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. */
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "htslib/sam.h"
-#include "htslib/faidx.h"
-#include "htslib/kstring.h"
-
-int status;
-
-static void fail(const char *fmt, ...)
-{
- va_list args;
-
- fprintf(stderr, "Failed: ");
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
- fprintf(stderr, "\n");
-
- status = EXIT_FAILURE;
-}
-
-uint8_t *check_bam_aux_get(const bam1_t *aln, const char *tag, char type)
-{
- uint8_t *p = bam_aux_get(aln, tag);
- if (p) {
- if (*p == type) return p;
- else fail("%s field of type '%c', expected '%c'\n", tag, *p, type);
- }
- else fail("can't find %s field\n", tag);
-
- return NULL;
-}
-
-#define PI 3.141592653589793
-#define E 2.718281828459045
-#define HELLO "Hello, world!"
-#define BEEF "DEADBEEF"
-
-#define str(x) #x
-#define xstr(x) str(x)
-
-static int aux_fields1(void)
-{
- static const char sam[] = "data:"
-"@SQ\tSN:one\tLN:1000\n"
-"@SQ\tSN:two\tLN:500\n"
-"r1\t0\tone\t500\t20\t8M\t*\t0\t0\tATGCATGC\tqqqqqqqq\tXA:A:k\tXi:i:37\tXf:f:" xstr(PI) "\tXd:d:" xstr(E) "\tXZ:Z:" HELLO "\tXH:H:" BEEF "\tXB:B:c,-2,0,+2\tZZ:i:1000000\tY1:i:-2147483648\tY2:i:-2147483647\tY3:i:-1\tY4:i:0\tY5:i:1\tY6:i:2147483647\tY7:i:2147483648\tY8:i:4294967295\n";
-
- // Canonical form of the alignment record above, as output by sam_format1()
- static const char r1[] = "r1\t0\tone\t500\t20\t8M\t*\t0\t0\tATGCATGC\tqqqqqqqq\tXA:A:k\tXi:i:37\tXf:f:3.14159\tXd:d:2.71828\tXZ:Z:" HELLO "\tXH:H:" BEEF "\tXB:B:c,-2,0,2\tZZ:i:1000000\tY1:i:-2147483648\tY2:i:-2147483647\tY3:i:-1\tY4:i:0\tY5:i:1\tY6:i:2147483647\tY7:i:2147483648\tY8:i:4294967295";
-
- samFile *in = sam_open(sam, "r");
- bam_hdr_t *header = sam_hdr_read(in);
- bam1_t *aln = bam_init1();
- uint8_t *p;
- uint32_t n;
- kstring_t ks = { 0, 0, NULL };
-
- if (sam_read1(in, header, aln) >= 0) {
- if ((p = check_bam_aux_get(aln, "XA", 'A')) && bam_aux2A(p) != 'k')
- fail("XA field is '%c', expected 'k'", bam_aux2A(p));
-
- if ((p = check_bam_aux_get(aln, "Xi", 'C')) && bam_aux2i(p) != 37)
- fail("Xi field is %d, expected 37", bam_aux2i(p));
-
- if ((p = check_bam_aux_get(aln, "Xf", 'f')) && fabs(bam_aux2f(p) - PI) > 1E-6)
- fail("Xf field is %.12f, expected pi", bam_aux2f(p));
-
- if ((p = check_bam_aux_get(aln, "Xd", 'd')) && fabs(bam_aux2f(p) - E) > 1E-6)
- fail("Xf field is %.12f, expected e", bam_aux2f(p));
-
- if ((p = check_bam_aux_get(aln, "XZ", 'Z')) && strcmp(bam_aux2Z(p), HELLO) != 0)
- fail("XZ field is \"%s\", expected \"%s\"", bam_aux2Z(p), HELLO);
-
- if ((p = check_bam_aux_get(aln, "XH", 'H')) && strcmp(bam_aux2Z(p), BEEF) != 0)
- fail("XH field is \"%s\", expected \"%s\"", bam_aux2Z(p), BEEF);
-
- // TODO Invent and use bam_aux2B()
- if ((p = check_bam_aux_get(aln, "XB", 'B')) && ! (memcmp(p, "Bc", 2) == 0 && (memcpy(&n, p+2, 4), n) == 3 && memcmp(p+6, "\xfe\x00\x02", 3) == 0))
- fail("XB field is %c,..., expected c,-2,0,+2", p[1]);
-
- if ((p = check_bam_aux_get(aln, "ZZ", 'I')) && bam_aux2i(p) != 1000000)
- fail("ZZ field is %d, expected 1000000", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y1")) && bam_aux2i(p) != -2147483647-1)
- fail("Y1 field is %d, expected -2^31", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y2")) && bam_aux2i(p) != -2147483647)
- fail("Y2 field is %d, expected -2^31+1", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y3")) && bam_aux2i(p) != -1)
- fail("Y3 field is %d, expected -1", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y4")) && bam_aux2i(p) != 0)
- fail("Y4 field is %d, expected 0", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y5")) && bam_aux2i(p) != 1)
- fail("Y5 field is %d, expected 1", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y6")) && bam_aux2i(p) != 2147483647)
- fail("Y6 field is %d, expected 2^31-1", bam_aux2i(p));
-
- // TODO Checking these perhaps requires inventing bam_aux2u() or so
-#if 0
- if ((p = bam_aux_get(aln, "Y7")) && bam_aux2i(p) != 2147483648)
- fail("Y7 field is %d, expected 2^31", bam_aux2i(p));
-
- if ((p = bam_aux_get(aln, "Y8")) && bam_aux2i(p) != 4294967295)
- fail("Y8 field is %d, expected 2^32-1", bam_aux2i(p));
-#endif
-
- if (sam_format1(header, aln, &ks) < 0)
- fail("can't format record");
-
- if (strcmp(ks.s, r1) != 0)
- fail("record formatted incorrectly: \"%s\"", ks.s);
-
- free(ks.s);
- }
- else fail("can't read record");
-
- bam_destroy1(aln);
- bam_hdr_destroy(header);
- sam_close(in);
-
- return 1;
-}
-
-static void iterators1(void)
-{
- hts_itr_destroy(sam_itr_queryi(NULL, HTS_IDX_REST, 0, 0));
- hts_itr_destroy(sam_itr_queryi(NULL, HTS_IDX_NONE, 0, 0));
-}
-
-static void faidx1(const char *filename)
-{
- int n;
- faidx_t *fai = fai_load(filename);
- if (fai == NULL) fail("can't load faidx file");
-
- n = faidx_fetch_nseq(fai);
- if (n != 7) fail("faidx_fetch_nseq returned %d, expected 7", n);
-
- n = faidx_nseq(fai);
- if (n != 7) fail("faidx_nseq returned %d, expected 7", n);
-
- fai_destroy(fai);
-}
-
-int main(int argc, char **argv)
-{
- status = EXIT_SUCCESS;
-
- aux_fields1();
- iterators1();
- if (argc >= 2) faidx1(argv[1]);
-
- return status;
-}
diff --git a/htslib/test/test-regidx.c b/htslib/test/test-regidx.c
deleted file mode 100644
index 0aea6b8..0000000
--- a/htslib/test/test-regidx.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* test/test-regidx.c -- Regions index test harness.
-
- Copyright (C) 2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
- 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.
-*/
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <htslib/regidx.h>
-
-void error(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- vfprintf(stderr, format, ap);
- va_end(ap);
- exit(-1);
-}
-
-int custom_parse(const char *line, char **chr_beg, char **chr_end, reg_t *reg, void *payload, void *usr)
-{
- // Use the standard parser for CHROM,FROM,TO
- int i, ret = regidx_parse_tab(line,chr_beg,chr_end,reg,NULL,NULL);
- if ( ret!=0 ) return ret;
-
- // Skip the fields that were parsed above
- char *ss = (char*) line;
- while ( *ss && isspace(*ss) ) ss++;
- for (i=0; i<3; i++)
- {
- while ( *ss && !isspace(*ss) ) ss++;
- if ( !*ss ) return -2; // wrong number of fields
- while ( *ss && isspace(*ss) ) ss++;
- }
- if ( !*ss ) return -2;
-
- // Parse the payload
- char *se = ss;
- while ( *se && !isspace(*se) ) se++;
- char **dat = (char**) payload;
- *dat = (char*) malloc(se-ss+1);
- memcpy(*dat,ss,se-ss+1);
- (*dat)[se-ss] = 0;
- return 0;
-}
-void custom_free(void *payload)
-{
- char **dat = (char**)payload;
- free(*dat);
-}
-
-int main(int argc, char **argv)
-{
- // Init index with no file name, we will insert the regions manually
- regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL);
- if ( !idx ) error("init failed\n");
-
- // Insert regions
- char *line;
- line = "1 10000000 10000000 1:10000000-10000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line);
- line = "1 20000000 20000001 1:20000000-20000001"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line);
- line = "1 20000002 20000002 1:20000002-20000002"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line);
- line = "1 30000000 30000000 1:30000000-30000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line);
-
- // Finish initialization
- regidx_insert(idx,NULL);
-
- // Test
- regitr_t itr;
- int from, to;
-
- from = to = 10000000;
- if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to);
- if ( strcmp("1:10000000-10000000",REGITR_PAYLOAD(itr,char*)) ) error("query failed: 1:%d-%d vs %s\n", from,to,REGITR_PAYLOAD(itr,char*));
- if ( !regidx_overlap(idx,"1",from-2,to-1,&itr) ) error("query failed: 1:%d-%d\n",from-1,to);
- if ( !regidx_overlap(idx,"1",from-2,to+3,&itr) ) error("query failed: 1:%d-%d\n",from-1,to+2);
- if ( regidx_overlap(idx,"1",from-2,to-2,&itr) ) error("query failed: 1:%d-%d\n",from-1,to-1);
-
- from = to = 20000000;
- if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to);
-
- from = to = 20000002;
- if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to);
-
- from = to = 30000000;
- if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to);
-
- // Clean up
- regidx_destroy(idx);
-
- return 0;
-}
-
-
diff --git a/htslib/test/test-vcf-api.c b/htslib/test/test-vcf-api.c
deleted file mode 100644
index 3e7623a..0000000
--- a/htslib/test/test-vcf-api.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/* test/test-vcf-api.c -- VCF test harness.
-
- Copyright (C) 2013, 2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <htslib/hts.h>
-#include <htslib/vcf.h>
-#include <htslib/kstring.h>
-#include <htslib/kseq.h>
-
-void write_bcf(char *fname)
-{
- // Init
- htsFile *fp = hts_open(fname,"wb");
- bcf_hdr_t *hdr = bcf_hdr_init("w");
- bcf1_t *rec = bcf_init1();
-
- // Create VCF header
- kstring_t str = {0,0,0};
- bcf_hdr_append(hdr, "##fileDate=20090805");
- bcf_hdr_append(hdr, "##FORMAT=<ID=UF,Number=1,Type=Integer,Description=\"Unused FORMAT\">");
- bcf_hdr_append(hdr, "##INFO=<ID=UI,Number=1,Type=Integer,Description=\"Unused INFO\">");
- bcf_hdr_append(hdr, "##FILTER=<ID=Flt,Description=\"Unused FILTER\">");
- bcf_hdr_append(hdr, "##unused=<XX=AA,Description=\"Unused generic\">");
- bcf_hdr_append(hdr, "##unused=unformatted text 1");
- bcf_hdr_append(hdr, "##unused=unformatted text 2");
- bcf_hdr_append(hdr, "##contig=<ID=Unused,length=62435964>");
- bcf_hdr_append(hdr, "##source=myImputationProgramV3.1");
- bcf_hdr_append(hdr, "##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta");
- bcf_hdr_append(hdr, "##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species=\"Homo sapiens\",taxonomy=x>");
- bcf_hdr_append(hdr, "##phasing=partial");
- bcf_hdr_append(hdr, "##INFO=<ID=NS,Number=1,Type=Integer,Description=\"Number of Samples With Data\">");
- bcf_hdr_append(hdr, "##INFO=<ID=DP,Number=1,Type=Integer,Description=\"Total Depth\">");
- bcf_hdr_append(hdr, "##INFO=<ID=AF,Number=A,Type=Float,Description=\"Allele Frequency\">");
- bcf_hdr_append(hdr, "##INFO=<ID=AA,Number=1,Type=String,Description=\"Ancestral Allele\">");
- bcf_hdr_append(hdr, "##INFO=<ID=DB,Number=0,Type=Flag,Description=\"dbSNP membership, build 129\">");
- bcf_hdr_append(hdr, "##INFO=<ID=H2,Number=0,Type=Flag,Description=\"HapMap2 membership\">");
- bcf_hdr_append(hdr, "##FILTER=<ID=q10,Description=\"Quality below 10\">");
- bcf_hdr_append(hdr, "##FILTER=<ID=s50,Description=\"Less than 50% of samples have data\">");
- bcf_hdr_append(hdr, "##FORMAT=<ID=GT,Number=1,Type=String,Description=\"Genotype\">");
- bcf_hdr_append(hdr, "##FORMAT=<ID=GQ,Number=1,Type=Integer,Description=\"Genotype Quality\">");
- bcf_hdr_append(hdr, "##FORMAT=<ID=DP,Number=1,Type=Integer,Description=\"Read Depth\">");
- bcf_hdr_append(hdr, "##FORMAT=<ID=HQ,Number=2,Type=Integer,Description=\"Haplotype Quality\">");
- bcf_hdr_append(hdr, "##FORMAT=<ID=TS,Number=1,Type=String,Description=\"Test String\">");
-
- bcf_hdr_add_sample(hdr, "NA00001");
- bcf_hdr_add_sample(hdr, "NA00002");
- bcf_hdr_add_sample(hdr, "NA00003");
- bcf_hdr_add_sample(hdr, NULL); // to update internal structures
- bcf_hdr_write(fp, hdr);
-
-
- // Add a record
- // 20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
- // .. CHROM
- rec->rid = bcf_hdr_name2id(hdr, "20");
- // .. POS
- rec->pos = 14369;
- // .. ID
- bcf_update_id(hdr, rec, "rs6054257");
- // .. REF and ALT
- bcf_update_alleles_str(hdr, rec, "G,A");
- // .. QUAL
- rec->qual = 29;
- // .. FILTER
- int32_t tmpi = bcf_hdr_id2int(hdr, BCF_DT_ID, "PASS");
- bcf_update_filter(hdr, rec, &tmpi, 1);
- // .. INFO
- tmpi = 3;
- bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1);
- tmpi = 14;
- bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1);
- float tmpf = 0.5;
- bcf_update_info_float(hdr, rec, "AF", &tmpf, 1);
- bcf_update_info_flag(hdr, rec, "DB", NULL, 1);
- bcf_update_info_flag(hdr, rec, "H2", NULL, 1);
- // .. FORMAT
- int32_t *tmpia = (int*)malloc(bcf_hdr_nsamples(hdr)*2*sizeof(int));
- tmpia[0] = bcf_gt_phased(0);
- tmpia[1] = bcf_gt_phased(0);
- tmpia[2] = bcf_gt_phased(1);
- tmpia[3] = bcf_gt_phased(0);
- tmpia[4] = bcf_gt_unphased(1);
- tmpia[5] = bcf_gt_unphased(1);
- bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2);
- tmpia[0] = 48;
- tmpia[1] = 48;
- tmpia[2] = 43;
- bcf_update_format_int32(hdr, rec, "GQ", tmpia, bcf_hdr_nsamples(hdr));
- tmpia[0] = 1;
- tmpia[1] = 8;
- tmpia[2] = 5;
- bcf_update_format_int32(hdr, rec, "DP", tmpia, bcf_hdr_nsamples(hdr));
- tmpia[0] = 51;
- tmpia[1] = 51;
- tmpia[2] = 51;
- tmpia[3] = 51;
- tmpia[4] = bcf_int32_missing;
- tmpia[5] = bcf_int32_missing;
- bcf_update_format_int32(hdr, rec, "HQ", tmpia, bcf_hdr_nsamples(hdr)*2);
- char *tmp_str[] = {"String1","SomeOtherString2","YetAnotherString3"};
- bcf_update_format_string(hdr, rec, "TS", (const char**)tmp_str, 3);
- bcf_write1(fp, hdr, rec);
-
- // 20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./.
- bcf_clear1(rec);
- rec->rid = bcf_hdr_name2id(hdr, "20");
- rec->pos = 1110695;
- bcf_update_alleles_str(hdr, rec, "A,G,T");
- rec->qual = 67;
- tmpi = 2;
- bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1);
- tmpi = 10;
- bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1);
- float *tmpfa = (float*)malloc(2*sizeof(float));
- tmpfa[0] = 0.333;
- bcf_float_set_missing(tmpfa[1]);
- bcf_update_info_float(hdr, rec, "AF", tmpfa, 2);
- bcf_update_info_string(hdr, rec, "AA", "T");
- bcf_update_info_flag(hdr, rec, "DB", NULL, 1);
- tmpia[0] = bcf_gt_phased(2);
- tmpia[1] = bcf_int32_vector_end;
- tmpia[2] = bcf_gt_phased(1);
- tmpia[3] = bcf_int32_vector_end;
- tmpia[4] = bcf_gt_missing;
- tmpia[5] = bcf_gt_missing;
- bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2);
- bcf_write1(fp, hdr, rec);
-
- free(tmpia);
- free(tmpfa);
-
- // Clean
- free(str.s);
- bcf_destroy1(rec);
- bcf_hdr_destroy(hdr);
- int ret;
- if ( (ret=hts_close(fp)) )
- {
- fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret);
- exit(ret);
- }
-}
-
-void bcf_to_vcf(char *fname)
-{
- htsFile *fp = hts_open(fname,"rb");
- bcf_hdr_t *hdr = bcf_hdr_read(fp);
- bcf1_t *rec = bcf_init1();
-
- char *gz_fname = (char*) malloc(strlen(fname)+4);
- snprintf(gz_fname,strlen(fname)+4,"%s.gz",fname);
- htsFile *out = hts_open(gz_fname,"wg");
-
- bcf_hdr_t *hdr_out = bcf_hdr_dup(hdr);
- bcf_hdr_remove(hdr_out,BCF_HL_STR,"unused");
- bcf_hdr_remove(hdr_out,BCF_HL_GEN,"unused");
- bcf_hdr_remove(hdr_out,BCF_HL_FLT,"Flt");
- bcf_hdr_remove(hdr_out,BCF_HL_INFO,"UI");
- bcf_hdr_remove(hdr_out,BCF_HL_FMT,"UF");
- bcf_hdr_remove(hdr_out,BCF_HL_CTG,"Unused");
- bcf_hdr_write(out, hdr_out);
-
- while ( bcf_read1(fp, hdr, rec)>=0 )
- {
- bcf_write1(out, hdr_out, rec);
-
- // Test problems caused by bcf1_sync: the data block
- // may be realloced, also the unpacked structures must
- // get updated.
- bcf_unpack(rec, BCF_UN_STR);
- bcf_update_id(hdr, rec, 0);
- bcf_update_format_int32(hdr, rec, "GQ", NULL, 0);
-
- bcf1_t *dup = bcf_dup(rec); // force bcf1_sync call
- bcf_write1(out, hdr_out, dup);
- bcf_destroy1(dup);
-
- bcf_update_alleles_str(hdr_out, rec, "G,A");
- int32_t tmpi = 99;
- bcf_update_info_int32(hdr_out, rec, "DP", &tmpi, 1);
- int32_t tmpia[] = {9,9,9};
- bcf_update_format_int32(hdr_out, rec, "DP", tmpia, 3);
-
- bcf_write1(out, hdr_out, rec);
- }
-
- bcf_destroy1(rec);
- bcf_hdr_destroy(hdr);
- bcf_hdr_destroy(hdr_out);
- int ret;
- if ( (ret=hts_close(fp)) )
- {
- fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret);
- exit(ret);
- }
- if ( (ret=hts_close(out)) )
- {
- fprintf(stderr,"hts_close(%s): non-zero status %d\n",gz_fname,ret);
- exit(ret);
- }
-
-
- // read gzip, write stdout
- htsFile *gz_in = hts_open(gz_fname, "r");
- if ( !gz_in )
- {
- fprintf(stderr,"Could not read: %s\n", gz_fname);
- exit(1);
- }
-
- kstring_t line = {0,0,0};
- while ( hts_getline(gz_in, KS_SEP_LINE, &line)>0 )
- {
- kputc('\n',&line);
- fwrite(line.s,1,line.l,stdout);
- }
-
- if ( (ret=hts_close(gz_in)) )
- {
- fprintf(stderr,"hts_close(%s): non-zero status %d\n",gz_fname,ret);
- exit(ret);
- }
- free(line.s);
- free(gz_fname);
-}
-
-void iterator(const char *fname)
-{
- htsFile *fp = hts_open(fname, "r");
- bcf_hdr_t *hdr = bcf_hdr_read(fp);
- hts_idx_t *idx;
- hts_itr_t *iter;
-
- bcf_index_build(fname, 0);
- idx = bcf_index_load(fname);
-
- iter = bcf_itr_queryi(idx, bcf_hdr_name2id(hdr, "20"), 1110600, 1110800);
- bcf_itr_destroy(iter);
-
- iter = bcf_itr_querys(idx, hdr, "20:1110600-1110800");
- bcf_itr_destroy(iter);
-
- hts_idx_destroy(idx);
- bcf_hdr_destroy(hdr);
- int ret;
- if ( (ret=hts_close(fp)) )
- {
- fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret);
- exit(ret);
- }
-}
-
-int main(int argc, char **argv)
-{
- char *fname = argc>1 ? argv[1] : "rmme.bcf";
- write_bcf(fname);
- bcf_to_vcf(fname);
- iterator(fname);
- return 0;
-}
-
diff --git a/htslib/test/test-vcf-api.out b/htslib/test/test-vcf-api.out
deleted file mode 100644
index d3bb73e..0000000
--- a/htslib/test/test-vcf-api.out
+++ /dev/null
@@ -1,28 +0,0 @@
-##fileformat=VCFv4.2
-##FILTER=<ID=PASS,Description="All filters passed">
-##fileDate=20090805
-##unused=<XX=AA,Description="Unused generic">
-##source=myImputationProgramV3.1
-##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
-##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
-##phasing=partial
-##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
-##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
-##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
-##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
-##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
-##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
-##FILTER=<ID=q10,Description="Quality below 10">
-##FILTER=<ID=s50,Description="Less than 50% of samples have data">
-##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
-##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
-##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
-##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
-##FORMAT=<ID=TS,Number=1,Type=String,Description="Test String">
-#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003
-20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ:TS 0|0:48:1:51,51:String1 1|0:48:8:51,51:SomeOtherString2 1/1:43:5:.,.:YetAnotherString3
-20 14370 . G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:DP:HQ:TS 0|0:1:51,51:String1 1|0:8:51,51:SomeOtherString2 1/1:5:.,.:YetAnotherString3
-20 14370 . G A 29 PASS NS=3;DP=99;AF=0.5;DB;H2 GT:DP:HQ:TS 0|0:9:51,51:String1 1|0:9:51,51:SomeOtherString2 1/1:9:.,.:YetAnotherString3
-20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./.
-20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./.
-20 1110696 . G A 67 . NS=2;DP=99;AF=0.333,.;AA=T;DB GT:DP 2:9 1:9 ./.:9
diff --git a/htslib/test/test-vcf-sweep.c b/htslib/test/test-vcf-sweep.c
deleted file mode 100644
index 57c47bc..0000000
--- a/htslib/test/test-vcf-sweep.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* test/test-vcf-sweep.c -- VCF test harness.
-
- Copyright (C) 2013 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <htslib/vcf_sweep.h>
-
-int main(int argc, char **argv)
-{
- if ( argc!=2 )
- {
- fprintf(stderr,"Usage: test-vcf-sweep <file.bcf|file.vcf>\n");
- return 1;
- }
-
- // Init variables. The checksum is just for this test program to output
- // something and verify that all sites are read in both passes - fwd and
- // bwd.
- bcf_sweep_t *sw = bcf_sweep_init(argv[1]);
- bcf_hdr_t *hdr = bcf_sweep_hdr(sw);
- int chksum = 0;
-
- // First we must sweep forward and read the whole file to build an index.
- // If this is undesirable, we can require the presence of a .gzi index
- // which can be created with `bgzip -r` from the samtools/htslib package
- bcf1_t *rec;
- while ( (rec = bcf_sweep_fwd(sw)) ) chksum += rec->pos+1;
- printf("fwd position chksum: %d\n", chksum);
-
- // Now sweep backward.
- chksum = 0;
- while ( (rec = bcf_sweep_bwd(sw)) ) chksum += rec->pos+1;
- printf("bwd position chksum: %d\n", chksum);
-
- // And forward and backward again, this time summing the PL vectors
- int i,j, mPLs = 0, nPLs;
- int32_t *PLs = NULL;
- chksum = 0;
- while ( (rec = bcf_sweep_fwd(sw)) )
- {
- // get copy of the PL vectors
- nPLs = bcf_get_format_int32(hdr, rec, "PL", &PLs, &mPLs);
- if ( !nPLs ) continue; // PL not present
-
- // how many values are there per sample
- int nvals = nPLs / bcf_hdr_nsamples(hdr);
-
- int32_t *ptr = PLs;
- for (i=0; i<bcf_hdr_nsamples(hdr); i++)
- {
- for (j=0; j<nvals; j++)
- {
- // check for shorter vectors (haploid genotypes amongst diploids)
- if ( ptr[j]==bcf_int32_vector_end ) break;
-
- // skip missing values
- if ( ptr[j]==bcf_int32_missing ) continue;
-
- chksum += ptr[j];
- }
- ptr += nvals;
- }
- }
- printf("fwd PL chksum: %d\n", chksum);
-
- // And the same backwards..
- chksum = 0;
- while ( (rec = bcf_sweep_bwd(sw)) )
- {
- nPLs = bcf_get_format_int32(hdr, rec, "PL", &PLs, &mPLs);
- if ( !nPLs ) continue;
- int nvals = nPLs / bcf_hdr_nsamples(hdr);
- int32_t *ptr = PLs;
- for (i=0; i<bcf_hdr_nsamples(hdr); i++)
- {
- for (j=0; j<nvals; j++)
- {
- if ( ptr[j]==bcf_int32_vector_end ) break;
- if ( ptr[j]==bcf_int32_missing ) continue;
- chksum += ptr[j];
- }
- ptr += nvals;
- }
- }
- printf("bwd PL chksum: %d\n", chksum);
-
- // Clean up
- bcf_sweep_destroy(sw);
- return 0;
-}
-
-
diff --git a/htslib/test/test-vcf-sweep.out b/htslib/test/test-vcf-sweep.out
deleted file mode 100644
index 3033f15..0000000
--- a/htslib/test/test-vcf-sweep.out
+++ /dev/null
@@ -1,4 +0,0 @@
-fwd position chksum: 1125066
-bwd position chksum: 1125066
-fwd PL chksum: 0
-bwd PL chksum: 0
diff --git a/htslib/test/test.pl b/htslib/test/test.pl
deleted file mode 100755
index 356409a..0000000
--- a/htslib/test/test.pl
+++ /dev/null
@@ -1,202 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright (C) 2012-2013 Genome Research Ltd.
-#
-# Author: Petr Danecek <pd3 at sanger.ac.uk>
-#
-# 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.
-
-use strict;
-use warnings;
-use Carp;
-use FindBin;
-use lib "$FindBin::Bin";
-use Getopt::Long;
-use File::Temp qw/ tempfile tempdir /;
-
-my $opts = parse_params();
-
-test_vcf_api($opts,out=>'test-vcf-api.out');
-test_vcf_sweep($opts,out=>'test-vcf-sweep.out');
-
-print "\nNumber of tests:\n";
-printf " total .. %d\n", $$opts{nok}+$$opts{nfailed};
-printf " passed .. %d\n", $$opts{nok};
-printf " failed .. %d\n", $$opts{nfailed};
-print "\n";
-
-exit ($$opts{nfailed} > 0);
-
-#--------------------
-
-sub error
-{
- my (@msg) = @_;
- if ( scalar @msg ) { confess @msg; }
- print
- "About: samtools/htslib consistency test script\n",
- "Usage: test.pl [OPTIONS]\n",
- "Options:\n",
- " -r, --redo-outputs Recreate expected output files.\n",
- " -t, --temp-dir <path> When given, temporary files will not be removed.\n",
- " -h, -?, --help This help message.\n",
- "\n";
- exit 1;
-}
-sub parse_params
-{
- my $opts = { keep_files=>0, nok=>0, nfailed=>0 };
- my $help;
- Getopt::Long::Configure('bundling');
- my $ret = GetOptions (
- 't|temp-dir:s' => \$$opts{keep_files},
- 'r|redo-outputs' => \$$opts{redo_outputs},
- 'h|?|help' => \$help
- );
- if ( !$ret or $help ) { error(); }
- $$opts{tmp} = $$opts{keep_files} ? $$opts{keep_files} : tempdir(CLEANUP=>1);
- if ( $$opts{keep_files} ) { cmd("mkdir -p $$opts{keep_files}"); }
- $$opts{path} = $FindBin::RealBin;
- $$opts{bin} = $FindBin::RealBin;
- $$opts{bin} =~ s{/test/?$}{};
- return $opts;
-}
-sub _cmd
-{
- my ($cmd) = @_;
- my $kid_io;
- my @out;
- my $pid = open($kid_io, "-|");
- if ( !defined $pid ) { error("Cannot fork: $!"); }
- if ($pid)
- {
- # parent
- @out = <$kid_io>;
- close($kid_io);
- }
- else
- {
- # child
- exec('/bin/bash', '-o','pipefail','-c', $cmd) or error("Cannot execute the command [/bin/sh -o pipefail -c $cmd]: $!");
- }
- return ($? >> 8, join('', at out));
-}
-sub cmd
-{
- my ($cmd) = @_;
- my ($ret,$out) = _cmd($cmd);
- if ( $ret ) { error("The command failed [$ret]: $cmd\n", $out); }
- return $out;
-}
-sub test_cmd
-{
- my ($opts,%args) = @_;
- if ( !exists($args{out}) )
- {
- if ( !exists($args{in}) ) { error("FIXME: expected out or in key\n"); }
- $args{out} = "$args{in}.out";
- }
- my ($package, $filename, $line, $test)=caller(1);
- $test =~ s/^.+:://;
-
- print "$test:\n";
- print "\t$args{cmd}\n";
-
- my ($ret,$out) = _cmd("$args{cmd} 2>&1");
- if ( $ret ) { failed($opts,$test); return; }
- if ( $$opts{redo_outputs} && -e "$$opts{path}/$args{out}" )
- {
- rename("$$opts{path}/$args{out}","$$opts{path}/$args{out}.old");
- open(my $fh,'>',"$$opts{path}/$args{out}") or error("$$opts{path}/$args{out}: $!");
- print $fh $out;
- close($fh);
- my ($ret,$out) = _cmd("diff -q $$opts{path}/$args{out} $$opts{path}/$args{out}.old");
- if ( !$ret && $out eq '' ) { unlink("$$opts{path}/$args{out}.old"); }
- else
- {
- print "\tthe expected output changed, saving:\n";
- print "\t old .. $$opts{path}/$args{out}.old\n";
- print "\t new .. $$opts{path}/$args{out}\n";
- }
- }
- my $exp = '';
- if ( open(my $fh,'<',"$$opts{path}/$args{out}") )
- {
- my @exp = <$fh>;
- $exp = join('', at exp);
- close($fh);
- }
- elsif ( !$$opts{redo_outputs} ) { failed($opts,$test,"$$opts{path}/$args{out}: $!"); return; }
-
- if ( $exp ne $out )
- {
- open(my $fh,'>',"$$opts{path}/$args{out}.new") or error("$$opts{path}/$args{out}.new");
- print $fh $out;
- close($fh);
- if ( !-e "$$opts{path}/$args{out}" )
- {
- rename("$$opts{path}/$args{out}.new","$$opts{path}/$args{out}") or error("rename $$opts{path}/$args{out}.new $$opts{path}/$args{out}: $!");
- print "\tthe file with expected output does not exist, creating new one:\n";
- print "\t\t$$opts{path}/$args{out}\n";
- }
- else
- {
- failed($opts,$test,"The outputs differ:\n\t\t$$opts{path}/$args{out}\n\t\t$$opts{path}/$args{out}.new");
- }
- return;
- }
- passed($opts,$test);
-}
-sub failed
-{
- my ($opts,$test,$reason) = @_;
- $$opts{nfailed}++;
- if ( defined $reason ) { print "\n\t$reason"; }
- print "\n.. failed ...\n\n";
-}
-sub passed
-{
- my ($opts,$test) = @_;
- $$opts{nok}++;
- print ".. ok\n\n";
-}
-sub is_file_newer
-{
- my ($afile,$bfile) = @_;
- my (@astat) = stat($afile) or return 0;
- my (@bstat) = stat($bfile) or return 0;
- if ( $astat[9]>$bstat[9] ) { return 1 }
- return 0;
-}
-
-
-# The tests --------------------------
-
-sub test_vcf_api
-{
- my ($opts,%args) = @_;
- test_cmd($opts,%args,cmd=>"$$opts{path}/test-vcf-api $$opts{tmp}/test-vcf-api.bcf");
-}
-
-sub test_vcf_sweep
-{
- my ($opts,%args) = @_;
- test_cmd($opts,%args,cmd=>"$$opts{path}/test-vcf-sweep $$opts{tmp}/test-vcf-api.bcf");
-}
-
diff --git a/htslib/test/test_view.c b/htslib/test/test_view.c
deleted file mode 100644
index 1f96cea..0000000
--- a/htslib/test/test_view.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/* test/test_view.c -- simple view tool, purely for use in a test harness.
-
- Copyright (C) 2012 Broad Institute.
- Copyright (C) 2013-2014 Genome Research Ltd.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "cram/cram.h"
-
-#include "htslib/sam.h"
-
-typedef struct hts_opt {
- enum cram_option opt;
- union {
- int i;
- char *s;
- } val;
- struct hts_opt *next;
-} hts_opt;
-
-/*
- * Parses arg and appends it to the option list.
- * Returns 0 on success;
- * -1 on failure.
- */
-int add_option(hts_opt **opts, char *arg) {
- hts_opt *o, *t;
- char *cp;
-
- if (!(cp = strchr(arg, '=')))
- cp = "1"; // assume boolean
- else
- *cp++ = 0;
-
- if (!(o = malloc(sizeof(*o))))
- return -1;
-
- if (strcmp(arg, "DECODE_MD") == 0)
- o->opt = CRAM_OPT_DECODE_MD, o->val.i = atoi(cp);
- else if (strcmp(arg, "VERBOSITY") == 0)
- o->opt = CRAM_OPT_VERBOSITY, o->val.i = atoi(cp);
- else if (strcmp(arg, "SEQS_PER_SLICE") == 0)
- o->opt = CRAM_OPT_SEQS_PER_SLICE, o->val.i = atoi(cp);
- else if (strcmp(arg, "SLICES_PER_CONTAINER") == 0)
- o->opt = CRAM_OPT_SLICES_PER_CONTAINER, o->val.i = atoi(cp);
- else if (strcmp(arg, "EMBED_REF") == 0)
- o->opt = CRAM_OPT_EMBED_REF, o->val.i = atoi(cp);
- else if (strcmp(arg, "NO_REF") == 0)
- o->opt = CRAM_OPT_NO_REF, o->val.i = atoi(cp);
- else if (strcmp(arg, "IGNORE_MD5") == 0)
- o->opt = CRAM_OPT_IGNORE_MD5, o->val.i = atoi(cp);
- else if (strcmp(arg, "USE_BZIP2") == 0)
- o->opt = CRAM_OPT_USE_BZIP2, o->val.i = atoi(cp);
- else if (strcmp(arg, "USE_RANS") == 0)
- o->opt = CRAM_OPT_USE_RANS, o->val.i = atoi(cp);
- else if (strcmp(arg, "USE_LZMA") == 0)
- o->opt = CRAM_OPT_USE_LZMA, o->val.i = atoi(cp);
- else if (strcmp(arg, "REFERENCE") == 0)
- o->opt = CRAM_OPT_REFERENCE, o->val.s = cp;
- else if (strcmp(arg, "VERSION") == 0)
- o->opt = CRAM_OPT_VERSION, o->val.s =cp;
- else if (strcmp(arg, "MULTI_SEQ_PER_SLICE") == 0)
- o->opt = CRAM_OPT_MULTI_SEQ_PER_SLICE, o->val.i = atoi(cp);
- else if (strcmp(arg, "NTHREADS") == 0)
- o->opt = CRAM_OPT_NTHREADS, o->val.i = atoi(cp);
- else if (strcmp(arg, "REQUIRED_FIELDS") == 0)
- o->opt = CRAM_OPT_REQUIRED_FIELDS, o->val.i = strtol(cp, NULL, 0);
- else {
- fprintf(stderr, "Unknown option '%s'\n", arg);
- free(o);
- return -1;
- }
-
- o->next = NULL;
-
- if (*opts) {
- t = *opts;
- while (t->next)
- t = t->next;
- t->next = o;
- } else {
- *opts = o;
- }
-
- return 0;
-}
-
-int main(int argc, char *argv[])
-{
- samFile *in;
- char *fn_ref = 0;
- int flag = 0, c, clevel = -1, ignore_sam_err = 0;
- char moder[8];
- bam_hdr_t *h;
- bam1_t *b;
- htsFile *out;
- char modew[8];
- int r = 0, exit_code = 0;
- hts_opt *in_opts = NULL, *out_opts = NULL, *last = NULL;
-
- while ((c = getopt(argc, argv, "IbDCSl:t:i:o:")) >= 0) {
- switch (c) {
- case 'S': flag |= 1; break;
- case 'b': flag |= 2; break;
- case 'D': flag |= 4; break;
- case 'C': flag |= 8; break;
- case 'l': clevel = atoi(optarg); flag |= 2; break;
- case 't': fn_ref = optarg; break;
- case 'I': ignore_sam_err = 1; break;
- case 'i': if (add_option(&in_opts, optarg)) return 1; break;
- case 'o': if (add_option(&out_opts, optarg)) return 1; break;
- }
- }
- if (argc == optind) {
- fprintf(stderr, "Usage: samview [-bSCSI] [-l level] [-o option=value] <in.bam>|<in.sam>|<in.cram> [region]\n");
- return 1;
- }
- strcpy(moder, "r");
- if (flag&4) strcat(moder, "c");
- else if ((flag&1) == 0) strcat(moder, "b");
-
- in = sam_open(argv[optind], moder);
- if (in == NULL) {
- fprintf(stderr, "Error opening \"%s\"\n", argv[optind]);
- return EXIT_FAILURE;
- }
- h = sam_hdr_read(in);
- h->ignore_sam_err = ignore_sam_err;
- b = bam_init1();
-
- strcpy(modew, "w");
- if (clevel >= 0 && clevel <= 9) sprintf(modew + 1, "%d", clevel);
- if (flag&8) strcat(modew, "c");
- else if (flag&2) strcat(modew, "b");
- out = hts_open("-", modew);
- if (out == NULL) {
- fprintf(stderr, "Error opening standard output\n");
- return EXIT_FAILURE;
- }
-
- /* CRAM output */
- if (flag & 8) {
- // Parse input header and use for CRAM output
- out->fp.cram->header = sam_hdr_parse_(h->text, h->l_text);
-
- // Create CRAM references arrays
- if (fn_ref)
- cram_set_option(out->fp.cram, CRAM_OPT_REFERENCE, fn_ref);
- else
- // Attempt to fill out a cram->refs[] array from @SQ headers
- cram_set_option(out->fp.cram, CRAM_OPT_REFERENCE, NULL);
- }
-
- // Process any options; currently cram only.
- for (; in_opts; in_opts = (last=in_opts)->next, free(last)) {
- hts_set_opt(in, in_opts->opt, in_opts->val);
- if (in_opts->opt == CRAM_OPT_REFERENCE)
- hts_set_opt(out, in_opts->opt, in_opts->val);
- }
- for (; out_opts; out_opts = (last=out_opts)->next, free(last))
- hts_set_opt(out, out_opts->opt, out_opts->val);
-
- sam_hdr_write(out, h);
- if (optind + 1 < argc && !(flag&1)) { // BAM input and has a region
- int i;
- hts_idx_t *idx;
- if ((idx = bam_index_load(argv[optind])) == 0) {
- fprintf(stderr, "[E::%s] fail to load the BAM index\n", __func__);
- return 1;
- }
- for (i = optind + 1; i < argc; ++i) {
- hts_itr_t *iter;
- if ((iter = bam_itr_querys(idx, h, argv[i])) == 0) {
- fprintf(stderr, "[E::%s] fail to parse region '%s'\n", __func__, argv[i]);
- continue;
- }
- while ((r = bam_itr_next(in, iter, b)) >= 0) {
- if (sam_write1(out, h, b) < 0) {
- fprintf(stderr, "Error writing output.\n");
- exit_code = 1;
- break;
- }
- }
- hts_itr_destroy(iter);
- }
- hts_idx_destroy(idx);
- } else while ((r = sam_read1(in, h, b)) >= 0) {
- if (sam_write1(out, h, b) < 0) {
- fprintf(stderr, "Error writing output.\n");
- exit_code = 1;
- break;
- }
- }
-
- if (r < -1) {
- fprintf(stderr, "Error parsing input.\n");
- exit_code = 1;
- }
-
- r = sam_close(out);
- if (r < 0) {
- fprintf(stderr, "Error closing output.\n");
- exit_code = 1;
- }
-
- bam_destroy1(b);
- bam_hdr_destroy(h);
-
- r = sam_close(in);
- if (r < 0) {
- fprintf(stderr, "Error closing input.\n");
- exit_code = 1;
- }
-
- return exit_code;
-}
diff --git a/htslib/test/test_view.pl b/htslib/test/test_view.pl
deleted file mode 100755
index d721c63..0000000
--- a/htslib/test/test_view.pl
+++ /dev/null
@@ -1,71 +0,0 @@
-#! /usr/bin/env perl
-#
-# Copyright (C) 2013 Genome Research Ltd.
-#
-# Author: James Bonfield <jkb at sanger.ac.uk>
-#
-# 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.
-use strict;
-use warnings;
-
-my $err_count = 0;
-my $suc_count = 0;
-
-sub test {
- my ($cmd) = @_;
- print " $cmd\n";
- if (system("$cmd || exit 1") != 0) {
- print "FAIL $!\n";
- $err_count++;
- } else {
- $suc_count++;
- }
-}
-
-foreach my $sam (glob("*#*.sam")) {
- my ($base, $ref) = ($sam =~ /((.*)#.*)\.sam/);
- $ref .= ".fa";
-
- my $bam = "$base.tmp.bam";
- my $cram = "$base.tmp.cram";
-
- print "\n=== Testing $sam, ref $ref ===\n";
-
- # SAM -> BAM -> SAM
- test "./test_view -S -b $sam > $bam";
- test "./test_view $bam > $bam.sam_";
- test "./compare_sam.pl $sam $bam.sam_";
-
- # SAM -> CRAM -> SAM
- test "./test_view -t $ref -S -C $sam > $cram";
- test "./test_view -D $cram > $cram.sam_";
- test "./compare_sam.pl -nomd $sam $cram.sam_";
-
- # BAM -> CRAM -> BAM -> SAM
- $cram = "$bam.cram";
- test "./test_view -t $ref -C $bam > $cram";
- test "./test_view -b -D $cram > $cram.bam";
- test "./test_view $cram.bam > $cram.bam.sam_";
- test "./compare_sam.pl -nomd $sam $cram.bam.sam_";
-}
-
-print "\nSuccesses $suc_count\n";
-print "\nFailures $err_count\n";
-
-exit ($err_count > 0);
diff --git a/htslib/test/xx#blank.sam b/htslib/test/xx#blank.sam
deleted file mode 100644
index e69de29..0000000
diff --git a/htslib/test/xx#large_aux.sam b/htslib/test/xx#large_aux.sam
deleted file mode 100644
index 93fb8cf..0000000
--- a/htslib/test/xx#large_aux.sam
+++ /dev/null
@@ -1,4 +0,0 @@
- at SQ SN:xx LN:20
-a1 16 xx 1 1 10M * 0 0 AAAAAAAAAA * aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1 ak:i:1 al:i:1 am:i:1 an:i:1 ao:i:1 ap:i:1 aq:i:1 ar:i:1 as:i:1 at:i:1 au:i:1 av:i:1 aw:i:1 ax:i:1 ay:i:1 az:i:1 ba:i:1 bb:i:1 bc:i:1 bd:i:1 be:i:1 bf:i:1 bg:i:1 bh:i:1 bi:i:1 bj:i:1 bk:i:1 bl:i:1 bm:i:1 bn:i:1 bo:i:1 bp:i:1 bq:i:1 br:i:1 bs:i:1 bt:i:1 bu:i:1 bv:i:1 bw:i:1 bx:i:1 by:i:1 bz:i:1 ca:i:1 cb:i:1 cc:i:1 cd:i:1 ce:i:1 cf:i:1 cg:i:1 ch:i:1 ci:i:1 cj:i:1 ck:i:1 cl:i:1 cm:i:1 c [...]
-a2 16 xx 1 1 10M * 0 0 AAAAAAAAAA * aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1 ak:i:1 al:i:1 am:i:1 an:i:1 ao:i:1 ap:i:1 aq:i:1 ar:i:1 as:i:1 at:i:1 au:i:1 av:i:1 aw:i:1 ax:i:1 ay:i:1 az:i:1 ba:i:1 bb:i:1 bc:i:1 bd:i:1 be:i:1 bf:i:1 bg:i:1 bh:i:1 bi:i:1 bj:i:1 bk:i:1 bl:i:1 bm:i:1 bn:i:1 bo:i:1 bp:i:1 bq:i:1 br:i:1 bs:i:1 bt:i:1 bu:i:1 bv:i:1 bw:i:1 bx:i:1 by:i:1 bz:i:1 ca:i:1 cb:i:1 cc:i:1 cd:i:1 ce:i:1 cf:i:1 cg:i:1 ch:i:1 ci:i:1 cj:i:1 ck:i:1 cl:i:1 cm:i:1 c [...]
-b1 16 xx 1 1 10M * 0 0 AAAAAAAAAA * ZZ:Z:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [...]
diff --git a/htslib/test/xx#large_aux2.sam b/htslib/test/xx#large_aux2.sam
deleted file mode 100644
index 9e338ed..0000000
--- a/htslib/test/xx#large_aux2.sam
+++ /dev/null
@@ -1,11 +0,0 @@
- at SQ SN:xx LN:20
-a1 0 xx 1 1 1M * 0 0 A # aa:i:1
-a2 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1
-a3 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1
-a4 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1
-a5 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1
-a6 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1
-a7 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1
-a8 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1
-a9 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1
-aA 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1
diff --git a/htslib/test/xx#minimal.sam b/htslib/test/xx#minimal.sam
deleted file mode 100644
index eb72140..0000000
--- a/htslib/test/xx#minimal.sam
+++ /dev/null
@@ -1,10 +0,0 @@
- at SQ SN:xx LN:20
- at SQ SN:yy LN:20
-a0 16 xx 4 1 10H * 0 0 * *
-a1 16 xx 4 1 5H0M5H * 0 0 * *
-a2 16 xx 4 1 5H0I10M0D5H * 0 0 * *
-A0 16 yy 4 1 0H * 0 0 * *
-A1 16 yy 4 1 0I * 0 0 * *
-A2 16 yy 4 1 0D * 0 0 * *
-A3 16 yy 4 1 0M * 0 0 * *
-A4 16 yy 4 1 0P * 0 0 * *
diff --git a/htslib/test/xx#pair.sam b/htslib/test/xx#pair.sam
deleted file mode 100644
index aa8c77b..0000000
--- a/htslib/test/xx#pair.sam
+++ /dev/null
@@ -1,7 +0,0 @@
- at SQ SN:xx LN:20
-a1 99 xx 1 1 10M = 11 20 AAAAAAAAAA **********
-b1 99 xx 1 1 10M = 11 20 AAAAAAAAAA **********
-c1 99 xx 1 1 10M = 11 20 AAAAAAAAAA **********
-a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
-b1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
-c1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
diff --git a/htslib/test/xx#rg.sam b/htslib/test/xx#rg.sam
deleted file mode 100644
index 2d7efbc..0000000
--- a/htslib/test/xx#rg.sam
+++ /dev/null
@@ -1,13 +0,0 @@
- at HD VN:1.4 SO:coordinate
- at SQ SN:xx LN:20 AS:? SP:? UR:? M5:bbf4de6d8497a119dda6e074521643dc
- at RG ID:x1 SM:x1
- at RG ID:x2 SM:x2 LB:x PG:foo:bar PI:1111
- at PG ID:emacs PN:emacs VN:23.1.1
- at CO also test
- at CO other headers
-a1 16 xx 1 1 10M * 0 0 AAAAAAAAAA ********** RG:Z:x1
-b1 16 xx 1 1 10M * 0 0 AAAAAAAAAA ********** RG:Z:x2
-c1 16 xx 1 1 10M * 0 0 AAAAAAAAAA **********
-a2 16 xx 11 1 10M * 0 0 TTTTTTTTTT ********** RG:Z:x1
-b2 16 xx 11 1 10M * 0 0 TTTTTTTTTT ********** RG:Z:x2
-c2 16 xx 11 1 10M * 0 0 TTTTTTTTTT **********
diff --git a/htslib/test/xx#triplet.sam b/htslib/test/xx#triplet.sam
deleted file mode 100644
index 1255725..0000000
--- a/htslib/test/xx#triplet.sam
+++ /dev/null
@@ -1,7 +0,0 @@
- at SQ SN:xx LN:20
- at SQ SN:yy LN:20
-a1 67 xx 1 1 10M = 6 20 AAAAAAAAAA **********
-a1 35 xx 6 1 10M = 11 -20 AAAAATTTTT **********
-a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
-a1 67 yy 1 1 10M = 6 15 AAAAAAAAAA **********
-a1 3 yy 6 1 10M = 1 -15 AAAAATTTTT **********
diff --git a/htslib/test/xx#unsorted.sam b/htslib/test/xx#unsorted.sam
deleted file mode 100644
index 05887a3..0000000
--- a/htslib/test/xx#unsorted.sam
+++ /dev/null
@@ -1,8 +0,0 @@
- at SQ SN:xx LN:20
- at SQ SN:yy LN:20
-b1 147 yy 11 1 10M = 1 -20 TTTTTTTTTT **********
-a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
-a1 99 xx 1 1 10M = 11 20 AAAAAAAAAA **********
-b1 99 yy 1 1 10M = 11 20 AAAAAAAAAA **********
-c1 99 xx 1 1 10M = 11 20 AAAAAAAAAA **********
-c1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT **********
diff --git a/htslib/test/xx.fa b/htslib/test/xx.fa
deleted file mode 100644
index a233f7d..0000000
--- a/htslib/test/xx.fa
+++ /dev/null
@@ -1,5 +0,0 @@
->xx
-AAAAAAAAAATTTTTTTTTT
->yy
-AAAAAAAAAATTTTTTTTTT
-
diff --git a/htslib/test/xx.fa.fai b/htslib/test/xx.fa.fai
deleted file mode 100644
index 97b1a3b..0000000
--- a/htslib/test/xx.fa.fai
+++ /dev/null
@@ -1,2 +0,0 @@
-xx 20 4 20 21
-yy 20 29 20 21
diff --git a/htslib/vcf.5 b/htslib/vcf.5
deleted file mode 100644
index 47e833a..0000000
--- a/htslib/vcf.5
+++ /dev/null
@@ -1,120 +0,0 @@
-'\" t
-.TH vcf 5 "August 2013" "htslib" "Bioinformatics formats"
-.SH NAME
-vcf \- Variant Call Format
-.\"
-.\" Copyright (C) 2011 Broad Institute.
-.\" Copyright (C) 2013 Genome Research Ltd.
-.\"
-.\" Author: Heng Li <lh3 at sanger.ac.uk>
-.\"
-.\" 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.
-.\"
-.SH DESCRIPTION
-The Variant Call Format (VCF) is a TAB-delimited format with each data line
-consisting of the following fields:
-.TS
-nlbl.
-1 CHROM CHROMosome name
-2 POS the left-most POSition of the variant
-3 ID unique variant IDentifier
-4 REF the REFerence allele
-5 ALT the ALTernate allele(s) (comma-separated)
-6 QUAL variant/reference QUALity
-7 FILTER FILTERs applied
-8 INFO INFOrmation related to the variant (semicolon-separated)
-9 FORMAT FORMAT of the genotype fields (optional; colon-separated)
-10+ SAMPLE SAMPLE genotypes and per-sample information (optional)
-.TE
-.P
-The following table gives the \fBINFO\fP tags used by samtools and bcftools.
-.TP
-.B AF1
-Max-likelihood estimate of the site allele frequency (AF) of the first ALT allele
-(double)
-.TP
-.B DP
-Raw read depth (without quality filtering)
-(int)
-.TP
-.B DP4
-# high-quality reference forward bases, ref reverse, alternate for and alt rev bases
-(int[4])
-.TP
-.B FQ
-Consensus quality. Positive: sample genotypes different; negative: otherwise
-(int)
-.TP
-.B MQ
-Root-Mean-Square mapping quality of covering reads
-(int)
-.TP
-.B PC2
-Phred probability of AF in group1 samples being larger (,smaller) than in group2
-(int[2])
-.TP
-.B PCHI2
-Posterior weighted chi^2 P-value between group1 and group2 samples
-(double)
-.TP
-.B PV4
-P-value for strand bias, baseQ bias, mapQ bias and tail distance bias
-(double[4])
-.TP
-.B QCHI2
-Phred-scaled PCHI2
-(int)
-.TP
-.B RP
-# permutations yielding a smaller PCHI2
-(int)
-.TP
-.B CLR
-Phred log ratio of genotype likelihoods with and without the trio/pair constraint
-(int)
-.TP
-.B UGT
-Most probable genotype configuration without the trio constraint
-(string)
-.TP
-.B CGT
-Most probable configuration with the trio constraint
-(string)
-.TP
-.B VDB
-Tests variant positions within reads. Intended for filtering RNA-seq artifacts around splice sites
-(float)
-.TP
-.B RPB
-Mann-Whitney rank-sum test for tail distance bias
-(float)
-.TP
-.B HWE
-Hardy-Weinberg equilibrium test (Wigginton et al)
-(float)
-.P
-.SH SEE ALSO
-.TP
-https://github.com/samtools/hts-specs
-The full VCF/BCF file format specification
-.TP
-.I A note on exact tests of Hardy-Weinberg equilibrium
-Wigginton JE et al
-PMID:15789306
-.\" (http://www.ncbi.nlm.nih.gov/pubmed/15789306)
diff --git a/htslib/vcf.c b/htslib/vcf.c
deleted file mode 100644
index 0901ce1..0000000
--- a/htslib/vcf.c
+++ /dev/null
@@ -1,3212 +0,0 @@
-/* vcf.c -- VCF/BCF API functions.
-
- Copyright (C) 2012, 2013 Broad Institute.
- Copyright (C) 2012-2014 Genome Research Ltd.
- Portions copyright (C) 2014 Intel Corporation.
-
- Author: Heng Li <lh3 at sanger.ac.uk>
-
-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. */
-
-#include <zlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <limits.h>
-#include "htslib/kstring.h"
-#include "htslib/bgzf.h"
-#include "htslib/vcf.h"
-#include "htslib/tbx.h"
-#include "htslib/hfile.h"
-#include "htslib/khash_str2int.h"
-
-#include "htslib/khash.h"
-KHASH_MAP_INIT_STR(vdict, bcf_idinfo_t)
-typedef khash_t(vdict) vdict_t;
-
-#include "htslib/kseq.h"
-KSTREAM_DECLARE(gzFile, gzread)
-
-uint32_t bcf_float_missing = 0x7F800001;
-uint32_t bcf_float_vector_end = 0x7F800002;
-uint8_t bcf_type_shift[] = { 0, 0, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-static bcf_idinfo_t bcf_idinfo_def = { .info = { 15, 15, 15 }, .hrec = { NULL, NULL, NULL}, .id = -1 };
-
-/*************************
- *** VCF header parser ***
- *************************/
-
-int bcf_hdr_sync(bcf_hdr_t *h);
-
-int bcf_hdr_add_sample(bcf_hdr_t *h, const char *s)
-{
- if ( !s ) return 0;
-
- const char *ss = s;
- while ( !*ss && isspace(*ss) ) ss++;
- if ( !*ss )
- {
- fprintf(stderr,"[E::%s] Empty sample name: trailing spaces/tabs in the header line?\n", __func__);
- abort();
- }
-
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_SAMPLE];
- int ret;
- char *sdup = strdup(s);
- int k = kh_put(vdict, d, sdup, &ret);
- if (ret) { // absent
- kh_val(d, k) = bcf_idinfo_def;
- kh_val(d, k).id = kh_size(d) - 1;
- } else {
- if (hts_verbose >= 2)
- {
- fprintf(stderr, "[E::%s] Duplicated sample name '%s'\n", __func__, s);
- abort();
- }
- free(sdup);
- return -1;
- }
- int n = kh_size(d);
- h->samples = (char**) realloc(h->samples,sizeof(char*)*n);
- h->samples[n-1] = sdup;
- h->dirty = 1;
- return 0;
-}
-
-int bcf_hdr_parse_sample_line(bcf_hdr_t *h, const char *str)
-{
- int ret = 0;
- int i = 0;
- const char *p, *q;
- // add samples
- for (p = q = str;; ++q) {
- if (*q != '\t' && *q != 0 && *q != '\n') continue;
- if (++i > 9) {
- char *s = (char*)malloc(q - p + 1);
- strncpy(s, p, q - p);
- s[q - p] = 0;
- if ( bcf_hdr_add_sample(h,s) < 0 ) ret = -1;
- free(s);
- }
- if (*q == 0 || *q == '\n') break;
- p = q + 1;
- }
- bcf_hdr_add_sample(h,NULL);
- return ret;
-}
-
-int bcf_hdr_sync(bcf_hdr_t *h)
-{
- int i;
- for (i = 0; i < 3; i++)
- {
- vdict_t *d = (vdict_t*)h->dict[i];
- khint_t k;
-
- // find out the largest id, there may be holes because of IDX
- int max_id = -1;
- for (k=kh_begin(d); k<kh_end(d); k++)
- {
- if (!kh_exist(d,k)) continue;
- if ( max_id < kh_val(d,k).id ) max_id = kh_val(d,k).id;
- }
- if ( max_id >= h->n[i] )
- {
- h->id[i] = (bcf_idpair_t*)realloc(h->id[i], (max_id+1)*sizeof(bcf_idpair_t));
- for (k=h->n[i]; k<=max_id; k++)
- {
- h->id[i][k].key = NULL;
- h->id[i][k].val = NULL;
- }
- h->n[i] = max_id+1;
- }
- for (k=kh_begin(d); k<kh_end(d); k++)
- {
- if (!kh_exist(d,k)) continue;
- h->id[i][kh_val(d,k).id].key = kh_key(d,k);
- h->id[i][kh_val(d,k).id].val = &kh_val(d,k);
- }
- }
- h->dirty = 0;
- return 0;
-}
-
-void bcf_hrec_destroy(bcf_hrec_t *hrec)
-{
- free(hrec->key);
- if ( hrec->value ) free(hrec->value);
- int i;
- for (i=0; i<hrec->nkeys; i++)
- {
- free(hrec->keys[i]);
- free(hrec->vals[i]);
- }
- free(hrec->keys);
- free(hrec->vals);
- free(hrec);
-}
-
-// Copies all fields except IDX.
-bcf_hrec_t *bcf_hrec_dup(bcf_hrec_t *hrec)
-{
- bcf_hrec_t *out = (bcf_hrec_t*) calloc(1,sizeof(bcf_hrec_t));
- out->type = hrec->type;
- if ( hrec->key ) out->key = strdup(hrec->key);
- if ( hrec->value ) out->value = strdup(hrec->value);
- out->nkeys = hrec->nkeys;
- out->keys = (char**) malloc(sizeof(char*)*hrec->nkeys);
- out->vals = (char**) malloc(sizeof(char*)*hrec->nkeys);
- int i, j = 0;
- for (i=0; i<hrec->nkeys; i++)
- {
- if ( hrec->keys[i] && !strcmp("IDX",hrec->keys[i]) ) continue;
- if ( hrec->keys[i] ) out->keys[j] = strdup(hrec->keys[i]);
- if ( hrec->vals[i] ) out->vals[j] = strdup(hrec->vals[i]);
- j++;
- }
- if ( i!=j ) out->nkeys -= i-j; // IDX was omitted
- return out;
-}
-
-void bcf_hrec_debug(FILE *fp, bcf_hrec_t *hrec)
-{
- fprintf(fp, "key=[%s] value=[%s]", hrec->key, hrec->value?hrec->value:"");
- int i;
- for (i=0; i<hrec->nkeys; i++)
- fprintf(fp, "\t[%s]=[%s]", hrec->keys[i],hrec->vals[i]);
- fprintf(fp, "\n");
-}
-
-void bcf_header_debug(bcf_hdr_t *hdr)
-{
- int i, j;
- for (i=0; i<hdr->nhrec; i++)
- {
- if ( !hdr->hrec[i]->value )
- {
- fprintf(stderr, "##%s=<", hdr->hrec[i]->key);
- fprintf(stderr,"%s=%s", hdr->hrec[i]->keys[0], hdr->hrec[i]->vals[0]);
- for (j=1; j<hdr->hrec[i]->nkeys; j++)
- fprintf(stderr,",%s=%s", hdr->hrec[i]->keys[j], hdr->hrec[i]->vals[j]);
- fprintf(stderr,">\n");
- }
- else
- fprintf(stderr,"##%s=%s\n", hdr->hrec[i]->key,hdr->hrec[i]->value);
- }
-}
-
-void bcf_hrec_add_key(bcf_hrec_t *hrec, const char *str, int len)
-{
- int n = ++hrec->nkeys;
- hrec->keys = (char**) realloc(hrec->keys, sizeof(char*)*n);
- hrec->vals = (char**) realloc(hrec->vals, sizeof(char*)*n);
- assert( len );
- hrec->keys[n-1] = (char*) malloc((len+1)*sizeof(char));
- memcpy(hrec->keys[n-1],str,len);
- hrec->keys[n-1][len] = 0;
- hrec->vals[n-1] = NULL;
-}
-
-void bcf_hrec_set_val(bcf_hrec_t *hrec, int i, const char *str, int len, int is_quoted)
-{
- if ( !str ) { hrec->vals[i] = NULL; return; }
- if ( hrec->vals[i] ) free(hrec->vals[i]);
- if ( is_quoted )
- {
- hrec->vals[i] = (char*) malloc((len+3)*sizeof(char));
- hrec->vals[i][0] = '"';
- memcpy(&hrec->vals[i][1],str,len);
- hrec->vals[i][len+1] = '"';
- hrec->vals[i][len+2] = 0;
- }
- else
- {
- hrec->vals[i] = (char*) malloc((len+1)*sizeof(char));
- memcpy(hrec->vals[i],str,len);
- hrec->vals[i][len] = 0;
- }
-}
-
-void hrec_add_idx(bcf_hrec_t *hrec, int idx)
-{
- int n = ++hrec->nkeys;
- hrec->keys = (char**) realloc(hrec->keys, sizeof(char*)*n);
- hrec->vals = (char**) realloc(hrec->vals, sizeof(char*)*n);
- hrec->keys[n-1] = strdup("IDX");
- kstring_t str = {0,0,0};
- kputw(idx, &str);
- hrec->vals[n-1] = str.s;
-}
-
-int bcf_hrec_find_key(bcf_hrec_t *hrec, const char *key)
-{
- int i;
- for (i=0; i<hrec->nkeys; i++)
- if ( !strcasecmp(key,hrec->keys[i]) ) return i;
- return -1;
-}
-
-static inline int is_escaped(const char *min, const char *str)
-{
- int n = 0;
- while ( --str>=min && *str=='\\' ) n++;
- return n%2;
-}
-
-bcf_hrec_t *bcf_hdr_parse_line(const bcf_hdr_t *h, const char *line, int *len)
-{
- const char *p = line;
- if (p[0] != '#' || p[1] != '#') { *len = 0; return NULL; }
- p += 2;
-
- const char *q = p;
- while ( *q && *q!='=' ) q++;
- int n = q-p;
- if ( *q!='=' || !n ) { *len = q-line+1; return NULL; } // wrong format
-
- bcf_hrec_t *hrec = (bcf_hrec_t*) calloc(1,sizeof(bcf_hrec_t));
- hrec->key = (char*) malloc(sizeof(char)*(n+1));
- memcpy(hrec->key,p,n);
- hrec->key[n] = 0;
-
- p = ++q;
- if ( *p!='<' ) // generic field, e.g. ##samtoolsVersion=0.1.18-r579
- {
- while ( *q && *q!='\n' ) q++;
- hrec->value = (char*) malloc((q-p+1)*sizeof(char));
- memcpy(hrec->value, p, q-p);
- hrec->value[q-p] = 0;
- *len = q-line+1;
- return hrec;
- }
-
- // structured line, e.g. ##INFO=<ID=PV1,Number=1,Type=Float,Description="P-value for baseQ bias">
- int nopen = 1;
- while ( *q && *q!='\n' && nopen )
- {
- p = ++q;
- while ( *q && isalnum(*q) ) q++;
- n = q-p;
- if ( *q!='=' || !n )
- {
- // wrong format
- while ( *q && *q!='\n' ) q++;
- kstring_t tmp = {0,0,0};
- kputsn(line,q-line,&tmp);
- fprintf(stderr,"Could not parse the header line: \"%s\"\n", tmp.s);
- free(tmp.s);
- *len = q-line+1;
- bcf_hrec_destroy(hrec);
- return NULL;
- }
- bcf_hrec_add_key(hrec, p, q-p);
- p = ++q;
- int quoted = *p=='"' ? 1 : 0;
- if ( quoted ) p++, q++;
- while (1)
- {
- if ( !*q ) break;
- if ( quoted ) { if ( *q=='"' && !is_escaped(p,q) ) break; }
- else
- {
- if ( *q=='<' ) nopen++;
- if ( *q=='>' ) nopen--;
- if ( !nopen ) break;
- if ( *q==',' && nopen==1 ) break;
- }
- q++;
- }
- bcf_hrec_set_val(hrec, hrec->nkeys-1, p, q-p, quoted);
- if ( quoted ) q++;
- if ( *q=='>' ) { nopen--; q++; }
- }
- *len = q-line+1;
- return hrec;
-}
-
-// returns: 1 when hdr needs to be synced, 0 otherwise
-int bcf_hdr_register_hrec(bcf_hdr_t *hdr, bcf_hrec_t *hrec)
-{
- // contig
- int i,j,k, ret;
- char *str;
- if ( !strcmp(hrec->key, "contig") )
- {
- hrec->type = BCF_HL_CTG;
-
- // Get the contig ID ($str) and length ($j)
- i = bcf_hrec_find_key(hrec,"length");
- if ( i<0 ) j = 0;
- else if ( sscanf(hrec->vals[i],"%d",&j)!=1 ) return 0;
-
- i = bcf_hrec_find_key(hrec,"ID");
- if ( i<0 ) return 0;
- str = strdup(hrec->vals[i]);
-
- // Register in the dictionary
- vdict_t *d = (vdict_t*)hdr->dict[BCF_DT_CTG];
- k = kh_put(vdict, d, str, &ret);
- if ( !ret ) { free(str); return 0; } // already present
-
- int idx = bcf_hrec_find_key(hrec,"IDX");
- if ( idx!=-1 )
- {
- char *tmp = hrec->vals[idx];
- idx = strtol(hrec->vals[idx], &tmp, 10);
- if ( *tmp )
- {
- fprintf(stderr,"[%s:%d %s] Error parsing the IDX tag, skipping.\n", __FILE__,__LINE__,__FUNCTION__);
- return 0;
- }
- }
- else
- {
- idx = kh_size(d) - 1;
- hrec_add_idx(hrec, idx);
- }
-
- kh_val(d, k) = bcf_idinfo_def;
- kh_val(d, k).id = idx;
- kh_val(d, k).info[0] = j;
- kh_val(d, k).hrec[0] = hrec;
-
- return 1;
- }
-
- if ( !strcmp(hrec->key, "INFO") ) hrec->type = BCF_HL_INFO;
- else if ( !strcmp(hrec->key, "FILTER") ) hrec->type = BCF_HL_FLT;
- else if ( !strcmp(hrec->key, "FORMAT") ) hrec->type = BCF_HL_FMT;
- else if ( hrec->nkeys>0 ) { hrec->type = BCF_HL_STR; return 1; }
- else return 0;
-
- // INFO/FILTER/FORMAT
- char *id = NULL;
- int type = -1, num = -1, var = -1, idx = -1;
- for (i=0; i<hrec->nkeys; i++)
- {
- if ( !strcmp(hrec->keys[i], "ID") ) id = hrec->vals[i];
- else if ( !strcmp(hrec->keys[i], "IDX") )
- {
- char *tmp = hrec->vals[i];
- idx = strtol(hrec->vals[i], &tmp, 10);
- if ( *tmp )
- {
- fprintf(stderr,"[%s:%d %s] Error parsing the IDX tag, skipping.\n", __FILE__,__LINE__,__FUNCTION__);
- return 0;
- }
- }
- else if ( !strcmp(hrec->keys[i], "Type") )
- {
- if ( !strcmp(hrec->vals[i], "Integer") ) type = BCF_HT_INT;
- else if ( !strcmp(hrec->vals[i], "Float") ) type = BCF_HT_REAL;
- else if ( !strcmp(hrec->vals[i], "String") ) type = BCF_HT_STR;
- else if ( !strcmp(hrec->vals[i], "Character") ) type = BCF_HT_STR;
- else if ( !strcmp(hrec->vals[i], "Flag") ) type = BCF_HT_FLAG;
- else
- {
- fprintf(stderr, "[E::%s] The type \"%s\" not supported, assuming \"String\"\n", __func__, hrec->vals[i]);
- type = BCF_HT_STR;
- }
- }
- else if ( !strcmp(hrec->keys[i], "Number") )
- {
- if ( !strcmp(hrec->vals[i],"A") ) var = BCF_VL_A;
- else if ( !strcmp(hrec->vals[i],"R") ) var = BCF_VL_R;
- else if ( !strcmp(hrec->vals[i],"G") ) var = BCF_VL_G;
- else if ( !strcmp(hrec->vals[i],".") ) var = BCF_VL_VAR;
- else
- {
- sscanf(hrec->vals[i],"%d",&num);
- var = BCF_VL_FIXED;
- }
- if (var != BCF_VL_FIXED) num = 0xfffff;
- }
- }
- uint32_t info = (uint32_t)num<<12 | var<<8 | type<<4 | hrec->type;
-
- if ( !id ) return 0;
- str = strdup(id);
-
- vdict_t *d = (vdict_t*)hdr->dict[BCF_DT_ID];
- k = kh_put(vdict, d, str, &ret);
- if ( !ret )
- {
- // already present
- free(str);
- if ( kh_val(d, k).hrec[info&0xf] ) return 0;
- kh_val(d, k).info[info&0xf] = info;
- kh_val(d, k).hrec[info&0xf] = hrec;
- if ( idx==-1 ) hrec_add_idx(hrec, kh_val(d, k).id);
- return 1;
- }
- kh_val(d, k) = bcf_idinfo_def;
- kh_val(d, k).info[info&0xf] = info;
- kh_val(d, k).hrec[info&0xf] = hrec;
- kh_val(d, k).id = idx==-1 ? kh_size(d) - 1 : idx;
-
- if ( idx==-1 ) hrec_add_idx(hrec, kh_val(d, k).id);
-
- return 1;
-}
-
-int bcf_hdr_add_hrec(bcf_hdr_t *hdr, bcf_hrec_t *hrec)
-{
- if ( !hrec ) return 0;
-
- hrec->type = BCF_HL_GEN;
- if ( !bcf_hdr_register_hrec(hdr,hrec) )
- {
- // If one of the hashed field, then it is already present
- if ( hrec->type != BCF_HL_GEN )
- {
- bcf_hrec_destroy(hrec);
- return 0;
- }
-
- // Is one of the generic fields and already present?
- int i;
- for (i=0; i<hdr->nhrec; i++)
- {
- if ( hdr->hrec[i]->type!=BCF_HL_GEN ) continue;
- if ( !strcmp(hdr->hrec[i]->key,hrec->key) && !strcmp(hrec->key,"fileformat") ) break;
- if ( !strcmp(hdr->hrec[i]->key,hrec->key) && !strcmp(hdr->hrec[i]->value,hrec->value) ) break;
- }
- if ( i<hdr->nhrec )
- {
- bcf_hrec_destroy(hrec);
- return 0;
- }
- }
-
- // New record, needs to be added
- int n = ++hdr->nhrec;
- hdr->hrec = (bcf_hrec_t**) realloc(hdr->hrec, n*sizeof(bcf_hrec_t*));
- hdr->hrec[n-1] = hrec;
- hdr->dirty = 1;
-
- return hrec->type==BCF_HL_GEN ? 0 : 1;
-}
-
-/*
- * Note that while querying of FLT,INFO,FMT,CTG lines is fast (the keys are hashed),
- * the STR,GEN lines are searched for linearly in a linked list of all header lines.
- * This may become a problem for VCFs with huge headers, we might need to build a
- * dictionary for these lines as well.
- */
-bcf_hrec_t *bcf_hdr_get_hrec(const bcf_hdr_t *hdr, int type, const char *key, const char *value, const char *str_class)
-{
- int i;
- if ( type==BCF_HL_GEN )
- {
- for (i=0; i<hdr->nhrec; i++)
- {
- if ( hdr->hrec[i]->type!=type ) continue;
- if ( strcmp(hdr->hrec[i]->key,key) ) continue;
- if ( !value || !strcmp(hdr->hrec[i]->value,value) ) return hdr->hrec[i];
- }
- return NULL;
- }
- else if ( type==BCF_HL_STR )
- {
- for (i=0; i<hdr->nhrec; i++)
- {
- if ( hdr->hrec[i]->type!=type ) continue;
- if ( strcmp(hdr->hrec[i]->key,str_class) ) continue;
- int j = bcf_hrec_find_key(hdr->hrec[i],key);
- if ( j>=0 && !strcmp(hdr->hrec[i]->vals[j],value) ) return hdr->hrec[i];
- }
- return NULL;
- }
- vdict_t *d = type==BCF_HL_CTG ? (vdict_t*)hdr->dict[BCF_DT_CTG] : (vdict_t*)hdr->dict[BCF_DT_ID];
- khint_t k = kh_get(vdict, d, value);
- if ( k == kh_end(d) ) return NULL;
- return kh_val(d, k).hrec[type==BCF_HL_CTG?0:type];
-}
-
-void bcf_hdr_check_sanity(bcf_hdr_t *hdr)
-{
- static int PL_warned = 0, GL_warned = 0;
-
- if ( !PL_warned )
- {
- int id = bcf_hdr_id2int(hdr, BCF_DT_ID, "PL");
- if ( bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,id) && bcf_hdr_id2length(hdr,BCF_HL_FMT,id)!=BCF_VL_G )
- {
- fprintf(stderr,"[W::%s] PL should be declared as Number=G\n", __func__);
- PL_warned = 1;
- }
- }
- if ( !GL_warned )
- {
- int id = bcf_hdr_id2int(hdr, BCF_HL_FMT, "GL");
- if ( bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,id) && bcf_hdr_id2length(hdr,BCF_HL_FMT,id)!=BCF_VL_G )
- {
- fprintf(stderr,"[W::%s] GL should be declared as Number=G\n", __func__);
- PL_warned = 1;
- }
- }
-}
-
-int bcf_hdr_parse(bcf_hdr_t *hdr, char *htxt)
-{
- int len, needs_sync = 0;
- char *p = htxt;
-
- // Check sanity: "fileformat" string must come as first
- bcf_hrec_t *hrec = bcf_hdr_parse_line(hdr,p,&len);
- if ( !hrec || !hrec->key || strcasecmp(hrec->key,"fileformat") )
- fprintf(stderr, "[W::%s] The first line should be ##fileformat; is the VCF/BCF header broken?\n", __func__);
- needs_sync += bcf_hdr_add_hrec(hdr, hrec);
-
- // The filter PASS must appear first in the dictionary
- hrec = bcf_hdr_parse_line(hdr,"##FILTER=<ID=PASS,Description=\"All filters passed\">",&len);
- needs_sync += bcf_hdr_add_hrec(hdr, hrec);
-
- // Parse the whole header
- while ( (hrec=bcf_hdr_parse_line(hdr,p,&len)) )
- {
- needs_sync += bcf_hdr_add_hrec(hdr, hrec);
- p += len;
- }
- int ret = bcf_hdr_parse_sample_line(hdr,p);
- bcf_hdr_sync(hdr);
- bcf_hdr_check_sanity(hdr);
- return ret;
-}
-
-int bcf_hdr_append(bcf_hdr_t *hdr, const char *line)
-{
- int len;
- bcf_hrec_t *hrec = bcf_hdr_parse_line(hdr, (char*) line, &len);
- if ( !hrec ) return -1;
- bcf_hdr_add_hrec(hdr, hrec);
- return 0;
-}
-
-void bcf_hdr_remove(bcf_hdr_t *hdr, int type, const char *key)
-{
- int i;
- bcf_hrec_t *hrec;
- while (1)
- {
- if ( type==BCF_HL_FLT || type==BCF_HL_INFO || type==BCF_HL_FMT || type== BCF_HL_CTG )
- {
- hrec = bcf_hdr_get_hrec(hdr, type, "ID", key, NULL);
- if ( !hrec ) return;
-
- for (i=0; i<hdr->nhrec; i++)
- if ( hdr->hrec[i]==hrec ) break;
- assert( i<hdr->nhrec );
-
- vdict_t *d = type==BCF_HL_CTG ? (vdict_t*)hdr->dict[BCF_DT_CTG] : (vdict_t*)hdr->dict[BCF_DT_ID];
- khint_t k = kh_get(vdict, d, key);
- kh_val(d, k).hrec[type==BCF_HL_CTG?0:type] = NULL;
- }
- else
- {
- for (i=0; i<hdr->nhrec; i++)
- {
- if ( hdr->hrec[i]->type!=type ) continue;
- if ( type==BCF_HL_GEN )
- {
- if ( !strcmp(hdr->hrec[i]->key,key) ) break;
- }
- else
- {
- // not all structured lines have ID, we could be more sophisticated as in bcf_hdr_get_hrec()
- int j = bcf_hrec_find_key(hdr->hrec[i], "ID");
- if ( j>=0 && !strcmp(hdr->hrec[i]->vals[j],key) ) break;
- }
- }
- if ( i==hdr->nhrec ) return;
- hrec = hdr->hrec[i];
- }
-
- hdr->nhrec--;
- if ( i < hdr->nhrec )
- memmove(&hdr->hrec[i],&hdr->hrec[i+1],(hdr->nhrec-i)*sizeof(bcf_hrec_t*));
- bcf_hrec_destroy(hrec);
- hdr->dirty = 1;
- }
-}
-
-int bcf_hdr_printf(bcf_hdr_t *hdr, const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- int n = vsnprintf(NULL, 0, fmt, ap) + 2;
- va_end(ap);
-
- char *line = (char*)malloc(n);
- va_start(ap, fmt);
- vsnprintf(line, n, fmt, ap);
- va_end(ap);
-
- int ret = bcf_hdr_append(hdr, line);
-
- free(line);
- return ret;
-}
-
-
-/**********************
- *** BCF header I/O ***
- **********************/
-
-const char *bcf_hdr_get_version(const bcf_hdr_t *hdr)
-{
- bcf_hrec_t *hrec = bcf_hdr_get_hrec(hdr, BCF_HL_GEN, "fileformat", NULL, NULL);
- if ( !hrec )
- {
- fprintf(stderr,"No version string found, assuming VCFv4.2\n");
- return "VCFv4.2";
- }
- return hrec->value;
-}
-
-void bcf_hdr_set_version(bcf_hdr_t *hdr, const char *version)
-{
- bcf_hrec_t *hrec = bcf_hdr_get_hrec(hdr, BCF_HL_GEN, "fileformat", NULL, NULL);
- if ( !hrec )
- {
- int len;
- kstring_t str = {0,0,0};
- ksprintf(&str,"##fileformat=%s", version);
- hrec = bcf_hdr_parse_line(hdr, str.s, &len);
- free(str.s);
- }
- else
- {
- free(hrec->value);
- hrec->value = strdup(version);
- }
- hdr->dirty = 1;
-}
-
-bcf_hdr_t *bcf_hdr_init(const char *mode)
-{
- int i;
- bcf_hdr_t *h;
- h = (bcf_hdr_t*)calloc(1, sizeof(bcf_hdr_t));
- for (i = 0; i < 3; ++i)
- h->dict[i] = kh_init(vdict);
- if ( strchr(mode,'w') )
- {
- bcf_hdr_append(h, "##fileformat=VCFv4.2");
- // The filter PASS must appear first in the dictionary
- bcf_hdr_append(h, "##FILTER=<ID=PASS,Description=\"All filters passed\">");
- }
- return h;
-}
-
-void bcf_hdr_destroy(bcf_hdr_t *h)
-{
- int i;
- khint_t k;
- for (i = 0; i < 3; ++i) {
- vdict_t *d = (vdict_t*)h->dict[i];
- if (d == 0) continue;
- for (k = kh_begin(d); k != kh_end(d); ++k)
- if (kh_exist(d, k)) free((char*)kh_key(d, k));
- kh_destroy(vdict, d);
- free(h->id[i]);
- }
- for (i=0; i<h->nhrec; i++)
- bcf_hrec_destroy(h->hrec[i]);
- if (h->nhrec) free(h->hrec);
- if (h->samples) free(h->samples);
- free(h->keep_samples);
- free(h->transl[0]); free(h->transl[1]);
- free(h->mem.s);
- free(h);
-}
-
-bcf_hdr_t *bcf_hdr_read(htsFile *hfp)
-{
- if (hfp->format.format == vcf)
- return vcf_hdr_read(hfp);
-
- BGZF *fp = hfp->fp.bgzf;
- uint8_t magic[5];
- bcf_hdr_t *h;
- h = bcf_hdr_init("r");
- if ( bgzf_read(fp, magic, 5)<0 )
- {
- fprintf(stderr,"[%s:%d %s] Failed to read the header (reading BCF in text mode?)\n", __FILE__,__LINE__,__FUNCTION__);
- return NULL;
- }
- if (strncmp((char*)magic, "BCF\2\2", 5) != 0)
- {
- if (!strncmp((char*)magic, "BCF", 3))
- fprintf(stderr,"[%s:%d %s] invalid BCF2 magic string: only BCFv2.2 is supported.\n", __FILE__,__LINE__,__FUNCTION__);
- else if (hts_verbose >= 2)
- fprintf(stderr, "[E::%s] invalid BCF2 magic string\n", __func__);
- bcf_hdr_destroy(h);
- return 0;
- }
- int hlen;
- char *htxt;
- bgzf_read(fp, &hlen, 4);
- htxt = (char*)malloc(hlen);
- bgzf_read(fp, htxt, hlen);
- bcf_hdr_parse(h, htxt);
- free(htxt);
- return h;
-}
-
-int bcf_hdr_write(htsFile *hfp, bcf_hdr_t *h)
-{
- if ( h->dirty ) bcf_hdr_sync(h);
- if (hfp->format.format == vcf || hfp->format.format == text_format)
- return vcf_hdr_write(hfp, h);
-
- int hlen;
- char *htxt = bcf_hdr_fmt_text(h, 1, &hlen);
- hlen++; // include the \0 byte
-
- BGZF *fp = hfp->fp.bgzf;
- if ( bgzf_write(fp, "BCF\2\2", 5) !=5 ) return -1;
- if ( bgzf_write(fp, &hlen, 4) !=4 ) return -1;
- if ( bgzf_write(fp, htxt, hlen) != hlen ) return -1;
-
- free(htxt);
- return 0;
-}
-
-/********************
- *** BCF site I/O ***
- ********************/
-
-bcf1_t *bcf_init1()
-{
- bcf1_t *v;
- v = (bcf1_t*)calloc(1, sizeof(bcf1_t));
- return v;
-}
-
-void bcf_clear(bcf1_t *v)
-{
- int i;
- for (i=0; i<v->d.m_info; i++)
- {
- if ( v->d.info[i].vptr_free )
- {
- free(v->d.info[i].vptr - v->d.info[i].vptr_off);
- v->d.info[i].vptr_free = 0;
- }
- }
- for (i=0; i<v->d.m_fmt; i++)
- {
- if ( v->d.fmt[i].p_free )
- {
- free(v->d.fmt[i].p - v->d.fmt[i].p_off);
- v->d.fmt[i].p_free = 0;
- }
- }
- v->rid = v->pos = v->rlen = v->unpacked = 0;
- bcf_float_set_missing(v->qual);
- v->n_info = v->n_allele = v->n_fmt = v->n_sample = 0;
- v->shared.l = v->indiv.l = 0;
- v->d.var_type = -1;
- v->d.shared_dirty = 0;
- v->d.indiv_dirty = 0;
- v->d.n_flt = 0;
- v->errcode = 0;
- if (v->d.m_als) v->d.als[0] = 0;
- if (v->d.m_id) v->d.id[0] = 0;
-}
-
-void bcf_empty1(bcf1_t *v)
-{
- bcf_clear1(v);
- free(v->d.id);
- free(v->d.als);
- free(v->d.allele); free(v->d.flt); free(v->d.info); free(v->d.fmt);
- if (v->d.var ) free(v->d.var);
- free(v->shared.s); free(v->indiv.s);
-}
-
-void bcf_destroy1(bcf1_t *v)
-{
- bcf_empty1(v);
- free(v);
-}
-
-static inline int bcf_read1_core(BGZF *fp, bcf1_t *v)
-{
- uint32_t x[8];
- int ret;
- if ((ret = bgzf_read(fp, x, 32)) != 32) {
- if (ret == 0) return -1;
- return -2;
- }
- bcf_clear1(v);
- x[0] -= 24; // to exclude six 32-bit integers
- ks_resize(&v->shared, x[0]);
- ks_resize(&v->indiv, x[1]);
- memcpy(v, x + 2, 16);
- v->n_allele = x[6]>>16; v->n_info = x[6]&0xffff;
- v->n_fmt = x[7]>>24; v->n_sample = x[7]&0xffffff;
- v->shared.l = x[0], v->indiv.l = x[1];
-
- // silent fix of broken BCFs produced by earlier versions of bcf_subset, prior to and including bd6ed8b4
- if ( (!v->indiv.l || !v->n_sample) && v->n_fmt ) v->n_fmt = 0;
-
- bgzf_read(fp, v->shared.s, v->shared.l);
- bgzf_read(fp, v->indiv.s, v->indiv.l);
- return 0;
-}
-
-#define bit_array_size(n) ((n)/8+1)
-#define bit_array_set(a,i) ((a)[(i)/8] |= 1 << ((i)%8))
-#define bit_array_clear(a,i) ((a)[(i)/8] &= ~(1 << ((i)%8)))
-#define bit_array_test(a,i) ((a)[(i)/8] & (1 << ((i)%8)))
-
-static inline uint8_t *bcf_unpack_fmt_core1(uint8_t *ptr, int n_sample, bcf_fmt_t *fmt);
-int bcf_subset_format(const bcf_hdr_t *hdr, bcf1_t *rec)
-{
- if ( !hdr->keep_samples ) return 0;
- if ( !bcf_hdr_nsamples(hdr) )
- {
- rec->indiv.l = rec->n_sample = 0;
- return 0;
- }
-
- int i, j;
- uint8_t *ptr = (uint8_t*)rec->indiv.s, *dst = NULL, *src;
- bcf_dec_t *dec = &rec->d;
- hts_expand(bcf_fmt_t, rec->n_fmt, dec->m_fmt, dec->fmt);
- for (i=0; i<dec->m_fmt; ++i) dec->fmt[i].p_free = 0;
-
- for (i=0; i<rec->n_fmt; i++)
- {
- ptr = bcf_unpack_fmt_core1(ptr, rec->n_sample, &dec->fmt[i]);
- src = dec->fmt[i].p - dec->fmt[i].size;
- if ( dst )
- {
- memmove(dec->fmt[i-1].p + dec->fmt[i-1].p_len, dec->fmt[i].p - dec->fmt[i].p_off, dec->fmt[i].p_off);
- dec->fmt[i].p = dec->fmt[i-1].p + dec->fmt[i-1].p_len + dec->fmt[i].p_off;
- }
- dst = dec->fmt[i].p;
- for (j=0; j<hdr->nsamples_ori; j++)
- {
- src += dec->fmt[i].size;
- if ( !bit_array_test(hdr->keep_samples,j) ) continue;
- memmove(dst, src, dec->fmt[i].size);
- dst += dec->fmt[i].size;
- }
- rec->indiv.l -= dec->fmt[i].p_len - (dst - dec->fmt[i].p);
- dec->fmt[i].p_len = dst - dec->fmt[i].p;
- }
- rec->unpacked |= BCF_UN_FMT;
-
- rec->n_sample = bcf_hdr_nsamples(hdr);
- return 0;
-}
-
-int bcf_read(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v)
-{
- if (fp->format.format == vcf) return vcf_read(fp,h,v);
- int ret = bcf_read1_core(fp->fp.bgzf, v);
- if ( ret!=0 || !h->keep_samples ) return ret;
- return bcf_subset_format(h,v);
-}
-
-int bcf_readrec(BGZF *fp, void *null, void *vv, int *tid, int *beg, int *end)
-{
- bcf1_t *v = (bcf1_t *) vv;
- int ret;
- if ((ret = bcf_read1_core(fp, v)) >= 0)
- *tid = v->rid, *beg = v->pos, *end = v->pos + v->rlen;
- return ret;
-}
-
-static inline void bcf1_sync_id(bcf1_t *line, kstring_t *str)
-{
- // single typed string
- if ( line->d.id && strcmp(line->d.id, ".") ) bcf_enc_vchar(str, strlen(line->d.id), line->d.id);
- else bcf_enc_size(str, 0, BCF_BT_CHAR);
-}
-static inline void bcf1_sync_alleles(bcf1_t *line, kstring_t *str)
-{
- // list of typed strings
- int i;
- for (i=0; i<line->n_allele; i++)
- bcf_enc_vchar(str, strlen(line->d.allele[i]), line->d.allele[i]);
- if ( !line->rlen && line->n_allele ) line->rlen = strlen(line->d.allele[0]);
-}
-static inline void bcf1_sync_filter(bcf1_t *line, kstring_t *str)
-{
- // typed vector of integers
- if ( line->d.n_flt ) bcf_enc_vint(str, line->d.n_flt, line->d.flt, -1);
- else bcf_enc_vint(str, 0, 0, -1);
-}
-
-static inline void bcf1_sync_info(bcf1_t *line, kstring_t *str)
-{
- // pairs of typed vectors
- int i, irm = -1;
- for (i=0; i<line->n_info; i++)
- {
- bcf_info_t *info = &line->d.info[i];
- if ( !info->vptr )
- {
- // marked for removal
- if ( irm < 0 ) irm = i;
- continue;
- }
- kputsn_(info->vptr - info->vptr_off, info->vptr_len + info->vptr_off, str);
- if ( irm >=0 )
- {
- bcf_info_t tmp = line->d.info[irm]; line->d.info[irm] = line->d.info[i]; line->d.info[i] = tmp;
- while ( irm<=i && line->d.info[irm].vptr ) irm++;
- }
- }
- if ( irm>=0 ) line->n_info = irm;
-}
-
-static int bcf1_sync(bcf1_t *line)
-{
- char *shared_ori = line->shared.s;
- size_t prev_len;
-
- kstring_t tmp = {0,0,0};
- if ( !line->shared.l )
- {
- // New line created via API, BCF data blocks do not exist. Get it ready for BCF output
- tmp = line->shared;
- bcf1_sync_id(line, &tmp);
- line->unpack_size[0] = tmp.l; prev_len = tmp.l;
-
- bcf1_sync_alleles(line, &tmp);
- line->unpack_size[1] = tmp.l - prev_len; prev_len = tmp.l;
-
- bcf1_sync_filter(line, &tmp);
- line->unpack_size[2] = tmp.l - prev_len;
-
- bcf1_sync_info(line, &tmp);
- line->shared = tmp;
- }
- else if ( line->d.shared_dirty )
- {
- // The line was edited, update the BCF data block, ptr_ori points
- // to the original unchanged BCF data.
- uint8_t *ptr_ori = (uint8_t *) line->shared.s;
-
- assert( line->unpacked & BCF_UN_STR );
-
- // ID: single typed string
- if ( line->d.shared_dirty & BCF1_DIRTY_ID )
- bcf1_sync_id(line, &tmp);
- else
- kputsn_(ptr_ori, line->unpack_size[0], &tmp);
- ptr_ori += line->unpack_size[0];
- line->unpack_size[0] = tmp.l; prev_len = tmp.l;
-
- // REF+ALT: list of typed strings
- if ( line->d.shared_dirty & BCF1_DIRTY_ALS )
- bcf1_sync_alleles(line, &tmp);
- else
- {
- kputsn_(ptr_ori, line->unpack_size[1], &tmp);
- if ( !line->rlen && line->n_allele ) line->rlen = strlen(line->d.allele[0]);
- }
- ptr_ori += line->unpack_size[1];
- line->unpack_size[1] = tmp.l - prev_len; prev_len = tmp.l;
-
- if ( line->unpacked & BCF_UN_FLT )
- {
- // FILTER: typed vector of integers
- if ( line->d.shared_dirty & BCF1_DIRTY_FLT )
- bcf1_sync_filter(line, &tmp);
- else if ( line->d.n_flt )
- kputsn_(ptr_ori, line->unpack_size[2], &tmp);
- else
- bcf_enc_vint(&tmp, 0, 0, -1);
- ptr_ori += line->unpack_size[2];
- line->unpack_size[2] = tmp.l - prev_len;
-
- if ( line->unpacked & BCF_UN_INFO )
- {
- // INFO: pairs of typed vectors
- if ( line->d.shared_dirty & BCF1_DIRTY_INF )
- {
- bcf1_sync_info(line, &tmp);
- ptr_ori = (uint8_t*)line->shared.s + line->shared.l;
- }
- }
- }
-
- int size = line->shared.l - (size_t)ptr_ori + (size_t)line->shared.s;
- if ( size ) kputsn_(ptr_ori, size, &tmp);
-
- free(line->shared.s);
- line->shared = tmp;
- }
- if ( line->shared.s != shared_ori && line->unpacked & BCF_UN_INFO )
- {
- // Reallocated line->shared.s block invalidated line->d.info[].vptr pointers
- size_t off_new = line->unpack_size[0] + line->unpack_size[1] + line->unpack_size[2];
- int i;
- for (i=0; i<line->n_info; i++)
- {
- uint8_t *vptr_free = line->d.info[i].vptr_free ? line->d.info[i].vptr - line->d.info[i].vptr_off : NULL;
- line->d.info[i].vptr = (uint8_t*) line->shared.s + off_new + line->d.info[i].vptr_off;
- off_new += line->d.info[i].vptr_len + line->d.info[i].vptr_off;
- if ( vptr_free )
- {
- free(vptr_free);
- line->d.info[i].vptr_free = 0;
- }
- }
- }
-
- if ( line->n_sample && line->n_fmt && (!line->indiv.l || line->d.indiv_dirty) )
- {
- // The genotype fields changed or are not present
- tmp.l = tmp.m = 0; tmp.s = NULL;
- int i, irm = -1;
- for (i=0; i<line->n_fmt; i++)
- {
- bcf_fmt_t *fmt = &line->d.fmt[i];
- if ( !fmt->p )
- {
- // marked for removal
- if ( irm < 0 ) irm = i;
- continue;
- }
- kputsn_(fmt->p - fmt->p_off, fmt->p_len + fmt->p_off, &tmp);
- if ( irm >=0 )
- {
- bcf_fmt_t tfmt = line->d.fmt[irm]; line->d.fmt[irm] = line->d.fmt[i]; line->d.fmt[i] = tfmt;
- while ( irm<=i && line->d.fmt[irm].p ) irm++;
- }
-
- }
- if ( irm>=0 ) line->n_fmt = irm;
- free(line->indiv.s);
- line->indiv = tmp;
-
- // Reallocated line->indiv.s block invalidated line->d.fmt[].p pointers
- size_t off_new = 0;
- for (i=0; i<line->n_fmt; i++)
- {
- uint8_t *p_free = line->d.fmt[i].p_free ? line->d.fmt[i].p - line->d.fmt[i].p_off : NULL;
- line->d.fmt[i].p = (uint8_t*) line->indiv.s + off_new + line->d.fmt[i].p_off;
- off_new += line->d.fmt[i].p_len + line->d.fmt[i].p_off;
- if ( p_free )
- {
- free(p_free);
- line->d.fmt[i].p_free = 0;
- }
- }
- }
- if ( !line->n_sample ) line->n_fmt = 0;
- line->d.shared_dirty = line->d.indiv_dirty = 0;
- return 0;
-}
-
-bcf1_t *bcf_copy(bcf1_t *dst, bcf1_t *src)
-{
- bcf1_sync(src);
-
- bcf_clear(dst);
- dst->rid = src->rid;
- dst->pos = src->pos;
- dst->rlen = src->rlen;
- dst->qual = src->qual;
- dst->n_info = src->n_info; dst->n_allele = src->n_allele;
- dst->n_fmt = src->n_fmt; dst->n_sample = src->n_sample;
-
- dst->shared.m = dst->shared.l = src->shared.l;
- dst->shared.s = (char*) malloc(dst->shared.l);
- memcpy(dst->shared.s,src->shared.s,dst->shared.l);
-
- dst->indiv.m = dst->indiv.l = src->indiv.l;
- dst->indiv.s = (char*) malloc(dst->indiv.l);
- memcpy(dst->indiv.s,src->indiv.s,dst->indiv.l);
-
- return dst;
-}
-bcf1_t *bcf_dup(bcf1_t *src)
-{
- bcf1_t *out = bcf_init1();
- return bcf_copy(out, src);
-}
-
-int bcf_write(htsFile *hfp, const bcf_hdr_t *h, bcf1_t *v)
-{
- if ( h->dirty )
- {
- // we could as well call bcf_hdr_sync here, not sure
- fprintf(stderr,"FIXME: dirty header not synced\n");
- exit(1);
- }
- if ( bcf_hdr_nsamples(h)!=v->n_sample )
- {
- fprintf(stderr,"[%s:%d %s] Broken VCF record, the number of columns at %s:%d does not match the number of samples (%d vs %d).\n",
- __FILE__,__LINE__,__FUNCTION__,bcf_seqname(h,v),v->pos+1, v->n_sample,bcf_hdr_nsamples(h));
- return -1;
- }
-
- if ( hfp->format.format == vcf || hfp->format.format == text_format )
- return vcf_write(hfp,h,v);
-
- if ( v->errcode )
- {
- // vcf_parse1() encountered a new contig or tag, undeclared in the
- // header. At this point, the header must have been printed,
- // proceeding would lead to a broken BCF file. Errors must be checked
- // and cleared by the caller before we can proceed.
- fprintf(stderr,"[%s:%d %s] Unchecked error (%d), exiting.\n", __FILE__,__LINE__,__FUNCTION__,v->errcode);
- exit(1);
- }
- bcf1_sync(v); // check if the BCF record was modified
-
- BGZF *fp = hfp->fp.bgzf;
- uint32_t x[8];
- x[0] = v->shared.l + 24; // to include six 32-bit integers
- x[1] = v->indiv.l;
- memcpy(x + 2, v, 16);
- x[6] = (uint32_t)v->n_allele<<16 | v->n_info;
- x[7] = (uint32_t)v->n_fmt<<24 | v->n_sample;
- if ( bgzf_write(fp, x, 32) != 32 ) return -1;
- if ( bgzf_write(fp, v->shared.s, v->shared.l) != v->shared.l ) return -1;
- if ( bgzf_write(fp, v->indiv.s, v->indiv.l) != v->indiv.l ) return -1;
- return 0;
-}
-
-/**********************
- *** VCF header I/O ***
- **********************/
-
-bcf_hdr_t *vcf_hdr_read(htsFile *fp)
-{
- kstring_t txt, *s = &fp->line;
- bcf_hdr_t *h;
- h = bcf_hdr_init("r");
- txt.l = txt.m = 0; txt.s = 0;
- while (hts_getline(fp, KS_SEP_LINE, s) >= 0) {
- if (s->l == 0) continue;
- if (s->s[0] != '#') {
- if (hts_verbose >= 2)
- fprintf(stderr, "[E::%s] no sample line\n", __func__);
- free(txt.s);
- bcf_hdr_destroy(h);
- return 0;
- }
- if (s->s[1] != '#' && fp->fn_aux) { // insert contigs here
- int dret;
- gzFile f;
- kstream_t *ks;
- kstring_t tmp;
- tmp.l = tmp.m = 0; tmp.s = 0;
- f = gzopen(fp->fn_aux, "r");
- ks = ks_init(f);
- while (ks_getuntil(ks, 0, &tmp, &dret) >= 0) {
- int c;
- kputs("##contig=<ID=", &txt); kputs(tmp.s, &txt);
- ks_getuntil(ks, 0, &tmp, &dret);
- kputs(",length=", &txt); kputw(atol(tmp.s), &txt);
- kputsn(">\n", 2, &txt);
- if (dret != '\n')
- while ((c = ks_getc(ks)) != '\n' && c != -1); // skip the rest of the line
- }
- free(tmp.s);
- ks_destroy(ks);
- gzclose(f);
- }
- kputsn(s->s, s->l, &txt);
- kputc('\n', &txt);
- if (s->s[1] != '#') break;
- }
- if ( !txt.s )
- {
- fprintf(stderr,"[%s:%d %s] Could not read the header\n", __FILE__,__LINE__,__FUNCTION__);
- return NULL;
- }
- bcf_hdr_parse(h, txt.s);
-
- // check tabix index, are all contigs listed in the header? add the missing ones
- tbx_t *idx = tbx_index_load(fp->fn);
- if ( idx )
- {
- int i, n, need_sync = 0;
- const char **names = tbx_seqnames(idx, &n);
- for (i=0; i<n; i++)
- {
- bcf_hrec_t *hrec = bcf_hdr_get_hrec(h, BCF_HL_CTG, "ID", (char*) names[i], NULL);
- if ( hrec ) continue;
- hrec = (bcf_hrec_t*) calloc(1,sizeof(bcf_hrec_t));
- hrec->key = strdup("contig");
- bcf_hrec_add_key(hrec, "ID", strlen("ID"));
- bcf_hrec_set_val(hrec, hrec->nkeys-1, (char*) names[i], strlen(names[i]), 0);
- bcf_hdr_add_hrec(h, hrec);
- need_sync = 1;
- }
- free(names);
- tbx_destroy(idx);
- if ( need_sync )
- bcf_hdr_sync(h);
- }
- free(txt.s);
- return h;
-}
-
-int bcf_hdr_set(bcf_hdr_t *hdr, const char *fname)
-{
- int i, n;
- char **lines = hts_readlines(fname, &n);
- if ( !lines ) return 1;
- for (i=0; i<n-1; i++)
- {
- int k;
- bcf_hrec_t *hrec = bcf_hdr_parse_line(hdr,lines[i],&k);
- if ( hrec ) bcf_hdr_add_hrec(hdr, hrec);
- free(lines[i]);
- }
- bcf_hdr_parse_sample_line(hdr,lines[n-1]);
- free(lines[n-1]);
- free(lines);
- bcf_hdr_sync(hdr);
- return 0;
-}
-
-static void _bcf_hrec_format(const bcf_hrec_t *hrec, int is_bcf, kstring_t *str)
-{
- if ( !hrec->value )
- {
- int j, nout = 0;
- ksprintf(str, "##%s=<", hrec->key);
- for (j=0; j<hrec->nkeys; j++)
- {
- // do not output IDX if output is VCF
- if ( !is_bcf && !strcmp("IDX",hrec->keys[j]) ) continue;
- if ( nout ) kputc(',',str);
- ksprintf(str,"%s=%s", hrec->keys[j], hrec->vals[j]);
- nout++;
- }
- ksprintf(str,">\n");
- }
- else
- ksprintf(str,"##%s=%s\n", hrec->key,hrec->value);
-}
-
-void bcf_hrec_format(const bcf_hrec_t *hrec, kstring_t *str)
-{
- _bcf_hrec_format(hrec,0,str);
-}
-char *bcf_hdr_fmt_text(const bcf_hdr_t *hdr, int is_bcf, int *len)
-{
- int i;
- kstring_t txt = {0,0,0};
- for (i=0; i<hdr->nhrec; i++)
- _bcf_hrec_format(hdr->hrec[i], is_bcf, &txt);
-
- ksprintf(&txt,"#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO");
- if ( bcf_hdr_nsamples(hdr) )
- {
- ksprintf(&txt,"\tFORMAT");
- for (i=0; i<bcf_hdr_nsamples(hdr); i++)
- ksprintf(&txt,"\t%s", hdr->samples[i]);
- }
- ksprintf(&txt,"\n");
-
- if ( len ) *len = txt.l;
- return txt.s;
-}
-
-const char **bcf_hdr_seqnames(const bcf_hdr_t *h, int *n)
-{
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_CTG];
- int tid, m = kh_size(d);
- const char **names = (const char**) calloc(m,sizeof(const char*));
- khint_t k;
- for (k=kh_begin(d); k<kh_end(d); k++)
- {
- if ( !kh_exist(d,k) ) continue;
- tid = kh_val(d,k).id;
- assert( tid<m );
- names[tid] = kh_key(d,k);
- }
- // sanity check: there should be no gaps
- for (tid=0; tid<m; tid++)
- assert(names[tid]);
- *n = m;
- return names;
-}
-
-int vcf_hdr_write(htsFile *fp, const bcf_hdr_t *h)
-{
- int hlen;
- char *htxt = bcf_hdr_fmt_text(h, 0, &hlen);
- while (hlen && htxt[hlen-1] == 0) --hlen; // kill trailing zeros
- int ret;
- if ( fp->format.compression!=no_compression )
- ret = bgzf_write(fp->fp.bgzf, htxt, hlen);
- else
- ret = hwrite(fp->fp.hfile, htxt, hlen);
- free(htxt);
- return ret<0 ? -1 : 0;
-}
-
-/***********************
- *** Typed value I/O ***
- ***********************/
-
-void bcf_enc_vint(kstring_t *s, int n, int32_t *a, int wsize)
-{
- int32_t max = INT32_MIN + 1, min = INT32_MAX;
- int i;
- if (n == 0) bcf_enc_size(s, 0, BCF_BT_NULL);
- else if (n == 1) bcf_enc_int1(s, a[0]);
- else {
- if (wsize <= 0) wsize = n;
- for (i = 0; i < n; ++i) {
- if (a[i] == bcf_int32_missing || a[i] == bcf_int32_vector_end ) continue;
- if (max < a[i]) max = a[i];
- if (min > a[i]) min = a[i];
- }
- if (max <= INT8_MAX && min > bcf_int8_vector_end) {
- bcf_enc_size(s, wsize, BCF_BT_INT8);
- for (i = 0; i < n; ++i)
- if ( a[i]==bcf_int32_vector_end ) kputc(bcf_int8_vector_end, s);
- else if ( a[i]==bcf_int32_missing ) kputc(bcf_int8_missing, s);
- else kputc(a[i], s);
- } else if (max <= INT16_MAX && min > bcf_int16_vector_end) {
- bcf_enc_size(s, wsize, BCF_BT_INT16);
- for (i = 0; i < n; ++i)
- {
- int16_t x;
- if ( a[i]==bcf_int32_vector_end ) x = bcf_int16_vector_end;
- else if ( a[i]==bcf_int32_missing ) x = bcf_int16_missing;
- else x = a[i];
- kputsn((char*)&x, 2, s);
- }
- } else {
- bcf_enc_size(s, wsize, BCF_BT_INT32);
- for (i = 0; i < n; ++i) {
- int32_t x = a[i];
- kputsn((char*)&x, 4, s);
- }
- }
- }
-}
-
-void bcf_enc_vfloat(kstring_t *s, int n, float *a)
-{
- bcf_enc_size(s, n, BCF_BT_FLOAT);
- kputsn((char*)a, n << 2, s);
-}
-
-void bcf_enc_vchar(kstring_t *s, int l, const char *a)
-{
- bcf_enc_size(s, l, BCF_BT_CHAR);
- kputsn(a, l, s);
-}
-
-void bcf_fmt_array(kstring_t *s, int n, int type, void *data)
-{
- int j = 0;
- if (n == 0) {
- kputc('.', s);
- return;
- }
- if (type == BCF_BT_CHAR)
- {
- char *p = (char*)data;
- for (j = 0; j < n && *p; ++j, ++p)
- {
- if ( *p==bcf_str_missing ) kputc('.', s);
- else kputc(*p, s);
- }
- }
- else
- {
- #define BRANCH(type_t, is_missing, is_vector_end, kprint) { \
- type_t *p = (type_t *) data; \
- for (j=0; j<n; j++) \
- { \
- if ( is_vector_end ) break; \
- if ( j ) kputc(',', s); \
- if ( is_missing ) kputc('.', s); \
- else kprint; \
- } \
- }
- switch (type) {
- case BCF_BT_INT8: BRANCH(int8_t, p[j]==bcf_int8_missing, p[j]==bcf_int8_vector_end, kputw(p[j], s)); break;
- case BCF_BT_INT16: BRANCH(int16_t, p[j]==bcf_int16_missing, p[j]==bcf_int16_vector_end, kputw(p[j], s)); break;
- case BCF_BT_INT32: BRANCH(int32_t, p[j]==bcf_int32_missing, p[j]==bcf_int32_vector_end, kputw(p[j], s)); break;
- case BCF_BT_FLOAT: BRANCH(float, bcf_float_is_missing(p[j]), bcf_float_is_vector_end(p[j]), ksprintf(s, "%g", p[j])); break;
- default: fprintf(stderr,"todo: type %d\n", type); exit(1); break;
- }
- #undef BRANCH
- }
-}
-
-uint8_t *bcf_fmt_sized_array(kstring_t *s, uint8_t *ptr)
-{
- int x, type;
- x = bcf_dec_size(ptr, &ptr, &type);
- bcf_fmt_array(s, x, type, ptr);
- return ptr + (x << bcf_type_shift[type]);
-}
-
-/********************
- *** VCF site I/O ***
- ********************/
-
-typedef struct {
- int key, max_m, size, offset;
- uint32_t is_gt:1, max_g:15, max_l:16;
- uint32_t y;
- uint8_t *buf;
-} fmt_aux_t;
-
-static inline void align_mem(kstring_t *s)
-{
- if (s->l&7) {
- uint64_t zero = 0;
- int l = ((s->l + 7)>>3<<3) - s->l;
- kputsn((char*)&zero, l, s);
- }
-}
-
-// p,q is the start and the end of the FORMAT field
-int _vcf_parse_format(kstring_t *s, const bcf_hdr_t *h, bcf1_t *v, char *p, char *q)
-{
- if ( !bcf_hdr_nsamples(h) ) return 0;
-
- char *r, *t;
- int j, l, m, g;
- khint_t k;
- ks_tokaux_t aux1;
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_ID];
- kstring_t *mem = (kstring_t*)&h->mem;
- mem->l = 0;
-
- // count the number of format fields
- for (r = p, v->n_fmt = 1; *r; ++r)
- if (*r == ':') ++v->n_fmt;
- char *end = s->s + s->l;
- if ( q>=end )
- {
- fprintf(stderr,"[%s:%d %s] Error: FORMAT column with no sample columns starting at %s:%d\n", __FILE__,__LINE__,__FUNCTION__,s->s,v->pos+1);
- return -1;
- }
-
- fmt_aux_t *fmt = (fmt_aux_t*)alloca(v->n_fmt * sizeof(fmt_aux_t));
- // get format information from the dictionary
- for (j = 0, t = kstrtok(p, ":", &aux1); t; t = kstrtok(0, 0, &aux1), ++j) {
- *(char*)aux1.p = 0;
- k = kh_get(vdict, d, t);
- if (k == kh_end(d) || kh_val(d, k).info[BCF_HL_FMT] == 15) {
- fprintf(stderr, "[W::%s] FORMAT '%s' is not defined in the header, assuming Type=String\n", __func__, t);
- kstring_t tmp = {0,0,0};
- int l;
- ksprintf(&tmp, "##FORMAT=<ID=%s,Number=1,Type=String,Description=\"Dummy\">", t);
- bcf_hrec_t *hrec = bcf_hdr_parse_line(h,tmp.s,&l);
- free(tmp.s);
- if ( bcf_hdr_add_hrec((bcf_hdr_t*)h, hrec) ) bcf_hdr_sync((bcf_hdr_t*)h);
- k = kh_get(vdict, d, t);
- v->errcode = BCF_ERR_TAG_UNDEF;
- }
- fmt[j].max_l = fmt[j].max_m = fmt[j].max_g = 0;
- fmt[j].key = kh_val(d, k).id;
- fmt[j].is_gt = !strcmp(t, "GT");
- fmt[j].y = h->id[0][fmt[j].key].val->info[BCF_HL_FMT];
- }
- // compute max
- int n_sample_ori = -1;
- r = q + 1; // r: position in the format string
- m = l = g = 1, v->n_sample = 0; // m: max vector size, l: max field len, g: max number of alleles
- while ( r<end )
- {
- // can we skip some samples?
- if ( h->keep_samples )
- {
- n_sample_ori++;
- if ( !bit_array_test(h->keep_samples,n_sample_ori) )
- {
- while ( *r!='\t' && r<end ) r++;
- if ( *r=='\t' ) { *r = 0; r++; }
- continue;
- }
- }
-
- // collect fmt stats: max vector size, length, number of alleles
- j = 0; // j-th format field
- for (;;)
- {
- if ( *r == '\t' ) *r = 0;
- if ( *r == ':' || !*r ) // end of field or end of sample
- {
- if (fmt[j].max_m < m) fmt[j].max_m = m;
- if (fmt[j].max_l < l - 1) fmt[j].max_l = l - 1;
- if (fmt[j].is_gt && fmt[j].max_g < g) fmt[j].max_g = g;
- l = 0, m = g = 1;
- if ( *r==':' )
- {
- j++;
- if ( j>=v->n_fmt )
- {
- fprintf(stderr,"Incorrect number of FORMAT fields at %s:%d\n", h->id[BCF_DT_CTG][v->rid].key,v->pos+1);
- exit(1);
- }
- }
- else break;
- }
- else if ( *r== ',' ) m++;
- else if ( fmt[j].is_gt && (*r == '|' || *r == '/') ) g++;
- if ( r>=end ) break;
- r++; l++;
- }
- v->n_sample++;
- if ( v->n_sample == bcf_hdr_nsamples(h) ) break;
- r++;
- }
-
- // allocate memory for arrays
- for (j = 0; j < v->n_fmt; ++j) {
- fmt_aux_t *f = &fmt[j];
- if ( !f->max_m ) f->max_m = 1; // omitted trailing format field
- if ((f->y>>4&0xf) == BCF_HT_STR) {
- f->size = f->is_gt? f->max_g << 2 : f->max_l;
- } else if ((f->y>>4&0xf) == BCF_HT_REAL || (f->y>>4&0xf) == BCF_HT_INT) {
- f->size = f->max_m << 2;
- } else
- {
- fprintf(stderr, "[E::%s] the format type %d currently not supported\n", __func__, f->y>>4&0xf);
- abort(); // I do not know how to do with Flag in the genotype fields
- }
- align_mem(mem);
- f->offset = mem->l;
- ks_resize(mem, mem->l + v->n_sample * f->size);
- mem->l += v->n_sample * f->size;
- }
- for (j = 0; j < v->n_fmt; ++j)
- fmt[j].buf = (uint8_t*)mem->s + fmt[j].offset;
- // fill the sample fields; at beginning of the loop, t points to the first char of a format
- n_sample_ori = -1;
- t = q + 1; m = 0; // m: sample id
- while ( t<end )
- {
- // can we skip some samples?
- if ( h->keep_samples )
- {
- n_sample_ori++;
- if ( !bit_array_test(h->keep_samples,n_sample_ori) )
- {
- while ( *t && t<end ) t++;
- t++;
- continue;
- }
- }
- if ( m == bcf_hdr_nsamples(h) ) break;
-
- j = 0; // j-th format field, m-th sample
- while ( *t )
- {
- fmt_aux_t *z = &fmt[j];
- if ((z->y>>4&0xf) == BCF_HT_STR) {
- if (z->is_gt) { // genotypes
- int32_t is_phased = 0, *x = (int32_t*)(z->buf + z->size * m);
- for (l = 0;; ++t) {
- if (*t == '.') ++t, x[l++] = is_phased;
- else x[l++] = (strtol(t, &t, 10) + 1) << 1 | is_phased;
-#if THOROUGH_SANITY_CHECKS
- assert( 0 ); // success of strtol,strtod not checked
-#endif
- is_phased = (*t == '|');
- if (*t == ':' || *t == 0) break;
- }
- if ( !l ) x[l++] = 0; // An empty field, insert missing value
- for (; l < z->size>>2; ++l) x[l] = bcf_int32_vector_end;
- } else {
- char *x = (char*)z->buf + z->size * m;
- for (r = t, l = 0; *t != ':' && *t; ++t) x[l++] = *t;
- for (; l < z->size; ++l) x[l] = 0;
- }
- } else if ((z->y>>4&0xf) == BCF_HT_INT) {
- int32_t *x = (int32_t*)(z->buf + z->size * m);
- for (l = 0;; ++t) {
- if (*t == '.') x[l++] = bcf_int32_missing, ++t; // ++t to skip "."
- else x[l++] = strtol(t, &t, 10);
- if (*t == ':' || *t == 0) break;
- }
- if ( !l ) x[l++] = bcf_int32_missing;
- for (; l < z->size>>2; ++l) x[l] = bcf_int32_vector_end;
- } else if ((z->y>>4&0xf) == BCF_HT_REAL) {
- float *x = (float*)(z->buf + z->size * m);
- for (l = 0;; ++t) {
- if (*t == '.' && !isdigit(t[1])) bcf_float_set_missing(x[l++]), ++t; // ++t to skip "."
- else x[l++] = strtod(t, &t);
- if (*t == ':' || *t == 0) break;
- }
- if ( !l ) bcf_float_set_missing(x[l++]); // An empty field, insert missing value
- for (; l < z->size>>2; ++l) bcf_float_set_vector_end(x[l]);
- } else abort();
- if (*t == 0) {
- for (++j; j < v->n_fmt; ++j) { // fill end-of-vector values
- z = &fmt[j];
- if ((z->y>>4&0xf) == BCF_HT_STR) {
- if (z->is_gt) {
- int32_t *x = (int32_t*)(z->buf + z->size * m);
- x[0] = bcf_int32_missing;
- for (l = 1; l < z->size>>2; ++l) x[l] = bcf_int32_vector_end;
- } else {
- char *x = (char*)z->buf + z->size * m;
- if ( z->size ) x[0] = '.';
- for (l = 1; l < z->size; ++l) x[l] = 0;
- }
- } else if ((z->y>>4&0xf) == BCF_HT_INT) {
- int32_t *x = (int32_t*)(z->buf + z->size * m);
- x[0] = bcf_int32_missing;
- for (l = 1; l < z->size>>2; ++l) x[l] = bcf_int32_vector_end;
- } else if ((z->y>>4&0xf) == BCF_HT_REAL) {
- float *x = (float*)(z->buf + z->size * m);
- bcf_float_set_missing(x[0]);
- for (l = 1; l < z->size>>2; ++l) bcf_float_set_vector_end(x[l]);
- }
- }
- break;
- }
- else
- {
- if (*t == ':') ++j;
- t++;
- }
- }
- m++; t++;
- }
-
- // write individual genotype information
- kstring_t *str = &v->indiv;
- int i;
- if (v->n_sample > 0) {
- for (i = 0; i < v->n_fmt; ++i) {
- fmt_aux_t *z = &fmt[i];
- bcf_enc_int1(str, z->key);
- if ((z->y>>4&0xf) == BCF_HT_STR && !z->is_gt) {
- bcf_enc_size(str, z->size, BCF_BT_CHAR);
- kputsn((char*)z->buf, z->size * v->n_sample, str);
- } else if ((z->y>>4&0xf) == BCF_HT_INT || z->is_gt) {
- bcf_enc_vint(str, (z->size>>2) * v->n_sample, (int32_t*)z->buf, z->size>>2);
- } else {
- bcf_enc_size(str, z->size>>2, BCF_BT_FLOAT);
- kputsn((char*)z->buf, z->size * v->n_sample, str);
- }
- }
- }
-
- if ( v->n_sample!=bcf_hdr_nsamples(h) )
- {
- fprintf(stderr,"[%s:%d %s] Number of columns at %s:%d does not match the number of samples (%d vs %d).\n",
- __FILE__,__LINE__,__FUNCTION__,bcf_seqname(h,v),v->pos+1, v->n_sample,bcf_hdr_nsamples(h));
- v->errcode |= BCF_ERR_NCOLS;
- return -1;
- }
-
- return 0;
-}
-
-int vcf_parse(kstring_t *s, const bcf_hdr_t *h, bcf1_t *v)
-{
- int i = 0;
- char *p, *q, *r, *t;
- kstring_t *str;
- khint_t k;
- ks_tokaux_t aux;
-
- bcf_clear1(v);
- str = &v->shared;
- memset(&aux, 0, sizeof(ks_tokaux_t));
- for (p = kstrtok(s->s, "\t", &aux), i = 0; p; p = kstrtok(0, 0, &aux), ++i) {
- q = (char*)aux.p;
- *q = 0;
- if (i == 0) { // CHROM
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_CTG];
- k = kh_get(vdict, d, p);
- if (k == kh_end(d))
- {
- // Simple error recovery for chromosomes not defined in the header. It will not help when VCF header has
- // been already printed, but will enable tools like vcfcheck to proceed.
- fprintf(stderr, "[W::%s] contig '%s' is not defined in the header. (Quick workaround: index the file with tabix.)\n", __func__, p);
- kstring_t tmp = {0,0,0};
- int l;
- ksprintf(&tmp, "##contig=<ID=%s>", p);
- bcf_hrec_t *hrec = bcf_hdr_parse_line(h,tmp.s,&l);
- free(tmp.s);
- if ( bcf_hdr_add_hrec((bcf_hdr_t*)h, hrec) ) bcf_hdr_sync((bcf_hdr_t*)h);
- k = kh_get(vdict, d, p);
- v->errcode = BCF_ERR_CTG_UNDEF;
- }
- v->rid = kh_val(d, k).id;
- } else if (i == 1) { // POS
- v->pos = atoi(p) - 1;
- } else if (i == 2) { // ID
- if (strcmp(p, ".")) bcf_enc_vchar(str, q - p, p);
- else bcf_enc_size(str, 0, BCF_BT_CHAR);
- } else if (i == 3) { // REF
- bcf_enc_vchar(str, q - p, p);
- v->n_allele = 1, v->rlen = q - p;
- } else if (i == 4) { // ALT
- if (strcmp(p, ".")) {
- for (r = t = p;; ++r) {
- if (*r == ',' || *r == 0) {
- bcf_enc_vchar(str, r - t, t);
- t = r + 1;
- ++v->n_allele;
- }
- if (r == q) break;
- }
- }
- } else if (i == 5) { // QUAL
- if (strcmp(p, ".")) v->qual = atof(p);
- else memcpy(&v->qual, &bcf_float_missing, 4);
- if ( v->max_unpack && !(v->max_unpack>>1) ) return 0; // BCF_UN_STR
- } else if (i == 6) { // FILTER
- if (strcmp(p, ".")) {
- int32_t *a;
- int n_flt = 1, i;
- ks_tokaux_t aux1;
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_ID];
- // count the number of filters
- if (*(q-1) == ';') *(q-1) = 0;
- for (r = p; *r; ++r)
- if (*r == ';') ++n_flt;
- a = (int32_t*)alloca(n_flt * sizeof(int32_t));
- // add filters
- for (t = kstrtok(p, ";", &aux1), i = 0; t; t = kstrtok(0, 0, &aux1)) {
- *(char*)aux1.p = 0;
- k = kh_get(vdict, d, t);
- if (k == kh_end(d))
- {
- // Simple error recovery for FILTERs not defined in the header. It will not help when VCF header has
- // been already printed, but will enable tools like vcfcheck to proceed.
- fprintf(stderr, "[W::%s] FILTER '%s' is not defined in the header\n", __func__, t);
- kstring_t tmp = {0,0,0};
- int l;
- ksprintf(&tmp, "##FILTER=<ID=%s,Description=\"Dummy\">", t);
- bcf_hrec_t *hrec = bcf_hdr_parse_line(h,tmp.s,&l);
- free(tmp.s);
- if ( bcf_hdr_add_hrec((bcf_hdr_t*)h, hrec) ) bcf_hdr_sync((bcf_hdr_t*)h);
- k = kh_get(vdict, d, t);
- v->errcode = BCF_ERR_TAG_UNDEF;
- }
- a[i++] = kh_val(d, k).id;
- }
- n_flt = i;
- bcf_enc_vint(str, n_flt, a, -1);
- } else bcf_enc_vint(str, 0, 0, -1);
- if ( v->max_unpack && !(v->max_unpack>>2) ) return 0; // BCF_UN_FLT
- } else if (i == 7) { // INFO
- char *key;
- vdict_t *d = (vdict_t*)h->dict[BCF_DT_ID];
- v->n_info = 0;
- if (strcmp(p, ".")) {
- if (*(q-1) == ';') *(q-1) = 0;
- for (r = key = p;; ++r) {
- int c;
- char *val, *end;
- if (*r != ';' && *r != '=' && *r != 0) continue;
- val = end = 0;
- c = *r; *r = 0;
- if (c == '=') {
- val = r + 1;
- for (end = val; *end != ';' && *end != 0; ++end);
- c = *end; *end = 0;
- } else end = r;
- if ( !*key ) { if (c==0) break; r = end; key = r + 1; continue; } // faulty VCF, ";;" in the INFO
- k = kh_get(vdict, d, key);
- if (k == kh_end(d) || kh_val(d, k).info[BCF_HL_INFO] == 15)
- {
- fprintf(stderr, "[W::%s] INFO '%s' is not defined in the header, assuming Type=String\n", __func__, key);
- kstring_t tmp = {0,0,0};
- int l;
- ksprintf(&tmp, "##INFO=<ID=%s,Number=1,Type=String,Description=\"Dummy\">", key);
- bcf_hrec_t *hrec = bcf_hdr_parse_line(h,tmp.s,&l);
- free(tmp.s);
- if ( bcf_hdr_add_hrec((bcf_hdr_t*)h, hrec) ) bcf_hdr_sync((bcf_hdr_t*)h);
- k = kh_get(vdict, d, key);
- v->errcode = BCF_ERR_TAG_UNDEF;
- }
- uint32_t y = kh_val(d, k).info[BCF_HL_INFO];
- ++v->n_info;
- bcf_enc_int1(str, kh_val(d, k).id);
- if (val == 0) {
- bcf_enc_size(str, 0, BCF_BT_NULL);
- } else if ((y>>4&0xf) == BCF_HT_FLAG || (y>>4&0xf) == BCF_HT_STR) { // if Flag has a value, treat it as a string
- bcf_enc_vchar(str, end - val, val);
- } else { // int/float value/array
- int i, n_val;
- char *t, *te;
- for (t = val, n_val = 1; *t; ++t) // count the number of values
- if (*t == ',') ++n_val;
- if ((y>>4&0xf) == BCF_HT_INT) {
- int32_t *z;
- z = (int32_t*)alloca(n_val * sizeof(int32_t));
- for (i = 0, t = val; i < n_val; ++i, ++t)
- {
- z[i] = strtol(t, &te, 10);
- if ( te==t ) // conversion failed
- {
- z[i] = bcf_int32_missing;
- while ( *te && *te!=',' ) te++;
- }
- t = te;
- }
- bcf_enc_vint(str, n_val, z, -1);
- if (strcmp(key, "END") == 0) v->rlen = z[0] - v->pos;
- } else if ((y>>4&0xf) == BCF_HT_REAL) {
- float *z;
- z = (float*)alloca(n_val * sizeof(float));
- for (i = 0, t = val; i < n_val; ++i, ++t)
- {
- z[i] = strtod(t, &te);
- if ( te==t ) // conversion failed
- {
- bcf_float_set_missing(z[i]);
- while ( *te && *te!=',' ) te++;
- }
- t = te;
- }
- bcf_enc_vfloat(str, n_val, z);
- }
- }
- if (c == 0) break;
- r = end;
- key = r + 1;
- }
- }
- if ( v->max_unpack && !(v->max_unpack>>3) ) return 0;
- } else if (i == 8) // FORMAT
- return _vcf_parse_format(s, h, v, p, q);
- }
- return 0;
-}
-
-int vcf_read(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v)
-{
- int ret;
- ret = hts_getline(fp, KS_SEP_LINE, &fp->line);
- if (ret < 0) return -1;
- return vcf_parse1(&fp->line, h, v);
-}
-
-static inline uint8_t *bcf_unpack_fmt_core1(uint8_t *ptr, int n_sample, bcf_fmt_t *fmt)
-{
- uint8_t *ptr_start = ptr;
- fmt->id = bcf_dec_typed_int1(ptr, &ptr);
- fmt->n = bcf_dec_size(ptr, &ptr, &fmt->type);
- fmt->size = fmt->n << bcf_type_shift[fmt->type];
- fmt->p = ptr;
- fmt->p_off = ptr - ptr_start;
- fmt->p_free = 0;
- ptr += n_sample * fmt->size;
- fmt->p_len = ptr - fmt->p;
- return ptr;
-}
-
-static inline uint8_t *bcf_unpack_info_core1(uint8_t *ptr, bcf_info_t *info)
-{
- uint8_t *ptr_start = ptr;
- info->key = bcf_dec_typed_int1(ptr, &ptr);
- info->len = bcf_dec_size(ptr, &ptr, &info->type);
- info->vptr = ptr;
- info->vptr_off = ptr - ptr_start;
- info->vptr_free = 0;
- info->v1.i = 0;
- if (info->len == 1) {
- if (info->type == BCF_BT_INT8 || info->type == BCF_BT_CHAR) info->v1.i = *(int8_t*)ptr;
- else if (info->type == BCF_BT_INT32) info->v1.i = *(int32_t*)ptr;
- else if (info->type == BCF_BT_FLOAT) info->v1.f = *(float*)ptr;
- else if (info->type == BCF_BT_INT16) info->v1.i = *(int16_t*)ptr;
- }
- ptr += info->len << bcf_type_shift[info->type];
- info->vptr_len = ptr - info->vptr;
- return ptr;
-}
-
-int bcf_unpack(bcf1_t *b, int which)
-{
- if ( !b->shared.l ) return 0; // Building a new BCF record from scratch
- uint8_t *ptr = (uint8_t*)b->shared.s, *ptr_ori;
- int *offset, i;
- bcf_dec_t *d = &b->d;
- if (which & BCF_UN_FLT) which |= BCF_UN_STR;
- if (which & BCF_UN_INFO) which |= BCF_UN_SHR;
- if ((which&BCF_UN_STR) && !(b->unpacked&BCF_UN_STR))
- {
- kstring_t tmp;
-
- // ID
- tmp.l = 0; tmp.s = d->id; tmp.m = d->m_id;
- ptr_ori = ptr;
- ptr = bcf_fmt_sized_array(&tmp, ptr);
- b->unpack_size[0] = ptr - ptr_ori;
- kputc('\0', &tmp);
- d->id = tmp.s; d->m_id = tmp.m;
-
- // REF and ALT are in a single block (d->als) and d->alleles are pointers into this block
- tmp.l = 0; tmp.s = d->als; tmp.m = d->m_als;
- offset = (int*)alloca(b->n_allele * sizeof(int));
- ptr_ori = ptr;
- for (i = 0; i < b->n_allele; ++i) {
- offset[i] = tmp.l;
- ptr = bcf_fmt_sized_array(&tmp, ptr);
- kputc('\0', &tmp);
- }
- b->unpack_size[1] = ptr - ptr_ori;
- d->als = tmp.s; d->m_als = tmp.m;
-
- hts_expand(char*, b->n_allele, d->m_allele, d->allele); // NM: hts_expand() is a macro
- for (i = 0; i < b->n_allele; ++i)
- d->allele[i] = d->als + offset[i];
- b->unpacked |= BCF_UN_STR;
- }
- if ((which&BCF_UN_FLT) && !(b->unpacked&BCF_UN_FLT)) { // FILTER
- ptr = (uint8_t*)b->shared.s + b->unpack_size[0] + b->unpack_size[1];
- ptr_ori = ptr;
- if (*ptr>>4) {
- int type;
- d->n_flt = bcf_dec_size(ptr, &ptr, &type);
- hts_expand(int, d->n_flt, d->m_flt, d->flt);
- for (i = 0; i < d->n_flt; ++i)
- d->flt[i] = bcf_dec_int1(ptr, type, &ptr);
- } else ++ptr, d->n_flt = 0;
- b->unpack_size[2] = ptr - ptr_ori;
- b->unpacked |= BCF_UN_FLT;
- }
- if ((which&BCF_UN_INFO) && !(b->unpacked&BCF_UN_INFO)) { // INFO
- ptr = (uint8_t*)b->shared.s + b->unpack_size[0] + b->unpack_size[1] + b->unpack_size[2];
- hts_expand(bcf_info_t, b->n_info, d->m_info, d->info);
- for (i = 0; i < d->m_info; ++i) d->info[i].vptr_free = 0;
- for (i = 0; i < b->n_info; ++i)
- ptr = bcf_unpack_info_core1(ptr, &d->info[i]);
- b->unpacked |= BCF_UN_INFO;
- }
- if ((which&BCF_UN_FMT) && b->n_sample && !(b->unpacked&BCF_UN_FMT)) { // FORMAT
- ptr = (uint8_t*)b->indiv.s;
- hts_expand(bcf_fmt_t, b->n_fmt, d->m_fmt, d->fmt);
- for (i = 0; i < d->m_fmt; ++i) d->fmt[i].p_free = 0;
- for (i = 0; i < b->n_fmt; ++i)
- ptr = bcf_unpack_fmt_core1(ptr, b->n_sample, &d->fmt[i]);
- b->unpacked |= BCF_UN_FMT;
- }
- return 0;
-}
-
-int vcf_format(const bcf_hdr_t *h, const bcf1_t *v, kstring_t *s)
-{
- int i;
- bcf_unpack((bcf1_t*)v, BCF_UN_ALL);
- kputs(h->id[BCF_DT_CTG][v->rid].key, s); // CHROM
- kputc('\t', s); kputw(v->pos + 1, s); // POS
- kputc('\t', s); kputs(v->d.id ? v->d.id : ".", s); // ID
- kputc('\t', s); // REF
- if (v->n_allele > 0) kputs(v->d.allele[0], s);
- else kputc('.', s);
- kputc('\t', s); // ALT
- if (v->n_allele > 1) {
- for (i = 1; i < v->n_allele; ++i) {
- if (i > 1) kputc(',', s);
- kputs(v->d.allele[i], s);
- }
- } else kputc('.', s);
- kputc('\t', s); // QUAL
- if ( bcf_float_is_missing(v->qual) ) kputc('.', s); // QUAL
- else ksprintf(s, "%g", v->qual);
- kputc('\t', s); // FILTER
- if (v->d.n_flt) {
- for (i = 0; i < v->d.n_flt; ++i) {
- if (i) kputc(';', s);
- kputs(h->id[BCF_DT_ID][v->d.flt[i]].key, s);
- }
- } else kputc('.', s);
- kputc('\t', s); // INFO
- if (v->n_info) {
- int first = 1;
- for (i = 0; i < v->n_info; ++i) {
- bcf_info_t *z = &v->d.info[i];
- if ( !z->vptr ) continue;
- if ( !first ) kputc(';', s); first = 0;
- kputs(h->id[BCF_DT_ID][z->key].key, s);
- if (z->len <= 0) continue;
- kputc('=', s);
- if (z->len == 1)
- {
- switch (z->type)
- {
- case BCF_BT_INT8: if ( z->v1.i==bcf_int8_missing ) kputc('.', s); else kputw(z->v1.i, s); break;
- case BCF_BT_INT16: if ( z->v1.i==bcf_int16_missing ) kputc('.', s); else kputw(z->v1.i, s); break;
- case BCF_BT_INT32: if ( z->v1.i==bcf_int32_missing ) kputc('.', s); else kputw(z->v1.i, s); break;
- case BCF_BT_FLOAT: if ( bcf_float_is_missing(z->v1.f) ) kputc('.', s); else ksprintf(s, "%g", z->v1.f); break;
- case BCF_BT_CHAR: kputc(z->v1.i, s); break;
- default: fprintf(stderr,"todo: type %d\n", z->type); exit(1); break;
- }
- }
- else bcf_fmt_array(s, z->len, z->type, z->vptr);
- }
- if ( first ) kputc('.', s);
- } else kputc('.', s);
- // FORMAT and individual information
- if (v->n_sample)
- {
- int i,j;
- if ( v->n_fmt)
- {
- int gt_i = -1;
- bcf_fmt_t *fmt = v->d.fmt;
- int first = 1;
- for (i = 0; i < (int)v->n_fmt; ++i) {
- if ( !fmt[i].p ) continue;
- kputc(!first ? ':' : '\t', s); first = 0;
- if ( fmt[i].id<0 ) //!bcf_hdr_idinfo_exists(h,BCF_HL_FMT,fmt[i].id) )
- {
- fprintf(stderr, "[E::%s] invalid BCF, the FORMAT tag id=%d not present in the header.\n", __func__, fmt[i].id);
- abort();
- }
- kputs(h->id[BCF_DT_ID][fmt[i].id].key, s);
- if (strcmp(h->id[BCF_DT_ID][fmt[i].id].key, "GT") == 0) gt_i = i;
- }
- if ( first ) kputs("\t.", s);
- for (j = 0; j < v->n_sample; ++j) {
- kputc('\t', s);
- first = 1;
- for (i = 0; i < (int)v->n_fmt; ++i) {
- bcf_fmt_t *f = &fmt[i];
- if ( !f->p ) continue;
- if (!first) kputc(':', s); first = 0;
- if (gt_i == i)
- bcf_format_gt(f,j,s);
- else
- bcf_fmt_array(s, f->n, f->type, f->p + j * f->size);
- }
- if ( first ) kputc('.', s);
- }
- }
- else
- for (j=0; j<=v->n_sample; j++)
- kputs("\t.", s);
- }
- kputc('\n', s);
- return 0;
-}
-
-int vcf_write_line(htsFile *fp, kstring_t *line)
-{
- int ret;
- if ( line->s[line->l-1]!='\n' ) kputc('\n',line);
- if ( fp->format.compression!=no_compression )
- ret = bgzf_write(fp->fp.bgzf, line->s, line->l);
- else
- ret = hwrite(fp->fp.hfile, line->s, line->l);
- return ret==line->l ? 0 : -1;
-}
-
-int vcf_write(htsFile *fp, const bcf_hdr_t *h, bcf1_t *v)
-{
- int ret;
- fp->line.l = 0;
- vcf_format1(h, v, &fp->line);
- if ( fp->format.compression!=no_compression )
- ret = bgzf_write(fp->fp.bgzf, fp->line.s, fp->line.l);
- else
- ret = hwrite(fp->fp.hfile, fp->line.s, fp->line.l);
- return ret==fp->line.l ? 0 : -1;
-}
-
-/************************
- * Data access routines *
- ************************/
-
-int bcf_hdr_id2int(const bcf_hdr_t *h, int which, const char *id)
-{
- khint_t k;
- vdict_t *d = (vdict_t*)h->dict[which];
- k = kh_get(vdict, d, id);
- return k == kh_end(d)? -1 : kh_val(d, k).id;
-}
-
-
-/********************
- *** BCF indexing ***
- ********************/
-
-hts_idx_t *bcf_index(htsFile *fp, int min_shift)
-{
- int n_lvls, i;
- bcf1_t *b;
- hts_idx_t *idx;
- bcf_hdr_t *h;
- int64_t max_len = 0, s;
- h = bcf_hdr_read(fp);
- if ( !h ) return NULL;
- int nids = 0;
- for (i = 0; i < h->n[BCF_DT_CTG]; ++i)
- {
- if ( !h->id[BCF_DT_CTG][i].val ) continue;
- if ( max_len < h->id[BCF_DT_CTG][i].val->info[0] ) max_len = h->id[BCF_DT_CTG][i].val->info[0];
- nids++;
- }
- if ( !max_len ) max_len = ((int64_t)1<<31) - 1; // In case contig line is broken.
- max_len += 256;
- for (n_lvls = 0, s = 1<<min_shift; max_len > s; ++n_lvls, s <<= 3);
- idx = hts_idx_init(nids, HTS_FMT_CSI, bgzf_tell(fp->fp.bgzf), min_shift, n_lvls);
- b = bcf_init1();
- while (bcf_read1(fp,h, b) >= 0) {
- int ret;
- ret = hts_idx_push(idx, b->rid, b->pos, b->pos + b->rlen, bgzf_tell(fp->fp.bgzf), 1);
- if (ret < 0)
- {
- bcf_destroy1(b);
- hts_idx_destroy(idx);
- return NULL;
- }
- }
- hts_idx_finish(idx, bgzf_tell(fp->fp.bgzf));
- bcf_destroy1(b);
- bcf_hdr_destroy(h);
- return idx;
-}
-
-int bcf_index_build(const char *fn, int min_shift)
-{
- htsFile *fp;
- hts_idx_t *idx;
- if ((fp = hts_open(fn, "rb")) == 0) return -1;
- if ( fp->format.compression!=bgzf ) { hts_close(fp); return -1; }
- idx = bcf_index(fp, min_shift);
- hts_close(fp);
- if ( !idx ) return -1;
- hts_idx_save(idx, fn, HTS_FMT_CSI);
- hts_idx_destroy(idx);
- return 0;
-}
-
-/*****************
- *** Utilities ***
- *****************/
-
-int bcf_hdr_combine(bcf_hdr_t *dst, const bcf_hdr_t *src)
-{
- int i, ndst_ori = dst->nhrec, need_sync = 0, ret = 0;
- for (i=0; i<src->nhrec; i++)
- {
- if ( src->hrec[i]->type==BCF_HL_GEN && src->hrec[i]->value )
- {
- int j;
- for (j=0; j<ndst_ori; j++)
- {
- if ( dst->hrec[j]->type!=BCF_HL_GEN ) continue;
-
- // Checking only the key part of generic lines, otherwise
- // the VCFs are too verbose. Should we perhaps add a flag
- // to bcf_hdr_combine() and make this optional?
- if ( !strcmp(src->hrec[i]->key,dst->hrec[j]->key) ) break;
- }
- if ( j>=ndst_ori )
- need_sync += bcf_hdr_add_hrec(dst, bcf_hrec_dup(src->hrec[i]));
- }
- else if ( src->hrec[i]->type==BCF_HL_STR )
- {
- // NB: we are ignoring fields without ID
- int j = bcf_hrec_find_key(src->hrec[i],"ID");
- if ( j>=0 )
- {
- bcf_hrec_t *rec = bcf_hdr_get_hrec(dst, src->hrec[i]->type, "ID", src->hrec[i]->vals[j], src->hrec[i]->key);
- if ( !rec )
- need_sync += bcf_hdr_add_hrec(dst, bcf_hrec_dup(src->hrec[i]));
- }
- }
- else
- {
- int j = bcf_hrec_find_key(src->hrec[i],"ID");
- assert( j>=0 ); // this should always be true for valid VCFs
-
- bcf_hrec_t *rec = bcf_hdr_get_hrec(dst, src->hrec[i]->type, "ID", src->hrec[i]->vals[j], NULL);
- if ( !rec )
- need_sync += bcf_hdr_add_hrec(dst, bcf_hrec_dup(src->hrec[i]));
- else if ( src->hrec[i]->type==BCF_HL_INFO || src->hrec[i]->type==BCF_HL_FMT )
- {
- // Check that both records are of the same type. The bcf_hdr_id2length
- // macro cannot be used here because dst header is not synced yet.
- vdict_t *d_src = (vdict_t*)src->dict[BCF_DT_ID];
- vdict_t *d_dst = (vdict_t*)dst->dict[BCF_DT_ID];
- khint_t k_src = kh_get(vdict, d_src, src->hrec[i]->vals[0]);
- khint_t k_dst = kh_get(vdict, d_dst, src->hrec[i]->vals[0]);
- if ( (kh_val(d_src,k_src).info[rec->type]>>8 & 0xf) != (kh_val(d_dst,k_dst).info[rec->type]>>8 & 0xf) )
- {
- fprintf(stderr,"Warning: trying to combine \"%s\" tag definitions of different lengths\n", src->hrec[i]->vals[0]);
- ret |= 1;
- }
- if ( (kh_val(d_src,k_src).info[rec->type]>>4 & 0xf) != (kh_val(d_dst,k_dst).info[rec->type]>>4 & 0xf) )
- {
- fprintf(stderr,"Warning: trying to combine \"%s\" tag definitions of different types\n", src->hrec[i]->vals[0]);
- ret |= 1;
- }
- }
- }
- }
- if ( need_sync ) bcf_hdr_sync(dst);
- return ret;
-}
-int bcf_translate(const bcf_hdr_t *dst_hdr, bcf_hdr_t *src_hdr, bcf1_t *line)
-{
- int i;
- if ( line->errcode )
- {
- fprintf(stderr,"[%s:%d %s] Unchecked error (%d), exiting.\n", __FILE__,__LINE__,__FUNCTION__,line->errcode);
- exit(1);
- }
- if ( src_hdr->ntransl==-1 ) return 0; // no need to translate, all tags have the same id
- if ( !src_hdr->ntransl ) // called for the first time, see what needs translating
- {
- int dict;
- for (dict=0; dict<2; dict++) // BCF_DT_ID and BCF_DT_CTG
- {
- src_hdr->transl[dict] = (int*) malloc(src_hdr->n[dict]*sizeof(int));
- for (i=0; i<src_hdr->n[dict]; i++)
- {
- if ( !src_hdr->id[dict][i].key || !dst_hdr->id[dict][i].key ) // gap left after removed BCF header lines
- src_hdr->transl[dict][i] = -1;
- else if ( i>=dst_hdr->n[dict] || strcmp(src_hdr->id[dict][i].key,dst_hdr->id[dict][i].key) )
- {
- src_hdr->transl[dict][i] = bcf_hdr_id2int(dst_hdr,dict,src_hdr->id[dict][i].key);
- src_hdr->ntransl++;
- }
- else
- src_hdr->transl[dict][i] = -1;
- }
- }
- if ( !src_hdr->ntransl )
- {
- free(src_hdr->transl[0]); src_hdr->transl[0] = NULL;
- free(src_hdr->transl[1]); src_hdr->transl[1] = NULL;
- src_hdr->ntransl = -1;
- }
- if ( src_hdr->ntransl==-1 ) return 0;
- }
- bcf_unpack(line,BCF_UN_ALL);
-
- // CHROM
- if ( src_hdr->transl[BCF_DT_CTG][line->rid] >=0 ) line->rid = src_hdr->transl[BCF_DT_CTG][line->rid];
-
- // FILTER
- for (i=0; i<line->d.n_flt; i++)
- {
- int src_id = line->d.flt[i];
- if ( src_hdr->transl[BCF_DT_ID][src_id] >=0 )
- line->d.flt[i] = src_hdr->transl[BCF_DT_ID][src_id];
- line->d.shared_dirty |= BCF1_DIRTY_FLT;
- }
-
- // INFO
- for (i=0; i<line->n_info; i++)
- {
- int src_id = line->d.info[i].key;
- int dst_id = src_hdr->transl[BCF_DT_ID][src_id];
- if ( dst_id<0 ) continue;
- int src_size = src_id>>7 ? ( src_id>>15 ? BCF_BT_INT32 : BCF_BT_INT16) : BCF_BT_INT8;
- int dst_size = dst_id>>7 ? ( dst_id>>15 ? BCF_BT_INT32 : BCF_BT_INT16) : BCF_BT_INT8;
- if ( src_size==dst_size ) // can overwrite
- {
- line->d.info[i].key = dst_id;
- uint8_t *vptr = line->d.info[i].vptr - line->d.info[i].vptr_off;
- if ( dst_size==BCF_BT_INT8 ) { vptr[1] = (uint8_t)dst_id; }
- else if ( dst_size==BCF_BT_INT16 ) { *(uint16_t*)vptr = (uint16_t)dst_id; }
- else { *(uint32_t*)vptr = (uint32_t)dst_id; }
- }
- else // must realloc
- {
- bcf_info_t *info = &line->d.info[i];
- assert( !info->vptr_free );
- kstring_t str = {0,0,0};
- bcf_enc_int1(&str, dst_id);
- bcf_enc_size(&str, info->len,info->type);
- info->vptr_off = str.l;
- kputsn((char*)info->vptr, info->vptr_len, &str);
- info->vptr = (uint8_t*)str.s + info->vptr_off;
- info->vptr_free = 1;
- info->key = dst_id;
- line->d.shared_dirty |= BCF1_DIRTY_INF;
- }
- }
-
- // FORMAT
- for (i=0; i<line->n_fmt; i++)
- {
- int src_id = line->d.fmt[i].id;
- int dst_id = src_hdr->transl[BCF_DT_ID][src_id];
- if ( dst_id<0 ) continue;
- int src_size = src_id>>7 ? ( src_id>>15 ? BCF_BT_INT32 : BCF_BT_INT16) : BCF_BT_INT8;
- int dst_size = dst_id>>7 ? ( dst_id>>15 ? BCF_BT_INT32 : BCF_BT_INT16) : BCF_BT_INT8;
- if ( src_size==dst_size ) // can overwrite
- {
- line->d.fmt[i].id = dst_id;
- uint8_t *p = line->d.fmt[i].p - line->d.fmt[i].p_off; // pointer to the vector size (4bits) and BT type (4bits)
- if ( dst_size==BCF_BT_INT8 ) { p[1] = dst_id; }
- else if ( dst_size==BCF_BT_INT16 ) { uint8_t *x = (uint8_t*) &dst_id; p[1] = x[0]; p[2] = x[1]; }
- else { uint8_t *x = (uint8_t*) &dst_id; p[1] = x[0]; p[2] = x[1]; p[3] = x[2]; p[4] = x[3]; }
- }
- else // must realloc
- {
- bcf_fmt_t *fmt = &line->d.fmt[i];
- assert( !fmt->p_free );
- kstring_t str = {0,0,0};
- bcf_enc_int1(&str, dst_id);
- bcf_enc_size(&str, fmt->n, fmt->type);
- fmt->p_off = str.l;
- kputsn((char*)fmt->p, fmt->p_len, &str);
- fmt->p = (uint8_t*)str.s + fmt->p_off;
- fmt->p_free = 1;
- fmt->id = dst_id;
- line->d.indiv_dirty = 1;
- }
- }
- return 0;
-}
-
-bcf_hdr_t *bcf_hdr_dup(const bcf_hdr_t *hdr)
-{
- bcf_hdr_t *hout = bcf_hdr_init("r");
- char *htxt = bcf_hdr_fmt_text(hdr, 1, NULL);
- bcf_hdr_parse(hout, htxt);
- free(htxt);
- return hout;
-}
-
-bcf_hdr_t *bcf_hdr_subset(const bcf_hdr_t *h0, int n, char *const* samples, int *imap)
-{
- int hlen;
- void *names_hash = khash_str2int_init();
- char *htxt = bcf_hdr_fmt_text(h0, 1, &hlen);
- kstring_t str;
- bcf_hdr_t *h;
- str.l = str.m = 0; str.s = 0;
- h = bcf_hdr_init("w");
- bcf_hdr_set_version(h,bcf_hdr_get_version(h0));
- int j;
- for (j=0; j<n; j++) imap[j] = -1;
- if ( bcf_hdr_nsamples(h0) > 0) {
- char *p;
- int i = 0, end = n? 8 : 7;
- while ((p = strstr(htxt, "#CHROM\t")) != 0)
- if (p > htxt && *(p-1) == '\n') break;
- while ((p = strchr(p, '\t')) != 0 && i < end) ++i, ++p;
- if (i != end) {
- free(h); free(str.s);
- return 0; // malformated header
- }
- kputsn(htxt, p - htxt, &str);
- for (i = 0; i < n; ++i) {
- if ( khash_str2int_has_key(names_hash,samples[i]) )
- {
- fprintf(stderr,"[E::bcf_hdr_subset] Duplicate sample name \"%s\".\n", samples[i]);
- free(str.s);
- free(htxt);
- khash_str2int_destroy(names_hash);
- bcf_hdr_destroy(h);
- return NULL;
- }
- imap[i] = bcf_hdr_id2int(h0, BCF_DT_SAMPLE, samples[i]);
- if (imap[i] < 0) continue;
- kputc('\t', &str);
- kputs(samples[i], &str);
- khash_str2int_inc(names_hash,samples[i]);
- }
- } else kputsn(htxt, hlen, &str);
- while (str.l && (!str.s[str.l-1] || str.s[str.l-1]=='\n') ) str.l--; // kill trailing zeros and newlines
- kputc('\n',&str);
- bcf_hdr_parse(h, str.s);
- free(str.s);
- free(htxt);
- khash_str2int_destroy(names_hash);
- return h;
-}
-
-int bcf_hdr_set_samples(bcf_hdr_t *hdr, const char *samples, int is_file)
-{
- if ( samples && !strcmp("-",samples) ) return 0; // keep all samples
-
- hdr->nsamples_ori = bcf_hdr_nsamples(hdr);
- if ( !samples ) { bcf_hdr_nsamples(hdr) = 0; return 0; } // exclude all samples
-
- int i, narr = bit_array_size(bcf_hdr_nsamples(hdr));
- hdr->keep_samples = (uint8_t*) calloc(narr,1);
- if ( samples[0]=='^' )
- for (i=0; i<bcf_hdr_nsamples(hdr); i++) bit_array_set(hdr->keep_samples,i);
-
- int idx, n, ret = 0;
- char **smpls = hts_readlist(samples[0]=='^'?samples+1:samples, is_file, &n);
- if ( !smpls ) return -1;
- for (i=0; i<n; i++)
- {
- idx = bcf_hdr_id2int(hdr,BCF_DT_SAMPLE,smpls[i]);
- if ( idx<0 )
- {
- if ( !ret ) ret = i+1;
- continue;
- }
- assert( idx<bcf_hdr_nsamples(hdr) );
- if ( samples[0]=='^' )
- bit_array_clear(hdr->keep_samples, idx);
- else
- bit_array_set(hdr->keep_samples, idx);
- }
- for (i=0; i<n; i++) free(smpls[i]);
- free(smpls);
-
- bcf_hdr_nsamples(hdr) = 0;
- for (i=0; i<hdr->nsamples_ori; i++)
- if ( bit_array_test(hdr->keep_samples,i) ) bcf_hdr_nsamples(hdr)++;
- if ( !bcf_hdr_nsamples(hdr) ) { free(hdr->keep_samples); hdr->keep_samples=NULL; }
- else
- {
- char **samples = (char**) malloc(sizeof(char*)*bcf_hdr_nsamples(hdr));
- idx = 0;
- for (i=0; i<hdr->nsamples_ori; i++)
- if ( bit_array_test(hdr->keep_samples,i) ) samples[idx++] = strdup(hdr->samples[i]);
- free(hdr->samples);
- hdr->samples = samples;
-
- // delete original samples from the dictionary
- vdict_t *d = (vdict_t*)hdr->dict[BCF_DT_SAMPLE];
- int k;
- for (k = kh_begin(d); k != kh_end(d); ++k)
- if (kh_exist(d, k)) free((char*)kh_key(d, k));
- kh_destroy(vdict, d);
-
- // add the subset back
- hdr->dict[BCF_DT_SAMPLE] = d = kh_init(vdict);
- for (i=0; i<bcf_hdr_nsamples(hdr); i++)
- {
- int ignore, k = kh_put(vdict, d, hdr->samples[i], &ignore);
- kh_val(d, k) = bcf_idinfo_def;
- kh_val(d, k).id = kh_size(d) - 1;
- }
- bcf_hdr_sync(hdr);
- }
-
- return ret;
-}
-
-int bcf_subset(const bcf_hdr_t *h, bcf1_t *v, int n, int *imap)
-{
- kstring_t ind;
- ind.s = 0; ind.l = ind.m = 0;
- if (n) {
- bcf_fmt_t *fmt;
- int i, j;
- fmt = (bcf_fmt_t*)alloca(v->n_fmt * sizeof(bcf_fmt_t));
- uint8_t *ptr = (uint8_t*)v->indiv.s;
- for (i = 0; i < v->n_fmt; ++i)
- ptr = bcf_unpack_fmt_core1(ptr, v->n_sample, &fmt[i]);
- for (i = 0; i < (int)v->n_fmt; ++i) {
- bcf_fmt_t *f = &fmt[i];
- bcf_enc_int1(&ind, f->id);
- bcf_enc_size(&ind, f->n, f->type);
- for (j = 0; j < n; ++j)
- if (imap[j] >= 0) kputsn((char*)(f->p + imap[j] * f->size), f->size, &ind);
- }
- for (i = j = 0; j < n; ++j) if (imap[j] >= 0) ++i;
- v->n_sample = i;
- } else v->n_sample = 0;
- if ( !v->n_sample ) v->n_fmt = 0;
- free(v->indiv.s);
- v->indiv = ind;
- v->unpacked &= ~BCF_UN_FMT; // only BCF is ready for output, VCF will need to unpack again
- return 0;
-}
-
-int bcf_is_snp(bcf1_t *v)
-{
- int i;
- bcf_unpack(v, BCF_UN_STR);
- for (i = 0; i < v->n_allele; ++i)
- {
- if ( v->d.allele[i][1]==0 ) continue;
-
- // mpileup's <X> allele, see also below. This is not completely satisfactory,
- // a general library is here narrowly tailored to fit samtools.
- if ( v->d.allele[i][0]=='<' && v->d.allele[i][1]=='X' && v->d.allele[i][2]=='>' ) continue;
-
- break;
- }
- return i == v->n_allele;
-}
-
-static void bcf_set_variant_type(const char *ref, const char *alt, variant_t *var)
-{
- // The most frequent case
- if ( !ref[1] && !alt[1] )
- {
- if ( *alt == '.' || *ref==*alt ) { var->n = 0; var->type = VCF_REF; return; }
- if ( *alt == 'X' ) { var->n = 0; var->type = VCF_REF; return; } // mpileup's X allele shouldn't be treated as variant
- var->n = 1; var->type = VCF_SNP; return;
- }
- if ( alt[0]=='<' )
- {
- if ( alt[1]=='X' && alt[2]=='>' ) { var->n = 0; var->type = VCF_REF; return; } // mpileup's X allele shouldn't be treated as variant
- var->type = VCF_OTHER;
- return;
- }
-
- const char *r = ref, *a = alt;
- while (*r && *a && *r==*a ) { r++; a++; }
-
- if ( *a && !*r )
- {
- while ( *a ) a++;
- var->n = (a-alt)-(r-ref); var->type = VCF_INDEL; return;
- }
- else if ( *r && !*a )
- {
- while ( *r ) r++;
- var->n = (a-alt)-(r-ref); var->type = VCF_INDEL; return;
- }
- else if ( !*r && !*a )
- {
- var->n = 0; var->type = VCF_REF; return;
- }
-
- const char *re = r, *ae = a;
- while ( re[1] ) re++;
- while ( ae[1] ) ae++;
- while ( *re==*ae && re>r && ae>a ) { re--; ae--; }
- if ( ae==a )
- {
- if ( re==r ) { var->n = 1; var->type = VCF_SNP; return; }
- var->n = -(re-r);
- if ( *re==*ae ) { var->type = VCF_INDEL; return; }
- var->type = VCF_OTHER; return;
- }
- else if ( re==r )
- {
- var->n = ae-a;
- if ( *re==*ae ) { var->type = VCF_INDEL; return; }
- var->type = VCF_OTHER; return;
- }
-
- var->type = ( re-r == ae-a ) ? VCF_MNP : VCF_OTHER;
- var->n = ( re-r > ae-a ) ? -(re-r+1) : ae-a+1;
-
- // should do also complex events, SVs, etc...
-}
-
-static void bcf_set_variant_types(bcf1_t *b)
-{
- if ( !(b->unpacked & BCF_UN_STR) ) bcf_unpack(b, BCF_UN_STR);
- bcf_dec_t *d = &b->d;
- if ( d->n_var < b->n_allele )
- {
- d->var = (variant_t *) realloc(d->var, sizeof(variant_t)*b->n_allele);
- d->n_var = b->n_allele;
- }
- int i;
- b->d.var_type = 0;
- for (i=1; i<b->n_allele; i++)
- {
- bcf_set_variant_type(d->allele[0],d->allele[i], &d->var[i]);
- b->d.var_type |= d->var[i].type;
- //fprintf(stderr,"[set_variant_type] %d %s %s -> %d %d .. %d\n", b->pos+1,d->allele[0],d->allele[i],d->var[i].type,d->var[i].n, b->d.var_type);
- }
-}
-
-int bcf_get_variant_types(bcf1_t *rec)
-{
- if ( rec->d.var_type==-1 ) bcf_set_variant_types(rec);
- return rec->d.var_type;
-}
-int bcf_get_variant_type(bcf1_t *rec, int ith_allele)
-{
- if ( rec->d.var_type==-1 ) bcf_set_variant_types(rec);
- return rec->d.var[ith_allele].type;
-}
-
-int bcf_update_info(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const void *values, int n, int type)
-{
- // Is the field already present?
- int i, inf_id = bcf_hdr_id2int(hdr,BCF_DT_ID,key);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_INFO,inf_id) ) return -1; // No such INFO field in the header
- if ( !(line->unpacked & BCF_UN_INFO) ) bcf_unpack(line, BCF_UN_INFO);
-
- for (i=0; i<line->n_info; i++)
- if ( inf_id==line->d.info[i].key ) break;
- bcf_info_t *inf = i==line->n_info ? NULL : &line->d.info[i];
-
- if ( !n || (type==BCF_HT_STR && !values) )
- {
- if ( inf )
- {
- // Mark the tag for removal, free existing memory if necessary
- if ( inf->vptr_free )
- {
- free(inf->vptr - inf->vptr_off);
- inf->vptr_free = 0;
- }
- line->d.shared_dirty |= BCF1_DIRTY_INF;
- inf->vptr = NULL;
- }
- return 0;
- }
-
- // Encode the values and determine the size required to accommodate the values
- kstring_t str = {0,0,0};
- bcf_enc_int1(&str, inf_id);
- if ( type==BCF_HT_INT )
- bcf_enc_vint(&str, n, (int32_t*)values, -1);
- else if ( type==BCF_HT_REAL )
- bcf_enc_vfloat(&str, n, (float*)values);
- else if ( type==BCF_HT_FLAG || type==BCF_HT_STR )
- {
- if ( values==NULL )
- bcf_enc_size(&str, 0, BCF_BT_NULL);
- else
- bcf_enc_vchar(&str, strlen((char*)values), (char*)values);
- }
- else
- {
- fprintf(stderr, "[E::%s] the type %d not implemented yet\n", __func__, type);
- abort();
- }
-
- // Is the INFO tag already present
- if ( inf )
- {
- // Is it big enough to accommodate new block?
- if ( str.l <= inf->vptr_len + inf->vptr_off )
- {
- if ( str.l != inf->vptr_len + inf->vptr_off ) line->d.shared_dirty |= BCF1_DIRTY_INF;
- uint8_t *ptr = inf->vptr - inf->vptr_off;
- memcpy(ptr, str.s, str.l);
- free(str.s);
- int vptr_free = inf->vptr_free;
- bcf_unpack_info_core1(ptr, inf);
- inf->vptr_free = vptr_free;
- }
- else
- {
- assert( !inf->vptr_free ); // fix the caller or improve here: this has been modified before
- bcf_unpack_info_core1((uint8_t*)str.s, inf);
- inf->vptr_free = 1;
- line->d.shared_dirty |= BCF1_DIRTY_INF;
- }
- }
- else
- {
- // The tag is not present, create new one
- line->n_info++;
- hts_expand0(bcf_info_t, line->n_info, line->d.m_info , line->d.info);
- inf = &line->d.info[line->n_info-1];
- bcf_unpack_info_core1((uint8_t*)str.s, inf);
- inf->vptr_free = 1;
- line->d.shared_dirty |= BCF1_DIRTY_INF;
- }
- line->unpacked |= BCF_UN_INFO;
- return 0;
-}
-
-int bcf_update_format_string(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const char **values, int n)
-{
- if ( !n )
- return bcf_update_format(hdr,line,key,NULL,0,BCF_HT_STR);
-
- int i, max_len = 0;
- for (i=0; i<n; i++)
- {
- int len = strlen(values[i]);
- if ( len > max_len ) max_len = len;
- }
- char *out = (char*) malloc(max_len*n);
- if ( !out ) return -2;
- for (i=0; i<n; i++)
- {
- char *dst = out+i*max_len;
- const char *src = values[i];
- int j = 0;
- while ( src[j] ) { dst[j] = src[j]; j++; }
- for (; j<max_len; j++) dst[j] = 0;
- }
- int ret = bcf_update_format(hdr,line,key,out,max_len*n,BCF_HT_STR);
- free(out);
- return ret;
-}
-
-int bcf_update_format(const bcf_hdr_t *hdr, bcf1_t *line, const char *key, const void *values, int n, int type)
-{
- // Is the field already present?
- int i, fmt_id = bcf_hdr_id2int(hdr,BCF_DT_ID,key);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,fmt_id) )
- {
- if ( !n ) return 0;
- return -1; // the key not present in the header
- }
-
- if ( !(line->unpacked & BCF_UN_FMT) ) bcf_unpack(line, BCF_UN_FMT);
-
- for (i=0; i<line->n_fmt; i++)
- if ( line->d.fmt[i].id==fmt_id ) break;
- bcf_fmt_t *fmt = i==line->n_fmt ? NULL : &line->d.fmt[i];
-
- if ( !n )
- {
- if ( fmt )
- {
- // Mark the tag for removal, free existing memory if necessary
- if ( fmt->p_free )
- {
- free(fmt->p - fmt->p_off);
- fmt->p_free = 0;
- }
- line->d.indiv_dirty = 1;
- fmt->p = NULL;
- }
- return 0;
- }
-
- line->n_sample = bcf_hdr_nsamples(hdr);
- int nps = n / line->n_sample; // number of values per sample
- assert( nps && nps*line->n_sample==n ); // must be divisible by n_sample
-
- // Encode the values and determine the size required to accommodate the values
- kstring_t str = {0,0,0};
- bcf_enc_int1(&str, fmt_id);
- if ( type==BCF_HT_INT )
- bcf_enc_vint(&str, n, (int32_t*)values, nps);
- else if ( type==BCF_HT_REAL )
- {
- bcf_enc_size(&str, nps, BCF_BT_FLOAT);
- kputsn((char*)values, nps*line->n_sample*sizeof(float), &str);
- }
- else if ( type==BCF_HT_STR )
- {
- bcf_enc_size(&str, nps, BCF_BT_CHAR);
- kputsn((char*)values, nps*line->n_sample, &str);
- }
- else
- {
- fprintf(stderr, "[E::%s] the type %d not implemented yet\n", __func__, type);
- abort();
- }
-
- if ( !fmt )
- {
- // Not present, new format field
- line->n_fmt++;
- hts_expand0(bcf_fmt_t, line->n_fmt, line->d.m_fmt, line->d.fmt);
-
- // Special case: VCF specification requires that GT is always first
- if ( line->n_fmt > 1 && key[0]=='G' && key[1]=='T' && !key[2] )
- {
- for (i=line->n_fmt-1; i>0; i--)
- line->d.fmt[i] = line->d.fmt[i-1];
- fmt = &line->d.fmt[0];
- }
- else
- fmt = &line->d.fmt[line->n_fmt-1];
- bcf_unpack_fmt_core1((uint8_t*)str.s, line->n_sample, fmt);
- line->d.indiv_dirty = 1;
- fmt->p_free = 1;
- }
- else
- {
- // The tag is already present, check if it is big enough to accomodate the new block
- if ( str.l <= fmt->p_len + fmt->p_off )
- {
- // good, the block is big enough
- if ( str.l != fmt->p_len + fmt->p_off ) line->d.indiv_dirty = 1;
- uint8_t *ptr = fmt->p - fmt->p_off;
- memcpy(ptr, str.s, str.l);
- free(str.s);
- int p_free = fmt->p_free;
- bcf_unpack_fmt_core1(ptr, line->n_sample, fmt);
- fmt->p_free = p_free;
- }
- else
- {
- assert( !fmt->p_free ); // fix the caller or improve here: this has been modified before
- bcf_unpack_fmt_core1((uint8_t*)str.s, line->n_sample, fmt);
- fmt->p_free = 1;
- line->d.indiv_dirty = 1;
- }
- }
- line->unpacked |= BCF_UN_FMT;
- return 0;
-}
-
-
-int bcf_update_filter(const bcf_hdr_t *hdr, bcf1_t *line, int *flt_ids, int n)
-{
- if ( !(line->unpacked & BCF_UN_FLT) ) bcf_unpack(line, BCF_UN_FLT);
- line->d.shared_dirty |= BCF1_DIRTY_FLT;
- line->d.n_flt = n;
- if ( !n ) return 0;
- hts_expand(int, line->d.n_flt, line->d.m_flt, line->d.flt);
- int i;
- for (i=0; i<n; i++)
- line->d.flt[i] = flt_ids[i];
- return 0;
-}
-
-int bcf_add_filter(const bcf_hdr_t *hdr, bcf1_t *line, int flt_id)
-{
- if ( !(line->unpacked & BCF_UN_FLT) ) bcf_unpack(line, BCF_UN_FLT);
- int i;
- for (i=0; i<line->d.n_flt; i++)
- if ( flt_id==line->d.flt[i] ) break;
- if ( i<line->d.n_flt ) return 0; // this filter is already set
- line->d.shared_dirty |= BCF1_DIRTY_FLT;
- if ( flt_id==0 ) // set to PASS
- line->d.n_flt = 1;
- else if ( line->d.n_flt==1 && line->d.flt[0]==0 )
- line->d.n_flt = 1;
- else
- line->d.n_flt++;
- hts_expand(int, line->d.n_flt, line->d.m_flt, line->d.flt);
- line->d.flt[line->d.n_flt-1] = flt_id;
- return 1;
-}
-int bcf_remove_filter(const bcf_hdr_t *hdr, bcf1_t *line, int flt_id, int pass)
-{
- if ( !(line->unpacked & BCF_UN_FLT) ) bcf_unpack(line, BCF_UN_FLT);
- int i;
- for (i=0; i<line->d.n_flt; i++)
- if ( flt_id==line->d.flt[i] ) break;
- if ( i==line->d.n_flt ) return 0; // the filter is not present
- line->d.shared_dirty |= BCF1_DIRTY_FLT;
- if ( i!=line->d.n_flt-1 ) memmove(line->d.flt+i,line->d.flt+i+1,(line->d.n_flt-i-1)*sizeof(*line->d.flt));
- line->d.n_flt--;
- if ( !line->d.n_flt && pass ) bcf_add_filter(hdr,line,0);
- return 0;
-}
-
-int bcf_has_filter(const bcf_hdr_t *hdr, bcf1_t *line, char *filter)
-{
- if ( filter[0]=='.' && !filter[1] ) filter = "PASS";
- int id = bcf_hdr_id2int(hdr, BCF_DT_ID, filter);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_FLT,id) ) return -1; // not defined in the header
-
- if ( !(line->unpacked & BCF_UN_FLT) ) bcf_unpack(line, BCF_UN_FLT);
- if ( id==0 && !line->d.n_flt) return 1; // PASS
-
- int i;
- for (i=0; i<line->d.n_flt; i++)
- if ( line->d.flt[i]==id ) return 1;
- return 0;
-}
-
-static inline int _bcf1_sync_alleles(const bcf_hdr_t *hdr, bcf1_t *line, int nals)
-{
- line->d.shared_dirty |= BCF1_DIRTY_ALS;
-
- line->n_allele = nals;
- hts_expand(char*, line->n_allele, line->d.m_allele, line->d.allele);
-
- char *als = line->d.als;
- int n = 0;
- while (n<nals)
- {
- line->d.allele[n] = als;
- while ( *als ) als++;
- als++;
- n++;
- }
- return 0;
-}
-int bcf_update_alleles(const bcf_hdr_t *hdr, bcf1_t *line, const char **alleles, int nals)
-{
- kstring_t tmp = {0,0,0};
- char *free_old = NULL;
-
- // If the supplied alleles are not pointers to line->d.als, the existing block can be reused.
- int i;
- for (i=0; i<nals; i++)
- if ( alleles[i]>=line->d.als && alleles[i]<line->d.als+line->d.m_als ) break;
- if ( i==nals )
- {
- // all alleles point elsewhere, reuse the existing block
- tmp.l = 0; tmp.s = line->d.als; tmp.m = line->d.m_als;
- }
- else
- free_old = line->d.als;
-
- for (i=0; i<nals; i++)
- {
- kputs(alleles[i], &tmp);
- kputc(0, &tmp);
- }
- line->d.als = tmp.s; line->d.m_als = tmp.m;
- free(free_old);
- return _bcf1_sync_alleles(hdr,line,nals);
-}
-
-int bcf_update_alleles_str(const bcf_hdr_t *hdr, bcf1_t *line, const char *alleles_string)
-{
- kstring_t tmp;
- tmp.l = 0; tmp.s = line->d.als; tmp.m = line->d.m_als;
- kputs(alleles_string, &tmp);
- line->d.als = tmp.s; line->d.m_als = tmp.m;
-
- int nals = 1;
- char *t = line->d.als;
- while (*t)
- {
- if ( *t==',' ) { *t = 0; nals++; }
- t++;
- }
- return _bcf1_sync_alleles(hdr, line, nals);
-}
-
-int bcf_update_id(const bcf_hdr_t *hdr, bcf1_t *line, const char *id)
-{
- kstring_t tmp;
- tmp.l = 0; tmp.s = line->d.id; tmp.m = line->d.m_id;
- if ( id )
- kputs(id, &tmp);
- else
- kputs(".", &tmp);
- line->d.id = tmp.s; line->d.m_id = tmp.m;
- line->d.shared_dirty |= BCF1_DIRTY_ID;
- return 0;
-}
-
-bcf_fmt_t *bcf_get_fmt(const bcf_hdr_t *hdr, bcf1_t *line, const char *key)
-{
- int id = bcf_hdr_id2int(hdr, BCF_DT_ID, key);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,id) ) return NULL; // no such FMT field in the header
- return bcf_get_fmt_id(line, id);
-}
-
-bcf_info_t *bcf_get_info(const bcf_hdr_t *hdr, bcf1_t *line, const char *key)
-{
- int id = bcf_hdr_id2int(hdr, BCF_DT_ID, key);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_INFO,id) ) return NULL; // no such INFO field in the header
- return bcf_get_info_id(line, id);
-}
-
-bcf_fmt_t *bcf_get_fmt_id(bcf1_t *line, const int id)
-{
- int i;
- if ( !(line->unpacked & BCF_UN_FMT) ) bcf_unpack(line, BCF_UN_FMT);
- for (i=0; i<line->n_fmt; i++)
- {
- if ( line->d.fmt[i].id==id ) return &line->d.fmt[i];
- }
- return NULL;
-}
-
-bcf_info_t *bcf_get_info_id(bcf1_t *line, const int id)
-{
- int i;
- if ( !(line->unpacked & BCF_UN_INFO) ) bcf_unpack(line, BCF_UN_INFO);
- for (i=0; i<line->n_info; i++)
- {
- if ( line->d.info[i].key==id ) return &line->d.info[i];
- }
- return NULL;
-}
-
-
-int bcf_get_info_values(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, void **dst, int *ndst, int type)
-{
- int i,j, tag_id = bcf_hdr_id2int(hdr, BCF_DT_ID, tag);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_INFO,tag_id) ) return -1; // no such INFO field in the header
- if ( bcf_hdr_id2type(hdr,BCF_HL_INFO,tag_id)!=type ) return -2; // expected different type
-
- if ( !(line->unpacked & BCF_UN_INFO) ) bcf_unpack(line, BCF_UN_INFO);
-
- for (i=0; i<line->n_info; i++)
- if ( line->d.info[i].key==tag_id ) break;
- if ( i==line->n_info ) return ( type==BCF_HT_FLAG ) ? 0 : -3; // the tag is not present in this record
- if ( type==BCF_HT_FLAG ) return 1;
-
- bcf_info_t *info = &line->d.info[i];
- if ( type==BCF_HT_STR )
- {
- if ( *ndst < info->len+1 )
- {
- *ndst = info->len + 1;
- *dst = realloc(*dst, *ndst);
- }
- memcpy(*dst,info->vptr,info->len);
- ((uint8_t*)*dst)[info->len] = 0;
- return info->len;
- }
-
- // Make sure the buffer is big enough
- int size1 = type==BCF_HT_INT ? sizeof(int32_t) : sizeof(float);
- if ( *ndst < info->len )
- {
- *ndst = info->len;
- *dst = realloc(*dst, *ndst * size1);
- }
-
- if ( info->len == 1 )
- {
- if ( info->type==BCF_BT_FLOAT ) *((float*)*dst) = info->v1.f;
- else
- {
- #define BRANCH(type_t, missing) { \
- if ( info->v1.i==missing ) *((int32_t*)*dst) = bcf_int32_missing; \
- else *((int32_t*)*dst) = info->v1.i; \
- }
- switch (info->type)
- {
- case BCF_BT_INT8: BRANCH(int8_t, bcf_int8_missing ); break;
- case BCF_BT_INT16: BRANCH(int16_t, bcf_int16_missing); break;
- case BCF_BT_INT32: BRANCH(int32_t, bcf_int32_missing); break;
- }
- #undef BRANCH
- }
- return 1;
- }
-
- #define BRANCH(type_t, is_missing, is_vector_end, set_missing, out_type_t) { \
- out_type_t *tmp = (out_type_t *) *dst; \
- type_t *p = (type_t *) info->vptr; \
- for (j=0; j<info->len; j++) \
- { \
- if ( is_vector_end ) return j; \
- if ( is_missing ) set_missing; \
- else *tmp = p[j]; \
- tmp++; \
- } \
- return j; \
- }
- switch (info->type) {
- case BCF_BT_INT8: BRANCH(int8_t, p[j]==bcf_int8_missing, p[j]==bcf_int8_vector_end, *tmp=bcf_int32_missing, int32_t); break;
- case BCF_BT_INT16: BRANCH(int16_t, p[j]==bcf_int16_missing, p[j]==bcf_int16_vector_end, *tmp=bcf_int32_missing, int32_t); break;
- case BCF_BT_INT32: BRANCH(int32_t, p[j]==bcf_int32_missing, p[j]==bcf_int32_vector_end, *tmp=bcf_int32_missing, int32_t); break;
- case BCF_BT_FLOAT: BRANCH(float, bcf_float_is_missing(p[j]), bcf_float_is_vector_end(p[j]), bcf_float_set_missing(*tmp), float); break;
- default: fprintf(stderr,"TODO: %s:%d .. info->type=%d\n", __FILE__,__LINE__, info->type); exit(1);
- }
- #undef BRANCH
- return -4; // this can never happen
-}
-
-int bcf_get_format_string(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, char ***dst, int *ndst)
-{
- int i,tag_id = bcf_hdr_id2int(hdr, BCF_DT_ID, tag);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,tag_id) ) return -1; // no such FORMAT field in the header
- if ( bcf_hdr_id2type(hdr,BCF_HL_FMT,tag_id)!=BCF_HT_STR ) return -2; // expected different type
-
- if ( !(line->unpacked & BCF_UN_FMT) ) bcf_unpack(line, BCF_UN_FMT);
-
- for (i=0; i<line->n_fmt; i++)
- if ( line->d.fmt[i].id==tag_id ) break;
- if ( i==line->n_fmt ) return -3; // the tag is not present in this record
- bcf_fmt_t *fmt = &line->d.fmt[i];
-
- int nsmpl = bcf_hdr_nsamples(hdr);
- if ( !*dst )
- {
- *dst = (char**) malloc(sizeof(char*)*nsmpl);
- if ( !*dst ) return -4; // could not alloc
- (*dst)[0] = NULL;
- }
- int n = (fmt->n+1)*nsmpl;
- if ( *ndst < n )
- {
- (*dst)[0] = realloc((*dst)[0], n);
- if ( !(*dst)[0] ) return -4; // could not alloc
- *ndst = n;
- }
- for (i=0; i<nsmpl; i++)
- {
- uint8_t *src = fmt->p + i*fmt->n;
- uint8_t *tmp = (uint8_t*)(*dst)[0] + i*(fmt->n+1);
- memcpy(tmp,src,fmt->n);
- tmp[fmt->n] = 0;
- (*dst)[i] = (char*) tmp;
- }
- return n;
-}
-
-int bcf_get_format_values(const bcf_hdr_t *hdr, bcf1_t *line, const char *tag, void **dst, int *ndst, int type)
-{
- int i,j, tag_id = bcf_hdr_id2int(hdr, BCF_DT_ID, tag);
- if ( !bcf_hdr_idinfo_exists(hdr,BCF_HL_FMT,tag_id) ) return -1; // no such FORMAT field in the header
- if ( tag[0]=='G' && tag[1]=='T' && tag[2]==0 )
- {
- // Ugly: GT field is considered to be a string by the VCF header but BCF represents it as INT.
- if ( bcf_hdr_id2type(hdr,BCF_HL_FMT,tag_id)!=BCF_HT_STR ) return -2;
- }
- else if ( bcf_hdr_id2type(hdr,BCF_HL_FMT,tag_id)!=type ) return -2; // expected different type
-
- if ( !(line->unpacked & BCF_UN_FMT) ) bcf_unpack(line, BCF_UN_FMT);
-
- for (i=0; i<line->n_fmt; i++)
- if ( line->d.fmt[i].id==tag_id ) break;
- if ( i==line->n_fmt ) return -3; // the tag is not present in this record
- bcf_fmt_t *fmt = &line->d.fmt[i];
-
- if ( type==BCF_HT_STR )
- {
- int n = fmt->n*bcf_hdr_nsamples(hdr);
- if ( *ndst < n )
- {
- *dst = realloc(*dst, n);
- if ( !*dst ) return -4; // could not alloc
- *ndst = n;
- }
- memcpy(*dst,fmt->p,n);
- return n;
- }
-
- // Make sure the buffer is big enough
- int nsmpl = bcf_hdr_nsamples(hdr);
- int size1 = type==BCF_HT_INT ? sizeof(int32_t) : sizeof(float);
- if ( *ndst < fmt->n*nsmpl )
- {
- *ndst = fmt->n*nsmpl;
- *dst = realloc(*dst, *ndst*size1);
- if ( !dst ) return -4; // could not alloc
- }
-
- #define BRANCH(type_t, is_missing, is_vector_end, set_missing, set_vector_end, out_type_t) { \
- out_type_t *tmp = (out_type_t *) *dst; \
- type_t *p = (type_t*) fmt->p; \
- for (i=0; i<nsmpl; i++) \
- { \
- for (j=0; j<fmt->n; j++) \
- { \
- if ( is_missing ) set_missing; \
- else if ( is_vector_end ) { set_vector_end; break; } \
- else *tmp = p[j]; \
- tmp++; \
- } \
- for (; j<fmt->n; j++) { set_vector_end; tmp++; } \
- p = (type_t *)((char *)p + fmt->size); \
- } \
- }
- switch (fmt->type) {
- case BCF_BT_INT8: BRANCH(int8_t, p[j]==bcf_int8_missing, p[j]==bcf_int8_vector_end, *tmp=bcf_int32_missing, *tmp=bcf_int32_vector_end, int32_t); break;
- case BCF_BT_INT16: BRANCH(int16_t, p[j]==bcf_int16_missing, p[j]==bcf_int16_vector_end, *tmp=bcf_int32_missing, *tmp=bcf_int32_vector_end, int32_t); break;
- case BCF_BT_INT32: BRANCH(int32_t, p[j]==bcf_int32_missing, p[j]==bcf_int32_vector_end, *tmp=bcf_int32_missing, *tmp=bcf_int32_vector_end, int32_t); break;
- case BCF_BT_FLOAT: BRANCH(float, bcf_float_is_missing(p[j]), bcf_float_is_vector_end(p[j]), bcf_float_set_missing(*tmp), bcf_float_set_vector_end(*tmp), float); break;
- default: fprintf(stderr,"TODO: %s:%d .. fmt->type=%d\n", __FILE__,__LINE__, fmt->type); exit(1);
- }
- #undef BRANCH
- return nsmpl*fmt->n;
-}
-
diff --git a/htslib/vcf_sweep.c b/htslib/vcf_sweep.c
deleted file mode 100644
index 27e26a8..0000000
--- a/htslib/vcf_sweep.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* vcf_sweep.c -- forward/reverse sweep API.
-
- Copyright (C) 2013 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#include "htslib/vcf_sweep.h"
-#include "htslib/bgzf.h"
-
-#define SW_FWD 0
-#define SW_BWD 1
-
-struct _bcf_sweep_t
-{
- htsFile *file;
- bcf_hdr_t *hdr;
- BGZF *fp;
-
- int direction; // to tell if the direction has changed
- int block_size; // the size of uncompressed data to hold in memory
- bcf1_t *rec; // bcf buffer
- int nrec, mrec; // number of used records; total size of the buffer
- int lrid, lpos, lnals, lals_len, mlals; // to check uniqueness of a record
- char *lals;
-
- uint64_t *idx; // uncompressed offsets of VCF/BCF records
- int iidx, nidx, midx; // i: current offset; n: used; m: allocated
- int idx_done; // the index is built during the first pass
-};
-
-BGZF *hts_get_bgzfp(htsFile *fp);
-int hts_useek(htsFile *file, long uoffset, int where);
-long hts_utell(htsFile *file);
-
-static inline int sw_rec_equal(bcf_sweep_t *sw, bcf1_t *rec)
-{
- if ( sw->lrid!=rec->rid ) return 0;
- if ( sw->lpos!=rec->pos ) return 0;
- if ( sw->lnals!=rec->n_allele ) return 0;
-
- char *t = rec->d.allele[sw->lnals-1];
- int len = t - rec->d.allele[0] + 1;
- while ( *t ) { t++; len++; }
- if ( sw->lals_len!=len ) return 0;
- if ( memcmp(sw->lals,rec->d.allele[0],len) ) return 0;
- return 1;
-}
-
-static void sw_rec_save(bcf_sweep_t *sw, bcf1_t *rec)
-{
- sw->lrid = rec->rid;
- sw->lpos = rec->pos;
- sw->lnals = rec->n_allele;
-
- char *t = rec->d.allele[sw->lnals-1];
- int len = t - rec->d.allele[0] + 1;
- while ( *t ) { t++; len++; }
- sw->lals_len = len;
- hts_expand(char, len, sw->mlals, sw->lals);
- memcpy(sw->lals, rec->d.allele[0], len);
-}
-
-static void sw_fill_buffer(bcf_sweep_t *sw)
-{
- if ( !sw->iidx ) return;
- sw->iidx--;
-
- int ret = hts_useek(sw->file, sw->idx[sw->iidx], 0);
- assert( ret==0 );
-
- sw->nrec = 0;
- bcf1_t *rec = &sw->rec[sw->nrec];
- while ( (ret=bcf_read1(sw->file, sw->hdr, rec))==0 )
- {
- bcf_unpack(rec, BCF_UN_STR);
-
- // if not in the last block, stop at the saved record
- if ( sw->iidx+1 < sw->nidx && sw_rec_equal(sw,rec) ) break;
-
- sw->nrec++;
- hts_expand0(bcf1_t, sw->nrec+1, sw->mrec, sw->rec);
- rec = &sw->rec[sw->nrec];
- }
- sw_rec_save(sw, &sw->rec[0]);
-}
-
-bcf_sweep_t *bcf_sweep_init(const char *fname)
-{
- bcf_sweep_t *sw = (bcf_sweep_t*) calloc(1,sizeof(bcf_sweep_t));
- sw->file = hts_open(fname, "r");
- sw->fp = hts_get_bgzfp(sw->file);
- bgzf_index_build_init(sw->fp);
- sw->hdr = bcf_hdr_read(sw->file);
- sw->mrec = 1;
- sw->rec = (bcf1_t*) calloc(sw->mrec,(sizeof(bcf1_t)));
- sw->block_size = 1024*1024*3;
- sw->direction = SW_FWD;
- return sw;
-}
-
-void bcf_empty1(bcf1_t *v);
-void bcf_sweep_destroy(bcf_sweep_t *sw)
-{
- int i;
- for (i=0; i<sw->mrec; i++) bcf_empty1(&sw->rec[i]);
- free(sw->idx);
- free(sw->rec);
- free(sw->lals);
- bcf_hdr_destroy(sw->hdr);
- hts_close(sw->file);
- free(sw);
-}
-
-static void sw_seek(bcf_sweep_t *sw, int direction)
-{
- sw->direction = direction;
- if ( direction==SW_FWD )
- hts_useek(sw->file, sw->idx[0], 0);
- else
- {
- sw->iidx = sw->nidx;
- sw->nrec = 0;
- }
-}
-
-bcf1_t *bcf_sweep_fwd(bcf_sweep_t *sw)
-{
- if ( sw->direction==SW_BWD ) sw_seek(sw, SW_FWD);
-
- long pos = hts_utell(sw->file);
-
- bcf1_t *rec = &sw->rec[0];
- int ret = bcf_read1(sw->file, sw->hdr, rec);
-
- if ( ret!=0 ) // last record, get ready for sweeping backwards
- {
- sw->idx_done = 1;
- sw->fp->idx_build_otf = 0;
- sw_seek(sw, SW_BWD);
- return NULL;
- }
-
- if ( !sw->idx_done )
- {
- if ( !sw->nidx || pos - sw->idx[sw->nidx-1] > sw->block_size )
- {
- sw->nidx++;
- hts_expand(uint64_t, sw->nidx, sw->midx, sw->idx);
- sw->idx[sw->nidx-1] = pos;
- }
- }
- return rec;
-}
-
-bcf1_t *bcf_sweep_bwd(bcf_sweep_t *sw)
-{
- if ( sw->direction==SW_FWD ) sw_seek(sw, SW_BWD);
- if ( !sw->nrec ) sw_fill_buffer(sw);
- if ( !sw->nrec ) return NULL;
- return &sw->rec[ --sw->nrec ];
-}
-
-bcf_hdr_t *bcf_sweep_hdr(bcf_sweep_t *sw) { return sw->hdr; }
-
diff --git a/htslib/vcfutils.c b/htslib/vcfutils.c
deleted file mode 100644
index 91118e4..0000000
--- a/htslib/vcfutils.c
+++ /dev/null
@@ -1,675 +0,0 @@
-/* vcfutils.c -- allele-related utility functions.
-
- Copyright (C) 2012-2014 Genome Research Ltd.
-
- Author: Petr Danecek <pd3 at sanger.ac.uk>
-
-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. */
-
-#include "htslib/vcfutils.h"
-
-int bcf_calc_ac(const bcf_hdr_t *header, bcf1_t *line, int *ac, int which)
-{
- int i;
- for (i=0; i<line->n_allele; i++) ac[i]=0;
-
- // Use INFO/AC,AN field only when asked
- if ( which&BCF_UN_INFO )
- {
- bcf_unpack(line, BCF_UN_INFO);
- int an_id = bcf_hdr_id2int(header, BCF_DT_ID, "AN");
- int ac_id = bcf_hdr_id2int(header, BCF_DT_ID, "AC");
- int i, an=-1, ac_len=0, ac_type=0;
- uint8_t *ac_ptr=NULL;
- if ( an_id>=0 && ac_id>=0 )
- {
- for (i=0; i<line->n_info; i++)
- {
- bcf_info_t *z = &line->d.info[i];
- if ( z->key == an_id ) an = z->v1.i;
- else if ( z->key == ac_id ) { ac_ptr = z->vptr; ac_len = z->len; ac_type = z->type; }
- }
- }
- if ( an>=0 && ac_ptr )
- {
- int nac = 0;
- #define BRANCH_INT(type_t) { \
- type_t *p = (type_t *) ac_ptr; \
- for (i=0; i<ac_len; i++) \
- { \
- ac[i+1] = p[i]; \
- nac += p[i]; \
- } \
- }
- switch (ac_type) {
- case BCF_BT_INT8: BRANCH_INT(int8_t); break;
- case BCF_BT_INT16: BRANCH_INT(int16_t); break;
- case BCF_BT_INT32: BRANCH_INT(int32_t); break;
- default: fprintf(stderr, "[E::%s] todo: %d at %s:%d\n", __func__, ac_type, header->id[BCF_DT_CTG][line->rid].key, line->pos+1); exit(1); break;
- }
- #undef BRANCH_INT
- if ( an<nac )
- {
- fprintf(stderr,"[E::%s] Incorrect AN/AC counts at %s:%d\n", __func__,header->id[BCF_DT_CTG][line->rid].key, line->pos+1);
- exit(1);
- }
- ac[0] = an - nac;
- return 1;
- }
- }
-
- // Split genotype fields only when asked
- if ( which&BCF_UN_FMT )
- {
- int i, gt_id = bcf_hdr_id2int(header,BCF_DT_ID,"GT");
- if ( gt_id<0 ) return 0;
- bcf_unpack(line, BCF_UN_FMT);
- bcf_fmt_t *fmt_gt = NULL;
- for (i=0; i<(int)line->n_fmt; i++)
- if ( line->d.fmt[i].id==gt_id ) { fmt_gt = &line->d.fmt[i]; break; }
- if ( !fmt_gt ) return 0;
- #define BRANCH_INT(type_t,vector_end) { \
- for (i=0; i<line->n_sample; i++) \
- { \
- type_t *p = (type_t*) (fmt_gt->p + i*fmt_gt->size); \
- int ial; \
- for (ial=0; ial<fmt_gt->n; ial++) \
- { \
- if ( p[ial]==vector_end ) break; /* smaller ploidy */ \
- if ( bcf_gt_is_missing(p[ial]) ) continue; /* missing allele */ \
- if ( p[ial]>>1 > line->n_allele ) \
- { \
- fprintf(stderr,"[E::%s] Incorrect allele (\"%d\") in %s at %s:%d\n", __func__,(p[ial]>>1)-1, header->samples[i],header->id[BCF_DT_CTG][line->rid].key, line->pos+1); \
- exit(1); \
- } \
- ac[(p[ial]>>1)-1]++; \
- } \
- } \
- }
- switch (fmt_gt->type) {
- case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break;
- case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break;
- case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break;
- default: fprintf(stderr, "[E::%s] todo: %d at %s:%d\n", __func__, fmt_gt->type, header->id[BCF_DT_CTG][line->rid].key, line->pos+1); exit(1); break;
- }
- #undef BRANCH_INT
- return 1;
- }
- return 0;
-}
-
-int bcf_gt_type(bcf_fmt_t *fmt_ptr, int isample, int *_ial, int *_jal)
-{
- int i, nals = 0, has_ref = 0, has_alt = 0, ial = 0, jal = 0;
- #define BRANCH_INT(type_t,vector_end) { \
- type_t *p = (type_t*) (fmt_ptr->p + isample*fmt_ptr->size); \
- for (i=0; i<fmt_ptr->n; i++) \
- { \
- if ( p[i] == vector_end ) break; /* smaller ploidy */ \
- if ( bcf_gt_is_missing(p[i]) ) continue; /* missing allele */ \
- int tmp = p[i]>>1; \
- if ( tmp>1 ) \
- { \
- if ( !ial ) { ial = tmp; has_alt = 1; } \
- else if ( tmp!=ial ) \
- { \
- if ( tmp<ial ) \
- { \
- jal = ial; \
- ial = tmp; \
- } \
- else \
- { \
- jal = tmp; \
- } \
- has_alt = 2; \
- } \
- } \
- else has_ref = 1; \
- nals++; \
- } \
- }
- switch (fmt_ptr->type) {
- case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break;
- case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break;
- case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break;
- default: fprintf(stderr, "[E::%s] todo: fmt_type %d\n", __func__, fmt_ptr->type); exit(1); break;
- }
- #undef BRANCH_INT
-
- if ( _ial ) *_ial = ial>0 ? ial-1 : ial;
- if ( _jal ) *_jal = jal>0 ? jal-1 : jal;
- if ( !nals ) return GT_UNKN;
- if ( nals==1 )
- return has_ref ? GT_HAPL_R : GT_HAPL_A;
- if ( !has_ref )
- return has_alt==1 ? GT_HOM_AA : GT_HET_AA;
- if ( !has_alt )
- return GT_HOM_RR;
- return GT_HET_RA;
-}
-
-int bcf_trim_alleles(const bcf_hdr_t *header, bcf1_t *line)
-{
- int i;
- bcf_fmt_t *gt = bcf_get_fmt(header, line, "GT");
- if ( !gt ) return 0;
-
- int *ac = (int*) calloc(line->n_allele,sizeof(int));
-
- // check if all alleles are populated
- #define BRANCH(type_t,vector_end) { \
- for (i=0; i<line->n_sample; i++) \
- { \
- type_t *p = (type_t*) (gt->p + i*gt->size); \
- int ial; \
- for (ial=0; ial<gt->n; ial++) \
- { \
- if ( p[ial]==vector_end ) break; /* smaller ploidy */ \
- if ( bcf_gt_is_missing(p[ial]) ) continue; /* missing allele */ \
- if ( (p[ial]>>1)-1 >= line->n_allele ) { free(ac); return -1; } \
- ac[(p[ial]>>1)-1]++; \
- } \
- } \
- }
- switch (gt->type) {
- case BCF_BT_INT8: BRANCH(int8_t, bcf_int8_vector_end); break;
- case BCF_BT_INT16: BRANCH(int16_t, bcf_int16_vector_end); break;
- case BCF_BT_INT32: BRANCH(int32_t, bcf_int32_vector_end); break;
- default: fprintf(stderr, "[E::%s] todo: %d at %s:%d\n", __func__, gt->type, header->id[BCF_DT_CTG][line->rid].key, line->pos+1); exit(1); break;
- }
- #undef BRANCH
-
- int rm_als = 0, nrm = 0;
- for (i=1; i<line->n_allele; i++)
- {
- if ( !ac[i] ) { rm_als |= 1<<i; nrm++; }
- }
- free(ac);
-
- if ( nrm ) bcf_remove_alleles(header, line, rm_als);
- return nrm;
-}
-
-void bcf_remove_alleles(const bcf_hdr_t *header, bcf1_t *line, int rm_mask)
-{
- int *map = (int*) calloc(line->n_allele, sizeof(int));
-
- // create map of indexes from old to new ALT numbering and modify ALT
- kstring_t str = {0,0,0};
- kputs(line->d.allele[0], &str);
-
- int nrm = 0, i,j; // i: ori alleles, j: new alleles
- for (i=1, j=1; i<line->n_allele; i++)
- {
- if ( rm_mask & 1<<i )
- {
- // remove this allele
- line->d.allele[i] = NULL;
- nrm++;
- continue;
- }
- kputc(',', &str);
- kputs(line->d.allele[i], &str);
- map[i] = j;
- j++;
- }
- if ( !nrm ) { free(map); free(str.s); return; }
-
- int nR_ori = line->n_allele;
- int nR_new = line->n_allele-nrm;
- assert(nR_new > 0); // should not be able to remove reference allele
- int nA_ori = nR_ori-1;
- int nA_new = nR_new-1;
-
- int nG_ori = nR_ori*(nR_ori + 1)/2;
- int nG_new = nR_new*(nR_new + 1)/2;
-
- bcf_update_alleles_str(header, line, str.s);
-
- // remove from Number=G, Number=R and Number=A INFO fields.
- uint8_t *dat = NULL;
- int mdat = 0, ndat = 0, mdat_bytes = 0, nret;
- for (i=0; i<line->n_info; i++)
- {
- bcf_info_t *info = &line->d.info[i];
- int vlen = bcf_hdr_id2length(header,BCF_HL_INFO,info->key);
-
- if ( vlen!=BCF_VL_A && vlen!=BCF_VL_G && vlen!=BCF_VL_R ) continue; // no need to change
-
- int type = bcf_hdr_id2type(header,BCF_HL_INFO,info->key);
- if ( type==BCF_HT_FLAG ) continue;
- int size = 1;
- if ( type==BCF_HT_REAL || type==BCF_HT_INT ) size = 4;
-
- mdat = mdat_bytes / size;
- nret = bcf_get_info_values(header, line, bcf_hdr_int2id(header,BCF_DT_ID,info->key), (void**)&dat, &mdat, type);
- mdat_bytes = mdat * size;
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not access INFO/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,info->key), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
- if ( type==BCF_HT_STR )
- {
- str.l = 0;
- char *ss = (char*) dat, *se = (char*) dat;
- if ( vlen==BCF_VL_A || vlen==BCF_VL_R )
- {
- int nexp, inc = 0;
- if ( vlen==BCF_VL_A )
- {
- nexp = nA_ori;
- inc = 1;
- }
- else
- nexp = nR_ori;
- for (j=0; j<nexp; j++)
- {
- if ( !*se ) break;
- while ( *se && *se!=',' ) se++;
- if ( rm_mask & 1<<(j+inc) )
- {
- if ( *se ) se++;
- ss = se;
- continue;
- }
- if ( str.l ) kputc(',',&str);
- kputsn(ss,se-ss,&str);
- if ( *se ) se++;
- ss = se;
- }
- assert( j==nexp );
- }
- else // Number=G, assuming diploid genotype
- {
- int k = 0, n = 0;
- for (j=0; j<nR_ori; j++)
- {
- for (k=0; k<=j; k++)
- {
- if ( !*se ) break;
- while ( *se && *se!=',' ) se++;
- n++;
- if ( rm_mask & 1<<j || rm_mask & 1<<k )
- {
- if ( *se ) se++;
- ss = se;
- continue;
- }
- if ( str.l ) kputc(',',&str);
- kputsn(ss,se-ss,&str);
- if ( *se ) se++;
- ss = se;
- }
- if ( !*se ) break;
- }
- assert( n=nG_ori );
- }
-
- nret = bcf_update_info(header, line, bcf_hdr_int2id(header,BCF_DT_ID,info->key), (void*)str.s, str.l, type);
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not update INFO/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,info->key), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
- continue;
- }
-
- if ( vlen==BCF_VL_A || vlen==BCF_VL_R )
- {
- int inc = 0, ntop;
- if ( vlen==BCF_VL_A )
- {
- assert( nret==nA_ori );
- ntop = nA_ori;
- ndat = nA_new;
- inc = 1;
- }
- else
- {
- assert( nret==nR_ori );
- ntop = nR_ori;
- ndat = nR_new;
- }
- int k = 0;
-
- #define BRANCH(type_t,is_vector_end) \
- { \
- type_t *ptr = (type_t*) dat; \
- int size = sizeof(type_t); \
- for (j=0; j<ntop; j++) /* j:ori, k:new */ \
- { \
- if ( is_vector_end ) { memcpy(dat+k*size, dat+j*size, size); break; } \
- if ( rm_mask & 1<<(j+inc) ) continue; \
- if ( j!=k ) memcpy(dat+k*size, dat+j*size, size); \
- k++; \
- } \
- }
- switch (type)
- {
- case BCF_HT_INT: BRANCH(int32_t,ptr[j]==bcf_int32_vector_end); break;
- case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr[j])); break;
- }
- #undef BRANCH
- }
- else // Number=G
- {
- assert( nret==nG_ori );
- int k, l_ori = -1, l_new = 0;
- ndat = nG_new;
-
- #define BRANCH(type_t,is_vector_end) \
- { \
- type_t *ptr = (type_t*) dat; \
- int size = sizeof(type_t); \
- for (j=0; j<nR_ori; j++) \
- { \
- for (k=0; k<=j; k++) \
- { \
- l_ori++; \
- if ( is_vector_end ) { memcpy(dat+l_new*size, dat+l_ori*size, size); break; } \
- if ( rm_mask & 1<<j || rm_mask & 1<<k ) continue; \
- if ( l_ori!=l_new ) memcpy(dat+l_new*size, dat+l_ori*size, size); \
- l_new++; \
- } \
- } \
- }
- switch (type)
- {
- case BCF_HT_INT: BRANCH(int32_t,ptr[l_ori]==bcf_int32_vector_end); break;
- case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr[l_ori])); break;
- }
- #undef BRANCH
- }
-
- nret = bcf_update_info(header, line, bcf_hdr_int2id(header,BCF_DT_ID,info->key), (void*)dat, ndat, type);
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not update INFO/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,info->key), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
- }
-
- // Update GT fields, the allele indexes might have changed
- for (i=1; i<line->n_allele; i++) if ( map[i]!=i ) break;
- if ( i<line->n_allele )
- {
- mdat = mdat_bytes / 4; // sizeof(int32_t)
- nret = bcf_get_genotypes(header,line,(void**)&dat,&mdat);
- mdat_bytes = mdat * 4;
- if ( nret>0 )
- {
- nret /= line->n_sample;
- int32_t *ptr = (int32_t*) dat;
- for (i=0; i<line->n_sample; i++)
- {
- for (j=0; j<nret; j++)
- {
- if ( bcf_gt_is_missing(ptr[j]) ) continue;
- if ( ptr[j]==bcf_int32_vector_end ) break;
- int al = bcf_gt_allele(ptr[j]);
- assert( al<nR_ori && map[al]>=0 );
- ptr[j] = (map[al]+1)<<1 | (ptr[j]&1);
- }
- ptr += nret;
- }
- bcf_update_genotypes(header, line, (void*)dat, nret*line->n_sample);
- }
- }
-
- // Remove from Number=G, Number=R and Number=A FORMAT fields.
- // Assuming haploid or diploid GTs
- for (i=0; i<line->n_fmt; i++)
- {
- bcf_fmt_t *fmt = &line->d.fmt[i];
- int vlen = bcf_hdr_id2length(header,BCF_HL_FMT,fmt->id);
-
- if ( vlen!=BCF_VL_A && vlen!=BCF_VL_G && vlen!=BCF_VL_R ) continue; // no need to change
-
- int type = bcf_hdr_id2type(header,BCF_HL_FMT,fmt->id);
- if ( type==BCF_HT_FLAG ) continue;
-
- int size = 1;
- if ( type==BCF_HT_REAL || type==BCF_HT_INT ) size = 4;
-
- mdat = mdat_bytes / size;
- nret = bcf_get_format_values(header, line, bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), (void**)&dat, &mdat, type);
- mdat_bytes = mdat * size;
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not access FORMAT/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
-
- if ( type==BCF_HT_STR )
- {
- int size = nret/line->n_sample; // number of bytes per sample
- str.l = 0;
- if ( vlen==BCF_VL_A || vlen==BCF_VL_R )
- {
- int nexp, inc = 0;
- if ( vlen==BCF_VL_A )
- {
- nexp = nA_ori;
- inc = 1;
- }
- else
- nexp = nR_ori;
- for (j=0; j<line->n_sample; j++)
- {
- char *ss = ((char*)dat) + j*size, *se = ss + size, *ptr = ss;
- int k_src = 0, k_dst = 0, l = str.l;
- for (k_src=0; k_src<nexp; k_src++)
- {
- if ( ptr>=se || !*ptr) break;
- while ( ptr<se && *ptr && *ptr!=',' ) ptr++;
- if ( rm_mask & 1<<(k_src+inc) )
- {
- ss = ++ptr;
- continue;
- }
- if ( k_dst ) kputc(',',&str);
- kputsn(ss,ptr-ss,&str);
- ss = ++ptr;
- k_dst++;
- }
- assert( k_src==nexp );
- l = str.l - l;
- for (; l<size; l++) kputc(0, &str);
- }
- }
- else // Number=G, diploid or haploid
- {
- for (j=0; j<line->n_sample; j++)
- {
- char *ss = ((char*)dat) + j*size, *se = ss + size, *ptr = ss;
- int k_src = 0, k_dst = 0, l = str.l;
- int nexp = 0; // diploid or haploid?
- while ( ptr<se )
- {
- if ( !*ptr ) break;
- if ( *ptr==',' ) nexp++;
- ptr++;
- }
- if ( ptr!=ss ) nexp++;
- assert( nexp==nG_ori || nexp==nR_ori );
- ptr = ss;
- if ( nexp==nG_ori ) // diploid
- {
- int ia, ib;
- for (ia=0; ia<nR_ori; ia++)
- {
- for (ib=0; ib<=ia; ib++)
- {
- if ( ptr>=se || !*ptr ) break;
- while ( ptr<se && *ptr && *ptr!=',' ) ptr++;
- if ( rm_mask & 1<<ia || rm_mask & 1<<ib )
- {
- ss = ++ptr;
- continue;
- }
- if ( k_dst ) kputc(',',&str);
- kputsn(ss,ptr-ss,&str);
- ss = ++ptr;
- k_dst++;
- }
- if ( ptr>=se || !*ptr ) break;
- }
- }
- else // haploid
- {
- for (k_src=0; k_src<nR_ori; k_src++)
- {
- if ( ptr>=se || !*ptr ) break;
- while ( ptr<se && *ptr && *ptr!=',' ) ptr++;
- if ( rm_mask & 1<<k_src )
- {
- ss = ++ptr;
- continue;
- }
- if ( k_dst ) kputc(',',&str);
- kputsn(ss,ptr-ss,&str);
- ss = ++ptr;
- k_dst++;
- }
- assert( k_src==nR_ori );
- l = str.l - l;
- for (; l<size; l++) kputc(0, &str);
- }
- }
- }
- nret = bcf_update_format(header, line, bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), (void*)str.s, str.l, type);
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not update FORMAT/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
- continue;
- }
-
- int nori = nret / line->n_sample;
- if ( vlen==BCF_VL_A || vlen==BCF_VL_R || (vlen==BCF_VL_G && nori==nR_ori) ) // Number=A, R or haploid Number=G
- {
- int inc = 0, nnew;
- if ( vlen==BCF_VL_A )
- {
- assert( nori==nA_ori ); // todo: will fail if all values are missing
- ndat = nA_new*line->n_sample;
- nnew = nA_new;
- inc = 1;
- }
- else
- {
- assert( nori==nR_ori ); // todo: will fail if all values are missing
- ndat = nR_new*line->n_sample;
- nnew = nR_new;
- }
-
- #define BRANCH(type_t,is_vector_end) \
- { \
- for (j=0; j<line->n_sample; j++) \
- { \
- type_t *ptr_src = ((type_t*)dat) + j*nori; \
- type_t *ptr_dst = ((type_t*)dat) + j*nnew; \
- int size = sizeof(type_t); \
- int k_src, k_dst = 0; \
- for (k_src=0; k_src<nori; k_src++) \
- { \
- if ( is_vector_end ) { memcpy(ptr_dst+k_dst, ptr_src+k_src, size); break; } \
- if ( rm_mask & 1<<(k_src+inc) ) continue; \
- memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
- k_dst++; \
- } \
- } \
- }
- switch (type)
- {
- case BCF_HT_INT: BRANCH(int32_t,ptr_src[k_src]==bcf_int32_vector_end); break;
- case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr_src[k_src])); break;
- }
- #undef BRANCH
- }
- else // Number=G, diploid or mixture of haploid+diploid
- {
- assert( nori==nG_ori );
- ndat = nG_new*line->n_sample;
-
- #define BRANCH(type_t,is_vector_end) \
- { \
- for (j=0; j<line->n_sample; j++) \
- { \
- type_t *ptr_src = ((type_t*)dat) + j*nori; \
- type_t *ptr_dst = ((type_t*)dat) + j*nG_new; \
- int size = sizeof(type_t); \
- int ia, ib, k_dst = 0, k_src; \
- int nset = 0; /* haploid or diploid? */ \
- for (k_src=0; k_src<nG_ori; k_src++) { if ( is_vector_end ) break; nset++; } \
- if ( nset==nR_ori ) /* haploid */ \
- { \
- for (k_src=0; k_src<nR_ori; k_src++) \
- { \
- if ( rm_mask & 1<<k_src ) continue; \
- memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
- k_dst++; \
- } \
- memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
- } \
- else /* diploid */ \
- { \
- k_src = -1; \
- for (ia=0; ia<nR_ori; ia++) \
- { \
- for (ib=0; ib<=ia; ib++) \
- { \
- k_src++; \
- if ( is_vector_end ) { memcpy(ptr_dst+k_dst, ptr_src+k_src, size); ia = nR_ori; break; } \
- if ( rm_mask & 1<<ia || rm_mask & 1<<ib ) continue; \
- memcpy(ptr_dst+k_dst, ptr_src+k_src, size); \
- k_dst++; \
- } \
- } \
- } \
- } \
- }
- switch (type)
- {
- case BCF_HT_INT: BRANCH(int32_t,ptr_src[k_src]==bcf_int32_vector_end); break;
- case BCF_HT_REAL: BRANCH(float,bcf_float_is_vector_end(ptr_src[k_src])); break;
- }
- #undef BRANCH
- }
- nret = bcf_update_format(header, line, bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), (void*)dat, ndat, type);
- if ( nret<0 )
- {
- fprintf(stderr,"[%s:%d %s] Could not update FORMAT/%s at %s:%d [%d]\n", __FILE__,__LINE__,__FUNCTION__,
- bcf_hdr_int2id(header,BCF_DT_ID,fmt->id), bcf_seqname(header,line), line->pos+1, nret);
- exit(1);
- }
- }
- free(dat);
- free(str.s);
- free(map);
-}
-
diff --git a/htslib/version.h b/htslib/version.h
deleted file mode 100644
index 0185c52..0000000
--- a/htslib/version.h
+++ /dev/null
@@ -1 +0,0 @@
-#define HTS_VERSION "1.2.1"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-pysam.git
More information about the debian-med-commit
mailing list