[llvm-commits] [test-suite] r46573 [1/3] - in /test-suite/trunk/MultiSource/Applications: ./ ClamAV/ ClamAV/dbdir/ ClamAV/inputs/ ClamAV/inputs/rtf-test/ ClamAV/scripts/

Evan Cheng evan.cheng at apple.com
Wed Jan 30 13:17:12 PST 2008


Author: evancheng
Date: Wed Jan 30 15:17:10 2008
New Revision: 46573

URL: http://llvm.org/viewvc/llvm-project?rev=46573&view=rev
Log:
Add new benchmark ClamAV.

Added:
    test-suite/trunk/MultiSource/Applications/ClamAV/
    test-suite/trunk/MultiSource/Applications/ClamAV/COPYING
    test-suite/trunk/MultiSource/Applications/ClamAV/ClamAV-srcflat.tar.gz   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/LZMADecode.h
    test-suite/trunk/MultiSource/Applications/ClamAV/Makefile
    test-suite/trunk/MultiSource/Applications/ClamAV/README.LLVM-tests
    test-suite/trunk/MultiSource/Applications/ClamAV/aspack.h
    test-suite/trunk/MultiSource/Applications/ClamAV/autoit.h
    test-suite/trunk/MultiSource/Applications/ClamAV/binhex.h
    test-suite/trunk/MultiSource/Applications/ClamAV/blob.h
    test-suite/trunk/MultiSource/Applications/ClamAV/bzlib_private.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cab.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cclass.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cdiff.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cfgparser.h
    test-suite/trunk/MultiSource/Applications/ClamAV/chmunpack.h
    test-suite/trunk/MultiSource/Applications/ClamAV/clamav-config.h
    test-suite/trunk/MultiSource/Applications/ClamAV/clamav.h
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.c
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.ce
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.c
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.ce
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_opt.h
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.c
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.ce
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.h
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.c
    test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.ce
    test-suite/trunk/MultiSource/Applications/ClamAV/cltypes.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cname.h
    test-suite/trunk/MultiSource/Applications/ClamAV/cvd.h
    test-suite/trunk/MultiSource/Applications/ClamAV/dbdir/
    test-suite/trunk/MultiSource/Applications/ClamAV/dbdir/daily.cvd   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/dconf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/dsig.h
    test-suite/trunk/MultiSource/Applications/ClamAV/elf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/encoding_aliases.h
    test-suite/trunk/MultiSource/Applications/ClamAV/engine.c
    test-suite/trunk/MultiSource/Applications/ClamAV/entconv.h
    test-suite/trunk/MultiSource/Applications/ClamAV/entitylist.h
    test-suite/trunk/MultiSource/Applications/ClamAV/execs.h
    test-suite/trunk/MultiSource/Applications/ClamAV/filetypes.h
    test-suite/trunk/MultiSource/Applications/ClamAV/fsg.h
    test-suite/trunk/MultiSource/Applications/ClamAV/getopt.h
    test-suite/trunk/MultiSource/Applications/ClamAV/global.h
    test-suite/trunk/MultiSource/Applications/ClamAV/hashtab.h
    test-suite/trunk/MultiSource/Applications/ClamAV/htmlnorm.h
    test-suite/trunk/MultiSource/Applications/ClamAV/iana_tld.h
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/README
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v2.rar   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v3.rar   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.cab   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe.bz2   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.zip   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clamdoc.pdf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/is_tar.h
    test-suite/trunk/MultiSource/Applications/ClamAV/jscript.h
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_aspack.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_autoit.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_binhex.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_blob.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_cab.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_chmunpack.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_cvd.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_dconf.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_dsig.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_elf.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_entconv.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_filetypes.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_fsg.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_hashtab.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_htmlnorm.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_is_tar.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_jscript.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_line.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_lockdb.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_matcher-ac.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_matcher-bm.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_matcher.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_mbox.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_md5.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_message.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_mew.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_msexpand.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_mspack.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_nsis_LZMADecode.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_nsis_bzlib.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_nsis_infblock.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_nsis_nulsft.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_ole2_extract.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_others.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_packlibs.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_pdf.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_pe.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_petite.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_phish_domaincheck_db.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_phish_whitelist.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_phishcheck.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_pst.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_readdb.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_rebuildpe.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_list.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_regcomp.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_regerror.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_regexec.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_regfree.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_regex_strlcpy.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_rtf.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_scanners.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_sis.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_snprintf.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_special.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_spin.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_str.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_suecrypt.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_table.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_text.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_tnef.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_unarj.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_unsp.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_untar.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_unzip.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_upack.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_upx.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_uuencode.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_vba_extract.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_wwunpack.c
    test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_yc.c
    test-suite/trunk/MultiSource/Applications/ClamAV/line.h
    test-suite/trunk/MultiSource/Applications/ClamAV/lockdb.h
    test-suite/trunk/MultiSource/Applications/ClamAV/manager.h
    test-suite/trunk/MultiSource/Applications/ClamAV/matcher-ac.h
    test-suite/trunk/MultiSource/Applications/ClamAV/matcher-bm.h
    test-suite/trunk/MultiSource/Applications/ClamAV/matcher.h
    test-suite/trunk/MultiSource/Applications/ClamAV/mbox.h
    test-suite/trunk/MultiSource/Applications/ClamAV/md5.h
    test-suite/trunk/MultiSource/Applications/ClamAV/message.h
    test-suite/trunk/MultiSource/Applications/ClamAV/mew.h
    test-suite/trunk/MultiSource/Applications/ClamAV/misc.h
    test-suite/trunk/MultiSource/Applications/ClamAV/msexpand.h
    test-suite/trunk/MultiSource/Applications/ClamAV/mspack.h
    test-suite/trunk/MultiSource/Applications/ClamAV/network.h
    test-suite/trunk/MultiSource/Applications/ClamAV/nsis_bzlib.h
    test-suite/trunk/MultiSource/Applications/ClamAV/nsis_zconf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/nsis_zlib.h
    test-suite/trunk/MultiSource/Applications/ClamAV/nsis_zutil.h
    test-suite/trunk/MultiSource/Applications/ClamAV/nulsft.h
    test-suite/trunk/MultiSource/Applications/ClamAV/ole2_extract.h
    test-suite/trunk/MultiSource/Applications/ClamAV/options.h
    test-suite/trunk/MultiSource/Applications/ClamAV/others.h
    test-suite/trunk/MultiSource/Applications/ClamAV/output.h
    test-suite/trunk/MultiSource/Applications/ClamAV/packlibs.h
    test-suite/trunk/MultiSource/Applications/ClamAV/pdf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/pe.h
    test-suite/trunk/MultiSource/Applications/ClamAV/petite.h
    test-suite/trunk/MultiSource/Applications/ClamAV/phish_domaincheck_db.h
    test-suite/trunk/MultiSource/Applications/ClamAV/phish_whitelist.h
    test-suite/trunk/MultiSource/Applications/ClamAV/phishcheck.h
    test-suite/trunk/MultiSource/Applications/ClamAV/pst.h
    test-suite/trunk/MultiSource/Applications/ClamAV/readdb.h
    test-suite/trunk/MultiSource/Applications/ClamAV/rebuildpe.h
    test-suite/trunk/MultiSource/Applications/ClamAV/regex.h
    test-suite/trunk/MultiSource/Applications/ClamAV/regex2.h
    test-suite/trunk/MultiSource/Applications/ClamAV/regex_list.h
    test-suite/trunk/MultiSource/Applications/ClamAV/rtf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/scanners.h
    test-suite/trunk/MultiSource/Applications/ClamAV/scripts/
    test-suite/trunk/MultiSource/Applications/ClamAV/scripts/header_rename.sh
    test-suite/trunk/MultiSource/Applications/ClamAV/scripts/prepare.sh   (with props)
    test-suite/trunk/MultiSource/Applications/ClamAV/scripts/remove.sh
    test-suite/trunk/MultiSource/Applications/ClamAV/scripts/rename.sh
    test-suite/trunk/MultiSource/Applications/ClamAV/sha256.h
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_cdiff.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_cfgparser.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_getopt.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_misc.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_network.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_options.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_output.c
    test-suite/trunk/MultiSource/Applications/ClamAV/shared_sha256.c
    test-suite/trunk/MultiSource/Applications/ClamAV/sis.h
    test-suite/trunk/MultiSource/Applications/ClamAV/snprintf.h
    test-suite/trunk/MultiSource/Applications/ClamAV/special.h
    test-suite/trunk/MultiSource/Applications/ClamAV/spin.h
    test-suite/trunk/MultiSource/Applications/ClamAV/str.h
    test-suite/trunk/MultiSource/Applications/ClamAV/suecrypt.h
    test-suite/trunk/MultiSource/Applications/ClamAV/table.h
    test-suite/trunk/MultiSource/Applications/ClamAV/target.h
    test-suite/trunk/MultiSource/Applications/ClamAV/test_farm_farm.c
    test-suite/trunk/MultiSource/Applications/ClamAV/test_libclamav_libclamav.c
    test-suite/trunk/MultiSource/Applications/ClamAV/test_mbox_debugm.c
    test-suite/trunk/MultiSource/Applications/ClamAV/test_pe_debugpe.c
    test-suite/trunk/MultiSource/Applications/ClamAV/text.h
    test-suite/trunk/MultiSource/Applications/ClamAV/tnef.h
    test-suite/trunk/MultiSource/Applications/ClamAV/treewalk.h
    test-suite/trunk/MultiSource/Applications/ClamAV/unarj.h
    test-suite/trunk/MultiSource/Applications/ClamAV/unsp.h
    test-suite/trunk/MultiSource/Applications/ClamAV/untar.h
    test-suite/trunk/MultiSource/Applications/ClamAV/unzip.h
    test-suite/trunk/MultiSource/Applications/ClamAV/upack.h
    test-suite/trunk/MultiSource/Applications/ClamAV/upx.h
    test-suite/trunk/MultiSource/Applications/ClamAV/utils.h
    test-suite/trunk/MultiSource/Applications/ClamAV/uuencode.h
    test-suite/trunk/MultiSource/Applications/ClamAV/vba_extract.h
    test-suite/trunk/MultiSource/Applications/ClamAV/wwunpack.h
    test-suite/trunk/MultiSource/Applications/ClamAV/yc.h
Modified:
    test-suite/trunk/MultiSource/Applications/Makefile

Added: test-suite/trunk/MultiSource/Applications/ClamAV/COPYING
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/COPYING?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/COPYING (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/COPYING Wed Jan 30 15:17:10 2008
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: test-suite/trunk/MultiSource/Applications/ClamAV/ClamAV-srcflat.tar.gz
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/ClamAV-srcflat.tar.gz?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/ClamAV-srcflat.tar.gz

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/LZMADecode.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/LZMADecode.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/LZMADecode.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/LZMADecode.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,126 @@
+/*
+ * LZMADecode.c
+ * 
+ * This file is a part of LZMA compression module for NSIS.
+ * 
+ * Original LZMA SDK Copyright (C) 1999-2006 Igor Pavlov
+ * Modifications Copyright (C) 2003-2007 Amir Szekely <kichik at netvision.net.il>
+ * 
+ * Licensed under the Common Public License version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * 
+ * Licence details can be found in the file COPYING.nsis.
+ * 
+ * This software is provided 'as-is', without any express or implied
+ * warranty.
+ */
+
+#ifndef __LZMADECODE_H
+#define __LZMADECODE_H
+
+/* #define _LZMA_PROB32 */
+/* It can increase speed on some 32-bit CPUs, 
+   but memory usage will be doubled in that case */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "others.h"
+
+#ifndef lzmaalloc
+#define lzmaalloc cli_malloc
+#endif
+
+#ifndef lzmafree
+#define lzmafree free
+#endif
+
+#ifndef LZMACALL
+#  define LZMACALL
+#endif
+
+#ifndef UInt32
+#ifdef _LZMA_UINT32_IS_ULONG
+#define UInt32 unsigned long
+#else
+#define UInt32 unsigned int
+#endif
+#endif
+
+#ifdef _LZMA_PROB32
+#define CProb UInt32
+#else
+#define CProb unsigned short
+#endif
+
+typedef unsigned char lzByte;
+
+#define LZMA_STREAM_END 1
+#define LZMA_OK 0
+#define LZMA_DATA_ERROR -1
+/* we don't really care what the problem is... */
+/* #define LZMA_RESULT_NOT_ENOUGH_MEM -2 */
+#define LZMA_NOT_ENOUGH_MEM -1
+
+typedef struct
+{
+  /* mode control */
+  int mode;
+  int last;
+  int last2;
+  int last3;
+
+  /* properties */
+  UInt32 dynamicDataSize;
+  UInt32 dictionarySize;
+
+  /* io */
+  lzByte *next_in;    /* next input byte */
+  UInt32 avail_in;  /* number of bytes available at next_in */
+
+  lzByte *next_out;   /* next output byte should be put there */
+  UInt32 avail_out; /* remaining free space at next_out */
+
+  UInt32 totalOut;  /* total output - not always correct when lzmaDecode returns */
+
+  /* saved state */
+  lzByte previousByte;
+  lzByte matchByte;
+  CProb *probs;
+  CProb *prob;
+  int mi;
+  int posState;
+  int temp1;
+  int temp2;
+  int temp3;
+  int lc;
+  int state;
+  int isPreviousMatch;
+  int len;
+  UInt32 rep0;
+  UInt32 rep1;
+  UInt32 rep2;
+  UInt32 rep3;
+  UInt32 posStateMask;
+  UInt32 literalPosMask;
+  UInt32 dictionaryPos;
+
+  /* range coder */
+  UInt32 range;
+  UInt32 code;
+
+  /* allocated buffers */
+  lzByte *dictionary;
+  lzByte *dynamicData;
+} lzma_stream;
+
+void LZMACALL lzmaInit(lzma_stream *);
+int LZMACALL lzmaDecode(lzma_stream *);
+void LZMACALL lzmaShutdown(lzma_stream *); /* aCaB */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/Makefile?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/Makefile (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/Makefile Wed Jan 30 15:17:10 2008
@@ -0,0 +1,108 @@
+LEVEL = ../../../
+#RUN_OPTIONS     = 
+
+Source = $(addprefix libclamav_, \
+	 aspack.c autoit.c binhex.c blob.c cab.c chmunpack.c cvd.c dconf.c dsig.c\
+	 elf.c entconv.c filetypes.c fsg.c hashtab.c htmlnorm.c\
+	 is_tar.c jscript.c line.c lockdb.c matcher-ac.c matcher-bm.c\
+	 matcher.c mbox.c md5.c message.c mew.c msexpand.c mspack.c ole2_extract.c\
+	 others.c packlibs.c pdf.c pe.c petite.c phishcheck.c phish_domaincheck_db.c phish_whitelist.c\
+	 pst.c readdb.c rebuildpe.c regex_list.c rtf.c scanners.c sis.c snprintf.c special.c spin.c str.c suecrypt.c\
+	 table.c text.c tnef.c unarj.c unsp.c untar.c unzip.c upack.c upx.c uuencode.c vba_extract.c wwunpack.c yc.c)\
+	 $(addprefix clamscan_, \
+ 	 clamscan.c manager.c others.c treewalk.c)\
+	 $(addprefix shared_, \
+	 cdiff.c cfgparser.c getopt.c misc.c network.c options.c output.c sha256.c)\
+	 $(addprefix libclamav_regex_, \
+	 regerror.c, regfree.c, \
+	 regcomp.c,  regexec.c, strlcpy.c)\
+	 $(addprefix libclamav_nsis_, \
+		 nulsft.c, bzlib.c, infblock.c, LZMADecode.c )
+#        SVN version has these:	
+#	 inflate64.c lzma_iface.c
+#	 $(addprefix libclamav_lzma_, \
+#	 LzmaStateDecode.c) \
+
+PROG = clamscan
+CPPFLAGS += -DHAVE_CONFIG_H -I.
+LDFLAGS = -lz
+RUN_OPTIONS = --debug --no-summary -ddbdir -r inputs/*
+
+include $(LEVEL)/Makefile.config
+
+
+# for ClamAV these are in clamav-config.h, but since we can't run configure, we have to define them here
+
+
+# -- OS macros --
+#  It is especially important to get this correctly defined for windows.
+
+ifeq ($(OS),Darwin)
+   CPPFLAGS += -DC_DARWIN
+endif
+ifeq ($(OS),AIX)
+   CPPFLAGS += -DC_AIX
+endif
+ifeq ($(OS), IRIX)
+   CPPFLAGS += -DC_IRIX
+endif
+ifeq ($(OS), Cygwin)
+   CPPFLAGS += -DC_CYGWIN
+endif
+ifeq ($(OS), FreeBSD)
+   CPPFLAGS += -DC_BSD
+endif
+ifeq ($(OS), OpenBSD)
+   CPPFLAGS += -DC_BSD
+endif
+ifeq ($(OS), NetBSD)
+   CPPFLAGS += -DC_BSD
+endif
+ifeq ($(OS), HP-UX)
+   CPPFLAGS += -DC_HPUX
+endif
+ifeq ($(OS), Interix)
+  CPPFLAGS += -DC_INTERIX -DC_WINDOWS
+endif
+ifeq ($(OS), Win32)
+  CPPFLAGS += -DC_WINDOWS
+endif
+ifeq ($(OS), mingw)
+  CPPFLAGS += -DC_WINDOWS
+endif
+ifeq ($(OS), Linux)
+  CPPFLAGS += -DC_LINUX
+endif
+
+# -- except ARM all arches have WORDS_BIGENDIAN same as ENDIAN.
+#  for ARM we'd need a runtime autoconf check to detect.
+#  Only affects autoit.c, not defining this macro will partially disable it.
+
+ifneq ($(ARCH),ARM)
+ifeq ($(ENDIAN),little)
+   CPPFLAGS += -DFPU_WORDS_BIGENDIAN=0
+endif
+ifeq ($(ENDIAN),big)
+   CPPFLAGS += -DFPU_WORDS_BIGENDIAN=1
+endif
+endif
+
+
+# -- endianness detection --
+#  It is important to get this correctly, especially for Sparc.
+#  If arch is little endian the code possibly does unaligned accesses, that would
+#  cause a SIGBUS on Sparc.
+
+ifeq ($(ENDIAN),little)
+   CPPFLAGS += -DWORDS_BIGENDIAN=0
+endif
+ifeq ($(ENDIAN),big)
+   CPPFLAGS += -DWORDS_BIGENDIAN=1
+endif
+
+include ../../Makefile.multisrc
+#compare debug output
+DIFFPROG := $(PROGDIR)/DiffOutput.sh "diff "
+
+EXTRA_LLI_OPTS += -load=libz
+EXTRA_JIT_OPTS += -load=libz

Added: test-suite/trunk/MultiSource/Applications/ClamAV/README.LLVM-tests
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/README.LLVM-tests?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/README.LLVM-tests (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/README.LLVM-tests Wed Jan 30 15:17:10 2008
@@ -0,0 +1,49 @@
+Building ClamAV (www.clamav.net) for llvm's testsuite.
+
+To get sources from clamav's repository 
+(currently from 0.92 stable version, you can edit the tag in prepare.sh)
+
+$ ./prepare.sh checkout
+$ ./prepare.sh copy
+$ ./prepare.sh getdb
+
+Provided files:
+prepare.sh
+rename.sh: used by prepare.sh
+header_rename.sh: used by prepare.sh
+clamav-config.h: minimal config header, so we don't have to run autoconf
+Makefile: integrate ClamAV into LLVM-testsuite's build-system
+filterdiff.sh: compare --debug output to test code generation correctness
+
+Important to know:
+
+The directory inputs/ contains files (or symlinks to) to be scanned during the test.
+These can be any files, but they must be the same each time you run
+the test, to ensure consistency of results.
+
+The directory dbdir/ contains the virus database. You get an initial copy with the
+prepare.sh.
+Note, that the recommended way to update is via freshclam(1). Updating the database
+is not important for the test-suite.
+When you import a new version of ClamAV into the testsuite it is recommended to
+use latest DB however.
+
+When execute clamscan creates files in the system tmp directory (usually /tmp).
+Watch disk space!
+
+
+
+BUGREPORTS
+----------
+If you encounter problems with ClamAV itself, please try to reproduce the problem with
+clamav built from latest stable available on www.clamav.net.
+
+You can report bugs on http://bugs.clamav.net
+
+If you haven't tried to reproduce problem with the original clamav,
+please add a reference to the LLVM bugreport, and a descriptive text in subject stating
+it is related to LLVM testsuite. 
+
+For bugs opened on LLVM bugzilla regarding ClamAV testsuite failures 
+(that are not due to bugs in LLVM), please CC: edwin at clamav dot net
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/aspack.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/aspack.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/aspack.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/aspack.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,29 @@
+/*
+ *  Copyright (C) 2007 Amaketos, LLC
+ *  Authors: Luciano Giuseppe 'Pnluck' <pnluck at virgilio.it>
+ *           aCaB <acab at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __ASPACK_H
+#define __ASPACK_H
+
+#include "cltypes.h"
+#include "execs.h"
+
+int unaspack212(uint8_t *, unsigned int, struct cli_exe_section *, uint16_t, uint32_t, uint32_t, int);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/autoit.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/autoit.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/autoit.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/autoit.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,25 @@
+/*
+ *  Copyright (C) 2007 Sourcefire Inc.
+ *  Author: aCaB <acab at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __AUTOIT_H
+#define __AUTOIT_H
+
+#include "others.h"
+int cli_scanautoit(int desc, cli_ctx *ctx, off_t offset);
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/binhex.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/binhex.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/binhex.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/binhex.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,37 @@
+/*
+ *  Copyright (C) 2004 Nigel Horne <njh at bandsman.co.uk>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ * Change History:
+ * $Log: binhex.h,v $
+ * Revision 1.4  2006/04/09 19:59:27  kojm
+ * update GPL headers with new address for FSF
+ *
+ * Revision 1.3  2004/11/18 19:30:29  kojm
+ * add support for Mac's HQX file format
+ *
+ * Revision 1.2  2004/11/18 18:24:45  nigelhorne
+ * Added binhex.h
+ *
+ */
+
+#ifndef __BINHEX_H
+#define __BINHEX_H
+
+int	cli_binhex(const char *dir, int desc);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/blob.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/blob.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/blob.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/blob.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,76 @@
+/*
+ *  Copyright (C) 2002 Nigel Horne <njh at bandsman.co.uk>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __BLOB_H
+#define __BLOB_H
+
+/*
+ * Resizable chunk of memory
+ */
+typedef struct blob {
+	char	*name;	/* filename */
+	unsigned	char	*data;	/* the stuff itself */
+	off_t	len;	/* number of bytes of data so far */
+	off_t	size;	/* number of bytes allocated to data so far */
+	int	isClosed;
+#ifdef	CL_DEBUG
+	object_type	magic;	/* verify that this is a blob */
+#endif
+} blob;
+
+blob	*blobCreate(void);
+void	blobDestroy(blob *b);
+void	blobArrayDestroy(blob *b[], int n);
+void	blobSetFilename(blob *b, const char *dir, const char *filename);
+int	blobAddData(blob *b, const unsigned char *data, size_t len);
+unsigned char *blobGetData(const blob *b);
+size_t	blobGetDataSize(const blob *b);
+void	blobClose(blob *b);
+int	blobcmp(const blob *b1, const blob *b2);
+int	blobGrow(blob *b, size_t len);
+
+/*
+ * Like a blob, but associated with a file stored in the temporary directory
+ */
+typedef	struct fileblob {
+	FILE	*fp;
+	blob	b;	/*
+			 * b.name is the name of the attachment as stored in the
+			 * email, not the full path name of the temporary file
+			 */
+	char	*fullname;	/* full pathname of the file */
+	unsigned	int	isNotEmpty : 1;
+	unsigned	int	isInfected : 1;
+	unsigned	long	bytes_scanned;
+	cli_ctx	*ctx;
+} fileblob;
+
+fileblob	*fileblobCreate(void);
+int	fileblobScanAndDestroy(fileblob *fb);
+void	fileblobDestructiveDestroy(fileblob *fb);
+void	fileblobDestroy(fileblob *fb);
+void	fileblobSetFilename(fileblob *fb, const char *dir, const char *filename);
+const	char	*fileblobGetFilename(const fileblob *fb);
+void	fileblobSetCTX(fileblob *fb, cli_ctx *ctx);
+int	fileblobAddData(fileblob *fb, const unsigned char *data, size_t len);
+int	fileblobScan(const fileblob *fb);
+int	fileblobInfected(const fileblob *fb);
+void	sanitiseName(char *name);
+
+#endif /*_BLOB_H*/

Added: test-suite/trunk/MultiSource/Applications/ClamAV/bzlib_private.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/bzlib_private.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/bzlib_private.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/bzlib_private.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,471 @@
+
+/*-------------------------------------------------------------*/
+/*--- Private header file for the library.                  ---*/
+/*---                                       bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.4 of 20 December 2006
+   Copyright (C) 1996-2006 Julian Seward <jseward at bzip.org>
+   This file was modified for ClamAV by aCaB <acab at clamav.net>
+
+   This program is released under the terms of the license contained
+   in the file COPYING.nsis.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_PRIVATE_H
+#define _BZLIB_PRIVATE_H
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdlib.h>
+
+#ifndef BZ_NO_STDIO
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#endif
+
+#include "nsis_bzlib.h"
+
+
+
+/*-- General stuff. --*/
+
+#define BZ_VERSION  "1.0.4, 20-Dec-2006"
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+#ifndef __GNUC__
+#define __inline__  /* */
+#endif 
+
+/* aCaB */
+/* #ifndef BZ_NO_STDIO */
+
+/* extern void BZ2_bz__AssertH__fail ( int errcode ); */
+/* #define AssertH(cond,errcode) \ */
+/*    { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } */
+
+/* #if BZ_DEBUG */
+/* #define AssertD(cond,msg) \ */
+/*    { if (!(cond)) {       \ */
+/*       fprintf ( stderr,   \ */
+/*         "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ */
+/*       exit(1); \ */
+/*    }} */
+/* #else */
+/* #define AssertD(cond,msg) /\* *\/ */
+/* #endif */
+
+/* #define VPrintf0(zf) \ */
+/*    fprintf(stderr,zf) */
+/* #define VPrintf1(zf,za1) \ */
+/*    fprintf(stderr,zf,za1) */
+/* #define VPrintf2(zf,za1,za2) \ */
+/*    fprintf(stderr,zf,za1,za2) */
+/* #define VPrintf3(zf,za1,za2,za3) \ */
+/*    fprintf(stderr,zf,za1,za2,za3) */
+/* #define VPrintf4(zf,za1,za2,za3,za4) \ */
+/*    fprintf(stderr,zf,za1,za2,za3,za4) */
+/* #define VPrintf5(zf,za1,za2,za3,za4,za5) \ */
+/*    fprintf(stderr,zf,za1,za2,za3,za4,za5) */
+
+/* #else */
+
+/* extern void bz_internal_error ( int errcode ); */
+/* #define AssertH(cond,errcode) \ */
+/*    { if (!(cond)) bz_internal_error ( errcode ); } */
+/* #define AssertD(cond,msg)                do { } while (0) */
+#define VPrintf0(zf)                     do { } while (0)
+#define VPrintf1(zf,za1)                 do { } while (0)
+#define VPrintf2(zf,za1,za2)             do { } while (0)
+#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
+#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
+
+/* #endif */
+
+#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
+#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
+
+
+/*-- Header bytes. --*/
+
+/* #define BZ_HDR_B 0x42   /\* 'B' *\/ */
+/* #define BZ_HDR_Z 0x5a   /\* 'Z' *\/ */
+/* #define BZ_HDR_h 0x68   /\* 'h' *\/ */
+/* #define BZ_HDR_0 0x30   /\* '0' *\/ */
+  
+/*-- Constants for the back end. --*/
+
+#define BZ_MAX_ALPHA_SIZE 258
+#define BZ_MAX_CODE_LEN    23
+
+#define BZ_RUNA 0
+#define BZ_RUNB 1
+
+#define BZ_N_GROUPS 6
+#define BZ_G_SIZE   50
+#define BZ_N_ITERS  4
+
+#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
+
+
+
+/*-- Stuff for randomising repetitive blocks. --*/
+/* aCaB */
+/* extern Int32 BZ2_rNums[512]; */
+
+#define BZ_RAND_DECLS                          \
+   Int32 rNToGo;                               \
+   Int32 rTPos                                 \
+
+#define BZ_RAND_INIT_MASK                      \
+   s->rNToGo = 0;                              \
+   s->rTPos  = 0                               \
+
+#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
+
+#define BZ_RAND_UPD_MASK                       \
+   if (s->rNToGo == 0) {                       \
+      s->rNToGo = BZ2_rNums[s->rTPos];         \
+      s->rTPos++;                              \
+      if (s->rTPos == 512) s->rTPos = 0;       \
+   }                                           \
+   s->rNToGo--;
+/**/
+
+/*-- Stuff for doing CRCs. --*/
+/* aCaB 
+extern UInt32 BZ2_crc32Table[256];
+
+#define BZ_INITIALISE_CRC(crcVar)              \
+{                                              \
+   crcVar = 0xffffffffL;                       \
+}
+
+#define BZ_FINALISE_CRC(crcVar)                \
+{                                              \
+   crcVar = ~(crcVar);                         \
+}
+
+#define BZ_UPDATE_CRC(crcVar,cha)              \
+{                                              \
+   crcVar = (crcVar << 8) ^                    \
+            BZ2_crc32Table[(crcVar >> 24) ^    \
+                           ((UChar)cha)];      \
+}
+*/
+
+/*-- States and modes for compression. --*/
+
+#define BZ_M_IDLE      1
+#define BZ_M_RUNNING   2
+#define BZ_M_FLUSHING  3
+#define BZ_M_FINISHING 4
+
+#define BZ_S_OUTPUT    1
+#define BZ_S_INPUT     2
+
+#define BZ_N_RADIX 2
+#define BZ_N_QSORT 12
+#define BZ_N_SHELL 18
+#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
+
+
+
+
+/*-- Structure holding all the compression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct nsis_bzstream */
+      nsis_bzstream* strm;
+
+      /* mode this stream is in, and whether inputting */
+      /* or outputting data */
+      Int32    mode;
+      Int32    state;
+
+      /* remembers avail_in when flush/finish requested */
+      UInt32   avail_in_expect;
+
+      /* for doing the block sorting */
+      UInt32*  arr1;
+      UInt32*  arr2;
+      UInt32*  ftab;
+      Int32    origPtr;
+
+      /* aliases for arr1 and arr2 */
+      UInt32*  ptr;
+      UChar*   block;
+      UInt16*  mtfv;
+      UChar*   zbits;
+
+      /* for deciding when to use the fallback sorting algorithm */
+      Int32    workFactor;
+
+      /* run-length-encoding of the input */
+      UInt32   state_in_ch;
+      Int32    state_in_len;
+      BZ_RAND_DECLS;
+
+      /* input and output limits and current posns */
+      Int32    nblock;
+      Int32    nblockMAX;
+      Int32    numZ;
+      Int32    state_out_pos;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      UChar    unseqToSeq[256];
+
+      /* the buffer for bit stream creation */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* block and combined CRCs */
+      UInt32   blockCRC;
+      UInt32   combinedCRC;
+
+      /* misc administratium */
+      Int32    verbosity;
+      Int32    blockNo;
+      Int32    blockSize100k;
+
+      /* stuff for coding the MTF values */
+      Int32    nMTF;
+      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+
+      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      /* second dimension: only 3 needed; 4 makes index calculations faster */
+      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
+
+   }
+   EState;
+
+
+/*-- states for decompression. --*/
+
+#define BZ_X_IDLE        1
+#define BZ_X_OUTPUT      2
+
+#define BZ_X_MAGIC_1     10
+#define BZ_X_MAGIC_2     11
+#define BZ_X_MAGIC_3     12
+#define BZ_X_MAGIC_4     13
+#define BZ_X_BLKHDR_1    14
+#define BZ_X_BLKHDR_2    15
+#define BZ_X_BLKHDR_3    16
+#define BZ_X_BLKHDR_4    17
+#define BZ_X_BLKHDR_5    18
+#define BZ_X_BLKHDR_6    19
+#define BZ_X_BCRC_1      20
+#define BZ_X_BCRC_2      21
+#define BZ_X_BCRC_3      22
+#define BZ_X_BCRC_4      23
+#define BZ_X_RANDBIT     24
+#define BZ_X_ORIGPTR_1   25
+#define BZ_X_ORIGPTR_2   26
+#define BZ_X_ORIGPTR_3   27
+#define BZ_X_MAPPING_1   28
+#define BZ_X_MAPPING_2   29
+#define BZ_X_SELECTOR_1  30
+#define BZ_X_SELECTOR_2  31
+#define BZ_X_SELECTOR_3  32
+#define BZ_X_CODING_1    33
+#define BZ_X_CODING_2    34
+#define BZ_X_CODING_3    35
+#define BZ_X_MTF_1       36
+#define BZ_X_MTF_2       37
+#define BZ_X_MTF_3       38
+#define BZ_X_MTF_4       39
+#define BZ_X_MTF_5       40
+#define BZ_X_MTF_6       41
+#define BZ_X_ENDHDR_2    42
+#define BZ_X_ENDHDR_3    43
+#define BZ_X_ENDHDR_4    44
+#define BZ_X_ENDHDR_5    45
+#define BZ_X_ENDHDR_6    46
+#define BZ_X_CCRC_1      47
+#define BZ_X_CCRC_2      48
+#define BZ_X_CCRC_3      49
+#define BZ_X_CCRC_4      50
+
+
+
+/*-- Constants for the fast MTF decoder. --*/
+
+#define MTFA_SIZE 4096
+#define MTFL_SIZE 16
+
+
+
+/*-- Structure holding all the decompression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct nsis_bzstream */
+      nsis_bzstream* strm;
+
+      /* state indicator for this stream */
+      Int32    state;
+
+      /* for doing the final run-length decoding */
+      UChar    state_out_ch;
+      Int32    state_out_len;
+      Bool     blockRandomised;
+      BZ_RAND_DECLS;
+
+      /* the buffer for bit stream reading */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* misc administratium */
+      Int32    blockSize100k;
+      Bool     smallDecompress;
+      Int32    currBlockNo;
+      Int32    verbosity;
+
+      /* for undoing the Burrows-Wheeler transform */
+      Int32    origPtr;
+      UInt32   tPos;
+      Int32    k0;
+      Int32    unzftab[256];
+      Int32    nblock_used;
+      Int32    cftab[257];
+      Int32    cftabCopy[257];
+
+      /* for undoing the Burrows-Wheeler transform (FAST) */
+      UInt32   *tt;
+
+      /* for undoing the Burrows-Wheeler transform (SMALL) */
+      UInt16   *ll16;
+      UChar    *ll4;
+
+      /* stored and calculated CRCs */
+      UInt32   storedBlockCRC;
+      UInt32   storedCombinedCRC;
+      UInt32   calculatedBlockCRC;
+      UInt32   calculatedCombinedCRC;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      Bool     inUse16[16];
+      UChar    seqToUnseq[256];
+
+      /* for decoding the MTF values */
+      UChar    mtfa   [MTFA_SIZE];
+      Int32    mtfbase[256 / MTFL_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+
+      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    minLens[BZ_N_GROUPS];
+
+      /* save area for scalars in the main decompress code */
+      Int32    save_i;
+      Int32    save_j;
+      Int32    save_t;
+      Int32    save_alphaSize;
+      Int32    save_nGroups;
+      Int32    save_nSelectors;
+      Int32    save_EOB;
+      Int32    save_groupNo;
+      Int32    save_groupPos;
+      Int32    save_nextSym;
+      Int32    save_nblockMAX;
+      Int32    save_nblock;
+      Int32    save_es;
+      Int32    save_N;
+      Int32    save_curr;
+      Int32    save_zt;
+      Int32    save_zn; 
+      Int32    save_zvec;
+      Int32    save_zj;
+      Int32    save_gSel;
+      Int32    save_gMinlen;
+      Int32*   save_gLimit;
+      Int32*   save_gBase;
+      Int32*   save_gPerm;
+
+   }
+   DState;
+
+
+
+/*-- Macros for decompression. --*/
+
+#define BZ_GET_FAST(cccc)                     \
+    if (s->tPos >= s->blockSize100k * 100000) return True; \
+    s->tPos = s->tt[s->tPos];                 \
+    cccc = (UChar)(s->tPos & 0xff);           \
+    s->tPos >>= 8;
+
+#define BZ_GET_FAST_C(cccc)                   \
+    if (c_tPos >= s->blockSize100k * 100000) return True; \
+    c_tPos = c_tt[c_tPos];                    \
+    cccc = (UChar)(c_tPos & 0xff);            \
+    c_tPos >>= 8;
+
+#define SET_LL4(i,n)                                          \
+   { if (((i) & 0x1) == 0)                                    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
+   }
+
+#define GET_LL4(i)                             \
+   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
+
+#define SET_LL(i,n)                          \
+   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
+     SET_LL4(i, n >> 16);                    \
+   }
+
+#define GET_LL(i) \
+   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
+
+#define BZ_GET_SMALL(cccc)                            \
+      cccc = indexIntoF ( s->tPos, s->cftab );    \
+      s->tPos = GET_LL(s->tPos);
+
+#endif
+
+
+/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
+
+#ifdef BZ_NO_STDIO
+#ifndef NULL
+#define NULL 0
+#endif
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                   bzlib_private.h ---*/
+/*-------------------------------------------------------------*/

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cab.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cab.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cab.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cab.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,74 @@
+/*
+ *  Copyright (C) 2006 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CAB_H
+#define __CAB_H
+
+#include <sys/types.h>
+#include "cltypes.h"
+
+#define CAB_BLOCKMAX 32768
+#define CAB_INPUTMAX (CAB_BLOCKMAX + 6144)
+
+struct cab_archive {
+    uint32_t length;
+    uint16_t nfolders;
+    uint16_t nfiles;
+    uint16_t flags;
+    uint16_t reshdr;
+    uint8_t resdata;
+    struct cab_folder *folders;
+    struct cab_file *files;
+};
+
+struct cab_state {
+    unsigned char *pt, *end;
+    unsigned char block[CAB_INPUTMAX];
+    uint16_t blklen;
+    uint16_t outlen;
+    void *stream;
+    uint16_t blknum;
+};
+
+struct cab_file {
+    uint32_t length;
+    uint16_t attribs;
+    off_t offset;
+    char *name;
+    int error;
+    int fd;
+    int ofd;
+    struct cab_folder *folder;
+    struct cab_file *next;
+    struct cab_archive *cab;
+    struct cab_state *state;
+};
+
+struct cab_folder {
+    uint16_t cmethod;
+    uint16_t nblocks;
+    struct cab_archive *cab;
+    off_t offset;
+    struct cab_folder *next;
+};
+
+int cab_open(int fd, off_t offset, struct cab_archive *cab);
+int cab_extract(struct cab_file *file, const char *name);
+void cab_free(struct cab_archive *cab);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cclass.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cclass.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cclass.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cclass.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,68 @@
+/*-
+ * This code is derived from OpenBSD's libc/regex, original license follows:
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
+ * Copyright (c) 1992, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Henry Spencer.
+ *
+ * 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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *	@(#)cclass.h	8.3 (Berkeley) 3/20/94
+ */
+
+/* character-class table */
+static struct cclass {
+	const char *name;
+	const char *chars;
+	const char *multis;
+} cclasses[] = {
+	{ "alnum",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
+0123456789",				""} ,
+	{ "alpha",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+					""} ,
+	{ "blank",	" \t",		""} ,
+	{ "cntrl",	"\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\
+\25\26\27\30\31\32\33\34\35\36\37\177",	""} ,
+	{ "digit",	"0123456789",	""} ,
+	{ "graph",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
+0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+					""} ,
+	{ "lower",	"abcdefghijklmnopqrstuvwxyz",
+					""} ,
+	{ "print",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
+0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ",
+					""} ,
+	{ "punct",	"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+					""} ,
+	{ "space",	"\t\n\v\f\r ",	""} ,
+	{ "upper",	"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+					""} ,
+	{ "xdigit",	"0123456789ABCDEFabcdef",
+					""} ,
+	{ NULL,		0,		"" }
+};

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cdiff.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cdiff.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cdiff.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cdiff.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,26 @@
+/*
+ *  Copyright (C) 2006 Sensory Networks, Inc.
+ *	      (C) 2007 Tomasz Kojm <tkojm at clamav.net>
+ *	      Written by Tomasz Kojm
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CDIFF_H
+#define __CDIFF_H
+
+int cdiff_apply(int fd, unsigned short mode);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cfgparser.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cfgparser.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cfgparser.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cfgparser.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,60 @@
+/*
+ *  Copyright (C) 2002 - 2005 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CFGPARSER_H
+#define __CFGPARSER_H
+
+#define LINE_LENGTH 1024
+
+#define OPT_STR 1 /* string argument (space delimited) */
+#define OPT_NUM 2 /* numerical argument */
+#define OPT_COMPSIZE 3 /* convert kilobytes (k) and megabytes (m) to bytes */
+#define OPT_BOOL 4 /* boolean value */
+#define OPT_FULLSTR 5 /* string argument, but get a full line */
+#define OPT_QUOTESTR 6 /* string argument, (space delimited unless the argument starts with ' or ".  If the argument starts with a quote character, then the argument data is what appears between the starting quote character and the matching ending quote character.) */
+
+#define OPT_CLAMD 1
+#define OPT_FRESHCLAM 2
+
+struct cfgoption {
+    const char *name;
+    unsigned short argtype;
+    int numarg;
+    const char *strarg;
+    short multiple;
+    unsigned short owner;
+};
+
+struct cfgstruct {
+    char *optname;
+    char *strarg;
+    int numarg;
+    short enabled;
+    short multiple;
+    struct cfgstruct *nextarg;
+    struct cfgstruct *next;
+};
+
+extern struct cfgoption cfg_options[];
+
+struct cfgstruct *getcfg(const char *cfgfile, int verbose);
+const struct cfgstruct *cfgopt(const struct cfgstruct *copt, const char *optname);
+void freecfg(struct cfgstruct *copt);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/chmunpack.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/chmunpack.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/chmunpack.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/chmunpack.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,27 @@
+/*
+ *  Extract component parts of MS CHM files
+ *
+ *  Copyright (C) 2004 trog at uncon.org
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+ 
+#ifndef __CHM_UNPACK_H
+#define __CHM_UNPACK_H
+ 
+int chm_unpack(int fd, const char *dirname);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamav-config.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamav-config.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamav-config.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamav-config.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,398 @@
+/* clamav-config.h.  Generated from clamav-config.h.in by configure.  */
+/* clamav-config.h.in.  Generated from configure.in by autoheader.  */
+
+/* enable bind8 compatibility */
+/* #undef BIND_8_COMPAT */
+
+/* Define if your snprintf is busted */
+/* #undef BROKEN_SNPRINTF */
+
+/* "build clamd" */
+/* #undef BUILD_CLAMD */
+
+/* name of the clamav group */
+#define CLAMAVGROUP "clamav"
+
+/* name of the clamav user */
+#define CLAMAVUSER "clamav"
+
+/* enable clamuko */
+/* #undef CLAMUKO */
+
+/* enable debugging */
+/* #undef CL_DEBUG */
+
+/* enable experimental code */
+/* #undef CL_EXPERIMENTAL */
+
+/* thread safe */
+/* #undef CL_THREAD_SAFE */
+
+/* where to look for the config file */
+#define CONFDIR "/usr/local/etc"
+
+/* os is aix */
+/* #undef C_AIX */
+
+/* os is beos */
+/* #undef C_BEOS */
+
+/* Increase thread stack size. */
+/* #undef C_BIGSTACK */
+
+/* os is bsd flavor */
+/* #undef C_BSD */
+
+/* os is cygwin */
+/* #undef C_CYGWIN */
+
+/* os is darwin */
+/* #undef C_DARWIN */
+
+/* target is gnu-hurd */
+/* #undef C_GNU_HURD */
+
+/* os is hpux */
+/* #undef C_HPUX */
+
+/* os is interix */
+/* #undef C_INTERIX */
+
+/* os is irix */
+/* #undef C_IRIX */
+
+/* target is kfreebsd-gnu */
+/* #undef C_KFREEBSD_GNU */
+
+/* target is linux */
+/* #define C_LINUX 1 */
+
+/* os is OS/2 */
+/* #undef C_OS2 */
+
+/* os is osf/tru64 */
+/* #undef C_OSF */
+
+/* os is QNX 6.x.x */
+/* #undef C_QNX6 */
+
+/* os is solaris */
+/* #undef C_SOLARIS */
+
+/* Path to virus database directory. */
+#define DATADIR "/usr/local/share/clamav"
+
+/* "default FD_SETSIZE value" */
+#define DEFAULT_FD_SETSIZE 1024
+
+/* "build unrar code" */
+/* #undef ENABLE_UNRAR */
+
+/* file i/o buffer size */
+#define FILEBUFF 8192
+
+/* FPU byte ordering is little endian */
+#define FPU_WORDS_BIGENDIAN 0
+
+/* enable workaround for broken DNS servers */
+/* #undef FRESHCLAM_DNS_FIX */
+
+/* use "Cache-Control: no-cache" in freshclam */
+/* #undef FRESHCLAM_NO_CACHE */
+
+/* access rights in msghdr */
+/* #undef HAVE_ACCRIGHTS_IN_MSGHDR */
+
+/* attrib aligned */
+#define HAVE_ATTRIB_ALIGNED 1
+
+/* attrib packed */
+#define HAVE_ATTRIB_PACKED 1
+
+/* have bzip2 */
+/* #define HAVE_BZLIB_H 1 */
+
+/* ancillary data style fd pass */
+/* #define HAVE_CONTROL_IN_MSGHDR 1 */
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #define HAVE_CTIME_R 1 */
+
+/* ctime_r takes 2 arguments */
+/* #define HAVE_CTIME_R_2 1 */
+
+/* ctime_r takes 3 arguments */
+/* #undef HAVE_CTIME_R_3 */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #define HAVE_DLFCN_H 1 */
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#define HAVE_FSEEKO 1
+
+/* gethostbyname_r takes 3 arguments */
+/* #undef HAVE_GETHOSTBYNAME_R_3 */
+
+/* gethostbyname_r takes 5 arguments */
+/* #undef HAVE_GETHOSTBYNAME_R_5 */
+
+/* gethostbyname_r takes 6 arguments */
+/* #undef HAVE_GETHOSTBYNAME_R_6 */
+
+/* Define to 1 if you have the `getpagesize' function. */
+/* #define HAVE_GETPAGESIZE 1 */
+
+/* have gmp installed */
+/* #undef HAVE_GMP */
+
+/* Define to 1 if you have the <grp.h> header file. */
+ #define HAVE_GRP_H 1 
+
+/* Define to 1 if you have the <iconv.h> header file. */
+/* #define HAVE_ICONV_H 1 */
+
+/* Define to 1 if you have the `inet_ntop' function. */
+/* #define HAVE_INET_NTOP 1 */
+
+/* Define to 1 if you have the `initgroups' function. */
+/* #define HAVE_INITGROUPS 1 */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #define HAVE_INTTYPES_H 1 */
+
+/* in_addr_t is defined */
+/* #define HAVE_IN_ADDR_T 1 */
+
+/* in_port_t is defined */
+/* #define HAVE_IN_PORT_T 1 */
+
+/* Define to 1 if you have the <libmilter/mfapi.h> header file. */
+/* #undef HAVE_LIBMILTER_MFAPI_H */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <malloc.h> header file. */
+/* #define HAVE_MALLOC_H 1 */
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #define HAVE_MEMORY_H 1 */
+
+/* Define to 1 if you have the `mkstemp' function. */
+#define HAVE_MKSTEMP 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <ndir.h> header file. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the `poll' function. */
+/* #define HAVE_POLL 1 */
+
+/* Define to 1 if you have the <poll.h> header file. */
+/* #define HAVE_POLL_H 1 */
+
+/* "pragma pack" */
+/* #undef HAVE_PRAGMA_PACK */
+
+/* "pragma pack hppa/hp-ux style" */
+/* #undef HAVE_PRAGMA_PACK_HPPA */
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#define HAVE_PWD_H 1 
+
+/* readdir_r takes 2 arguments */
+/* #undef HAVE_READDIR_R_2 */
+
+/* readdir_r takes 3 arguments */
+/* #undef HAVE_READDIR_R_3 */
+
+/* Define to 1 if you have the `recvmsg' function. */
+/* #define HAVE_RECVMSG 1 */
+
+/* have resolv.h */
+/* #undef HAVE_RESOLV_H */
+
+/* Define signed right shift implementation */
+#define HAVE_SAR 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+/* #define HAVE_SENDMSG 1 */
+
+/* Define to 1 if you have the `setgroups' function. */
+/* #define HAVE_SETGROUPS 1 */
+
+/* Define to 1 if you have the `setsid' function. */
+/* #define HAVE_SETSID 1 */
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+/* #define HAVE_STRERROR_R 1 */
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #define HAVE_STRINGS_H 1 */
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcat' function. */
+/* #undef HAVE_STRLCAT */
+
+/* Define to 1 if you have the `strlcpy' function. */
+/* #undef HAVE_STRLCPY */
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+/* #undef HAVE_SYS_FILIO_H */
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+/* #undef HAVE_SYS_INTTYPES_H */
+
+/* Define to 1 if you have the <sys/int_types.h> header file. */
+/* #undef HAVE_SYS_INT_TYPES_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* "have <sys/select.h>" */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+/* #define HAVE_SYS_UIO_H 1 */
+
+/* Define to 1 if you have the <tcpd.h> header file. */
+/* #undef HAVE_TCPD_H */
+
+/* Define to 1 if you have the <termios.h> header file. */
+/* #define HAVE_TERMIOS_H 1 */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* zlib installed */
+#define HAVE_ZLIB_H 1
+
+/* Early Linux doesn't set cmsg fields */
+/* #undef INCOMPLETE_CMSG */
+
+/* bzip funtions do not have bz2 prefix */
+/* #undef NOBZ2PREFIX */
+
+/* "no fd_set" */
+/* #undef NO_FD_SET */
+
+/* Name of package */
+#define PACKAGE "clamav"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* scan buffer size */
+#define SCANBUFF 131072
+
+/* location of Sendmail binary */
+/* #undef SENDMAIL_BIN */
+
+/* major version of Sendmail */
+/* #undef SENDMAIL_VERSION_A */
+
+/* minor version of Sendmail */
+/* #undef SENDMAIL_VERSION_B */
+
+/* subversion of Sendmail */
+/* #undef SENDMAIL_VERSION_C */
+
+/* Define to 1 if the `setpgrp' function takes no argument. */
+#define SETPGRP_VOID 1
+
+#if 0
+/* lets assume system has proper stdint that defines uintX_t. */
+/* The number of bytes in type int */
+/* #define SIZEOF_INT 4 */
+
+/* The number of bytes in type long */
+#define SIZEOF_LONG 8
+
+/* The number of bytes in type long long */
+#define SIZEOF_LONG_LONG 8
+
+/* The number of bytes in type short */
+#define SIZEOF_SHORT 2
+#endif
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* use syslog */
+/* #define USE_SYSLOG 1 */
+
+/* Version number of package */
+#define VERSION "devel-20071218"
+
+/* tcpwrappers support */
+/* #undef WITH_TCPWRAP */
+
+/* endianess */
+/* #define WORDS_BIGENDIAN 0 */
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+/* #undef _LARGEFILE_SOURCE */
+
+/* POSIX compatibility */
+/* #undef _POSIX_PII_SOCKET */
+
+/* thread safe */
+/* #undef _REENTRANT */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to "int" if <sys/socket.h> does not define. */
+/* #undef socklen_t */

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamav.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamav.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamav.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamav.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,206 @@
+/*
+ *  Copyright (C) 2002 - 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CLAMAV_H
+#define __CLAMAV_H
+
+#include <sys/types.h>
+#include <sys/stat.h>
+ 
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define CL_COUNT_PRECISION 4096
+
+/* return codes */
+#define CL_CLEAN	0   /* no virus found */
+#define CL_VIRUS	1   /* virus(es) found */
+#define CL_SUCCESS	CL_CLEAN
+#define CL_BREAK	2
+
+#define CL_EMAXREC	-100 /* recursion limit exceeded */
+#define CL_EMAXSIZE	-101 /* size limit exceeded */
+#define CL_EMAXFILES	-102 /* files limit exceeded */
+#define CL_ERAR		-103 /* rar handler error */
+#define CL_EZIP		-104 /* zip handler error */
+#define CL_EGZIP	-105 /* gzip handler error */
+#define CL_EBZIP	-106 /* bzip2 handler error */
+#define CL_EOLE2	-107 /* OLE2 handler error */
+#define CL_EMSCOMP	-108 /* MS Expand handler error */
+#define CL_EMSCAB	-109 /* MS CAB module error */
+#define CL_EACCES	-110 /* access denied */
+#define CL_ENULLARG	-111 /* null argument */
+#define CL_ETMPFILE	-112 /* tmpfile() failed */
+#define CL_EFSYNC	-113 /* fsync() failed */
+#define CL_EMEM		-114 /* memory allocation error */
+#define CL_EOPEN	-115 /* file open error */
+#define CL_EMALFDB	-116 /* malformed database */
+#define CL_EPATSHORT	-117 /* pattern too short */
+#define CL_ETMPDIR	-118 /* mkdir() failed */
+#define CL_ECVD		-119 /* not a CVD file (or broken) */
+#define CL_ECVDEXTR	-120 /* CVD extraction failure */
+#define CL_EMD5		-121 /* MD5 verification error */
+#define CL_EDSIG	-122 /* digital signature verification error */
+#define CL_EIO		-123 /* general I/O error */
+#define CL_EFORMAT	-124 /* bad format or broken file */
+#define CL_ESUPPORT	-125 /* not supported data format */
+#define CL_ELOCKDB	-126 /* can't lock DB directory */
+#define CL_EARJ         -127 /* ARJ handler error */
+
+/* db options */
+#define CL_DB_PHISHING	    0x2
+#define CL_DB_ACONLY	    0x4 /* WARNING: only for developers */
+#define CL_DB_PHISHING_URLS 0x8
+#define CL_DB_PUA	    0x10
+
+/* recommended db settings */
+#define CL_DB_STDOPT	    (CL_DB_PHISHING | CL_DB_PHISHING_URLS)
+
+/* scan options */
+#define CL_SCAN_RAW		    0x0
+#define CL_SCAN_ARCHIVE		    0x1
+#define CL_SCAN_MAIL		    0x2
+#define CL_SCAN_OLE2		    0x4
+#define CL_SCAN_BLOCKENCRYPTED	    0x8
+#define CL_SCAN_HTML		    0x10
+#define CL_SCAN_PE		    0x20
+#define CL_SCAN_BLOCKBROKEN	    0x40
+#define CL_SCAN_MAILURL		    0x80
+#define CL_SCAN_BLOCKMAX	    0x100
+#define CL_SCAN_ALGORITHMIC	    0x200
+#define CL_SCAN_PHISHING_DOMAINLIST 0x400
+#define CL_SCAN_PHISHING_BLOCKSSL   0x800 /* ssl mismatches, not ssl by itself*/
+#define CL_SCAN_PHISHING_BLOCKCLOAK 0x1000
+#define CL_SCAN_ELF		    0x2000
+#define CL_SCAN_PDF		    0x4000
+
+/* recommended scan settings */
+#define CL_SCAN_STDOPT		(CL_SCAN_ARCHIVE | CL_SCAN_MAIL | CL_SCAN_OLE2 | CL_SCAN_HTML | CL_SCAN_PE | CL_SCAN_ALGORITHMIC | CL_SCAN_ELF | CL_SCAN_PHISHING_DOMAINLIST) 
+
+/* aliases for backward compatibility */
+#define CL_RAW		CL_SCAN_RAW
+#define CL_ARCHIVE	CL_SCAN_ARCHIVE
+#define CL_MAIL		CL_SCAN_MAIL
+#define CL_OLE2		CL_SCAN_OLE2
+#define CL_ENCRYPTED    CL_SCAN_BLOCKENCRYPTED
+#define cl_node		cl_engine
+#define cl_perror	cl_strerror
+
+struct cl_engine {
+    unsigned int refcount; /* reference counter */
+    unsigned short sdb;
+    unsigned int dboptions;
+
+    /* Roots table */
+    void **root;
+
+    /* MD5 */
+    void **md5_hlist;
+
+    /* B-M matcher for MD5 sigs for PE sections */
+    void *md5_sect;
+
+    /* Zip metadata */
+    void *zip_mlist;
+
+    /* RAR metadata */
+    void *rar_mlist;
+
+    /* Phishing .pdb and .wdb databases*/
+    void *whitelist_matcher;
+    void *domainlist_matcher;
+    void *phishcheck;
+
+    /* Dynamic configuration */
+    void *dconf;
+};
+
+struct cl_limits {
+    unsigned int maxreclevel;	    /* maximum recursion level for archives */
+    unsigned int maxfiles;	    /* maximum number of files to be scanned
+				     * within a single archive
+				     */
+    unsigned int maxmailrec;	    /* maximum recursion level for mail files */
+    unsigned int maxratio;	    /* maximum compression ratio */
+    unsigned short archivememlim;   /* limit memory usage for some unpackers */
+    unsigned long int maxfilesize;  /* compressed files larger than this limit
+				     * will not be scanned
+				     */
+};
+
+struct cl_stat {
+    char *dir;
+    unsigned int entries;
+    struct stat *stattab;
+    char **statdname;
+};
+
+struct cl_cvd {		    /* field no. */
+    char *time;		    /* 2 */
+    unsigned int version;   /* 3 */
+    unsigned int sigs;	    /* 4 */
+    unsigned int fl;	    /* 5 */
+    char *md5;		    /* 6 */
+    char *dsig;		    /* 7 */
+    char *builder;	    /* 8 */
+    unsigned int stime;	    /* 9 */
+};
+
+/* file scanning */
+extern int cl_scandesc(int desc, const char **virname, unsigned long int *scanned, const struct cl_engine *engine, const struct cl_limits *limits, unsigned int options);
+
+extern int cl_scanfile(const char *filename, const char **virname, unsigned long int *scanned, const struct cl_engine *engine, const struct cl_limits *limits, unsigned int options);
+
+/* database handling */
+extern int cl_load(const char *path, struct cl_engine **engine, unsigned int *signo, unsigned int options);
+extern const char *cl_retdbdir(void);
+
+/* engine handling */
+extern int cl_build(struct cl_engine *engine);
+extern struct cl_engine *cl_dup(struct cl_engine *engine);
+extern void cl_free(struct cl_engine *engine);
+
+/* CVD */
+extern struct cl_cvd *cl_cvdhead(const char *file);
+extern struct cl_cvd *cl_cvdparse(const char *head);
+extern int cl_cvdverify(const char *file);
+extern void cl_cvdfree(struct cl_cvd *cvd);
+
+/* db dir stat functions */
+extern int cl_statinidir(const char *dirname, struct cl_stat *dbstat);
+extern int cl_statchkdir(const struct cl_stat *dbstat);
+extern int cl_statfree(struct cl_stat *dbstat);
+
+/* enable debug messages */
+extern void cl_debug(void);
+
+/* software versions */
+extern unsigned int cl_retflevel(void);
+extern const char *cl_retver(void);
+
+/* others */
+extern void cl_settempdir(const char *dir, short leavetemps);
+extern const char *cl_strerror(int clerror);
+
+#ifdef __cplusplus
+}
+#endif
+ 
+#endif /* __CLAMAV_H */

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,331 @@
+/*
+ *  Copyright (C) 2002 - 2006 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef	C_WINDOWS
+#include <fcntl.h>
+#else
+#include <sys/time.h>
+#endif
+#include <time.h>
+#ifdef C_LINUX
+#include <sys/resource.h>
+#endif
+
+#include "clamscan_opt.h"
+#include "clamscan_others.h"
+#include "global.h"
+#include "manager.h"
+#include "treewalk.h"
+
+#include "misc.h"
+#include "output.h"
+#include "options.h"
+
+void help(void);
+
+#if defined(C_WINDOWS) && defined(CL_DEBUG)
+#include <crtdbg.h>
+#endif
+
+struct s_info info;
+short recursion = 0, printinfected = 0, bell = 0;
+
+int main(int argc, char **argv)
+{
+	int ds, dms, ret;
+	double mb;
+	struct timeval t1, t2;
+#ifndef C_WINDOWS
+	struct timezone tz;
+#endif
+	struct optstruct *opt;
+	const char *pt;
+
+#if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
+    if(!pthread_win32_process_attach_np()) {
+	mprintf("!Can't start the win32 pthreads layer\n");
+	return 72;
+    }
+#endif
+
+    opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, NULL);
+    if(!opt) {
+	mprintf("!Can't parse the command line\n");
+	return 40;
+    }
+
+    if(opt_check(opt, "verbose")) {
+	mprintf_verbose = 1;
+	logg_verbose = 1;
+    }
+
+    if(opt_check(opt, "quiet"))
+	mprintf_quiet = 1;
+
+    if(opt_check(opt, "stdout"))
+	mprintf_stdout = 1;
+
+
+    if(opt_check(opt, "debug")) {
+#if defined(C_LINUX)
+	    /* njh at bandsman.co.uk: create a dump if needed */
+	    struct rlimit rlim;
+
+	rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
+	if(setrlimit(RLIMIT_CORE, &rlim) < 0)
+	    perror("setrlimit");
+#endif
+	cl_debug(); /* enable debug messages */
+    }
+
+    if(opt_check(opt, "version")) {
+	opt_free(opt);
+	print_version();
+	return 0;
+    }
+
+    if(opt_check(opt, "help")) {
+	opt_free(opt);
+    	help();
+	return 0;
+    }
+
+    if(opt_check(opt, "recursive"))
+	recursion = 1;
+
+    if(opt_check(opt, "infected"))
+	printinfected = 1;
+
+    if(opt_check(opt, "bell"))
+	bell = 1;
+
+    if(opt_check(opt, "tempdir"))
+	cl_settempdir(opt_arg(opt, "tempdir"), 0);
+
+    if(opt_check(opt, "leave-temps"))
+	cl_settempdir(NULL, 1);
+
+    /* initialize logger */
+    if(opt_check(opt, "log")) {
+	logg_file = opt_arg(opt, "log");
+	if(logg("#\n-------------------------------------------------------------------------------\n\n")) {
+	    mprintf("!Problem with internal logger.\n");
+	    opt_free(opt);
+	    return 62;
+	}
+    } else 
+	logg_file = NULL;
+
+
+    /* validate some numerical options */
+
+    if(opt_check(opt, "max-space")) {
+	pt = opt_arg(opt, "max-space");
+	if(!strchr(pt, 'M') && !strchr(pt, 'm')) {
+	    if(!isnumb(pt)) {
+		logg("!--max-space requires a natural number\n");
+		opt_free(opt);
+		return 40;
+	    }
+	}
+    }
+
+    if(opt_check(opt, "max-files")) {
+	if(!isnumb(opt_arg(opt, "max-files"))) {
+	    logg("!--max-files requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-recursion"))) {
+	    logg("!--max-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-mail-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-mail-recursion"))) {
+	    logg("!--max-mail-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-dir-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-dir-recursion"))) {
+	    logg("!--max-dir-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-ratio")) {
+	if(!isnumb(opt_arg(opt, "max-ratio"))) {
+	    logg("!--max-ratio requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    memset(&info, 0, sizeof(struct s_info));
+
+#ifdef C_WINDOWS
+    _set_fmode(_O_BINARY);
+#ifdef CL_DEBUG
+    {
+	_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
+	_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
+    }
+#endif	
+    gettimeofday(&t1, NULL);
+#else
+    gettimeofday(&t1, &tz);
+#endif
+
+    ret = scanmanager(opt);
+
+    if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
+#ifdef C_WINDOWS
+	gettimeofday(&t2, NULL);
+#else
+	gettimeofday(&t2, &tz);
+#endif
+	ds = t2.tv_sec - t1.tv_sec;
+	dms = t2.tv_usec - t1.tv_usec;
+	ds -= (dms < 0) ? (1):(0);
+	dms += (dms < 0) ? (1000000):(0);
+	logg("\n----------- SCAN SUMMARY -----------\n");
+	logg("Known viruses: %u\n", info.sigs);
+	logg("Engine version: %s\n", cl_retver());
+	logg("Scanned directories: %u\n", info.dirs);
+	logg("Scanned files: %u\n", info.files);
+	logg("Infected files: %u\n", info.ifiles);
+	if(info.notremoved) {
+	    logg("Not removed: %u\n", info.notremoved);
+	}
+	if(info.notmoved) {
+	    logg("Not %s: %u\n", opt_check(opt, "copy") ? "moved" : "copied", info.notmoved);
+	}
+	mb = info.blocks * (CL_COUNT_PRECISION / 1024) / 1024.0;
+	logg("Data scanned: %2.2lf MB\n", mb);
+	logg("Time: %u.%3.3u sec (%u m %u s)\n", ds, dms/1000, ds/60, ds%60);
+    }
+
+    opt_free(opt);
+
+#if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
+    if(!pthread_win32_process_detach_np()) {
+	logg("!Can't stop the win32 pthreads layer\n");
+	return 72;
+    }
+#endif
+
+    return ret;
+}
+
+void help(void)
+{
+
+    mprintf_stdout = 1;
+
+    mprintf("\n");
+    mprintf("                       Clam AntiVirus Scanner "VERSION"\n");
+    mprintf("      (C) 2002 - 2007 ClamAV Team - http://www.clamav.net/team\n\n");
+
+    mprintf("    --help                -h             Print this help screen\n");
+    mprintf("    --version             -V             Print version number\n");
+    mprintf("    --verbose             -v             Be verbose\n");
+    mprintf("    --debug                              Enable libclamav's debug messages\n");
+    mprintf("    --quiet                              Only output error messages\n");
+    mprintf("    --stdout                             Write to stdout instead of stderr\n");
+    mprintf("    --no-summary                         Disable summary at end of scanning\n");
+    mprintf("    --infected            -i             Only print infected files\n");
+    mprintf("    --bell                               Sound bell on virus detection\n");
+
+    mprintf("\n");
+    mprintf("    --tempdir=DIRECTORY                  Create temporary files in DIRECTORY\n");
+    mprintf("    --leave-temps                        Do not remove temporary files\n");
+    mprintf("    --database=FILE/DIR   -d FILE/DIR    Load virus database from FILE or load\n");
+    mprintf("                                         all .cvd and .db[2] files from DIR\n");
+    mprintf("    --log=FILE            -l FILE        Save scan report to FILE\n");
+    mprintf("    --recursive           -r             Scan subdirectories recursively\n");
+    mprintf("    --remove                             Remove infected files. Be careful!\n");
+    mprintf("    --move=DIRECTORY                     Move infected files into DIRECTORY\n");
+    mprintf("    --copy=DIRECTORY                     Copy infected files into DIRECTORY\n");
+#ifdef HAVE_REGEX_H
+    mprintf("    --exclude=REGEX                      Don't scan file names matching REGEX\n");
+    mprintf("    --exclude-dir=REGEX                  Don't scan directories matching REGEX\n");
+    mprintf("    --include=REGEX                      Only scan file names matching REGEX\n");
+    mprintf("    --include-dir=REGEX                  Only scan directories matching REGEX\n");
+#else
+    mprintf("    --exclude=PATT                       Don't scan file names containing PATT\n");
+    mprintf("    --exclude-dir=PATT                   Don't scan directories containing PATT\n");
+    mprintf("    --include=PATT                       Only scan file names containing PATT\n");
+    mprintf("    --include-dir=PATT                   Only scan directories containing PATT\n");
+#endif
+    mprintf("\n");
+    mprintf("    --detect-pua                         Detect Possibly Unwanted Applications\n");
+    mprintf("    --no-mail                            Disable mail file support\n");
+    mprintf("    --no-phishing-sigs                   Disable signature-based phishing detection\n");
+    mprintf("    --no-phishing-scan-urls              Disable url-based phishing detection\n");
+    mprintf("    --no-phishing-restrictedscan         Enable phishing detection for all domains (might lead to false positives!)\n");
+    mprintf("    --phishing-ssl                       Always block SSL mismatches in URLs (phishing module)\n");
+    mprintf("    --phishing-cloak                     Always block cloaked URLs (phishing module)\n");
+    mprintf("    --no-algorithmic                     Disable algorithmic detection\n");
+    mprintf("    --no-pe                              Disable PE analysis\n");
+    mprintf("    --no-elf                             Disable ELF support\n");
+    mprintf("    --no-ole2                            Disable OLE2 support\n");
+    mprintf("    --no-pdf                             Disable PDF support\n");
+    mprintf("    --no-html                            Disable HTML support\n");
+    mprintf("    --no-archive                         Disable libclamav archive support\n");
+    mprintf("    --detect-broken                      Try to detect broken executable files\n");
+    mprintf("    --block-encrypted                    Block encrypted archives\n");
+    mprintf("    --block-max                          Block archives that exceed limits\n");
+    mprintf("    --mail-follow-urls                   Download and scan URLs\n");
+    mprintf("\n");
+    mprintf("    --max-space=#n                       Only extract first #n kilobytes from\n");
+    mprintf("                                         archived files\n");
+    mprintf("    --max-files=#n                       Only extract first #n files from\n");
+    mprintf("                                         archives\n");
+    mprintf("    --max-ratio=#n                       Maximum compression ratio limit\n");
+    mprintf("    --max-recursion=#n                   Maximum archive recursion level\n");
+    mprintf("    --max-dir-recursion=#n               Maximum directory recursion level\n");
+    mprintf("    --max-mail-recursion=#n              Maximum mail recursion level\n");
+    mprintf("    --unzip[=FULLPATH]                   Enable support for .zip files\n");
+    mprintf("    --unrar[=FULLPATH]                   Enable support for .rar files\n");
+    mprintf("    --arj[=FULLPATH]                     Enable support for .arj files\n");
+    mprintf("    --unzoo[=FULLPATH]                   Enable support for .zoo files\n");
+    mprintf("    --lha[=FULLPATH]                     Enable support for .lha files\n");
+    mprintf("    --jar[=FULLPATH]                     Enable support for .jar files\n");
+    mprintf("    --tar[=FULLPATH]                     Enable support for .tar files\n");
+    mprintf("    --deb[=FULLPATH to ar]               Enable support for .deb files\n");
+    mprintf("    --tgz[=FULLPATH]                     Enable support for .tar.gz, .tgz files\n\n");
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.ce
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.ce?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.ce (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_clamscan.ce Wed Jan 30 15:17:10 2008
@@ -0,0 +1,331 @@
+/*
+ *  Copyright (C) 2002 - 2006 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef	C_WINDOWS
+#include <fcntl.h>
+#else
+#include <sys/time.h>
+#endif
+#include <time.h>
+#ifdef C_LINUX
+#include <sys/resource.h>
+#endif
+
+#include "clamscan_opt.h"
+#include "others.h"
+#include "global.h"
+#include "manager.h"
+#include "treewalk.h"
+
+#include "shared/misc.h"
+#include "shared/output.h"
+#include "shared/options.h"
+
+void help(void);
+
+#if defined(C_WINDOWS) && defined(CL_DEBUG)
+#include <crtdbg.h>
+#endif
+
+struct s_info info;
+short recursion = 0, printinfected = 0, bell = 0;
+
+int main(int argc, char **argv)
+{
+	int ds, dms, ret;
+	double mb;
+	struct timeval t1, t2;
+#ifndef C_WINDOWS
+	struct timezone tz;
+#endif
+	struct optstruct *opt;
+	const char *pt;
+
+#if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
+    if(!pthread_win32_process_attach_np()) {
+	mprintf("!Can't start the win32 pthreads layer\n");
+	return 72;
+    }
+#endif
+
+    opt = opt_parse(argc, argv, clamscan_shortopt, clamscan_longopt, NULL);
+    if(!opt) {
+	mprintf("!Can't parse the command line\n");
+	return 40;
+    }
+
+    if(opt_check(opt, "verbose")) {
+	mprintf_verbose = 1;
+	logg_verbose = 1;
+    }
+
+    if(opt_check(opt, "quiet"))
+	mprintf_quiet = 1;
+
+    if(opt_check(opt, "stdout"))
+	mprintf_stdout = 1;
+
+
+    if(opt_check(opt, "debug")) {
+#if defined(C_LINUX)
+	    /* njh at bandsman.co.uk: create a dump if needed */
+	    struct rlimit rlim;
+
+	rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
+	if(setrlimit(RLIMIT_CORE, &rlim) < 0)
+	    perror("setrlimit");
+#endif
+	cl_debug(); /* enable debug messages */
+    }
+
+    if(opt_check(opt, "version")) {
+	opt_free(opt);
+	print_version();
+	return 0;
+    }
+
+    if(opt_check(opt, "help")) {
+	opt_free(opt);
+    	help();
+	return 0;
+    }
+
+    if(opt_check(opt, "recursive"))
+	recursion = 1;
+
+    if(opt_check(opt, "infected"))
+	printinfected = 1;
+
+    if(opt_check(opt, "bell"))
+	bell = 1;
+
+    if(opt_check(opt, "tempdir"))
+	cl_settempdir(opt_arg(opt, "tempdir"), 0);
+
+    if(opt_check(opt, "leave-temps"))
+	cl_settempdir(NULL, 1);
+
+    /* initialize logger */
+    if(opt_check(opt, "log")) {
+	logg_file = opt_arg(opt, "log");
+	if(logg("#\n-------------------------------------------------------------------------------\n\n")) {
+	    mprintf("!Problem with internal logger.\n");
+	    opt_free(opt);
+	    return 62;
+	}
+    } else 
+	logg_file = NULL;
+
+
+    /* validate some numerical options */
+
+    if(opt_check(opt, "max-space")) {
+	pt = opt_arg(opt, "max-space");
+	if(!strchr(pt, 'M') && !strchr(pt, 'm')) {
+	    if(!isnumb(pt)) {
+		logg("!--max-space requires a natural number\n");
+		opt_free(opt);
+		return 40;
+	    }
+	}
+    }
+
+    if(opt_check(opt, "max-files")) {
+	if(!isnumb(opt_arg(opt, "max-files"))) {
+	    logg("!--max-files requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-recursion"))) {
+	    logg("!--max-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-mail-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-mail-recursion"))) {
+	    logg("!--max-mail-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-dir-recursion")) {
+	if(!isnumb(opt_arg(opt, "max-dir-recursion"))) {
+	    logg("!--max-dir-recursion requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    if(opt_check(opt, "max-ratio")) {
+	if(!isnumb(opt_arg(opt, "max-ratio"))) {
+	    logg("!--max-ratio requires a natural number\n");
+	    opt_free(opt);
+	    return 40;
+	}
+    }
+
+    memset(&info, 0, sizeof(struct s_info));
+
+#ifdef C_WINDOWS
+    _set_fmode(_O_BINARY);
+#ifdef CL_DEBUG
+    {
+	_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
+	_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
+    }
+#endif	
+    gettimeofday(&t1, NULL);
+#else
+    gettimeofday(&t1, &tz);
+#endif
+
+    ret = scanmanager(opt);
+
+    if(!opt_check(opt, "disable-summary") && !opt_check(opt, "no-summary")) {
+#ifdef C_WINDOWS
+	gettimeofday(&t2, NULL);
+#else
+	gettimeofday(&t2, &tz);
+#endif
+	ds = t2.tv_sec - t1.tv_sec;
+	dms = t2.tv_usec - t1.tv_usec;
+	ds -= (dms < 0) ? (1):(0);
+	dms += (dms < 0) ? (1000000):(0);
+	logg("\n----------- SCAN SUMMARY -----------\n");
+	logg("Known viruses: %u\n", info.sigs);
+	logg("Engine version: %s\n", cl_retver());
+	logg("Scanned directories: %u\n", info.dirs);
+	logg("Scanned files: %u\n", info.files);
+	logg("Infected files: %u\n", info.ifiles);
+	if(info.notremoved) {
+	    logg("Not removed: %u\n", info.notremoved);
+	}
+	if(info.notmoved) {
+	    logg("Not %s: %u\n", opt_check(opt, "copy") ? "moved" : "copied", info.notmoved);
+	}
+	mb = info.blocks * (CL_COUNT_PRECISION / 1024) / 1024.0;
+	logg("Data scanned: %2.2lf MB\n", mb);
+	logg("Time: %u.%3.3u sec (%u m %u s)\n", ds, dms/1000, ds/60, ds%60);
+    }
+
+    opt_free(opt);
+
+#if defined(C_WINDOWS) && defined(CL_THREAD_SAFE)
+    if(!pthread_win32_process_detach_np()) {
+	logg("!Can't stop the win32 pthreads layer\n");
+	return 72;
+    }
+#endif
+
+    return ret;
+}
+
+void help(void)
+{
+
+    mprintf_stdout = 1;
+
+    mprintf("\n");
+    mprintf("                       Clam AntiVirus Scanner "VERSION"\n");
+    mprintf("      (C) 2002 - 2007 ClamAV Team - http://www.clamav.net/team\n\n");
+
+    mprintf("    --help                -h             Print this help screen\n");
+    mprintf("    --version             -V             Print version number\n");
+    mprintf("    --verbose             -v             Be verbose\n");
+    mprintf("    --debug                              Enable libclamav's debug messages\n");
+    mprintf("    --quiet                              Only output error messages\n");
+    mprintf("    --stdout                             Write to stdout instead of stderr\n");
+    mprintf("    --no-summary                         Disable summary at end of scanning\n");
+    mprintf("    --infected            -i             Only print infected files\n");
+    mprintf("    --bell                               Sound bell on virus detection\n");
+
+    mprintf("\n");
+    mprintf("    --tempdir=DIRECTORY                  Create temporary files in DIRECTORY\n");
+    mprintf("    --leave-temps                        Do not remove temporary files\n");
+    mprintf("    --database=FILE/DIR   -d FILE/DIR    Load virus database from FILE or load\n");
+    mprintf("                                         all .cvd and .db[2] files from DIR\n");
+    mprintf("    --log=FILE            -l FILE        Save scan report to FILE\n");
+    mprintf("    --recursive           -r             Scan subdirectories recursively\n");
+    mprintf("    --remove                             Remove infected files. Be careful!\n");
+    mprintf("    --move=DIRECTORY                     Move infected files into DIRECTORY\n");
+    mprintf("    --copy=DIRECTORY                     Copy infected files into DIRECTORY\n");
+#ifdef HAVE_REGEX_H
+    mprintf("    --exclude=REGEX                      Don't scan file names matching REGEX\n");
+    mprintf("    --exclude-dir=REGEX                  Don't scan directories matching REGEX\n");
+    mprintf("    --include=REGEX                      Only scan file names matching REGEX\n");
+    mprintf("    --include-dir=REGEX                  Only scan directories matching REGEX\n");
+#else
+    mprintf("    --exclude=PATT                       Don't scan file names containing PATT\n");
+    mprintf("    --exclude-dir=PATT                   Don't scan directories containing PATT\n");
+    mprintf("    --include=PATT                       Only scan file names containing PATT\n");
+    mprintf("    --include-dir=PATT                   Only scan directories containing PATT\n");
+#endif
+    mprintf("\n");
+    mprintf("    --detect-pua                         Detect Possibly Unwanted Applications\n");
+    mprintf("    --no-mail                            Disable mail file support\n");
+    mprintf("    --no-phishing-sigs                   Disable signature-based phishing detection\n");
+    mprintf("    --no-phishing-scan-urls              Disable url-based phishing detection\n");
+    mprintf("    --no-phishing-restrictedscan         Enable phishing detection for all domains (might lead to false positives!)\n");
+    mprintf("    --phishing-ssl                       Always block SSL mismatches in URLs (phishing module)\n");
+    mprintf("    --phishing-cloak                     Always block cloaked URLs (phishing module)\n");
+    mprintf("    --no-algorithmic                     Disable algorithmic detection\n");
+    mprintf("    --no-pe                              Disable PE analysis\n");
+    mprintf("    --no-elf                             Disable ELF support\n");
+    mprintf("    --no-ole2                            Disable OLE2 support\n");
+    mprintf("    --no-pdf                             Disable PDF support\n");
+    mprintf("    --no-html                            Disable HTML support\n");
+    mprintf("    --no-archive                         Disable libclamav archive support\n");
+    mprintf("    --detect-broken                      Try to detect broken executable files\n");
+    mprintf("    --block-encrypted                    Block encrypted archives\n");
+    mprintf("    --block-max                          Block archives that exceed limits\n");
+    mprintf("    --mail-follow-urls                   Download and scan URLs\n");
+    mprintf("\n");
+    mprintf("    --max-space=#n                       Only extract first #n kilobytes from\n");
+    mprintf("                                         archived files\n");
+    mprintf("    --max-files=#n                       Only extract first #n files from\n");
+    mprintf("                                         archives\n");
+    mprintf("    --max-ratio=#n                       Maximum compression ratio limit\n");
+    mprintf("    --max-recursion=#n                   Maximum archive recursion level\n");
+    mprintf("    --max-dir-recursion=#n               Maximum directory recursion level\n");
+    mprintf("    --max-mail-recursion=#n              Maximum mail recursion level\n");
+    mprintf("    --unzip[=FULLPATH]                   Enable support for .zip files\n");
+    mprintf("    --unrar[=FULLPATH]                   Enable support for .rar files\n");
+    mprintf("    --arj[=FULLPATH]                     Enable support for .arj files\n");
+    mprintf("    --unzoo[=FULLPATH]                   Enable support for .zoo files\n");
+    mprintf("    --lha[=FULLPATH]                     Enable support for .lha files\n");
+    mprintf("    --jar[=FULLPATH]                     Enable support for .jar files\n");
+    mprintf("    --tar[=FULLPATH]                     Enable support for .tar files\n");
+    mprintf("    --deb[=FULLPATH to ar]               Enable support for .deb files\n");
+    mprintf("    --tgz[=FULLPATH]                     Enable support for .tar.gz, .tgz files\n\n");
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,1105 @@
+/*
+ *  Copyright (C) 2002 - 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ *  Wed Mar  5 03:45:31 CET 2003: included --move code from Damien Curtain
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifdef C_WINDOWS
+#include <sys/utime.h>
+#else
+#include <sys/wait.h>
+#include <utime.h>
+#endif
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#include <fcntl.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "manager.h"
+#include "clamscan_others.h"
+#include "treewalk.h"
+#include "global.h"
+
+#include "options.h"
+#include "output.h"
+#include "misc.h"
+
+#include "clamav.h"
+#include "others.h"
+#include "matcher-ac.h"
+#include "str.h"
+
+#ifdef C_LINUX
+dev_t procdev;
+#endif
+
+#ifdef C_WINDOWS
+#undef P_tmpdir
+#define P_tmpdir    "C:\\WINDOWS\\TEMP"
+#endif
+
+#ifndef	O_BINARY
+#define	O_BINARY    0
+#endif
+
+static int scandirs(const char *dirname, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+    return treewalk(dirname, engine, user, opt, limits, options, 1);
+}
+
+static int scanstdin(const struct cl_engine *engine, const struct cl_limits *limits, int options)
+{
+	int ret;
+	const char *virname, *tmpdir;
+	char *file, buff[FILEBUFF];
+	FILE *fs;
+
+
+    /* check write access */
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to temporary directory\n");
+	return 64;
+    }
+
+    file = cli_gentemp(tmpdir);
+
+    if(!(fs = fopen(file, "wb"))) {
+	logg("!Can't open %s for writing\n", file);
+	free(file);
+	return 63;
+    }
+
+    while((ret = fread(buff, 1, FILEBUFF, stdin)))
+	if(fwrite(buff, 1, ret, fs) < ret) {
+	    logg("!Can't write to %s\n", file);
+	    free(file);
+	    return 58;
+	}
+
+    fclose(fs);
+
+    logg("*Checking %s\n", file);
+    info.files++;
+
+    if((ret = cl_scanfile(file, &virname, &info.blocks, engine, limits, options)) == CL_VIRUS) {
+	logg("stdin: %s FOUND\n", virname);
+	info.ifiles++;
+
+	if(bell)
+	    fprintf(stderr, "\007");
+
+    } else if(ret == CL_CLEAN) {
+	if(!printinfected)
+	    mprintf("stdin: OK\n");
+    } else
+	if(!printinfected)
+	    logg("stdin: %s\n", cl_strerror(ret));
+
+    unlink(file);
+    free(file);
+    return ret;
+}
+
+int scanmanager(const struct optstruct *opt)
+{
+	mode_t fmode;
+	int ret = 0, extunpacker = 0, fmodeint, i, x;
+	unsigned int options = 0, dboptions = 0;
+	struct cl_engine *engine = NULL;
+	struct cl_limits limits;
+	struct passwd *user = NULL;
+	struct stat sb;
+	char *fullpath = NULL, cwd[1024];
+
+
+    if(opt_check(opt, "unzip") || opt_check(opt, "unrar") || opt_check(opt, "arj") ||
+       opt_check(opt, "unzoo") || opt_check(opt, "jar") || opt_check(opt, "lha") ||
+       opt_check(opt, "tar") || opt_check(opt, "tgz") || opt_check(opt, "deb"))
+	    extunpacker = 1;
+
+/* njh at bandsman.co.uk: BeOS */
+#if !defined(C_CYGWIN) && !defined(C_OS2) && !defined(C_BEOS) && !defined(C_WINDOWS)
+    if(extunpacker && !geteuid()) {
+	if((user = getpwnam(CLAMAVUSER)) == NULL) {
+	    logg("!Can't get information about user "CLAMAVUSER" (required to run external unpackers)\n");
+	    exit(60); /* this is critical problem, so we just exit here */
+	}
+    }
+#endif
+
+    if(!opt_check(opt, "no-phishing-sigs"))
+	dboptions |= CL_DB_PHISHING;
+
+    if(!opt_check(opt,"no-phishing-scan-urls"))
+	dboptions |= CL_DB_PHISHING_URLS;
+    if(!opt_check(opt,"no-phishing-restrictedscan")) {
+	/* not scanning all domains, check only URLs with domains from .pdb */
+	options |= CL_SCAN_PHISHING_DOMAINLIST;
+    }
+    if(opt_check(opt,"phishing-ssl")) {
+	options |= CL_SCAN_PHISHING_BLOCKSSL;
+    }
+    if(opt_check(opt,"phishing-cloak")) {
+	options |= CL_SCAN_PHISHING_BLOCKCLOAK;
+    }
+
+    if(opt_check(opt, "dev-ac-only"))
+	dboptions |= CL_DB_ACONLY;
+
+    if(opt_check(opt, "dev-ac-depth"))
+	cli_ac_setdepth(AC_DEFAULT_MIN_DEPTH, atoi(opt_arg(opt, "dev-ac-depth")));
+
+    if(opt_check(opt, "detect-pua"))
+	dboptions |= CL_DB_PUA;
+
+    if(opt_check(opt, "database")) {
+	if((ret = cl_load(opt_arg(opt, "database"), &engine, &info.sigs, dboptions))) {
+	    logg("!%s\n", cl_strerror(ret));
+	    return 50;
+	}
+
+    } else {
+	    char *dbdir = freshdbdir();
+
+	if((ret = cl_load(dbdir, &engine, &info.sigs, dboptions))) {
+	    logg("!%s\n", cl_strerror(ret));
+	    free(dbdir);
+	    return 50;
+	}
+	free(dbdir);
+    }
+
+    if(!engine) {
+	logg("!Can't initialize the virus database\n");
+	return 50;
+    }
+
+    if((ret = cl_build(engine)) != 0) {
+	logg("!Database initialization error: %s\n", cl_strerror(ret));;
+	return 50;
+    }
+
+    /* set limits */
+    memset(&limits, 0, sizeof(struct cl_limits));
+
+    if(opt_check(opt, "max-space")) {
+	char *cpy, *ptr;
+	ptr = opt_arg(opt, "max-space");
+	if(tolower(ptr[strlen(ptr) - 1]) == 'm') {
+	    cpy = calloc(strlen(ptr), 1);
+	    strncpy(cpy, ptr, strlen(ptr) - 1);
+	    limits.maxfilesize = atoi(cpy) * 1024 * 1024;
+	    free(cpy);
+	} else
+	    limits.maxfilesize = atoi(ptr) * 1024;
+    } else
+	limits.maxfilesize = 10485760;
+
+    if(opt_check(opt, "max-files"))
+	limits.maxfiles = atoi(opt_arg(opt, "max-files"));
+    else
+        limits.maxfiles = 500;
+
+    if(opt_check(opt, "max-recursion"))
+        limits.maxreclevel = atoi(opt_arg(opt, "max-recursion"));
+    else
+        limits.maxreclevel = 8;
+
+    if(opt_check(opt, "max-mail-recursion"))
+        limits.maxmailrec = atoi(opt_arg(opt, "max-mail-recursion"));
+    else
+        limits.maxmailrec = 64;
+
+    if(opt_check(opt, "max-ratio"))
+        limits.maxratio = atoi(opt_arg(opt, "max-ratio"));
+    else
+        limits.maxratio = 250;
+
+    /* set options */
+
+    if(opt_check(opt, "disable-archive") || opt_check(opt, "no-archive"))
+	options &= ~CL_SCAN_ARCHIVE;
+    else
+	options |= CL_SCAN_ARCHIVE;
+
+    if(opt_check(opt, "detect-broken"))
+	options |= CL_SCAN_BLOCKBROKEN;
+
+    if(opt_check(opt, "block-encrypted"))
+	options |= CL_SCAN_BLOCKENCRYPTED;
+
+    if(opt_check(opt, "block-max"))
+	options |= CL_SCAN_BLOCKMAX;
+
+    if(opt_check(opt, "no-pe"))
+	options &= ~CL_SCAN_PE;
+    else
+	options |= CL_SCAN_PE;
+
+    if(opt_check(opt, "no-elf"))
+	options &= ~CL_SCAN_ELF;
+    else
+	options |= CL_SCAN_ELF;
+
+    if(opt_check(opt, "no-ole2"))
+	options &= ~CL_SCAN_OLE2;
+    else
+	options |= CL_SCAN_OLE2;
+
+    if(opt_check(opt, "no-pdf"))
+	options &= ~CL_SCAN_PDF;
+    else
+	options |= CL_SCAN_PDF;
+
+    if(opt_check(opt, "no-html"))
+	options &= ~CL_SCAN_HTML;
+    else
+	options |= CL_SCAN_HTML;
+
+    if(opt_check(opt, "no-mail")) {
+	options &= ~CL_SCAN_MAIL;
+    } else {
+	options |= CL_SCAN_MAIL;
+
+	if(opt_check(opt, "mail-follow-urls"))
+	    options |= CL_SCAN_MAILURL;
+    }
+
+    if(opt_check(opt, "no-algorithmic"))
+	options &= ~CL_SCAN_ALGORITHMIC;
+    else
+	options |= CL_SCAN_ALGORITHMIC;
+
+#ifdef C_LINUX
+    procdev = (dev_t) 0;
+    if(stat("/proc", &sb) != -1 && !sb.st_size)
+	procdev = sb.st_dev;
+#endif
+
+    /* check filetype */
+    if(opt->filename == NULL || strlen(opt->filename) == 0) {
+
+	/* we need full path for some reasons (eg. archive handling) */
+	if(!getcwd(cwd, sizeof(cwd))) {
+	    logg("!Can't get absolute pathname of current working directory\n");
+	    ret = 57;
+	} else
+	    ret = scandirs(cwd, engine, user, opt, &limits, options);
+
+    } else if(!strcmp(opt->filename, "-")) { /* read data from stdin */
+	ret = scanstdin(engine, &limits, options);
+
+    } else {
+	char *thefilename;
+	for (x = 0; (thefilename = cli_strtok(opt->filename, x, "\t")) != NULL; x++) {
+	    if((fmodeint = fileinfo(thefilename, 2)) == -1) {
+		logg("^Can't access file %s\n", thefilename);
+		perror(thefilename);
+		ret = 56;
+	    } else {
+		int slash = 1;
+		for(i = strlen(thefilename) - 1; i > 0 && slash; i--) {
+		    if(thefilename[i] == '/')
+			thefilename[i] = 0;
+		    else
+			slash = 0;
+		}
+
+		fmode = (mode_t) fmodeint;
+
+		if(extunpacker && (thefilename[0] != '/' && thefilename[0] != '\\' && thefilename[1] != ':')) {
+		    /* we need to complete the path */
+		    if(!getcwd(cwd, sizeof(cwd))) {
+			logg("!Can't get absolute pathname of current working directory\n");
+			return 57;
+		    } else {
+			fullpath = malloc(512);
+#ifdef NO_SNPRINTF
+			sprintf(fullpath, "%s/%s", cwd, thefilename);
+#else
+			snprintf(fullpath, 512, "%s/%s", cwd, thefilename);
+#endif
+			logg("*Full path: %s\n", fullpath);
+		    }
+		} else
+		    fullpath = thefilename;
+
+		switch(fmode & S_IFMT) {
+		    case S_IFREG:
+			ret = scanfile(fullpath, engine, user, opt, &limits, options);
+			break;
+
+		    case S_IFDIR:
+			ret = scandirs(fullpath, engine, user, opt, &limits, options);
+			break;
+
+		    default:
+			logg("!Not supported file type (%s)\n", thefilename);
+			ret = 52;
+		}
+
+		if(extunpacker && (thefilename[0] != '/' && thefilename[0] != '\\' && thefilename[1] != ':')) {
+		    free(fullpath);
+		    fullpath = NULL;
+		}
+	    }
+	    free(thefilename);
+	}
+    }
+
+    /* free the engine */
+    cl_free(engine);
+
+    /* overwrite return code */
+    if(info.ifiles)
+	ret = 1;
+    else if(ret < 50) /* hopefully no error detected */ 
+	ret = 0; /* just make sure it's 0 */
+
+    return ret;
+}
+
+/*
+ * -1 -> can't fork
+ * -2 -> can't execute
+ * -3 -> external signal
+ * 0 -> OK
+ */
+
+#ifdef C_WINDOWS
+static int clamav_unpack(const char *prog, const char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
+{
+    /* TODO: use spamvp(P_WAIT, prog, args); */
+    cli_errmsg("clamav_unpack is not supported under Windows yet\n");
+    return -1;
+}
+#else
+static int clamav_unpack(const char *prog, const char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
+{
+	pid_t pid;
+	int status, wret, fdevnull;
+	unsigned int maxfiles, maxspace;
+	struct s_du n;
+
+
+    if(opt_check(opt, "max-files"))
+	maxfiles = atoi(opt_arg(opt, "max-files"));
+    else
+	maxfiles = 0;
+
+    if(opt_check(opt, "max-space")) {
+	    char *cpy, *ptr;
+	ptr = opt_arg(opt, "max-space");
+	if(tolower(ptr[strlen(ptr) - 1]) == 'm') { /* megabytes */
+	    cpy = calloc(strlen(ptr), 1);
+	    strncpy(cpy, ptr, strlen(ptr) - 1);
+	    maxspace = atoi(cpy) * 1024;
+	    free(cpy);
+	} else /* default - kilobytes */
+	    maxspace = atoi(ptr);
+    } else
+	maxspace = 0;
+
+
+    switch(pid = fork()) {
+	case -1:
+	    return -1;
+	case 0:
+#ifndef C_CYGWIN
+	    if(!geteuid() && user) {
+
+#ifdef HAVE_SETGROUPS
+		if(setgroups(1, &user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgroups() failed\n");
+		    exit(1);
+		}
+#endif
+
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed\n", (int) user->pw_gid);
+		    exit(1);
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed\n", (int) user->pw_uid);
+		    exit(1);
+		}
+	    }
+#endif
+	    if(chdir(tmpdir) == -1) {
+		fprintf(stderr, "ERROR: chdir(%s) failed\n", tmpdir);
+		exit(1);
+	    }
+
+	    if(printinfected) {
+  	        fdevnull = open("/dev/null", O_WRONLY);
+		if(fdevnull == -1) {
+		    logg("Non fatal error: cannot open /dev/null. Continuing with full output\n");
+		    printinfected = 0;
+		} else {
+		    dup2(fdevnull,1);
+		    dup2(fdevnull,2);
+		}
+	    }
+
+	    if(strchr(prog, '/')) /* we have full path */
+		execv(prog, args);
+	    else
+		execvp(prog, args);
+	    perror("execv(p)");
+	    abort();
+	    break;
+	default:
+
+	    if(maxfiles || maxspace) {
+		while(!(wret = waitpid(pid, &status, WNOHANG))) {
+		    memset(&n, 0, sizeof(struct s_du));
+
+		    if(!du(tmpdir, &n))
+			if((maxfiles && n.files > maxfiles) || (maxspace && n.space > maxspace)) {
+			    logg("*n.files: %u, n.space: %lu\n", n.files, n.space);
+			    kill(pid, 9); /* stop it immediately */
+			}
+		}
+	    } else
+		waitpid(pid, &status, 0);
+
+
+	    if(WIFSIGNALED(status)) {
+		switch(WTERMSIG(status)) {
+
+		    case 9:
+			logg("\nUnpacker process %d stopped due to exceeded limits\n", pid);
+			return 0;
+		    case 6: /* abort */
+			logg("^Can't run %s\n", prog);
+			return -2;
+		    default:
+			logg("^\nUnpacker stopped with external signal %d\n", WTERMSIG(status));
+			return -3;
+		}
+	    } else if(WIFEXITED(status))
+		return 0;
+    }
+
+    return 0;
+}
+#endif
+
+static void move_infected(const char *filename, const struct optstruct *opt)
+{
+	char *movedir, *movefilename, numext[4 + 1];
+	const char *tmp;
+	struct stat ofstat, mfstat;
+	int n, len, movefilename_size;
+	int moveflag = opt_check(opt, "move");
+	struct utimbuf ubuf;
+
+
+    if((moveflag && !(movedir = opt_arg(opt, "move"))) ||
+	(!moveflag && !(movedir = opt_arg(opt, "copy")))) {
+        /* Should never reach here */
+        logg("!opt_arg() returned NULL\n");
+        info.notmoved++;
+        return;
+    }
+
+    if(access(movedir, W_OK|X_OK) == -1) {
+	logg("!Can't %s file '%s': cannot write to '%s': %s\n", (moveflag) ? "move" : "copy", filename, movedir, strerror(errno));
+        info.notmoved++;
+        return;
+    }
+
+    if(!(tmp = strrchr(filename, '/')))
+	tmp = filename;
+
+    movefilename_size = sizeof(char) * (strlen(movedir) + strlen(tmp) + sizeof(numext) + 2);
+
+    if(!(movefilename = malloc(movefilename_size))) {
+        logg("!malloc() failed\n");
+	exit(71);
+    }
+
+    if(!(cli_strrcpy(movefilename, movedir))) {
+        logg("!cli_strrcpy() returned NULL\n");
+        info.notmoved++;
+        free(movefilename);
+        return;
+    }
+
+    strcat(movefilename, "/");
+
+    if(!(strcat(movefilename, tmp))) {
+        logg("!strcat() returned NULL\n");
+        info.notmoved++;
+        free(movefilename);
+        return;
+    }
+
+    stat(filename, &ofstat);
+
+    if(!stat(movefilename, &mfstat)) {
+        if((ofstat.st_dev == mfstat.st_dev) && (ofstat.st_ino == mfstat.st_ino)) { /* It's the same file*/
+            logg("File excluded '%s'\n", filename);
+            info.notmoved++;
+            free(movefilename);
+            return;
+        } else {
+            /* file exists - try to append an ordinal number to the
+	     * quranatined file in an attempt not to overwrite existing
+	     * files in quarantine  
+	     */
+            len = strlen(movefilename);
+            n = 0;        		        		
+            do {
+                /* reset the movefilename to it's initial value by
+		 * truncating to the original filename length
+		 */
+                movefilename[len] = 0;
+                /* append .XXX */
+                sprintf(numext, ".%03d", n++);
+                strcat(movefilename, numext);            	
+            } while(!stat(movefilename, &mfstat) && (n < 1000));
+       }
+    }
+
+    if(!moveflag || rename(filename, movefilename) == -1) {
+	if(filecopy(filename, movefilename) == -1) {
+	    logg("!Can't %s '%s' to '%s': %s\n", (moveflag) ? "move" : "copy", filename, movefilename, strerror(errno));
+	    info.notmoved++;
+	    free(movefilename);
+	    return;
+	}
+
+	chmod(movefilename, ofstat.st_mode);
+#ifndef C_OS2
+	chown(movefilename, ofstat.st_uid, ofstat.st_gid);
+#endif
+
+	ubuf.actime = ofstat.st_atime;
+	ubuf.modtime = ofstat.st_mtime;
+	utime(movefilename, &ubuf);
+
+	if(moveflag && unlink(filename)) {
+	    logg("!Can't unlink '%s': %s\n", filename, strerror(errno));
+	    info.notremoved++;            
+	    free(movefilename);
+	    return;
+	}
+    }
+
+    logg("%s: %s to '%s'\n", filename, (moveflag) ? "moved" : "copied", movefilename);
+
+    free(movefilename);
+}
+
+static int checkfile(const char *filename, const struct cl_engine *engine, const struct cl_limits *limits, int options, short printclean)
+{
+	int fd, ret;
+	const char *virname;
+
+
+    logg("*Scanning %s\n", filename);
+
+    if((fd = open(filename, O_RDONLY|O_BINARY)) == -1) {
+	logg("^Can't open file %s\n", filename);
+	return 54;
+    }
+
+    if((ret = cl_scandesc(fd, &virname, &info.blocks, engine, limits, options)) == CL_VIRUS) {
+	logg("%s: %s FOUND\n", filename, virname);
+	info.ifiles++;
+
+	if(bell)
+	    fprintf(stderr, "\007");
+
+    } else if(ret == CL_CLEAN) {
+	if(!printinfected && printclean)
+	    mprintf("%s: OK\n", filename);
+    } else
+	if(!printinfected)
+	    logg("%s: %s\n", filename, cl_strerror(ret));
+
+    close(fd);
+    return ret;
+}
+
+static int scancompressed(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+	int ret = 0;
+	char *gendir, *userprg;
+	const char *tmpdir;
+	struct stat statbuf;
+
+
+    stat(filename, &statbuf);
+
+    if(!S_ISREG(statbuf.st_mode)) {
+	logg("^Suspect archive %s (not a regular file)\n", filename);
+	return 0; /* hmm ? */
+    }
+
+    /* check write access */
+
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to the temporary directory\n");
+	exit(64);
+    }
+
+    /* generate the temporary directory */
+
+    gendir = cli_gentemp(tmpdir);
+    if(mkdir(gendir, 0700)) {
+	logg("!Can't create the temporary directory %s\n", gendir);
+	exit(63); /* critical */
+    }
+
+#if !defined(C_OS2) && !defined(C_WINDOWS)
+    /* FIXME: do the correct native windows way */
+    if(user)
+	chown(gendir, user->pw_uid, user->pw_gid);
+#endif
+
+    /* unpack file  - as unprivileged user */
+    if(cli_strbcasestr(filename, ".zip")) {
+	const char *args[] = { "unzip", "-P", "clam", "-o", NULL, NULL };
+	/* Sun's SUNWspro C compiler doesn't allow direct initialisation
+	 * with a variable
+	 */
+	args[4] = filename;
+
+	if((userprg = opt_arg(opt, "unzip")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzip", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".rar")) { 
+	const char *args[] = { "unrar", "x", "-p-", "-y", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "unrar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unrar", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".arj")) { 
+        const char *args[] = { "arj", "x","-y", NULL, NULL };
+	args[3] = filename;
+        if((userprg = opt_arg(opt, "arj")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("arj", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".zoo")) { 
+	const char *args[] = { "unzoo", "-x","-j","./", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "unzoo")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzoo", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".jar")) { 
+	const char *args[] = { "unzip", "-P", "clam", "-o", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "jar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzip", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".lzh")) { 
+	const char *args[] = { "lha", "xf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "lha")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("lha", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".tar")) { 
+	const char *args[] = { "tar", "-xpvf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "tar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("tar", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".deb")) { 
+	const char *args[] = { "ar", "x", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "deb")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("ar", args, gendir, user, opt);
+
+    } else if((cli_strbcasestr(filename, ".tar.gz") || cli_strbcasestr(filename, ".tgz"))) {
+	const char *args[] = { "tar", "-zxpvf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "tgz")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("tar", args, gendir, user, opt);
+    }
+
+    /* fix permissions of extracted files */
+    fixperms(gendir);
+
+    if(!ret) { /* execute successful */
+	    short oldrec = recursion;
+
+	recursion = 1;
+	ret = treewalk(gendir, engine, user, opt, limits, options, 1);
+	recursion = oldrec;
+    }
+
+    /* remove the directory  - as clamav */
+    if(!opt_check(opt, "leave-temps"))
+	clamav_rmdirs(gendir);
+
+    /* free gendir - it's not necessary now */
+    free(gendir);
+
+    switch(ret) {
+	case -1:
+	    logg("!Can't fork()\n");
+	    exit(61); /* this is critical problem, so we just exit here */
+	case -2:
+	    logg("^Can't execute some unpacker. Check paths and permissions on the temporary directory\n");
+	    /* This is no longer a critical error (since 0.24). We scan
+	     * raw archive.
+	     */
+	    if((ret = checkfile(filename, engine, limits, 0, 0)) == CL_VIRUS) {
+		if(opt_check(opt, "remove")) {
+		    if(unlink(filename)) {
+			logg("^%s: Can't remove\n", filename);
+			info.notremoved++;
+		    } else {
+			logg("%s: Removed\n", filename);
+		    }
+		} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		    move_infected(filename, opt);
+	    }
+	    return ret;
+	case -3:
+	    return 0;
+	case 0:
+	    /* no viruses found in archive, we scan just in case a raw file
+	     */
+	    if((ret = checkfile(filename, engine, limits, 0, 1)) == CL_VIRUS) {
+		if(opt_check(opt, "remove")) {
+		    if(unlink(filename)) {
+			logg("^%s: Can't remove\n", filename);
+			info.notremoved++;
+		    } else {
+			logg("%s: Removed\n", filename);
+		    }
+		} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		    move_infected(filename, opt);
+	    }
+	    return ret;
+	case 1:
+	    logg("%s: Infected.Archive FOUND\n", filename);
+
+	    if(bell)
+		fprintf(stderr, "\007");
+
+	    if(opt_check(opt, "remove")) {
+		if(unlink(filename)) {
+		    logg("^%s: Can't remove\n", filename);
+		    info.notremoved++;
+		} else {
+		    logg("%s: Removed\n", filename);
+		}
+	    } else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		move_infected(filename, opt);
+
+	    return 1;
+	default:
+	    logg("^Strange value (%d) returned in scancompressed()\n", ret);
+	    return 0;
+    }
+}
+
+static int scandenied(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+	char *gendir, *tmp_file;
+	const char *tmpdir, *pt;
+	struct stat statbuf;
+	int ret;
+
+    stat(filename, &statbuf);
+    if(!S_ISREG(statbuf.st_mode)) {
+	logg("^Suspect archive %s (not a regular file)\n", filename);
+	return 0;
+    }
+
+    /* check write access */
+
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to the temporary directory %s\n", tmpdir);
+	exit(64);
+    }
+
+    /* generate the temporary directory */
+    gendir = cli_gentemp(tmpdir);
+    if(mkdir(gendir, 0700)) {
+	logg("^Can't create the temporary directory %s\n", gendir);
+	exit(63); /* critical */
+    }
+
+    tmp_file = (char *) malloc(strlen(gendir) + strlen(filename) + 10);
+    pt = strrchr(filename, '/');
+    if(!pt)
+	pt = filename;
+    else
+	pt += 1;
+
+    sprintf(tmp_file, "%s/%s", gendir, pt);
+
+    if(filecopy(filename, tmp_file) == -1) {
+	logg("!I/O error\n");
+	perror("copyfile()");
+	exit(58);
+    }
+
+    fixperms(gendir);
+
+#if !defined(C_OS2) && !defined(C_WINDOWS)
+    if(user) {
+	chown(gendir, user->pw_uid, user->pw_gid);
+	chown(tmp_file, user->pw_uid, user->pw_gid);
+    }
+#endif
+
+    if((ret = treewalk(gendir, engine, user, opt, limits, options, 1)) == 1) {
+	logg("(Real infected archive: %s)\n", filename);
+
+	if(opt_check(opt, "remove")) {
+	    if(unlink(filename)) {
+		logg("^%s: Can't remove\n", filename);
+		info.notremoved++;
+	    } else {
+	        logg("%s: Removed\n", filename);
+	    }
+	} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+	    move_infected(filename, opt);
+    }
+
+    /* remove the directory  - as clamav */
+    clamav_rmdirs(gendir);
+
+    free(gendir);
+    free(tmp_file);
+
+    return ret;
+}
+
+int scanfile(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, unsigned int options)
+{
+	int ret, included, printclean = 1;
+	const struct optnode *optnode;
+	char *argument;
+#ifdef C_LINUX
+	struct stat sb;
+
+    /* argh, don't scan /proc files */
+    if(procdev)
+	if(stat(filename, &sb) != -1)
+	    if(sb.st_dev == procdev) {
+		if(!printinfected)
+		    logg("%s: Excluded (/proc)\n", filename);
+		return 0;
+	    }
+#endif    
+
+    if(opt_check(opt, "exclude")) {
+	argument = opt_firstarg(opt, "exclude", &optnode);
+	while(argument) {
+	    if(match_regex(filename, argument) == 1) {
+		if(!printinfected)
+		    logg("%s: Excluded\n", filename);
+		return 0;
+	    }
+	    argument = opt_nextarg(&optnode, "exclude");
+	}
+    }
+
+   if(opt_check(opt, "include")) {
+	included = 0;
+	argument = opt_firstarg(opt, "include", &optnode);
+	while(argument && !included) {
+	    if(match_regex(filename, argument) == 1) {
+		included = 1;
+		break;
+	    }
+	    argument = opt_nextarg(&optnode, "include");
+	}
+
+	if(!included) {
+	    if(!printinfected)
+		logg("%s: Excluded\n", filename);
+	    return 0;
+	}
+    }
+
+    if(fileinfo(filename, 1) == 0) {
+	if(!printinfected)
+	    logg("%s: Empty file\n", filename);
+	return 0;
+    }
+
+#ifndef C_WINDOWS
+    if(geteuid())
+	if(checkaccess(filename, NULL, R_OK) != 1) {
+	    if(!printinfected)
+		logg("%s: Access denied\n", filename);
+	    return 0;
+	}
+#endif
+
+    info.files++;
+
+    /* 
+     * check the extension  - this is a special case, normally we don't need to
+     * do this (libclamav detects archive by its magic string), but here we
+     * want to know the exit code from internal unpacker and try to use
+     * external (if provided) when internal cannot extract data.
+     */
+
+    if((cli_strbcasestr(filename, ".zip") || cli_strbcasestr(filename, ".rar")) && (options & CL_SCAN_ARCHIVE)) {
+	/* try to use internal archivers */
+	if((ret = checkfile(filename, engine, limits, options, 1)) == CL_VIRUS) {
+	    if(opt_check(opt, "remove")) {
+		if(unlink(filename)) {
+		    logg("^%s: Can't remove\n", filename);
+		    info.notremoved++;
+		} else {
+		    logg("%s: Removed\n", filename);
+		}
+	    } else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		move_infected(filename, opt);
+
+	    return 1;
+
+	} else if(ret == CL_CLEAN) {
+	    return 0;
+	} else if(ret == 54) {
+	    return ret;
+	}
+
+	/* in other case try to continue with external archivers */
+	options &= ~CL_SCAN_ARCHIVE; /* and disable decompression for the checkfile() below */
+	printclean = 0;
+    }
+
+    if((cli_strbcasestr(filename, ".zip") && opt_check(opt, "unzip"))
+    || (cli_strbcasestr(filename, ".rar") && opt_check(opt, "unrar"))
+    || (cli_strbcasestr(filename, ".arj") && opt_check(opt, "arj"))
+    || (cli_strbcasestr(filename, ".zoo") && opt_check(opt, "unzoo"))
+    || (cli_strbcasestr(filename, ".jar") && opt_check(opt, "jar"))
+    || (cli_strbcasestr(filename, ".lzh") && opt_check(opt, "lha"))
+    || (cli_strbcasestr(filename, ".tar") && opt_check(opt, "tar"))
+    || (cli_strbcasestr(filename, ".deb") && opt_check(opt, "deb"))
+    || ((cli_strbcasestr(filename, ".tar.gz") || cli_strbcasestr(filename, ".tgz")) 
+	 && (opt_check(opt, "tgz") || opt_check(opt, "deb"))) ) {
+
+	/* check permissions */
+	switch(checkaccess(filename, CLAMAVUSER, R_OK)) {
+	    case -1:
+		logg("^Can't get information about user "CLAMAVUSER"\n");
+		exit(60); /* this is a critical problem so we just exit here */
+	    case -2:
+		logg("^Can't fork\n");
+		exit(61);
+	    case 0: /* read access denied */
+		if(geteuid()) {
+		    if(!printinfected)
+			logg("^%s: Access denied to archive\n", filename);
+		} else {
+
+		    if(limits && limits->maxfilesize)
+			if((unsigned int) fileinfo(filename, 1) / 1024 > limits->maxfilesize) {
+			    if(!printinfected)
+				logg("^%s: Archive too big\n", filename);
+			    return 0;
+			}
+
+		    return(scandenied(filename, engine, user, opt, limits, options));
+		}
+		return 0;
+	    case 1:
+		return(scancompressed(filename, engine, user, opt, limits, options));
+	}
+    }
+
+    if((ret = checkfile(filename, engine, limits, options, printclean)) == CL_VIRUS) {
+	if(opt_check(opt, "remove")) {
+	    if(unlink(filename)) {
+		logg("^%s: Can't remove\n", filename);
+		info.notremoved++;
+	    } else {
+		logg("%s: Removed\n", filename);
+	    }
+	} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+            move_infected(filename, opt);
+    }
+    return ret;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.ce
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.ce?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.ce (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_manager.ce Wed Jan 30 15:17:10 2008
@@ -0,0 +1,1105 @@
+/*
+ *  Copyright (C) 2002 - 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ *  Wed Mar  5 03:45:31 CET 2003: included --move code from Damien Curtain
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifdef C_WINDOWS
+#include <sys/utime.h>
+#else
+#include <sys/wait.h>
+#include <utime.h>
+#endif
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#include <fcntl.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <signal.h>
+#include <errno.h>
+
+#include "manager.h"
+#include "others.h"
+#include "treewalk.h"
+#include "global.h"
+
+#include "shared/options.h"
+#include "shared/output.h"
+#include "shared/misc.h"
+
+#include "libclamav/clamav.h"
+#include "libclamav/others.h"
+#include "libclamav/matcher-ac.h"
+#include "libclamav/str.h"
+
+#ifdef C_LINUX
+dev_t procdev;
+#endif
+
+#ifdef C_WINDOWS
+#undef P_tmpdir
+#define P_tmpdir    "C:\\WINDOWS\\TEMP"
+#endif
+
+#ifndef	O_BINARY
+#define	O_BINARY    0
+#endif
+
+static int scandirs(const char *dirname, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+    return treewalk(dirname, engine, user, opt, limits, options, 1);
+}
+
+static int scanstdin(const struct cl_engine *engine, const struct cl_limits *limits, int options)
+{
+	int ret;
+	const char *virname, *tmpdir;
+	char *file, buff[FILEBUFF];
+	FILE *fs;
+
+
+    /* check write access */
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to temporary directory\n");
+	return 64;
+    }
+
+    file = cli_gentemp(tmpdir);
+
+    if(!(fs = fopen(file, "wb"))) {
+	logg("!Can't open %s for writing\n", file);
+	free(file);
+	return 63;
+    }
+
+    while((ret = fread(buff, 1, FILEBUFF, stdin)))
+	if(fwrite(buff, 1, ret, fs) < ret) {
+	    logg("!Can't write to %s\n", file);
+	    free(file);
+	    return 58;
+	}
+
+    fclose(fs);
+
+    logg("*Checking %s\n", file);
+    info.files++;
+
+    if((ret = cl_scanfile(file, &virname, &info.blocks, engine, limits, options)) == CL_VIRUS) {
+	logg("stdin: %s FOUND\n", virname);
+	info.ifiles++;
+
+	if(bell)
+	    fprintf(stderr, "\007");
+
+    } else if(ret == CL_CLEAN) {
+	if(!printinfected)
+	    mprintf("stdin: OK\n");
+    } else
+	if(!printinfected)
+	    logg("stdin: %s\n", cl_strerror(ret));
+
+    unlink(file);
+    free(file);
+    return ret;
+}
+
+int scanmanager(const struct optstruct *opt)
+{
+	mode_t fmode;
+	int ret = 0, extunpacker = 0, fmodeint, i, x;
+	unsigned int options = 0, dboptions = 0;
+	struct cl_engine *engine = NULL;
+	struct cl_limits limits;
+	struct passwd *user = NULL;
+	struct stat sb;
+	char *fullpath = NULL, cwd[1024];
+
+
+    if(opt_check(opt, "unzip") || opt_check(opt, "unrar") || opt_check(opt, "arj") ||
+       opt_check(opt, "unzoo") || opt_check(opt, "jar") || opt_check(opt, "lha") ||
+       opt_check(opt, "tar") || opt_check(opt, "tgz") || opt_check(opt, "deb"))
+	    extunpacker = 1;
+
+/* njh at bandsman.co.uk: BeOS */
+#if !defined(C_CYGWIN) && !defined(C_OS2) && !defined(C_BEOS) && !defined(C_WINDOWS)
+    if(extunpacker && !geteuid()) {
+	if((user = getpwnam(CLAMAVUSER)) == NULL) {
+	    logg("!Can't get information about user "CLAMAVUSER" (required to run external unpackers)\n");
+	    exit(60); /* this is critical problem, so we just exit here */
+	}
+    }
+#endif
+
+    if(!opt_check(opt, "no-phishing-sigs"))
+	dboptions |= CL_DB_PHISHING;
+
+    if(!opt_check(opt,"no-phishing-scan-urls"))
+	dboptions |= CL_DB_PHISHING_URLS;
+    if(!opt_check(opt,"no-phishing-restrictedscan")) {
+	/* not scanning all domains, check only URLs with domains from .pdb */
+	options |= CL_SCAN_PHISHING_DOMAINLIST;
+    }
+    if(opt_check(opt,"phishing-ssl")) {
+	options |= CL_SCAN_PHISHING_BLOCKSSL;
+    }
+    if(opt_check(opt,"phishing-cloak")) {
+	options |= CL_SCAN_PHISHING_BLOCKCLOAK;
+    }
+
+    if(opt_check(opt, "dev-ac-only"))
+	dboptions |= CL_DB_ACONLY;
+
+    if(opt_check(opt, "dev-ac-depth"))
+	cli_ac_setdepth(AC_DEFAULT_MIN_DEPTH, atoi(opt_arg(opt, "dev-ac-depth")));
+
+    if(opt_check(opt, "detect-pua"))
+	dboptions |= CL_DB_PUA;
+
+    if(opt_check(opt, "database")) {
+	if((ret = cl_load(opt_arg(opt, "database"), &engine, &info.sigs, dboptions))) {
+	    logg("!%s\n", cl_strerror(ret));
+	    return 50;
+	}
+
+    } else {
+	    char *dbdir = freshdbdir();
+
+	if((ret = cl_load(dbdir, &engine, &info.sigs, dboptions))) {
+	    logg("!%s\n", cl_strerror(ret));
+	    free(dbdir);
+	    return 50;
+	}
+	free(dbdir);
+    }
+
+    if(!engine) {
+	logg("!Can't initialize the virus database\n");
+	return 50;
+    }
+
+    if((ret = cl_build(engine)) != 0) {
+	logg("!Database initialization error: %s\n", cl_strerror(ret));;
+	return 50;
+    }
+
+    /* set limits */
+    memset(&limits, 0, sizeof(struct cl_limits));
+
+    if(opt_check(opt, "max-space")) {
+	char *cpy, *ptr;
+	ptr = opt_arg(opt, "max-space");
+	if(tolower(ptr[strlen(ptr) - 1]) == 'm') {
+	    cpy = calloc(strlen(ptr), 1);
+	    strncpy(cpy, ptr, strlen(ptr) - 1);
+	    limits.maxfilesize = atoi(cpy) * 1024 * 1024;
+	    free(cpy);
+	} else
+	    limits.maxfilesize = atoi(ptr) * 1024;
+    } else
+	limits.maxfilesize = 10485760;
+
+    if(opt_check(opt, "max-files"))
+	limits.maxfiles = atoi(opt_arg(opt, "max-files"));
+    else
+        limits.maxfiles = 500;
+
+    if(opt_check(opt, "max-recursion"))
+        limits.maxreclevel = atoi(opt_arg(opt, "max-recursion"));
+    else
+        limits.maxreclevel = 8;
+
+    if(opt_check(opt, "max-mail-recursion"))
+        limits.maxmailrec = atoi(opt_arg(opt, "max-mail-recursion"));
+    else
+        limits.maxmailrec = 64;
+
+    if(opt_check(opt, "max-ratio"))
+        limits.maxratio = atoi(opt_arg(opt, "max-ratio"));
+    else
+        limits.maxratio = 250;
+
+    /* set options */
+
+    if(opt_check(opt, "disable-archive") || opt_check(opt, "no-archive"))
+	options &= ~CL_SCAN_ARCHIVE;
+    else
+	options |= CL_SCAN_ARCHIVE;
+
+    if(opt_check(opt, "detect-broken"))
+	options |= CL_SCAN_BLOCKBROKEN;
+
+    if(opt_check(opt, "block-encrypted"))
+	options |= CL_SCAN_BLOCKENCRYPTED;
+
+    if(opt_check(opt, "block-max"))
+	options |= CL_SCAN_BLOCKMAX;
+
+    if(opt_check(opt, "no-pe"))
+	options &= ~CL_SCAN_PE;
+    else
+	options |= CL_SCAN_PE;
+
+    if(opt_check(opt, "no-elf"))
+	options &= ~CL_SCAN_ELF;
+    else
+	options |= CL_SCAN_ELF;
+
+    if(opt_check(opt, "no-ole2"))
+	options &= ~CL_SCAN_OLE2;
+    else
+	options |= CL_SCAN_OLE2;
+
+    if(opt_check(opt, "no-pdf"))
+	options &= ~CL_SCAN_PDF;
+    else
+	options |= CL_SCAN_PDF;
+
+    if(opt_check(opt, "no-html"))
+	options &= ~CL_SCAN_HTML;
+    else
+	options |= CL_SCAN_HTML;
+
+    if(opt_check(opt, "no-mail")) {
+	options &= ~CL_SCAN_MAIL;
+    } else {
+	options |= CL_SCAN_MAIL;
+
+	if(opt_check(opt, "mail-follow-urls"))
+	    options |= CL_SCAN_MAILURL;
+    }
+
+    if(opt_check(opt, "no-algorithmic"))
+	options &= ~CL_SCAN_ALGORITHMIC;
+    else
+	options |= CL_SCAN_ALGORITHMIC;
+
+#ifdef C_LINUX
+    procdev = (dev_t) 0;
+    if(stat("/proc", &sb) != -1 && !sb.st_size)
+	procdev = sb.st_dev;
+#endif
+
+    /* check filetype */
+    if(opt->filename == NULL || strlen(opt->filename) == 0) {
+
+	/* we need full path for some reasons (eg. archive handling) */
+	if(!getcwd(cwd, sizeof(cwd))) {
+	    logg("!Can't get absolute pathname of current working directory\n");
+	    ret = 57;
+	} else
+	    ret = scandirs(cwd, engine, user, opt, &limits, options);
+
+    } else if(!strcmp(opt->filename, "-")) { /* read data from stdin */
+	ret = scanstdin(engine, &limits, options);
+
+    } else {
+	char *thefilename;
+	for (x = 0; (thefilename = cli_strtok(opt->filename, x, "\t")) != NULL; x++) {
+	    if((fmodeint = fileinfo(thefilename, 2)) == -1) {
+		logg("^Can't access file %s\n", thefilename);
+		perror(thefilename);
+		ret = 56;
+	    } else {
+		int slash = 1;
+		for(i = strlen(thefilename) - 1; i > 0 && slash; i--) {
+		    if(thefilename[i] == '/')
+			thefilename[i] = 0;
+		    else
+			slash = 0;
+		}
+
+		fmode = (mode_t) fmodeint;
+
+		if(extunpacker && (thefilename[0] != '/' && thefilename[0] != '\\' && thefilename[1] != ':')) {
+		    /* we need to complete the path */
+		    if(!getcwd(cwd, sizeof(cwd))) {
+			logg("!Can't get absolute pathname of current working directory\n");
+			return 57;
+		    } else {
+			fullpath = malloc(512);
+#ifdef NO_SNPRINTF
+			sprintf(fullpath, "%s/%s", cwd, thefilename);
+#else
+			snprintf(fullpath, 512, "%s/%s", cwd, thefilename);
+#endif
+			logg("*Full path: %s\n", fullpath);
+		    }
+		} else
+		    fullpath = thefilename;
+
+		switch(fmode & S_IFMT) {
+		    case S_IFREG:
+			ret = scanfile(fullpath, engine, user, opt, &limits, options);
+			break;
+
+		    case S_IFDIR:
+			ret = scandirs(fullpath, engine, user, opt, &limits, options);
+			break;
+
+		    default:
+			logg("!Not supported file type (%s)\n", thefilename);
+			ret = 52;
+		}
+
+		if(extunpacker && (thefilename[0] != '/' && thefilename[0] != '\\' && thefilename[1] != ':')) {
+		    free(fullpath);
+		    fullpath = NULL;
+		}
+	    }
+	    free(thefilename);
+	}
+    }
+
+    /* free the engine */
+    cl_free(engine);
+
+    /* overwrite return code */
+    if(info.ifiles)
+	ret = 1;
+    else if(ret < 50) /* hopefully no error detected */ 
+	ret = 0; /* just make sure it's 0 */
+
+    return ret;
+}
+
+/*
+ * -1 -> can't fork
+ * -2 -> can't execute
+ * -3 -> external signal
+ * 0 -> OK
+ */
+
+#ifdef C_WINDOWS
+static int clamav_unpack(const char *prog, const char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
+{
+    /* TODO: use spamvp(P_WAIT, prog, args); */
+    cli_errmsg("clamav_unpack is not supported under Windows yet\n");
+    return -1;
+}
+#else
+static int clamav_unpack(const char *prog, const char **args, const char *tmpdir, const struct passwd *user, const struct optstruct *opt)
+{
+	pid_t pid;
+	int status, wret, fdevnull;
+	unsigned int maxfiles, maxspace;
+	struct s_du n;
+
+
+    if(opt_check(opt, "max-files"))
+	maxfiles = atoi(opt_arg(opt, "max-files"));
+    else
+	maxfiles = 0;
+
+    if(opt_check(opt, "max-space")) {
+	    char *cpy, *ptr;
+	ptr = opt_arg(opt, "max-space");
+	if(tolower(ptr[strlen(ptr) - 1]) == 'm') { /* megabytes */
+	    cpy = calloc(strlen(ptr), 1);
+	    strncpy(cpy, ptr, strlen(ptr) - 1);
+	    maxspace = atoi(cpy) * 1024;
+	    free(cpy);
+	} else /* default - kilobytes */
+	    maxspace = atoi(ptr);
+    } else
+	maxspace = 0;
+
+
+    switch(pid = fork()) {
+	case -1:
+	    return -1;
+	case 0:
+#ifndef C_CYGWIN
+	    if(!geteuid() && user) {
+
+#ifdef HAVE_SETGROUPS
+		if(setgroups(1, &user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgroups() failed\n");
+		    exit(1);
+		}
+#endif
+
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed\n", (int) user->pw_gid);
+		    exit(1);
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed\n", (int) user->pw_uid);
+		    exit(1);
+		}
+	    }
+#endif
+	    if(chdir(tmpdir) == -1) {
+		fprintf(stderr, "ERROR: chdir(%s) failed\n", tmpdir);
+		exit(1);
+	    }
+
+	    if(printinfected) {
+  	        fdevnull = open("/dev/null", O_WRONLY);
+		if(fdevnull == -1) {
+		    logg("Non fatal error: cannot open /dev/null. Continuing with full output\n");
+		    printinfected = 0;
+		} else {
+		    dup2(fdevnull,1);
+		    dup2(fdevnull,2);
+		}
+	    }
+
+	    if(strchr(prog, '/')) /* we have full path */
+		execv(prog, args);
+	    else
+		execvp(prog, args);
+	    perror("execv(p)");
+	    abort();
+	    break;
+	default:
+
+	    if(maxfiles || maxspace) {
+		while(!(wret = waitpid(pid, &status, WNOHANG))) {
+		    memset(&n, 0, sizeof(struct s_du));
+
+		    if(!du(tmpdir, &n))
+			if((maxfiles && n.files > maxfiles) || (maxspace && n.space > maxspace)) {
+			    logg("*n.files: %u, n.space: %lu\n", n.files, n.space);
+			    kill(pid, 9); /* stop it immediately */
+			}
+		}
+	    } else
+		waitpid(pid, &status, 0);
+
+
+	    if(WIFSIGNALED(status)) {
+		switch(WTERMSIG(status)) {
+
+		    case 9:
+			logg("\nUnpacker process %d stopped due to exceeded limits\n", pid);
+			return 0;
+		    case 6: /* abort */
+			logg("^Can't run %s\n", prog);
+			return -2;
+		    default:
+			logg("^\nUnpacker stopped with external signal %d\n", WTERMSIG(status));
+			return -3;
+		}
+	    } else if(WIFEXITED(status))
+		return 0;
+    }
+
+    return 0;
+}
+#endif
+
+static void move_infected(const char *filename, const struct optstruct *opt)
+{
+	char *movedir, *movefilename, numext[4 + 1];
+	const char *tmp;
+	struct stat ofstat, mfstat;
+	int n, len, movefilename_size;
+	int moveflag = opt_check(opt, "move");
+	struct utimbuf ubuf;
+
+
+    if((moveflag && !(movedir = opt_arg(opt, "move"))) ||
+	(!moveflag && !(movedir = opt_arg(opt, "copy")))) {
+        /* Should never reach here */
+        logg("!opt_arg() returned NULL\n");
+        info.notmoved++;
+        return;
+    }
+
+    if(access(movedir, W_OK|X_OK) == -1) {
+	logg("!Can't %s file '%s': cannot write to '%s': %s\n", (moveflag) ? "move" : "copy", filename, movedir, strerror(errno));
+        info.notmoved++;
+        return;
+    }
+
+    if(!(tmp = strrchr(filename, '/')))
+	tmp = filename;
+
+    movefilename_size = sizeof(char) * (strlen(movedir) + strlen(tmp) + sizeof(numext) + 2);
+
+    if(!(movefilename = malloc(movefilename_size))) {
+        logg("!malloc() failed\n");
+	exit(71);
+    }
+
+    if(!(cli_strrcpy(movefilename, movedir))) {
+        logg("!cli_strrcpy() returned NULL\n");
+        info.notmoved++;
+        free(movefilename);
+        return;
+    }
+
+    strcat(movefilename, "/");
+
+    if(!(strcat(movefilename, tmp))) {
+        logg("!strcat() returned NULL\n");
+        info.notmoved++;
+        free(movefilename);
+        return;
+    }
+
+    stat(filename, &ofstat);
+
+    if(!stat(movefilename, &mfstat)) {
+        if((ofstat.st_dev == mfstat.st_dev) && (ofstat.st_ino == mfstat.st_ino)) { /* It's the same file*/
+            logg("File excluded '%s'\n", filename);
+            info.notmoved++;
+            free(movefilename);
+            return;
+        } else {
+            /* file exists - try to append an ordinal number to the
+	     * quranatined file in an attempt not to overwrite existing
+	     * files in quarantine  
+	     */
+            len = strlen(movefilename);
+            n = 0;        		        		
+            do {
+                /* reset the movefilename to it's initial value by
+		 * truncating to the original filename length
+		 */
+                movefilename[len] = 0;
+                /* append .XXX */
+                sprintf(numext, ".%03d", n++);
+                strcat(movefilename, numext);            	
+            } while(!stat(movefilename, &mfstat) && (n < 1000));
+       }
+    }
+
+    if(!moveflag || rename(filename, movefilename) == -1) {
+	if(filecopy(filename, movefilename) == -1) {
+	    logg("!Can't %s '%s' to '%s': %s\n", (moveflag) ? "move" : "copy", filename, movefilename, strerror(errno));
+	    info.notmoved++;
+	    free(movefilename);
+	    return;
+	}
+
+	chmod(movefilename, ofstat.st_mode);
+#ifndef C_OS2
+	chown(movefilename, ofstat.st_uid, ofstat.st_gid);
+#endif
+
+	ubuf.actime = ofstat.st_atime;
+	ubuf.modtime = ofstat.st_mtime;
+	utime(movefilename, &ubuf);
+
+	if(moveflag && unlink(filename)) {
+	    logg("!Can't unlink '%s': %s\n", filename, strerror(errno));
+	    info.notremoved++;            
+	    free(movefilename);
+	    return;
+	}
+    }
+
+    logg("%s: %s to '%s'\n", filename, (moveflag) ? "moved" : "copied", movefilename);
+
+    free(movefilename);
+}
+
+static int checkfile(const char *filename, const struct cl_engine *engine, const struct cl_limits *limits, int options, short printclean)
+{
+	int fd, ret;
+	const char *virname;
+
+
+    logg("*Scanning %s\n", filename);
+
+    if((fd = open(filename, O_RDONLY|O_BINARY)) == -1) {
+	logg("^Can't open file %s\n", filename);
+	return 54;
+    }
+
+    if((ret = cl_scandesc(fd, &virname, &info.blocks, engine, limits, options)) == CL_VIRUS) {
+	logg("%s: %s FOUND\n", filename, virname);
+	info.ifiles++;
+
+	if(bell)
+	    fprintf(stderr, "\007");
+
+    } else if(ret == CL_CLEAN) {
+	if(!printinfected && printclean)
+	    mprintf("%s: OK\n", filename);
+    } else
+	if(!printinfected)
+	    logg("%s: %s\n", filename, cl_strerror(ret));
+
+    close(fd);
+    return ret;
+}
+
+static int scancompressed(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+	int ret = 0;
+	char *gendir, *userprg;
+	const char *tmpdir;
+	struct stat statbuf;
+
+
+    stat(filename, &statbuf);
+
+    if(!S_ISREG(statbuf.st_mode)) {
+	logg("^Suspect archive %s (not a regular file)\n", filename);
+	return 0; /* hmm ? */
+    }
+
+    /* check write access */
+
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to the temporary directory\n");
+	exit(64);
+    }
+
+    /* generate the temporary directory */
+
+    gendir = cli_gentemp(tmpdir);
+    if(mkdir(gendir, 0700)) {
+	logg("!Can't create the temporary directory %s\n", gendir);
+	exit(63); /* critical */
+    }
+
+#if !defined(C_OS2) && !defined(C_WINDOWS)
+    /* FIXME: do the correct native windows way */
+    if(user)
+	chown(gendir, user->pw_uid, user->pw_gid);
+#endif
+
+    /* unpack file  - as unprivileged user */
+    if(cli_strbcasestr(filename, ".zip")) {
+	const char *args[] = { "unzip", "-P", "clam", "-o", NULL, NULL };
+	/* Sun's SUNWspro C compiler doesn't allow direct initialisation
+	 * with a variable
+	 */
+	args[4] = filename;
+
+	if((userprg = opt_arg(opt, "unzip")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzip", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".rar")) { 
+	const char *args[] = { "unrar", "x", "-p-", "-y", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "unrar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unrar", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".arj")) { 
+        const char *args[] = { "arj", "x","-y", NULL, NULL };
+	args[3] = filename;
+        if((userprg = opt_arg(opt, "arj")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("arj", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".zoo")) { 
+	const char *args[] = { "unzoo", "-x","-j","./", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "unzoo")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzoo", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".jar")) { 
+	const char *args[] = { "unzip", "-P", "clam", "-o", NULL, NULL };
+	args[4] = filename;
+	if((userprg = opt_arg(opt, "jar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("unzip", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".lzh")) { 
+	const char *args[] = { "lha", "xf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "lha")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("lha", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".tar")) { 
+	const char *args[] = { "tar", "-xpvf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "tar")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("tar", args, gendir, user, opt);
+
+    } else if(cli_strbcasestr(filename, ".deb")) { 
+	const char *args[] = { "ar", "x", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "deb")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("ar", args, gendir, user, opt);
+
+    } else if((cli_strbcasestr(filename, ".tar.gz") || cli_strbcasestr(filename, ".tgz"))) {
+	const char *args[] = { "tar", "-zxpvf", NULL, NULL };
+	args[2] = filename;
+	if((userprg = opt_arg(opt, "tgz")))
+	    ret = clamav_unpack(userprg, args, gendir, user, opt);
+	else
+	    ret = clamav_unpack("tar", args, gendir, user, opt);
+    }
+
+    /* fix permissions of extracted files */
+    fixperms(gendir);
+
+    if(!ret) { /* execute successful */
+	    short oldrec = recursion;
+
+	recursion = 1;
+	ret = treewalk(gendir, engine, user, opt, limits, options, 1);
+	recursion = oldrec;
+    }
+
+    /* remove the directory  - as clamav */
+    if(!opt_check(opt, "leave-temps"))
+	clamav_rmdirs(gendir);
+
+    /* free gendir - it's not necessary now */
+    free(gendir);
+
+    switch(ret) {
+	case -1:
+	    logg("!Can't fork()\n");
+	    exit(61); /* this is critical problem, so we just exit here */
+	case -2:
+	    logg("^Can't execute some unpacker. Check paths and permissions on the temporary directory\n");
+	    /* This is no longer a critical error (since 0.24). We scan
+	     * raw archive.
+	     */
+	    if((ret = checkfile(filename, engine, limits, 0, 0)) == CL_VIRUS) {
+		if(opt_check(opt, "remove")) {
+		    if(unlink(filename)) {
+			logg("^%s: Can't remove\n", filename);
+			info.notremoved++;
+		    } else {
+			logg("%s: Removed\n", filename);
+		    }
+		} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		    move_infected(filename, opt);
+	    }
+	    return ret;
+	case -3:
+	    return 0;
+	case 0:
+	    /* no viruses found in archive, we scan just in case a raw file
+	     */
+	    if((ret = checkfile(filename, engine, limits, 0, 1)) == CL_VIRUS) {
+		if(opt_check(opt, "remove")) {
+		    if(unlink(filename)) {
+			logg("^%s: Can't remove\n", filename);
+			info.notremoved++;
+		    } else {
+			logg("%s: Removed\n", filename);
+		    }
+		} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		    move_infected(filename, opt);
+	    }
+	    return ret;
+	case 1:
+	    logg("%s: Infected.Archive FOUND\n", filename);
+
+	    if(bell)
+		fprintf(stderr, "\007");
+
+	    if(opt_check(opt, "remove")) {
+		if(unlink(filename)) {
+		    logg("^%s: Can't remove\n", filename);
+		    info.notremoved++;
+		} else {
+		    logg("%s: Removed\n", filename);
+		}
+	    } else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		move_infected(filename, opt);
+
+	    return 1;
+	default:
+	    logg("^Strange value (%d) returned in scancompressed()\n", ret);
+	    return 0;
+    }
+}
+
+static int scandenied(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, int options)
+{
+	char *gendir, *tmp_file;
+	const char *tmpdir, *pt;
+	struct stat statbuf;
+	int ret;
+
+    stat(filename, &statbuf);
+    if(!S_ISREG(statbuf.st_mode)) {
+	logg("^Suspect archive %s (not a regular file)\n", filename);
+	return 0;
+    }
+
+    /* check write access */
+
+    tmpdir = getenv("TMPDIR");
+
+    if(tmpdir == NULL)
+#ifdef P_tmpdir
+	tmpdir = P_tmpdir;
+#else
+	tmpdir = "/tmp";
+#endif
+
+
+    if(checkaccess(tmpdir, CLAMAVUSER, W_OK) != 1) {
+	logg("!Can't write to the temporary directory %s\n", tmpdir);
+	exit(64);
+    }
+
+    /* generate the temporary directory */
+    gendir = cli_gentemp(tmpdir);
+    if(mkdir(gendir, 0700)) {
+	logg("^Can't create the temporary directory %s\n", gendir);
+	exit(63); /* critical */
+    }
+
+    tmp_file = (char *) malloc(strlen(gendir) + strlen(filename) + 10);
+    pt = strrchr(filename, '/');
+    if(!pt)
+	pt = filename;
+    else
+	pt += 1;
+
+    sprintf(tmp_file, "%s/%s", gendir, pt);
+
+    if(filecopy(filename, tmp_file) == -1) {
+	logg("!I/O error\n");
+	perror("copyfile()");
+	exit(58);
+    }
+
+    fixperms(gendir);
+
+#if !defined(C_OS2) && !defined(C_WINDOWS)
+    if(user) {
+	chown(gendir, user->pw_uid, user->pw_gid);
+	chown(tmp_file, user->pw_uid, user->pw_gid);
+    }
+#endif
+
+    if((ret = treewalk(gendir, engine, user, opt, limits, options, 1)) == 1) {
+	logg("(Real infected archive: %s)\n", filename);
+
+	if(opt_check(opt, "remove")) {
+	    if(unlink(filename)) {
+		logg("^%s: Can't remove\n", filename);
+		info.notremoved++;
+	    } else {
+	        logg("%s: Removed\n", filename);
+	    }
+	} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+	    move_infected(filename, opt);
+    }
+
+    /* remove the directory  - as clamav */
+    clamav_rmdirs(gendir);
+
+    free(gendir);
+    free(tmp_file);
+
+    return ret;
+}
+
+int scanfile(const char *filename, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, unsigned int options)
+{
+	int ret, included, printclean = 1;
+	const struct optnode *optnode;
+	char *argument;
+#ifdef C_LINUX
+	struct stat sb;
+
+    /* argh, don't scan /proc files */
+    if(procdev)
+	if(stat(filename, &sb) != -1)
+	    if(sb.st_dev == procdev) {
+		if(!printinfected)
+		    logg("%s: Excluded (/proc)\n", filename);
+		return 0;
+	    }
+#endif    
+
+    if(opt_check(opt, "exclude")) {
+	argument = opt_firstarg(opt, "exclude", &optnode);
+	while(argument) {
+	    if(match_regex(filename, argument) == 1) {
+		if(!printinfected)
+		    logg("%s: Excluded\n", filename);
+		return 0;
+	    }
+	    argument = opt_nextarg(&optnode, "exclude");
+	}
+    }
+
+   if(opt_check(opt, "include")) {
+	included = 0;
+	argument = opt_firstarg(opt, "include", &optnode);
+	while(argument && !included) {
+	    if(match_regex(filename, argument) == 1) {
+		included = 1;
+		break;
+	    }
+	    argument = opt_nextarg(&optnode, "include");
+	}
+
+	if(!included) {
+	    if(!printinfected)
+		logg("%s: Excluded\n", filename);
+	    return 0;
+	}
+    }
+
+    if(fileinfo(filename, 1) == 0) {
+	if(!printinfected)
+	    logg("%s: Empty file\n", filename);
+	return 0;
+    }
+
+#ifndef C_WINDOWS
+    if(geteuid())
+	if(checkaccess(filename, NULL, R_OK) != 1) {
+	    if(!printinfected)
+		logg("%s: Access denied\n", filename);
+	    return 0;
+	}
+#endif
+
+    info.files++;
+
+    /* 
+     * check the extension  - this is a special case, normally we don't need to
+     * do this (libclamav detects archive by its magic string), but here we
+     * want to know the exit code from internal unpacker and try to use
+     * external (if provided) when internal cannot extract data.
+     */
+
+    if((cli_strbcasestr(filename, ".zip") || cli_strbcasestr(filename, ".rar")) && (options & CL_SCAN_ARCHIVE)) {
+	/* try to use internal archivers */
+	if((ret = checkfile(filename, engine, limits, options, 1)) == CL_VIRUS) {
+	    if(opt_check(opt, "remove")) {
+		if(unlink(filename)) {
+		    logg("^%s: Can't remove\n", filename);
+		    info.notremoved++;
+		} else {
+		    logg("%s: Removed\n", filename);
+		}
+	    } else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+		move_infected(filename, opt);
+
+	    return 1;
+
+	} else if(ret == CL_CLEAN) {
+	    return 0;
+	} else if(ret == 54) {
+	    return ret;
+	}
+
+	/* in other case try to continue with external archivers */
+	options &= ~CL_SCAN_ARCHIVE; /* and disable decompression for the checkfile() below */
+	printclean = 0;
+    }
+
+    if((cli_strbcasestr(filename, ".zip") && opt_check(opt, "unzip"))
+    || (cli_strbcasestr(filename, ".rar") && opt_check(opt, "unrar"))
+    || (cli_strbcasestr(filename, ".arj") && opt_check(opt, "arj"))
+    || (cli_strbcasestr(filename, ".zoo") && opt_check(opt, "unzoo"))
+    || (cli_strbcasestr(filename, ".jar") && opt_check(opt, "jar"))
+    || (cli_strbcasestr(filename, ".lzh") && opt_check(opt, "lha"))
+    || (cli_strbcasestr(filename, ".tar") && opt_check(opt, "tar"))
+    || (cli_strbcasestr(filename, ".deb") && opt_check(opt, "deb"))
+    || ((cli_strbcasestr(filename, ".tar.gz") || cli_strbcasestr(filename, ".tgz")) 
+	 && (opt_check(opt, "tgz") || opt_check(opt, "deb"))) ) {
+
+	/* check permissions */
+	switch(checkaccess(filename, CLAMAVUSER, R_OK)) {
+	    case -1:
+		logg("^Can't get information about user "CLAMAVUSER"\n");
+		exit(60); /* this is a critical problem so we just exit here */
+	    case -2:
+		logg("^Can't fork\n");
+		exit(61);
+	    case 0: /* read access denied */
+		if(geteuid()) {
+		    if(!printinfected)
+			logg("^%s: Access denied to archive\n", filename);
+		} else {
+
+		    if(limits && limits->maxfilesize)
+			if((unsigned int) fileinfo(filename, 1) / 1024 > limits->maxfilesize) {
+			    if(!printinfected)
+				logg("^%s: Archive too big\n", filename);
+			    return 0;
+			}
+
+		    return(scandenied(filename, engine, user, opt, limits, options));
+		}
+		return 0;
+	    case 1:
+		return(scancompressed(filename, engine, user, opt, limits, options));
+	}
+    }
+
+    if((ret = checkfile(filename, engine, limits, options, printclean)) == CL_VIRUS) {
+	if(opt_check(opt, "remove")) {
+	    if(unlink(filename)) {
+		logg("^%s: Can't remove\n", filename);
+		info.notremoved++;
+	    } else {
+		logg("%s: Removed\n", filename);
+	    }
+	} else if (opt_check(opt, "move") || opt_check(opt, "copy"))
+            move_infected(filename, opt);
+    }
+    return ret;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_opt.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_opt.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_opt.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_opt.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,98 @@
+/*
+ *  Copyright (C) 2002 - 2006 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __CLAMSCAN_OPT_H
+#define __CLAMSCAN_OPT_H
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include "getopt.h"
+
+const char *clamscan_shortopt = "hvd:wriVl:m";
+static struct option clamscan_longopt[] = {
+    {"help", 0, 0, 'h'},	    /* clamscan + clamdscan */
+    {"quiet", 0, 0, 0},		    /* clamscan + clamdscan */
+    {"stdout", 0, 0, 0},	    /* clamscan + clamdscan */
+    {"verbose", 0, 0, 'v'},	    /* clamscan + clamdscan */
+    {"debug", 0, 0, 0},
+    {"version", 0, 0, 'V'},	    /* clamscan + clamdscan */
+    {"tempdir", 1, 0, 0},
+    {"leave-temps", 0, 0, 0},
+    {"config-file", 1, 0, 0},	    /* clamdscan */
+    {"multiscan", 0, 0, 'm'},
+    {"database", 1, 0, 'd'},
+    {"force", 0, 0, 0},
+    {"recursive", 0, 0, 'r'},
+    {"bell", 0, 0, 0},
+    {"disable-summary", 0, 0, 0},   /* obsolete */
+    {"no-summary", 0, 0, 0},
+    {"infected", 0, 0, 'i'},
+    {"log", 1, 0, 'l'},
+    {"move", 1, 0, 0},
+    {"copy", 1, 0, 0},
+    {"remove", 0, 0, 0},
+    {"exclude", 1, 0, 0},
+    {"exclude-dir", 1, 0, 0},
+    {"include", 1, 0, 0},
+    {"include-dir", 1, 0, 0},
+    {"max-files", 1, 0, 0},
+    {"max-space", 1, 0, 0},
+    {"max-ratio", 1, 0, 0},
+    {"max-recursion", 1, 0, 0},
+    {"max-dir-recursion", 1, 0, 0},
+    {"max-mail-recursion", 1, 0, 0},
+    {"detect-pua", 0, 0, 0},
+    {"disable-archive", 0, 0, 0},
+    {"no-archive", 0, 0, 0},
+    {"detect-broken", 0, 0, 0},
+    {"block-encrypted", 0, 0, 0},
+    {"block-max", 0, 0, 0},
+    {"no-pe", 0, 0, 0},
+    {"no-elf", 0, 0, 0},
+    {"no-ole2", 0, 0, 0},
+    {"no-pdf", 0, 0, 0},
+    {"no-html", 0, 0, 0},
+    {"no-mail", 0, 0, 0},
+    {"mail-follow-urls", 0, 0, 0},
+    {"no-phishing-sigs", 0, 0, 0},
+    {"no-phishing-scan-urls", 0, 0, 0},
+    {"no-phishing-restrictedscan", 0, 0, 0},
+    {"phishing-ssl", 0, 0, 0},
+    {"phishing-cloak", 0, 0, 0},
+    {"no-algorithmic", 0, 0, 0},
+    {"unzip", 2, 0, 0},
+    {"unrar", 2, 0, 0},
+    {"arj", 2, 0, 0},
+    {"unzoo", 2, 0, 0},
+    {"lha", 2, 0, 0},
+    {"jar", 2, 0, 0},
+    {"tar", 2, 0, 0},
+    {"tgz", 2, 0, 0},
+    {"deb", 2, 0, 0},
+
+    /* developers only */
+    {"dev-ac-only", 0, 0, 0},
+    {"dev-ac-depth", 1, 0, 0},
+
+    {0, 0, 0, 0}
+};
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,145 @@
+/*
+ *  Copyright (C) 1999 - 2004 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <errno.h>
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifndef C_WINDOWS
+#include <sys/wait.h>
+#include <sys/time.h>
+#endif
+#include <time.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <target.h>
+
+#include "regex.h"
+
+#include "output.h"
+#include "clamscan_others.h"
+
+int fileinfo(const char *filename, short i)
+{
+	struct stat infostruct;
+
+    if(stat(filename, &infostruct) == -1)
+	return(-1);
+
+    switch(i) {
+
+	case 1: /* size */
+	    return infostruct.st_size;
+	case 2: /* permissions */
+	    return (mode_t)infostruct.st_mode;
+	case 3: /* modification time */
+	    return infostruct.st_mtime;
+	case 4: /* UID */
+	    return infostruct.st_uid;
+	case 5: /* GID */
+	    return infostruct.st_gid;
+	default:
+	    logg("!fileinfo(): Unknown option.\n");
+	    exit(1);
+    }
+}
+
+#ifdef C_WINDOWS
+/* FIXME: Handle users correctly */
+int checkaccess(const char *path, const char *username, int mode)
+{
+    return _access(path, mode);
+}
+#else
+int checkaccess(const char *path, const char *username, int mode)
+{
+	struct passwd *user;
+	int ret = 0, status;
+
+    if(!geteuid()) {
+
+	if((user = getpwnam(username)) == NULL) {
+	    return -1;
+	}
+
+	switch(fork()) {
+	    case -1:
+		return -2;
+
+	    case 0:
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid);
+		    exit(0);
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid);
+		    exit(0);
+		}
+
+		if(access(path, mode))
+		    exit(0);
+		else
+		    exit(1);
+
+	    default:
+		wait(&status);
+		if(WIFEXITED(status) && WEXITSTATUS(status) == 1)
+		    ret = 1;
+	}
+
+    } else {
+	if(!access(path, mode))
+	    ret = 1;
+    }
+
+    return ret;
+}
+#endif
+
+int match_regex(const char *filename, const char *pattern)
+{
+	regex_t reg;
+	int match, flags;
+#if !defined(C_CYGWIN) && !defined(C_OS2)
+	flags = REG_EXTENDED;
+#else
+	flags = REG_EXTENDED | REG_ICASE; /* case insensitive on Windows */
+#endif
+	if(cli_regcomp(&reg, pattern, flags) != 0) {
+	    logg("!%s: Could not parse regular expression %s.\n", filename, pattern);
+		return 2;
+	}
+	match = (cli_regexec(&reg, filename, 0, NULL, 0) == REG_NOMATCH) ? 0 : 1;
+	cli_regfree(&reg);
+	return match;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.ce
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.ce?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.ce (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.ce Wed Jan 30 15:17:10 2008
@@ -0,0 +1,145 @@
+/*
+ *  Copyright (C) 1999 - 2004 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <errno.h>
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifndef C_WINDOWS
+#include <sys/wait.h>
+#include <sys/time.h>
+#endif
+#include <time.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <target.h>
+
+#include "regex/regex.h"
+
+#include "shared/output.h"
+#include "others.h"
+
+int fileinfo(const char *filename, short i)
+{
+	struct stat infostruct;
+
+    if(stat(filename, &infostruct) == -1)
+	return(-1);
+
+    switch(i) {
+
+	case 1: /* size */
+	    return infostruct.st_size;
+	case 2: /* permissions */
+	    return (mode_t)infostruct.st_mode;
+	case 3: /* modification time */
+	    return infostruct.st_mtime;
+	case 4: /* UID */
+	    return infostruct.st_uid;
+	case 5: /* GID */
+	    return infostruct.st_gid;
+	default:
+	    logg("!fileinfo(): Unknown option.\n");
+	    exit(1);
+    }
+}
+
+#ifdef C_WINDOWS
+/* FIXME: Handle users correctly */
+int checkaccess(const char *path, const char *username, int mode)
+{
+    return _access(path, mode);
+}
+#else
+int checkaccess(const char *path, const char *username, int mode)
+{
+	struct passwd *user;
+	int ret = 0, status;
+
+    if(!geteuid()) {
+
+	if((user = getpwnam(username)) == NULL) {
+	    return -1;
+	}
+
+	switch(fork()) {
+	    case -1:
+		return -2;
+
+	    case 0:
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid);
+		    exit(0);
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid);
+		    exit(0);
+		}
+
+		if(access(path, mode))
+		    exit(0);
+		else
+		    exit(1);
+
+	    default:
+		wait(&status);
+		if(WIFEXITED(status) && WEXITSTATUS(status) == 1)
+		    ret = 1;
+	}
+
+    } else {
+	if(!access(path, mode))
+	    ret = 1;
+    }
+
+    return ret;
+}
+#endif
+
+int match_regex(const char *filename, const char *pattern)
+{
+	regex_t reg;
+	int match, flags;
+#if !defined(C_CYGWIN) && !defined(C_OS2)
+	flags = REG_EXTENDED;
+#else
+	flags = REG_EXTENDED | REG_ICASE; /* case insensitive on Windows */
+#endif
+	if(cli_regcomp(&reg, pattern, flags) != 0) {
+	    logg("!%s: Could not parse regular expression %s.\n", filename, pattern);
+		return 2;
+	}
+	match = (cli_regexec(&reg, filename, 0, NULL, 0) == REG_NOMATCH) ? 0 : 1;
+	cli_regfree(&reg);
+	return match;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_others.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,26 @@
+/*
+ *  Copyright (C) 1999 - 2004 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __OTHERS_H
+#define __OTHERS_H
+
+int fileinfo(const char *filename, short i);
+int checkaccess(const char *path, const char *username, int mode);
+int match_regex(const char *filename, const char *pattern);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,295 @@
+/*
+ *  Copyright (C) 2002 - 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifndef C_WINDOWS
+#include <sys/wait.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+#ifndef C_WINDOWS
+#include <dirent.h>
+#endif
+#include <errno.h>
+
+#include "global.h"
+#include "manager.h"
+#include "clamscan_others.h"
+#include "treewalk.h"
+
+#include "options.h"
+#include "output.h"
+#include "misc.h"
+
+#include "clamav.h"
+#include "others.h"
+
+int treewalk(const char *dirname, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, unsigned int options, unsigned int depth)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+	int scanret = 0, included;
+	unsigned int maxdepth;
+	const struct optnode *optnode;
+	char *argument;
+
+
+    if(opt_check(opt, "exclude-dir")) {
+	argument = opt_firstarg(opt, "exclude-dir", &optnode);
+	while(argument) {
+	    if(match_regex(dirname, argument) == 1) {
+		if(!printinfected)
+		    logg("%s: Excluded\n", dirname);
+		return 0;
+	    }
+	    argument = opt_nextarg(&optnode, "exclude-dir");
+	}
+    }
+
+   if(opt_check(opt, "include-dir")) {
+	included = 0;
+	argument = opt_firstarg(opt, "include-dir", &optnode);
+	while(argument && !included) {
+	    if(match_regex(dirname, argument) == 1) {
+		included = 1;
+		break;
+	    }
+	    argument = opt_nextarg(&optnode, "include-dir");
+	}
+
+	if(!included) {
+	    if(!printinfected)
+		logg("%s: Excluded\n", dirname);
+	    return 0;
+	}
+    }
+
+    if(opt_check(opt, "max-dir-recursion"))
+        maxdepth = atoi(opt_arg(opt, "max-dir-recursion"));
+    else
+        maxdepth = 15;
+
+    if(depth > maxdepth)
+	return 0;
+
+    info.dirs++;
+    depth++;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    /* build the full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode) && recursion) {
+			    if(treewalk(fname, engine, user, opt, limits, options, depth) == 1)
+				scanret++;
+			} else {
+			    if(S_ISREG(statbuf.st_mode))
+				scanret += scanfile(fname, engine, user, opt, limits, options);
+			}
+		    }
+		    free(fname);
+		}
+
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    if(scanret)
+	return 1;
+    else
+	return 0;
+
+}
+
+#ifdef C_WINDOWS
+int clamav_rmdirs(const char *dir)
+{
+    return cli_rmdirs(dir);
+}
+#else
+int clamav_rmdirs(const char *dir)
+{
+#ifndef C_CYGWIN
+	struct passwd *user;
+#endif
+	pid_t pid;
+	int status;
+
+
+    switch(pid = fork()) {
+	case -1:
+	    return -1;
+	case 0:
+#ifndef C_CYGWIN
+	    if(!geteuid()) { 
+		if((user = getpwnam(CLAMAVUSER)) == NULL)
+		    return -3;
+
+#ifdef HAVE_SETGROUPS
+		if(setgroups(1, &user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgroups() failed.\n");
+		    return -3;
+		}
+#endif
+
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid);
+		    return -3;
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid);
+		    return -3;
+		}
+	    }
+#endif
+	    cli_rmdirs(dir);
+	    exit(0);
+	    break;
+	default:
+	    waitpid(pid, &status, 0);
+	    if(WIFEXITED(status))
+		return 0;
+	    else
+		return -2;
+    }
+}
+#endif
+
+int fixperms(const char *dirname)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+	int scanret = 0;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    /* build full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) {
+			    chmod(fname, 0700);
+			    fixperms(fname);
+			} else if(S_ISREG(statbuf.st_mode))
+			    chmod(fname, 0700);
+		    }
+
+		    free(fname);
+		}
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    if(scanret)
+	return 1;
+    else
+	return 0;
+
+}
+
+int du(const char *dirname, struct s_du *n)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    n->files++;
+
+		    /* build the full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) {
+			    du(fname, n);
+			} else {
+			    n->space += statbuf.st_size / 1024;
+			}
+		    }
+
+		    free(fname);
+		}
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    return 0;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.ce
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.ce?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.ce (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/clamscan_treewalk.ce Wed Jan 30 15:17:10 2008
@@ -0,0 +1,295 @@
+/*
+ *  Copyright (C) 2002 - 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef	HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/stat.h>
+#include <sys/types.h>
+#ifndef C_WINDOWS
+#include <sys/wait.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+#ifndef C_WINDOWS
+#include <dirent.h>
+#endif
+#include <errno.h>
+
+#include "global.h"
+#include "manager.h"
+#include "others.h"
+#include "treewalk.h"
+
+#include "shared/options.h"
+#include "shared/output.h"
+#include "shared/misc.h"
+
+#include "libclamav/clamav.h"
+#include "libclamav/others.h"
+
+int treewalk(const char *dirname, struct cl_engine *engine, const struct passwd *user, const struct optstruct *opt, const struct cl_limits *limits, unsigned int options, unsigned int depth)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+	int scanret = 0, included;
+	unsigned int maxdepth;
+	const struct optnode *optnode;
+	char *argument;
+
+
+    if(opt_check(opt, "exclude-dir")) {
+	argument = opt_firstarg(opt, "exclude-dir", &optnode);
+	while(argument) {
+	    if(match_regex(dirname, argument) == 1) {
+		if(!printinfected)
+		    logg("%s: Excluded\n", dirname);
+		return 0;
+	    }
+	    argument = opt_nextarg(&optnode, "exclude-dir");
+	}
+    }
+
+   if(opt_check(opt, "include-dir")) {
+	included = 0;
+	argument = opt_firstarg(opt, "include-dir", &optnode);
+	while(argument && !included) {
+	    if(match_regex(dirname, argument) == 1) {
+		included = 1;
+		break;
+	    }
+	    argument = opt_nextarg(&optnode, "include-dir");
+	}
+
+	if(!included) {
+	    if(!printinfected)
+		logg("%s: Excluded\n", dirname);
+	    return 0;
+	}
+    }
+
+    if(opt_check(opt, "max-dir-recursion"))
+        maxdepth = atoi(opt_arg(opt, "max-dir-recursion"));
+    else
+        maxdepth = 15;
+
+    if(depth > maxdepth)
+	return 0;
+
+    info.dirs++;
+    depth++;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    /* build the full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode) && recursion) {
+			    if(treewalk(fname, engine, user, opt, limits, options, depth) == 1)
+				scanret++;
+			} else {
+			    if(S_ISREG(statbuf.st_mode))
+				scanret += scanfile(fname, engine, user, opt, limits, options);
+			}
+		    }
+		    free(fname);
+		}
+
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    if(scanret)
+	return 1;
+    else
+	return 0;
+
+}
+
+#ifdef C_WINDOWS
+int clamav_rmdirs(const char *dir)
+{
+    return cli_rmdirs(dir);
+}
+#else
+int clamav_rmdirs(const char *dir)
+{
+#ifndef C_CYGWIN
+	struct passwd *user;
+#endif
+	pid_t pid;
+	int status;
+
+
+    switch(pid = fork()) {
+	case -1:
+	    return -1;
+	case 0:
+#ifndef C_CYGWIN
+	    if(!geteuid()) { 
+		if((user = getpwnam(CLAMAVUSER)) == NULL)
+		    return -3;
+
+#ifdef HAVE_SETGROUPS
+		if(setgroups(1, &user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgroups() failed.\n");
+		    return -3;
+		}
+#endif
+
+		if(setgid(user->pw_gid)) {
+		    fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid);
+		    return -3;
+		}
+
+		if(setuid(user->pw_uid)) {
+		    fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid);
+		    return -3;
+		}
+	    }
+#endif
+	    cli_rmdirs(dir);
+	    exit(0);
+	    break;
+	default:
+	    waitpid(pid, &status, 0);
+	    if(WIFEXITED(status))
+		return 0;
+	    else
+		return -2;
+    }
+}
+#endif
+
+int fixperms(const char *dirname)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+	int scanret = 0;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    /* build full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) {
+			    chmod(fname, 0700);
+			    fixperms(fname);
+			} else if(S_ISREG(statbuf.st_mode))
+			    chmod(fname, 0700);
+		    }
+
+		    free(fname);
+		}
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    if(scanret)
+	return 1;
+    else
+	return 0;
+
+}
+
+int du(const char *dirname, struct s_du *n)
+{
+	DIR *dd;
+	struct dirent *dent;
+	struct stat statbuf;
+	char *fname;
+
+    if((dd = opendir(dirname)) != NULL) {
+	while((dent = readdir(dd))) {
+#if !defined(C_INTERIX) && !defined(C_WINDOWS) && !defined(C_CYGWIN)
+	    if(dent->d_ino)
+#endif
+	    {
+		if(strcmp(dent->d_name, ".") && strcmp(dent->d_name, "..")) {
+		    n->files++;
+
+		    /* build the full name */
+		    fname = malloc(strlen(dirname) + strlen(dent->d_name) + 2);
+		    sprintf(fname, "%s/%s", dirname, dent->d_name);
+
+		    /* stat the file */
+		    if(lstat(fname, &statbuf) != -1) {
+			if(S_ISDIR(statbuf.st_mode) && !S_ISLNK(statbuf.st_mode)) {
+			    du(fname, n);
+			} else {
+			    n->space += statbuf.st_size / 1024;
+			}
+		    }
+
+		    free(fname);
+		}
+	    }
+	}
+    } else {
+	if(!printinfected)
+	    logg("%s: Can't open directory.\n", dirname);
+	return 53;
+    }
+
+    closedir(dd);
+
+    return 0;
+}

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cltypes.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cltypes.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cltypes.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cltypes.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,66 @@
+/*
+ *  Copyright (C) 2004 - 2005 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  Based on zzip-stdint.h
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CLTYPES_H
+#define __CLTYPES_H
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#elif defined HAVE_SYS_INT_TYPES_H /*solaris*/
+#include <sys/int_types.h>
+#elif defined HAVE_INTTYPES_H /*freebsd*/
+#include <inttypes.h>
+#else
+    typedef unsigned char uint8_t;      typedef signed char int8_t;
+
+# if SIZEOF_INT == 2
+    typedef unsigned int uint16_t;      typedef signed int int16_t;
+# elif SIZEOF_SHORT == 2
+    typedef unsigned short uint16_t;    typedef signed short int16_t;
+# else
+#   error unable to typedef int16_t from either int or short
+    typedef unsigned short uint16_t;    typedef signed short int16_t;
+# endif
+
+# if SIZEOF_INT == 4
+    typedef unsigned int uint32_t;      typedef signed int int32_t;
+# elif SIZEOF_LONG == 4
+    typedef unsigned long uint32_t;     typedef signed long int32_t;
+# else
+#   error unable to typedef int32_t from either int or long
+    typedef unsigned long uint32_t;     typedef signed long int32_t;
+# endif
+
+# if SIZEOF_LONG == 8
+    typedef unsigned long uint64_t;      typedef signed long int64_t;
+# elif SIZEOF_LONG_LONG == 8
+    typedef unsigned long long uint64_t;     typedef signed long long int64_t;
+# else
+#   error unable to typedef int64_t from either long or long long
+    typedef unsigned long long uint64_t;     typedef signed long long int64_t;
+# endif
+
+#endif
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cname.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cname.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cname.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cname.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,139 @@
+/*-
+ * This code is derived from OpenBSD's libc/regex, original license follows:
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
+ * Copyright (c) 1992, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Henry Spencer.
+ *
+ * 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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *	@(#)cname.h	8.3 (Berkeley) 3/20/94
+ */
+
+/* character-name table */
+static struct cname {
+	const char *name;
+	char code;
+} cnames[] = {
+	{ "NUL",			'\0' },
+	{ "SOH",			'\001' },
+	{ "STX",			'\002' },
+	{ "ETX",			'\003' },
+	{ "EOT",			'\004' },
+	{ "ENQ",			'\005' },
+	{ "ACK",			'\006' },
+	{ "BEL",			'\007' },
+	{ "alert",			'\007' },
+	{ "BS",				'\010' },
+	{ "backspace",			'\b' },
+	{ "HT",				'\011' },
+	{ "tab",			'\t' },
+	{ "LF",				'\012' },
+	{ "newline",			'\n' },
+	{ "VT",				'\013' },
+	{ "vertical-tab",		'\v' },
+	{ "FF",				'\014' },
+	{ "form-feed",			'\f' },
+	{ "CR",				'\015' },
+	{ "carriage-return",		'\r' },
+	{ "SO",				'\016' },
+	{ "SI",				'\017' },
+	{ "DLE",			'\020' },
+	{ "DC1",			'\021' },
+	{ "DC2",			'\022' },
+	{ "DC3",			'\023' },
+	{ "DC4",			'\024' },
+	{ "NAK",			'\025' },
+	{ "SYN",			'\026' },
+	{ "ETB",			'\027' },
+	{ "CAN",			'\030' },
+	{ "EM",				'\031' },
+	{ "SUB",			'\032' },
+	{ "ESC",			'\033' },
+	{ "IS4",			'\034' },
+	{ "FS",				'\034' },
+	{ "IS3",			'\035' },
+	{ "GS",				'\035' },
+	{ "IS2",			'\036' },
+	{ "RS",				'\036' },
+	{ "IS1",			'\037' },
+	{ "US",				'\037' },
+	{ "space",			' ' },
+	{ "exclamation-mark",		'!' },
+	{ "quotation-mark",		'"' },
+	{ "number-sign",		'#' },
+	{ "dollar-sign",		'$' },
+	{ "percent-sign",		'%' },
+	{ "ampersand",			'&' },
+	{ "apostrophe",			'\'' },
+	{ "left-parenthesis",		'(' },
+	{ "right-parenthesis",		')' },
+	{ "asterisk",			'*' },
+	{ "plus-sign",			'+' },
+	{ "comma",			',' },
+	{ "hyphen",			'-' },
+	{ "hyphen-minus",		'-' },
+	{ "period",			'.' },
+	{ "full-stop",			'.' },
+	{ "slash",			'/' },
+	{ "solidus",			'/' },
+	{ "zero",			'0' },
+	{ "one",			'1' },
+	{ "two",			'2' },
+	{ "three",			'3' },
+	{ "four",			'4' },
+	{ "five",			'5' },
+	{ "six",			'6' },
+	{ "seven",			'7' },
+	{ "eight",			'8' },
+	{ "nine",			'9' },
+	{ "colon",			':' },
+	{ "semicolon",			';' },
+	{ "less-than-sign",		'<' },
+	{ "equals-sign",		'=' },
+	{ "greater-than-sign",		'>' },
+	{ "question-mark",		'?' },
+	{ "commercial-at",		'@' },
+	{ "left-square-bracket",	'[' },
+	{ "backslash",			'\\' },
+	{ "reverse-solidus",		'\\' },
+	{ "right-square-bracket",	']' },
+	{ "circumflex",			'^' },
+	{ "circumflex-accent",		'^' },
+	{ "underscore",			'_' },
+	{ "low-line",			'_' },
+	{ "grave-accent",		'`' },
+	{ "left-brace",			'{' },
+	{ "left-curly-bracket",		'{' },
+	{ "vertical-line",		'|' },
+	{ "right-brace",		'}' },
+	{ "right-curly-bracket",	'}' },
+	{ "tilde",			'~' },
+	{ "DEL",			'\177' },
+	{ NULL,				0 }
+};

Added: test-suite/trunk/MultiSource/Applications/ClamAV/cvd.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/cvd.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/cvd.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/cvd.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,28 @@
+/*
+ *  Copyright (C) 2003 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __CVD_H
+#define __CVD_H
+
+#include <stdio.h>
+#include "clamav.h"
+
+int cli_cvdload(FILE *fs, struct cl_engine **engine, unsigned int *signo, short warn, unsigned int options);
+int cli_untgz(int fd, const char *destdir);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/dbdir/daily.cvd
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/dbdir/daily.cvd?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/dbdir/daily.cvd

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/dconf.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/dconf.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/dconf.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/dconf.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,96 @@
+/*
+ *  Copyright (C) 2007 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __DCONF_H
+#define __DCONF_H
+
+#include <stdio.h>
+
+#include "clamav.h"
+#include "cltypes.h"
+
+struct cli_dconf {
+    uint32_t pe;
+    uint32_t elf;
+    uint32_t archive;
+    uint32_t doc;
+    uint32_t mail;
+    uint32_t other;
+    uint32_t phishing;
+};
+
+/* PE flags */
+#define PE_CONF_PARITE	    0x1
+#define PE_CONF_KRIZ	    0x2
+#define PE_CONF_MAGISTR	    0x4
+#define PE_CONF_POLIPOS	    0x8
+#define PE_CONF_MD5SECT	    0x10
+#define PE_CONF_UPX	    0x20
+#define PE_CONF_FSG	    0x40
+/*#define PE_CONF_REUSEME	    0x80 */
+#define PE_CONF_PETITE	    0x100
+#define PE_CONF_PESPIN	    0x200
+#define PE_CONF_YC	    0x400
+#define PE_CONF_WWPACK	    0x800
+#define PE_CONF_NSPACK	    0x1000
+#define PE_CONF_MEW	    0x2000
+#define PE_CONF_UPACK	    0x4000
+#define PE_CONF_ASPACK	    0x8000
+
+/* Archive flags */
+#define ARCH_CONF_RAR	    0x1
+#define ARCH_CONF_ZIP	    0x2
+#define ARCH_CONF_GZ	    0x4
+#define ARCH_CONF_BZ	    0x8
+#define ARCH_CONF_SZDD	    0x10
+#define ARCH_CONF_CAB	    0x20
+#define ARCH_CONF_CHM	    0x40
+#define ARCH_CONF_OLE2	    0x80
+#define ARCH_CONF_TAR	    0x100
+#define ARCH_CONF_BINHEX    0x200
+#define ARCH_CONF_SIS	    0x400
+#define ARCH_CONF_NSIS	    0x800
+#define ARCH_CONF_ARJ       0x1000
+#define ARCH_CONF_AUTOIT    0x2000
+
+/* Document flags */
+#define DOC_CONF_HTML	    0x1
+#define DOC_CONF_RTF	    0x2
+#define DOC_CONF_PDF	    0x4
+
+/* Mail flags */
+#define MAIL_CONF_MBOX	    0x1
+#define MAIL_CONF_TNEF	    0x2
+#define MAIL_CONF_PST	    0x4
+
+/* Other flags */
+#define OTHER_CONF_UUENC    0x1
+#define OTHER_CONF_SCRENC   0x2
+#define OTHER_CONF_RIFF	    0x4
+#define OTHER_CONF_JPEG	    0x8
+#define OTHER_CONF_CRYPTFF  0x10
+
+/* Phishing flags */
+#define PHISHING_CONF_ENGINE   0x1
+#define PHISHING_CONF_ENTCONV  0x2
+
+struct cli_dconf *cli_dconf_init(void);
+void cli_dconf_print(struct cli_dconf *dconf);
+int cli_dconf_load(FILE *fd, struct cl_engine **engine, unsigned int options);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/dsig.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/dsig.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/dsig.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/dsig.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,33 @@
+/*
+ *  Copyright (C) 2003 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __DSIG_H
+#define __DSIG_H
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#ifdef HAVE_GMP
+#include <gmp.h>
+
+int cli_versig(const char *md5, const char *dsig);
+unsigned char *cli_decodesig(const char *sig, unsigned int plen, mpz_t e, mpz_t n);
+
+#endif /* HAVE_GMP */
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/elf.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/elf.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/elf.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/elf.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,75 @@
+/*
+ *  Copyright (C) 2005 - 2006 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  Header structures based on ELF: Executable and Linkable Format, Portable
+ *  Formats Specification, Version 1.1
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __ELF_H
+#define __ELF_H
+
+#include "cltypes.h"
+#include "clamav.h"
+#include "execs.h"
+#include "others.h"
+
+struct elf_file_hdr32 {
+    unsigned char e_ident[16];
+    uint16_t e_type;
+    uint16_t e_machine;
+    uint32_t e_version;
+    uint32_t e_entry;
+    uint32_t e_phoff;
+    uint32_t e_shoff;
+    uint32_t e_flags;
+    uint16_t e_ehsize;
+    uint16_t e_phentsize;
+    uint16_t e_phnum;
+    uint16_t e_shentsize;
+    uint16_t e_shnum;
+    uint16_t e_shstrndx;
+};
+
+struct elf_program_hdr32 {
+    uint32_t p_type;
+    uint32_t p_offset;
+    uint32_t p_vaddr;
+    uint32_t p_paddr;
+    uint32_t p_filesz;
+    uint32_t p_memsz;
+    uint32_t p_flags;
+    uint32_t p_align;
+};
+
+struct elf_section_hdr32 {
+    uint32_t sh_name;
+    uint32_t sh_type;
+    uint32_t sh_flags;
+    uint32_t sh_addr;
+    uint32_t sh_offset;
+    uint32_t sh_size;
+    uint32_t sh_link;
+    uint32_t sh_info;
+    uint32_t sh_addralign;
+    uint32_t sh_entsize;
+};
+
+int cli_scanelf(int desc, cli_ctx *ctx);
+
+int cli_elfheader(int desc, struct cli_exe_info *elfinfo);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/encoding_aliases.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/encoding_aliases.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/encoding_aliases.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/encoding_aliases.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,90 @@
+/*
+ *  HTML Entity & Encoding normalization.
+ *
+ *  Copyright (C) 2006 Török Edvin <edwin at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as 
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+#ifndef _ENCODING_ALIASES_H
+#define _ENCODING_ALIASES_H
+#include "clamav-config.h"
+
+
+#include <stdio.h>
+#include "hashtab.h"
+
+/* don't change the order of keys, instead use generate_encoding_aliases in contrib/entitynorm.
+ * You can safely change the values (on the right) */
+static struct element aliases_htable_elements[] = {
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UTF8", 8},
+	{(const unsigned char*)"ISO-10646/UTF-8", 8},
+	{NULL, 0},
+	{(const unsigned char*)"UTF-16", 1},
+	{(const unsigned char*)"UTF16LE", 7},
+	{NULL, 0},
+	{(const unsigned char*)"UTF-32", 0},
+	{(const unsigned char*)"10646-1:1993/UCS4", 0},
+	{NULL, 0},
+	{(const unsigned char*)"UTF-16LE", 7},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UCS-4LE", 2},
+	{(const unsigned char*)"UCS-4", 0},
+	{(const unsigned char*)"UCS2", 1},
+	{(const unsigned char*)"UTF-16BE", 6},
+	{NULL, 0},
+	{(const unsigned char*)"UTF-32LE", 2},
+	{NULL, 0},
+	{(const unsigned char*)"UTF16BE", 6},
+	{(const unsigned char*)"UTF32", 0},
+	{(const unsigned char*)"UTF-32BE", 3},
+	{(const unsigned char*)"UTF32LE", 2},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UCS-4BE", 3},
+	{(const unsigned char*)"ISO-10646/UCS2", 1},
+	{NULL, 0},
+	{(const unsigned char*)"10646-1:1993", 0},
+	{(const unsigned char*)"ISO-10646/UCS4", 0},
+	{(const unsigned char*)"ISO-10646", 0},
+	{(const unsigned char*)"UTF-8", 8},
+	{(const unsigned char*)"UTF32BE", 3},
+	{(const unsigned char*)"ISO-10646/UTF8", 8},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UCS4", 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+};
+const struct hashtable aliases_htable = {
+	aliases_htable_elements, 53, 25, 42
+};
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/engine.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/engine.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/engine.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/engine.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,1020 @@
+/*-
+ * This code is derived from OpenBSD's libc/regex, original license follows:
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
+ * Copyright (c) 1992, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Henry Spencer.
+ *
+ * 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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *	@(#)engine.c	8.5 (Berkeley) 3/20/94
+ */
+
+/*
+ * The matching engine and friends.  This file is #included by regexec.c
+ * after suitable #defines of a variety of macros used herein, so that
+ * different state representations can be used without duplicating masses
+ * of code.
+ */
+
+#ifdef SNAMES
+#define	matcher	smatcher
+#define	fast	sfast
+#define	slow	sslow
+#define	dissect	sdissect
+#define	backref	sbackref
+#define	step	sstep
+#define	print	sprint
+#define	at	sat
+#define	match	smat
+#define	nope	snope
+#endif
+#ifdef LNAMES
+#define	matcher	lmatcher
+#define	fast	lfast
+#define	slow	lslow
+#define	dissect	ldissect
+#define	backref	lbackref
+#define	step	lstep
+#define	print	lprint
+#define	at	lat
+#define	match	lmat
+#define	nope	lnope
+#endif
+
+/* another structure passed up and down to avoid zillions of parameters */
+struct match {
+	struct re_guts *g;
+	int eflags;
+	regmatch_t *pmatch;	/* [nsub+1] (0 element unused) */
+	char *offp;		/* offsets work from here */
+	char *beginp;		/* start of string -- virtual NUL precedes */
+	char *endp;		/* end of string -- virtual NUL here */
+	char *coldp;		/* can be no match starting before here */
+	char **lastpos;		/* [nplus+1] */
+	STATEVARS;
+	states st;		/* current states */
+	states fresh;		/* states for a fresh start */
+	states tmp;		/* temporary */
+	states empty;		/* empty set of states */
+};
+
+static int matcher(struct re_guts *, char *, size_t, regmatch_t[], int);
+static char *dissect(struct match *, char *, char *, sopno, sopno);
+static char *backref(struct match *, char *, char *, sopno, sopno, sopno, int);
+static char *fast(struct match *, char *, char *, sopno, sopno);
+static char *slow(struct match *, char *, char *, sopno, sopno);
+static states step(struct re_guts *, sopno, sopno, states, int, states);
+#define MAX_RECURSION	100
+#define	BOL	(OUT+1)
+#define	EOL	(BOL+1)
+#define	BOLEOL	(BOL+2)
+#define	NOTHING	(BOL+3)
+#define	BOW	(BOL+4)
+#define	EOW	(BOL+5)
+#define	CODEMAX	(BOL+5)		/* highest code used */
+#define	NONCHAR(c)	((c) > CHAR_MAX)
+#define	NNONCHAR	(CODEMAX-CHAR_MAX)
+#ifdef REDEBUG
+static void print(struct match *, char *, states, int, FILE *);
+#endif
+#ifdef REDEBUG
+static void at(struct match *, char *, char *, char *, sopno, sopno);
+#endif
+#ifdef REDEBUG
+static char *pchar(int);
+#endif
+
+#ifdef REDEBUG
+#define	SP(t, s, c)	print(m, t, s, c, stdout)
+#define	AT(t, p1, p2, s1, s2)	at(m, t, p1, p2, s1, s2)
+#define	NOTE(str)	{ if (m->eflags&REG_TRACE) (void)printf("=%s\n", (str)); }
+static int nope = 0;
+#else
+#define	SP(t, s, c)	/* nothing */
+#define	AT(t, p1, p2, s1, s2)	/* nothing */
+#define	NOTE(s)	/* nothing */
+#endif
+
+/*
+ - matcher - the actual matching engine
+ */
+static int			/* 0 success, REG_NOMATCH failure */
+matcher(struct re_guts *g, char *string, size_t nmatch, regmatch_t pmatch[],
+    int eflags)
+{
+	char *endp;
+	size_t i;
+	struct match mv;
+	struct match *m = &mv;
+	char *dp;
+	const sopno gf = g->firststate+1;	/* +1 for OEND */
+	const sopno gl = g->laststate;
+	char *start;
+	char *stop;
+
+	/* simplify the situation where possible */
+	if (g->cflags&REG_NOSUB)
+		nmatch = 0;
+	if (eflags&REG_STARTEND) {
+		start = string + pmatch[0].rm_so;
+		stop = string + pmatch[0].rm_eo;
+	} else {
+		start = string;
+		stop = start + strlen(start);
+	}
+	if (stop < start)
+		return(REG_INVARG);
+
+	/* prescreening; this does wonders for this rather slow code */
+	if (g->must != NULL) {
+		for (dp = start; dp < stop; dp++)
+			if (*dp == g->must[0] && stop - dp >= g->mlen &&
+				memcmp(dp, g->must, (size_t)g->mlen) == 0)
+				break;
+		if (dp == stop)		/* we didn't find g->must */
+			return(REG_NOMATCH);
+	}
+
+	/* match struct setup */
+	m->g = g;
+	m->eflags = eflags;
+	m->pmatch = NULL;
+	m->lastpos = NULL;
+	m->offp = string;
+	m->beginp = start;
+	m->endp = stop;
+	STATESETUP(m, 4);
+	SETUP(m->st);
+	SETUP(m->fresh);
+	SETUP(m->tmp);
+	SETUP(m->empty);
+	CLEAR(m->empty);
+
+	/* this loop does only one repetition except for backrefs */
+	for (;;) {
+		endp = fast(m, start, stop, gf, gl);
+		if (endp == NULL) {		/* a miss */
+			free(m->pmatch);
+			free(m->lastpos);
+			STATETEARDOWN(m);
+			return(REG_NOMATCH);
+		}
+		if (nmatch == 0 && !g->backrefs)
+			break;		/* no further info needed */
+
+		/* where? */
+		assert(m->coldp != NULL);
+		for (;;) {
+			NOTE("finding start");
+			endp = slow(m, m->coldp, stop, gf, gl);
+			if (endp != NULL)
+				break;
+			assert(m->coldp < m->endp);
+			m->coldp++;
+		}
+		if (nmatch == 1 && !g->backrefs)
+			break;		/* no further info needed */
+
+		/* oh my, he wants the subexpressions... */
+		if (m->pmatch == NULL)
+			m->pmatch = (regmatch_t *)cli_malloc((m->g->nsub + 1) *
+							sizeof(regmatch_t));
+		if (m->pmatch == NULL) {
+			STATETEARDOWN(m);
+			return(REG_ESPACE);
+		}
+		for (i = 1; i <= m->g->nsub; i++)
+			m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;
+		if (!g->backrefs && !(m->eflags&REG_BACKR)) {
+			NOTE("dissecting");
+			dp = dissect(m, m->coldp, endp, gf, gl);
+		} else {
+			if (g->nplus > 0 && m->lastpos == NULL)
+				m->lastpos = (char **)cli_malloc((g->nplus+1) *
+							sizeof(char *));
+			if (g->nplus > 0 && m->lastpos == NULL) {
+				free(m->pmatch);
+				STATETEARDOWN(m);
+				return(REG_ESPACE);
+			}
+			NOTE("backref dissect");
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
+		}
+		if (dp != NULL)
+			break;
+
+		/* uh-oh... we couldn't find a subexpression-level match */
+		assert(g->backrefs);	/* must be back references doing it */
+		assert(g->nplus == 0 || m->lastpos != NULL);
+		for (;;) {
+			if (dp != NULL || endp <= m->coldp)
+				break;		/* defeat */
+			NOTE("backoff");
+			endp = slow(m, m->coldp, endp-1, gf, gl);
+			if (endp == NULL)
+				break;		/* defeat */
+			/* try it on a shorter possibility */
+#ifndef NDEBUG
+			for (i = 1; i <= m->g->nsub; i++) {
+				assert(m->pmatch[i].rm_so == -1);
+				assert(m->pmatch[i].rm_eo == -1);
+			}
+#endif
+			NOTE("backoff dissect");
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
+		}
+		assert(dp == NULL || dp == endp);
+		if (dp != NULL)		/* found a shorter one */
+			break;
+
+		/* despite initial appearances, there is no match here */
+		NOTE("false alarm");
+		if (m->coldp == stop)
+			break;
+		start = m->coldp + 1;	/* recycle starting later */
+	}
+
+	/* fill in the details if requested */
+	if (nmatch > 0) {
+		pmatch[0].rm_so = m->coldp - m->offp;
+		pmatch[0].rm_eo = endp - m->offp;
+	}
+	if (nmatch > 1) {
+		assert(m->pmatch != NULL);
+		for (i = 1; i < nmatch; i++)
+			if (i <= m->g->nsub)
+				pmatch[i] = m->pmatch[i];
+			else {
+				pmatch[i].rm_so = -1;
+				pmatch[i].rm_eo = -1;
+			}
+	}
+
+	if (m->pmatch != NULL)
+		free((char *)m->pmatch);
+	if (m->lastpos != NULL)
+		free((char *)m->lastpos);
+	STATETEARDOWN(m);
+	return(0);
+}
+
+/*
+ - dissect - figure out what matched what, no back references
+ */
+static char *			/* == stop (success) always */
+dissect(struct match *m, char *start, char *stop, sopno startst, sopno stopst)
+{
+	int i;
+	sopno ss;	/* start sop of current subRE */
+	sopno es;	/* end sop of current subRE */
+	char *sp;	/* start of string matched by it */
+	char *stp;	/* string matched by it cannot pass here */
+	char *rest;	/* start of rest of string */
+	char *tail;	/* string unmatched by rest of RE */
+	sopno ssub;	/* start sop of subsubRE */
+	sopno esub;	/* end sop of subsubRE */
+	char *ssp;	/* start of string matched by subsubRE */
+	char *sep;	/* end of string matched by subsubRE */
+	char *oldssp;	/* previous ssp */
+	char *dp;
+
+	AT("diss", start, stop, startst, stopst);
+	sp = start;
+	for (ss = startst; ss < stopst; ss = es) {
+		/* identify end of subRE */
+		es = ss;
+		switch (OP(m->g->strip[es])) {
+		case OPLUS_:
+		case OQUEST_:
+			es += OPND(m->g->strip[es]);
+			break;
+		case OCH_:
+			while (OP(m->g->strip[es]) != O_CH)
+				es += OPND(m->g->strip[es]);
+			break;
+		}
+		es++;
+
+		/* figure out what it matched */
+		switch (OP(m->g->strip[ss])) {
+		case OEND:
+			assert(nope);
+			break;
+		case OCHAR:
+			sp++;
+			break;
+		case OBOL:
+		case OEOL:
+		case OBOW:
+		case OEOW:
+			break;
+		case OANY:
+		case OANYOF:
+			sp++;
+			break;
+		case OBACK_:
+		case O_BACK:
+			assert(nope);
+			break;
+		/* cases where length of match is hard to find */
+		case OQUEST_:
+			stp = stop;
+			for (;;) {
+				/* how long could this one be? */
+				rest = slow(m, sp, stp, ss, es);
+				assert(rest != NULL);	/* it did match */
+				/* could the rest match the rest? */
+				tail = slow(m, rest, stop, es, stopst);
+				if (tail == stop)
+					break;		/* yes! */
+				/* no -- try a shorter match for this one */
+				stp = rest - 1;
+				assert(stp >= sp);	/* it did work */
+			}
+			ssub = ss + 1;
+			esub = es - 1;
+			/* did innards match? */
+			if (slow(m, sp, rest, ssub, esub) != NULL) {
+				dp = dissect(m, sp, rest, ssub, esub);
+				assert(dp == rest);
+			} else		/* no */
+				assert(sp == rest);
+			sp = rest;
+			break;
+		case OPLUS_:
+			stp = stop;
+			for (;;) {
+				/* how long could this one be? */
+				rest = slow(m, sp, stp, ss, es);
+				assert(rest != NULL);	/* it did match */
+				/* could the rest match the rest? */
+				tail = slow(m, rest, stop, es, stopst);
+				if (tail == stop)
+					break;		/* yes! */
+				/* no -- try a shorter match for this one */
+				stp = rest - 1;
+				assert(stp >= sp);	/* it did work */
+			}
+			ssub = ss + 1;
+			esub = es - 1;
+			ssp = sp;
+			oldssp = ssp;
+			for (;;) {	/* find last match of innards */
+				sep = slow(m, ssp, rest, ssub, esub);
+				if (sep == NULL || sep == ssp)
+					break;	/* failed or matched null */
+				oldssp = ssp;	/* on to next try */
+				ssp = sep;
+			}
+			if (sep == NULL) {
+				/* last successful match */
+				sep = ssp;
+				ssp = oldssp;
+			}
+			assert(sep == rest);	/* must exhaust substring */
+			assert(slow(m, ssp, sep, ssub, esub) == rest);
+			dp = dissect(m, ssp, sep, ssub, esub);
+			assert(dp == sep);
+			sp = rest;
+			break;
+		case OCH_:
+			stp = stop;
+			for (;;) {
+				/* how long could this one be? */
+				rest = slow(m, sp, stp, ss, es);
+				assert(rest != NULL);	/* it did match */
+				/* could the rest match the rest? */
+				tail = slow(m, rest, stop, es, stopst);
+				if (tail == stop)
+					break;		/* yes! */
+				/* no -- try a shorter match for this one */
+				stp = rest - 1;
+				assert(stp >= sp);	/* it did work */
+			}
+			ssub = ss + 1;
+			esub = ss + OPND(m->g->strip[ss]) - 1;
+			assert(OP(m->g->strip[esub]) == OOR1);
+			for (;;) {	/* find first matching branch */
+				if (slow(m, sp, rest, ssub, esub) == rest)
+					break;	/* it matched all of it */
+				/* that one missed, try next one */
+				assert(OP(m->g->strip[esub]) == OOR1);
+				esub++;
+				assert(OP(m->g->strip[esub]) == OOR2);
+				ssub = esub + 1;
+				esub += OPND(m->g->strip[esub]);
+				if (OP(m->g->strip[esub]) == OOR2)
+					esub--;
+				else
+					assert(OP(m->g->strip[esub]) == O_CH);
+			}
+			dp = dissect(m, sp, rest, ssub, esub);
+			assert(dp == rest);
+			sp = rest;
+			break;
+		case O_PLUS:
+		case O_QUEST:
+		case OOR1:
+		case OOR2:
+		case O_CH:
+			assert(nope);
+			break;
+		case OLPAREN:
+			i = OPND(m->g->strip[ss]);
+			assert(0 < i && i <= m->g->nsub);
+			m->pmatch[i].rm_so = sp - m->offp;
+			break;
+		case ORPAREN:
+			i = OPND(m->g->strip[ss]);
+			assert(0 < i && i <= m->g->nsub);
+			m->pmatch[i].rm_eo = sp - m->offp;
+			break;
+		default:		/* uh oh */
+			assert(nope);
+			break;
+		}
+	}
+
+	assert(sp == stop);
+	return(sp);
+}
+
+/*
+ - backref - figure out what matched what, figuring in back references
+ */
+static char *			/* == stop (success) or NULL (failure) */
+backref(struct match *m, char *start, char *stop, sopno startst, sopno stopst,
+    sopno lev, int rec)			/* PLUS nesting level */
+{
+	int i;
+	sopno ss;	/* start sop of current subRE */
+	char *sp;	/* start of string matched by it */
+	sopno ssub;	/* start sop of subsubRE */
+	sopno esub;	/* end sop of subsubRE */
+	char *ssp;	/* start of string matched by subsubRE */
+	char *dp;
+	size_t len;
+	int hard;
+	sop s;
+	regoff_t offsave;
+	cset *cs;
+
+	AT("back", start, stop, startst, stopst);
+	sp = start;
+
+	/* get as far as we can with easy stuff */
+	hard = 0;
+	for (ss = startst; !hard && ss < stopst; ss++)
+		switch (OP(s = m->g->strip[ss])) {
+		case OCHAR:
+			if (sp == stop || *sp++ != (char)OPND(s))
+				return(NULL);
+			break;
+		case OANY:
+			if (sp == stop)
+				return(NULL);
+			sp++;
+			break;
+		case OANYOF:
+			cs = &m->g->sets[OPND(s)];
+			if (sp == stop || !CHIN(cs, *sp++))
+				return(NULL);
+			break;
+		case OBOL:
+			if ( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
+					(sp < m->endp && *(sp-1) == '\n' &&
+						(m->g->cflags&REG_NEWLINE)) )
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case OEOL:
+			if ( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
+					(sp < m->endp && *sp == '\n' &&
+						(m->g->cflags&REG_NEWLINE)) )
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case OBOW:
+			if (( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
+					(sp < m->endp && *(sp-1) == '\n' &&
+						(m->g->cflags&REG_NEWLINE)) ||
+					(sp > m->beginp &&
+							!ISWORD(*(sp-1))) ) &&
+					(sp < m->endp && ISWORD(*sp)) )
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case OEOW:
+			if (( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
+					(sp < m->endp && *sp == '\n' &&
+						(m->g->cflags&REG_NEWLINE)) ||
+					(sp < m->endp && !ISWORD(*sp)) ) &&
+					(sp > m->beginp && ISWORD(*(sp-1))) )
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case O_QUEST:
+			break;
+		case OOR1:	/* matches null but needs to skip */
+			ss++;
+			s = m->g->strip[ss];
+			do {
+				assert(OP(s) == OOR2);
+				ss += OPND(s);
+			} while (OP(s = m->g->strip[ss]) != O_CH);
+			/* note that the ss++ gets us past the O_CH */
+			break;
+		default:	/* have to make a choice */
+			hard = 1;
+			break;
+		}
+	if (!hard) {		/* that was it! */
+		if (sp != stop)
+			return(NULL);
+		return(sp);
+	}
+	ss--;			/* adjust for the for's final increment */
+
+	/* the hard stuff */
+	AT("hard", sp, stop, ss, stopst);
+	s = m->g->strip[ss];
+	switch (OP(s)) {
+	case OBACK_:		/* the vilest depths */
+		i = OPND(s);
+		assert(0 < i && i <= m->g->nsub);
+		if (m->pmatch[i].rm_eo == -1)
+			return(NULL);
+		assert(m->pmatch[i].rm_so != -1);
+		len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
+		if (len == 0 && rec++ > MAX_RECURSION)
+			return(NULL);
+		assert(stop - m->beginp >= len);
+		if (sp > stop - len)
+			return(NULL);	/* not enough left to match */
+		ssp = m->offp + m->pmatch[i].rm_so;
+		if (memcmp(sp, ssp, len) != 0)
+			return(NULL);
+		while (m->g->strip[ss] != SOP(O_BACK, i))
+			ss++;
+		return(backref(m, sp+len, stop, ss+1, stopst, lev, rec));
+		break;
+	case OQUEST_:		/* to null or not */
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
+		if (dp != NULL)
+			return(dp);	/* not */
+		return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev, rec));
+		break;
+	case OPLUS_:
+		assert(m->lastpos != NULL);
+		assert(lev+1 <= m->g->nplus);
+		m->lastpos[lev+1] = sp;
+		return(backref(m, sp, stop, ss+1, stopst, lev+1, rec));
+		break;
+	case O_PLUS:
+		if (sp == m->lastpos[lev])	/* last pass matched null */
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
+		/* try another pass */
+		m->lastpos[lev] = sp;
+		dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev, rec);
+		if (dp == NULL)
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
+		else
+			return(dp);
+		break;
+	case OCH_:		/* find the right one, if any */
+		ssub = ss + 1;
+		esub = ss + OPND(s) - 1;
+		assert(OP(m->g->strip[esub]) == OOR1);
+		for (;;) {	/* find first matching branch */
+			dp = backref(m, sp, stop, ssub, esub, lev, rec);
+			if (dp != NULL)
+				return(dp);
+			/* that one missed, try next one */
+			if (OP(m->g->strip[esub]) == O_CH)
+				return(NULL);	/* there is none */
+			esub++;
+			assert(OP(m->g->strip[esub]) == OOR2);
+			ssub = esub + 1;
+			esub += OPND(m->g->strip[esub]);
+			if (OP(m->g->strip[esub]) == OOR2)
+				esub--;
+			else
+				assert(OP(m->g->strip[esub]) == O_CH);
+		}
+		break;
+	case OLPAREN:		/* must undo assignment if rest fails */
+		i = OPND(s);
+		assert(0 < i && i <= m->g->nsub);
+		offsave = m->pmatch[i].rm_so;
+		m->pmatch[i].rm_so = sp - m->offp;
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
+		if (dp != NULL)
+			return(dp);
+		m->pmatch[i].rm_so = offsave;
+		return(NULL);
+		break;
+	case ORPAREN:		/* must undo assignment if rest fails */
+		i = OPND(s);
+		assert(0 < i && i <= m->g->nsub);
+		offsave = m->pmatch[i].rm_eo;
+		m->pmatch[i].rm_eo = sp - m->offp;
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
+		if (dp != NULL)
+			return(dp);
+		m->pmatch[i].rm_eo = offsave;
+		return(NULL);
+		break;
+	default:		/* uh oh */
+		assert(nope);
+		break;
+	}
+
+	/* "can't happen" */
+	assert(nope);
+	/* NOTREACHED */
+}
+
+/*
+ - fast - step through the string at top speed
+ */
+static char *			/* where tentative match ended, or NULL */
+fast(struct match *m, char *start, char *stop, sopno startst, sopno stopst)
+{
+	states st = m->st;
+	states fresh = m->fresh;
+	states tmp = m->tmp;
+	char *p = start;
+	int c = (start == m->beginp) ? OUT : *(start-1);
+	int lastc;	/* previous c */
+	int flagch;
+	int i;
+	char *coldp;	/* last p after which no match was underway */
+
+	CLEAR(st);
+	SET1(st, startst);
+	st = step(m->g, startst, stopst, st, NOTHING, st);
+	ASSIGN(fresh, st);
+	SP("start", st, *p);
+	coldp = NULL;
+	for (;;) {
+		/* next character */
+		lastc = c;
+		c = (p == m->endp) ? OUT : *p;
+		if (EQ(st, fresh))
+			coldp = p;
+
+		/* is there an EOL and/or BOL between lastc and c? */
+		flagch = '\0';
+		i = 0;
+		if ( (lastc == '\n' && m->g->cflags&REG_NEWLINE) ||
+				(lastc == OUT && !(m->eflags&REG_NOTBOL)) ) {
+			flagch = BOL;
+			i = m->g->nbol;
+		}
+		if ( (c == '\n' && m->g->cflags&REG_NEWLINE) ||
+				(c == OUT && !(m->eflags&REG_NOTEOL)) ) {
+			flagch = (flagch == BOL) ? BOLEOL : EOL;
+			i += m->g->neol;
+		}
+		if (i != 0) {
+			for (; i > 0; i--)
+				st = step(m->g, startst, stopst, st, flagch, st);
+			SP("boleol", st, c);
+		}
+
+		/* how about a word boundary? */
+		if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
+					(c != OUT && ISWORD(c)) ) {
+			flagch = BOW;
+		}
+		if ( (lastc != OUT && ISWORD(lastc)) &&
+				(flagch == EOL || (c != OUT && !ISWORD(c))) ) {
+			flagch = EOW;
+		}
+		if (flagch == BOW || flagch == EOW) {
+			st = step(m->g, startst, stopst, st, flagch, st);
+			SP("boweow", st, c);
+		}
+
+		/* are we done? */
+		if (ISSET(st, stopst) || p == stop)
+			break;		/* NOTE BREAK OUT */
+
+		/* no, we must deal with this character */
+		ASSIGN(tmp, st);
+		ASSIGN(st, fresh);
+		assert(c != OUT);
+		st = step(m->g, startst, stopst, tmp, c, st);
+		SP("aft", st, c);
+		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
+		p++;
+	}
+
+	assert(coldp != NULL);
+	m->coldp = coldp;
+	if (ISSET(st, stopst))
+		return(p+1);
+	else
+		return(NULL);
+}
+
+/*
+ - slow - step through the string more deliberately
+ */
+static char *			/* where it ended */
+slow(struct match *m, char *start, char *stop, sopno startst, sopno stopst)
+{
+	states st = m->st;
+	states empty = m->empty;
+	states tmp = m->tmp;
+	char *p = start;
+	int c = (start == m->beginp) ? OUT : *(start-1);
+	int lastc;	/* previous c */
+	int flagch;
+	int i;
+	char *matchp;	/* last p at which a match ended */
+
+	AT("slow", start, stop, startst, stopst);
+	CLEAR(st);
+	SET1(st, startst);
+	SP("sstart", st, *p);
+	st = step(m->g, startst, stopst, st, NOTHING, st);
+	matchp = NULL;
+	for (;;) {
+		/* next character */
+		lastc = c;
+		c = (p == m->endp) ? OUT : *p;
+
+		/* is there an EOL and/or BOL between lastc and c? */
+		flagch = '\0';
+		i = 0;
+		if ( (lastc == '\n' && m->g->cflags&REG_NEWLINE) ||
+				(lastc == OUT && !(m->eflags&REG_NOTBOL)) ) {
+			flagch = BOL;
+			i = m->g->nbol;
+		}
+		if ( (c == '\n' && m->g->cflags&REG_NEWLINE) ||
+				(c == OUT && !(m->eflags&REG_NOTEOL)) ) {
+			flagch = (flagch == BOL) ? BOLEOL : EOL;
+			i += m->g->neol;
+		}
+		if (i != 0) {
+			for (; i > 0; i--)
+				st = step(m->g, startst, stopst, st, flagch, st);
+			SP("sboleol", st, c);
+		}
+
+		/* how about a word boundary? */
+		if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
+					(c != OUT && ISWORD(c)) ) {
+			flagch = BOW;
+		}
+		if ( (lastc != OUT && ISWORD(lastc)) &&
+				(flagch == EOL || (c != OUT && !ISWORD(c))) ) {
+			flagch = EOW;
+		}
+		if (flagch == BOW || flagch == EOW) {
+			st = step(m->g, startst, stopst, st, flagch, st);
+			SP("sboweow", st, c);
+		}
+
+		/* are we done? */
+		if (ISSET(st, stopst))
+			matchp = p;
+		if (EQ(st, empty) || p == stop)
+			break;		/* NOTE BREAK OUT */
+
+		/* no, we must deal with this character */
+		ASSIGN(tmp, st);
+		ASSIGN(st, empty);
+		assert(c != OUT);
+		st = step(m->g, startst, stopst, tmp, c, st);
+		SP("saft", st, c);
+		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
+		p++;
+	}
+
+	return(matchp);
+}
+
+
+/*
+ - step - map set of states reachable before char to set reachable after
+ */
+static states
+step(struct re_guts *g,
+    sopno start,		/* start state within strip */
+    sopno stop,			/* state after stop state within strip */
+    states bef,			/* states reachable before */
+    int ch,			/* character or NONCHAR code */
+    states aft)			/* states already known reachable after */
+{
+	cset *cs;
+	sop s;
+	sopno pc;
+	onestate here;		/* note, macros know this name */
+	sopno look;
+	int i;
+
+	for (pc = start, INIT(here, pc); pc != stop; pc++, INC(here)) {
+		s = g->strip[pc];
+		switch (OP(s)) {
+		case OEND:
+			assert(pc == stop-1);
+			break;
+		case OCHAR:
+			/* only characters can match */
+			assert(!NONCHAR(ch) || ch != (char)OPND(s));
+			if (ch == (char)OPND(s))
+				FWD(aft, bef, 1);
+			break;
+		case OBOL:
+			if (ch == BOL || ch == BOLEOL)
+				FWD(aft, bef, 1);
+			break;
+		case OEOL:
+			if (ch == EOL || ch == BOLEOL)
+				FWD(aft, bef, 1);
+			break;
+		case OBOW:
+			if (ch == BOW)
+				FWD(aft, bef, 1);
+			break;
+		case OEOW:
+			if (ch == EOW)
+				FWD(aft, bef, 1);
+			break;
+		case OANY:
+			if (!NONCHAR(ch))
+				FWD(aft, bef, 1);
+			break;
+		case OANYOF:
+			cs = &g->sets[OPND(s)];
+			if (!NONCHAR(ch) && CHIN(cs, ch))
+				FWD(aft, bef, 1);
+			break;
+		case OBACK_:		/* ignored here */
+		case O_BACK:
+			FWD(aft, aft, 1);
+			break;
+		case OPLUS_:		/* forward, this is just an empty */
+			FWD(aft, aft, 1);
+			break;
+		case O_PLUS:		/* both forward and back */
+			FWD(aft, aft, 1);
+			i = ISSETBACK(aft, OPND(s));
+			BACK(aft, aft, OPND(s));
+			if (!i && ISSETBACK(aft, OPND(s))) {
+				/* oho, must reconsider loop body */
+				pc -= OPND(s) + 1;
+				INIT(here, pc);
+			}
+			break;
+		case OQUEST_:		/* two branches, both forward */
+			FWD(aft, aft, 1);
+			FWD(aft, aft, OPND(s));
+			break;
+		case O_QUEST:		/* just an empty */
+			FWD(aft, aft, 1);
+			break;
+		case OLPAREN:		/* not significant here */
+		case ORPAREN:
+			FWD(aft, aft, 1);
+			break;
+		case OCH_:		/* mark the first two branches */
+			FWD(aft, aft, 1);
+			assert(OP(g->strip[pc+OPND(s)]) == OOR2);
+			FWD(aft, aft, OPND(s));
+			break;
+		case OOR1:		/* done a branch, find the O_CH */
+			if (ISSTATEIN(aft, here)) {
+				for (look = 1;
+						OP(s = g->strip[pc+look]) != O_CH;
+						look += OPND(s))
+					assert(OP(s) == OOR2);
+				FWD(aft, aft, look);
+			}
+			break;
+		case OOR2:		/* propagate OCH_'s marking */
+			FWD(aft, aft, 1);
+			if (OP(g->strip[pc+OPND(s)]) != O_CH) {
+				assert(OP(g->strip[pc+OPND(s)]) == OOR2);
+				FWD(aft, aft, OPND(s));
+			}
+			break;
+		case O_CH:		/* just empty */
+			FWD(aft, aft, 1);
+			break;
+		default:		/* ooooops... */
+			assert(nope);
+			break;
+		}
+	}
+
+	return(aft);
+}
+
+#ifdef REDEBUG
+/*
+ - print - print a set of states
+ */
+static void
+print(struct match *m, char *caption, states st, int ch, FILE *d)
+{
+	struct re_guts *g = m->g;
+	int i;
+	int first = 1;
+
+	if (!(m->eflags&REG_TRACE))
+		return;
+
+	(void)fprintf(d, "%s", caption);
+	if (ch != '\0')
+		(void)fprintf(d, " %s", pchar(ch));
+	for (i = 0; i < g->nstates; i++)
+		if (ISSET(st, i)) {
+			(void)fprintf(d, "%s%d", (first) ? "\t" : ", ", i);
+			first = 0;
+		}
+	(void)fprintf(d, "\n");
+}
+
+/* 
+ - at - print current situation
+ */
+static void
+at(struct match *m, char *title, char *start, char *stop, sopno startst,
+    sopno stopst)
+{
+	if (!(m->eflags&REG_TRACE))
+		return;
+
+	(void)printf("%s %s-", title, pchar(*start));
+	(void)printf("%s ", pchar(*stop));
+	(void)printf("%ld-%ld\n", (long)startst, (long)stopst);
+}
+
+#ifndef PCHARDONE
+#define	PCHARDONE	/* never again */
+/*
+ - pchar - make a character printable
+ *
+ * Is this identical to regchar() over in debug.c?  Well, yes.  But a
+ * duplicate here avoids having a debugging-capable regexec.o tied to
+ * a matching debug.o, and this is convenient.  It all disappears in
+ * the non-debug compilation anyway, so it doesn't matter much.
+ */
+static char *			/* -> representation */
+pchar(int ch)
+{
+	static char pbuf[10];
+
+	if (isprint(ch) || ch == ' ')
+		(void)snprintf(pbuf, sizeof pbuf, "%c", ch);
+	else
+		(void)snprintf(pbuf, sizeof pbuf, "\\%o", ch);
+	return(pbuf);
+}
+#endif
+#endif
+
+#undef	matcher
+#undef	fast
+#undef	slow
+#undef	dissect
+#undef	backref
+#undef	step
+#undef	print
+#undef	at
+#undef	match
+#undef	nope

Added: test-suite/trunk/MultiSource/Applications/ClamAV/entconv.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/entconv.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/entconv.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/entconv.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,87 @@
+/*
+ *  HTML Entity & Encoding normalization.
+ *
+ *  Copyright (C) 2006 Török Edvin <edwin at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as 
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _ENTITIES_H
+#define _ENTITIES_H
+#include "cltypes.h"
+
+#include "hashtab.h"
+
+#define UCS4_1234 (const unsigned char*)"UCS-4LE"
+#define UCS4_4321 (const unsigned char*)"UCS-4BE"
+#define UCS4_2143 (const unsigned char*)"UCS4"
+#define UCS4_3412 (const unsigned char*)"UCS-4"
+#define UTF16_BE (const unsigned char*)"UTF-16BE"
+#define UTF16_LE (const unsigned char*)"UTF-16LE"
+#define UTF8     (const unsigned char*)"UTF-8"
+#define UNDECIDED_32_1234 UCS4_1234
+#define UNDECIDED_32_4321 UCS4_4321
+#define UNDECIDED_32_2143 UCS4_2143
+#define UNDECIDED_32_3412 UCS4_3412
+#define UNDECIDED_16_BE UTF16_BE
+#define UNDECIDED_16_LE UTF16_LE
+#define UNDECIDED_8 (const unsigned char*)"ISO-8859-1"
+#define EBCDIC (const unsigned char*)"EBCDIC-US"
+#define UNKNOWN (const unsigned char*)"\0"
+#define OTHER   (const unsigned char*)"OTHER"
+
+enum encoding_priority {NOPRIO,CONTENT_TYPE,BOM,NOBOM_AUTODETECT,XML_CHARSET,META};
+
+enum encodings {E_UCS4,E_UTF16,E_UCS4_1234,E_UCS4_4321,E_UCS4_2134,E_UCS4_3412,E_UTF16_BE,E_UTF16_LE,E_UTF8,E_UNKNOWN,E_OTHER};
+#define MAX_ENTITY_SIZE 22
+
+struct entity_conv {
+	unsigned char* encoding;
+	const unsigned char* autodetected;
+	enum encoding_priority priority;
+	unsigned short int encoding_specific;/* sub-encoding, used for ISO*/
+	const struct hashtable* ht;
+	uint8_t has_bom;
+	uint8_t enc_bytes;
+	uint8_t bytes_read;
+	uint8_t  bom_cnt;
+	uint32_t partial;
+	unsigned char bom[4];
+#if 0	
+	char* buffer;
+	char* buffer2;
+#endif	
+	size_t buffer_size;
+	size_t buffer_cnt;
+	uint8_t entity_buffcnt;
+	char entity_buff[MAX_ENTITY_SIZE+2];
+	m_area_t tmp_area;
+	m_area_t out_area;
+	m_area_t norm_area;
+	int      msg_zero_shown;
+};
+
+
+int init_entity_converter(struct entity_conv* conv,const unsigned char* encoding,size_t buffer_size);
+void process_encoding_set(struct entity_conv* conv,const unsigned char* encoding,enum encoding_priority priority);
+int entity_norm_done(struct entity_conv* conv);
+
+unsigned char* encoding_norm_readline(struct entity_conv* conv, FILE* stream_in, m_area_t* in_m_area, const size_t maxlen);
+unsigned char* entity_norm(const struct entity_conv* conv,const unsigned char* entity);
+int entitynorm_init(void);
+
+#endif
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/entitylist.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/entitylist.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/entitylist.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/entitylist.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,3086 @@
+/* TODO: include GPL headers */
+#include <hashtab.h>
+static struct element entities_htable_elements[] = {
+	{(const unsigned char*)"varpropto", 8733},
+	{(const unsigned char*)"ncong", 8775},
+	{(const unsigned char*)"grave", 96},
+	{NULL, 0},
+	{(const unsigned char*)"toea", 10536},
+	{(const unsigned char*)"map", 8614},
+	{(const unsigned char*)"nap", 8777},
+	{(const unsigned char*)"lap", 10885},
+	{NULL, 0},
+	{(const unsigned char*)"gap", 10886},
+	{NULL, 0},
+	{(const unsigned char*)"twoheadrightarrow", 8608},
+	{NULL, 0},
+	{(const unsigned char*)"Ll", 8920},
+	{(const unsigned char*)"amalg", 10815},
+	{(const unsigned char*)"geqslant", 10878},
+	{NULL, 0},
+	{(const unsigned char*)"origof", 8886},
+	{(const unsigned char*)"Tab", 9},
+	{NULL, 0},
+	{(const unsigned char*)"leqslant", 10877},
+	{(const unsigned char*)"asympeq", 8781},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sext", 10038},
+	{(const unsigned char*)"Wedge", 8896},
+	{(const unsigned char*)"sqcap", 8851},
+	{(const unsigned char*)"loang", 12312},
+	{(const unsigned char*)"ngeq", 8817},
+	{NULL, 0},
+	{(const unsigned char*)"NotLessTilde", 8820},
+	{(const unsigned char*)"nwArr", 8662},
+	{NULL, 0},
+	{(const unsigned char*)"roang", 12313},
+	{(const unsigned char*)"Delta", 916},
+	{NULL, 0},
+	{(const unsigned char*)"swArr", 8665},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DifferentialD", 8518},
+	{(const unsigned char*)"gl", 8823},
+	{(const unsigned char*)"loz", 9674},
+	{(const unsigned char*)"Prime", 8243},
+	{(const unsigned char*)"ShortRightArrow", 8594},
+	{(const unsigned char*)"sigmaf", 962},
+	{(const unsigned char*)"ll", 8810},
+	{(const unsigned char*)"rx", 8478},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"circledS", 9416},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"notni", 8716},
+	{NULL, 0},
+	{(const unsigned char*)"wedge", 8743},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rightrightarrows", 8649},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"delta", 948},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ffllig", 64260},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Bernoullis", 8492},
+	{(const unsigned char*)"djcy", 1106},
+	{NULL, 0},
+	{(const unsigned char*)"gjcy", 1107},
+	{(const unsigned char*)"prime", 8242},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"kjcy", 1116},
+	{(const unsigned char*)"ljcy", 1113},
+	{(const unsigned char*)"lmoustache", 9136},
+	{(const unsigned char*)"njcy", 1114},
+	{(const unsigned char*)"boxDl", 9558},
+	{(const unsigned char*)"clubs", 9827},
+	{(const unsigned char*)"Integral", 8747},
+	{NULL, 0},
+	{(const unsigned char*)"rmoustache", 9137},
+	{(const unsigned char*)"sol", 47},
+	{(const unsigned char*)"SquareSubset", 8847},
+	{NULL, 0},
+	{(const unsigned char*)"rect", 9645},
+	{(const unsigned char*)"sect", 167},
+	{(const unsigned char*)"VeryThinSpace", 8202},
+	{(const unsigned char*)"lesssim", 8818},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UnderBrace", 65080},
+	{NULL, 0},
+	{(const unsigned char*)"comp", 8705},
+	{(const unsigned char*)"mapstoup", 8613},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"circ", 710},
+	{(const unsigned char*)"complement", 8705},
+	{(const unsigned char*)"flat", 9837},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LowerLeftArrow", 8601},
+	{NULL, 0},
+	{(const unsigned char*)"cuesc", 8927},
+	{(const unsigned char*)"sce", 10928},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"euro", 8364},
+	{(const unsigned char*)"succcurlyeq", 8829},
+	{(const unsigned char*)"LeftCeiling", 8968},
+	{(const unsigned char*)"vprop", 8733},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nexists", 8708},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"pitchfork", 8916},
+	{(const unsigned char*)"darr2", 8650},
+	{NULL, 0},
+	{(const unsigned char*)"Ubrcy", 1038},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sqsupe", 8850},
+	{(const unsigned char*)"eparsl", 10723},
+	{NULL, 0},
+	{(const unsigned char*)"larr2", 8647},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftUpVectorBar", 10584},
+	{(const unsigned char*)"sqsupseteq", 8850},
+	{NULL, 0},
+	{(const unsigned char*)"rarr2", 8649},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"uarr2", 8648},
+	{(const unsigned char*)"veeeq", 8794},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"AElig", 198},
+	{(const unsigned char*)"notnivb", 8958},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"plusb", 8862},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleRightTee", 8872},
+	{(const unsigned char*)"NotSquareSupersetEqual", 8931},
+	{(const unsigned char*)"hookrightarrow", 8618},
+	{(const unsigned char*)"ubrcy", 1118},
+	{NULL, 0},
+	{(const unsigned char*)"OElig", 338},
+	{NULL, 0},
+	{(const unsigned char*)"NotGreaterTilde", 8821},
+	{(const unsigned char*)"filig", 64257},
+	{(const unsigned char*)"nlt", 8814},
+	{(const unsigned char*)"Agr", 913},
+	{(const unsigned char*)"GreaterEqual", 8805},
+	{(const unsigned char*)"mldr", 8230},
+	{(const unsigned char*)"nldr", 8229},
+	{(const unsigned char*)"drcrop", 8972},
+	{(const unsigned char*)"Dgr", 916},
+	{(const unsigned char*)"Bgr", 914},
+	{(const unsigned char*)"Igr", 921},
+	{(const unsigned char*)"angmsd", 8737},
+	{(const unsigned char*)"trie", 8796},
+	{(const unsigned char*)"Kgr", 922},
+	{(const unsigned char*)"Ggr", 915},
+	{(const unsigned char*)"Mgr", 924},
+	{(const unsigned char*)"Egr", 917},
+	{(const unsigned char*)"Ogr", 927},
+	{(const unsigned char*)"Ngr", 925},
+	{(const unsigned char*)"Lgr", 923},
+	{(const unsigned char*)"Pgr", 928},
+	{(const unsigned char*)"Sgr", 931},
+	{(const unsigned char*)"cong", 8773},
+	{(const unsigned char*)"doteqdot", 8785},
+	{(const unsigned char*)"urcrop", 8974},
+	{(const unsigned char*)"Rgr", 929},
+	{(const unsigned char*)"Xgr", 926},
+	{(const unsigned char*)"Tgr", 932},
+	{(const unsigned char*)"Ugr", 933},
+	{NULL, 0},
+	{(const unsigned char*)"nless", 8814},
+	{(const unsigned char*)"LeftTee", 8867},
+	{(const unsigned char*)"OverBar", 175},
+	{(const unsigned char*)"Zgr", 918},
+	{(const unsigned char*)"agr", 945},
+	{(const unsigned char*)"bgr", 946},
+	{(const unsigned char*)"phis", 981},
+	{(const unsigned char*)"dgr", 948},
+	{(const unsigned char*)"intlarhk", 10775},
+	{(const unsigned char*)"boxplus", 8862},
+	{(const unsigned char*)"ggr", 947},
+	{(const unsigned char*)"egr", 949},
+	{(const unsigned char*)"nrtrie", 8941},
+	{(const unsigned char*)"rdldhar", 10601},
+	{(const unsigned char*)"lrcorner", 8991},
+	{(const unsigned char*)"igr", 953},
+	{(const unsigned char*)"lgr", 955},
+	{(const unsigned char*)"lhblk", 9604},
+	{(const unsigned char*)"ngr", 957},
+	{(const unsigned char*)"mgr", 956},
+	{(const unsigned char*)"kgr", 954},
+	{(const unsigned char*)"ogr", 959},
+	{(const unsigned char*)"urcorner", 8989},
+	{(const unsigned char*)"sgr", 963},
+	{(const unsigned char*)"boxUL", 9565},
+	{(const unsigned char*)"npolint", 10772},
+	{(const unsigned char*)"uhblk", 9600},
+	{(const unsigned char*)"rgr", 961},
+	{(const unsigned char*)"curarrm", 10556},
+	{(const unsigned char*)"pgr", 960},
+	{(const unsigned char*)"ruluhar", 10600},
+	{(const unsigned char*)"lbbrk", 12308},
+	{(const unsigned char*)"zgr", 950},
+	{(const unsigned char*)"tgr", 964},
+	{(const unsigned char*)"ugr", 965},
+	{NULL, 0},
+	{(const unsigned char*)"rbbrk", 12309},
+	{(const unsigned char*)"profline", 8978},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rlm", 8207},
+	{(const unsigned char*)"OverBrace", 65079},
+	{(const unsigned char*)"xgr", 958},
+	{(const unsigned char*)"lsaquo", 8249},
+	{NULL, 0},
+	{(const unsigned char*)"nwarrow", 8598},
+	{(const unsigned char*)"Equilibrium", 8652},
+	{NULL, 0},
+	{(const unsigned char*)"rsaquo", 8250},
+	{NULL, 0},
+	{(const unsigned char*)"swarrow", 8601},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"prec", 8826},
+	{(const unsigned char*)"ltrie", 8884},
+	{(const unsigned char*)"dharl", 8643},
+	{(const unsigned char*)"shortmid", 8739},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nleftrightarrow", 8622},
+	{(const unsigned char*)"rtrie", 8885},
+	{(const unsigned char*)"Im", 8465},
+	{(const unsigned char*)"frown", 8994},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"pertenk", 8241},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lessgtr", 8822},
+	{(const unsigned char*)"bigvee", 8897},
+	{(const unsigned char*)"supseteq", 8839},
+	{(const unsigned char*)"uharl", 8639},
+	{NULL, 0},
+	{(const unsigned char*)"Longrightarrow", 10233},
+	{(const unsigned char*)"lrarr2", 8646},
+	{NULL, 0},
+	{(const unsigned char*)"wreath", 8768},
+	{NULL, 0},
+	{(const unsigned char*)"Updownarrow", 8661},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lessdot", 8918},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nlArr", 8653},
+	{(const unsigned char*)"SOFTcy", 1068},
+	{NULL, 0},
+	{(const unsigned char*)"Barwed", 8966},
+	{(const unsigned char*)"upharpoonleft", 8639},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"FilledVerySmallSquare", 9642},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"coprod", 8720},
+	{(const unsigned char*)"pm", 177},
+	{NULL, 0},
+	{(const unsigned char*)"nLeftarrow", 8653},
+	{NULL, 0},
+	{(const unsigned char*)"DScy", 1029},
+	{(const unsigned char*)"xlArr", 10232},
+	{(const unsigned char*)"longrightarrow", 10230},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"subseteq", 8838},
+	{NULL, 0},
+	{(const unsigned char*)"updownarrow", 8597},
+	{(const unsigned char*)"bsime", 8909},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"supsetneq", 8843},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"frac56", 8538},
+	{NULL, 0},
+	{(const unsigned char*)"TScy", 1062},
+	{NULL, 0},
+	{(const unsigned char*)"zeetrf", 8488},
+	{(const unsigned char*)"ogon", 731},
+	{(const unsigned char*)"barwed", 8965},
+	{(const unsigned char*)"nsime", 8772},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lEg", 10891},
+	{(const unsigned char*)"lrhar", 8651},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxminus", 8863},
+	{(const unsigned char*)"ape", 8778},
+	{NULL, 0},
+	{(const unsigned char*)"divonx", 8903},
+	{(const unsigned char*)"hksearow", 10533},
+	{(const unsigned char*)"boxhD", 9573},
+	{(const unsigned char*)"NotLessEqual", 8816},
+	{(const unsigned char*)"ang90", 8735},
+	{(const unsigned char*)"sstarf", 8902},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"subsetneq", 8842},
+	{(const unsigned char*)"Darr", 8609},
+	{NULL, 0},
+	{(const unsigned char*)"curarr", 8631},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"real", 8476},
+	{(const unsigned char*)"Larr", 8606},
+	{(const unsigned char*)"CircleDot", 8857},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CircleTimes", 8855},
+	{(const unsigned char*)"Rarr", 8608},
+	{(const unsigned char*)"varpi", 982},
+	{(const unsigned char*)"SuchThat", 8715},
+	{(const unsigned char*)"Uarr", 8607},
+	{(const unsigned char*)"smeparsl", 10724},
+	{NULL, 0},
+	{(const unsigned char*)"orslope", 10839},
+	{(const unsigned char*)"cuwed", 8911},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Breve", 728},
+	{(const unsigned char*)"nwarr", 8598},
+	{NULL, 0},
+	{(const unsigned char*)"orv", 10843},
+	{(const unsigned char*)"zwj", 8205},
+	{(const unsigned char*)"swarr", 8601},
+	{NULL, 0},
+	{(const unsigned char*)"darr", 8595},
+	{(const unsigned char*)"gtrdot", 8919},
+	{(const unsigned char*)"precneqq", 10933},
+	{(const unsigned char*)"LessGreater", 8822},
+	{(const unsigned char*)"harr", 8596},
+	{(const unsigned char*)"UpperLeftArrow", 8598},
+	{(const unsigned char*)"Verbar", 8214},
+	{(const unsigned char*)"harrw", 8621},
+	{(const unsigned char*)"TildeTilde", 8776},
+	{(const unsigned char*)"larr", 8592},
+	{NULL, 0},
+	{(const unsigned char*)"succsim", 8831},
+	{(const unsigned char*)"rarrw", 8605},
+	{NULL, 0},
+	{(const unsigned char*)"rarr", 8594},
+	{(const unsigned char*)"prnE", 10933},
+	{(const unsigned char*)"Hat", 94},
+	{(const unsigned char*)"uarr", 8593},
+	{(const unsigned char*)"varr", 8597},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxvR", 9566},
+	{NULL, 0},
+	{(const unsigned char*)"micro", 181},
+	{(const unsigned char*)"breve", 728},
+	{NULL, 0},
+	{(const unsigned char*)"nequiv", 8802},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"verbar", 124},
+	{(const unsigned char*)"lopar", 10629},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"frac35", 8535},
+	{(const unsigned char*)"RightArrow", 8594},
+	{(const unsigned char*)"copy", 169},
+	{(const unsigned char*)"ropar", 10630},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nsubseteq", 8840},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nvlArr", 10498},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"setminus", 8726},
+	{(const unsigned char*)"boxvH", 9578},
+	{(const unsigned char*)"doteq", 8784},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"vartriangleleft", 8882},
+	{NULL, 0},
+	{(const unsigned char*)"RightTriangleBar", 10704},
+	{(const unsigned char*)"shy", 173},
+	{(const unsigned char*)"RightUpVectorBar", 10580},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Kappa", 922},
+	{NULL, 0},
+	{(const unsigned char*)"leftrightarrows", 8646},
+	{(const unsigned char*)"sqsupset", 8848},
+	{(const unsigned char*)"rationals", 8474},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"cent", 162},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lobrk", 12314},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"OverBracket", 9140},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"robrk", 12315},
+	{(const unsigned char*)"Fouriertrf", 8497},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"blacktriangleleft", 9666},
+	{(const unsigned char*)"bumpe", 8783},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"kappa", 954},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"weierp", 8472},
+	{NULL, 0},
+	{(const unsigned char*)"intcal", 8890},
+	{(const unsigned char*)"rarrc", 10547},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"iiint", 8749},
+	{NULL, 0},
+	{(const unsigned char*)"boxdr", 9484},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"percnt", 37},
+	{(const unsigned char*)"top", 8868},
+	{NULL, 0},
+	{(const unsigned char*)"ffilig", 64259},
+	{(const unsigned char*)"notnivc", 8957},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"diams", 9830},
+	{NULL, 0},
+	{(const unsigned char*)"maltese", 10016},
+	{(const unsigned char*)"vartriangleright", 8883},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"OverParenthesis", 65077},
+	{(const unsigned char*)"nesear", 10536},
+	{(const unsigned char*)"LessFullEqual", 8806},
+	{NULL, 0},
+	{(const unsigned char*)"UpDownArrow", 8597},
+	{(const unsigned char*)"measuredangle", 8737},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Leftarrow", 8656},
+	{(const unsigned char*)"HumpDownHump", 8782},
+	{(const unsigned char*)"frac14", 188},
+	{NULL, 0},
+	{(const unsigned char*)"LeftUpVector", 8639},
+	{(const unsigned char*)"bigotimes", 10754},
+	{(const unsigned char*)"questeq", 8799},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"GreaterFullEqual", 8807},
+	{NULL, 0},
+	{(const unsigned char*)"in", 8712},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Del", 8711},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CHcy", 1063},
+	{(const unsigned char*)"supne", 8843},
+	{NULL, 0},
+	{(const unsigned char*)"leftarrow", 8592},
+	{(const unsigned char*)"ges", 10878},
+	{(const unsigned char*)"bnot", 8976},
+	{(const unsigned char*)"mumap", 8888},
+	{(const unsigned char*)"LeftTriangleEqual", 8884},
+	{(const unsigned char*)"KHcy", 1061},
+	{(const unsigned char*)"les", 10877},
+	{(const unsigned char*)"xutri", 9651},
+	{NULL, 0},
+	{(const unsigned char*)"caron", 711},
+	{NULL, 0},
+	{(const unsigned char*)"EqualTilde", 8770},
+	{(const unsigned char*)"UnderBar", 818},
+	{(const unsigned char*)"SHcy", 1064},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ZHcy", 1046},
+	{(const unsigned char*)"gel", 8923},
+	{(const unsigned char*)"Vee", 8897},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"subne", 8842},
+	{NULL, 0},
+	{(const unsigned char*)"ngtr", 8815},
+	{(const unsigned char*)"isins", 8948},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"angle", 8736},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ThinSpace", 8201},
+	{(const unsigned char*)"samalg", 8720},
+	{NULL, 0},
+	{(const unsigned char*)"supseteqq", 10950},
+	{(const unsigned char*)"SucceedsEqual", 10928},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"vee", 8744},
+	{NULL, 0},
+	{(const unsigned char*)"approxeq", 8778},
+	{(const unsigned char*)"leftarrowtail", 8610},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dHar", 10597},
+	{(const unsigned char*)"andand", 10837},
+	{(const unsigned char*)"dlarr", 8601},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"circeq", 8791},
+	{NULL, 0},
+	{(const unsigned char*)"Lsh", 8624},
+	{(const unsigned char*)"laquo", 171},
+	{(const unsigned char*)"coloneq", 8788},
+	{(const unsigned char*)"llarr", 8647},
+	{(const unsigned char*)"Int", 8748},
+	{(const unsigned char*)"nlarr", 8602},
+	{(const unsigned char*)"Rsh", 8625},
+	{(const unsigned char*)"varepsilon", 949},
+	{(const unsigned char*)"olarr", 8634},
+	{(const unsigned char*)"raquo", 187},
+	{(const unsigned char*)"slarr", 8592},
+	{(const unsigned char*)"rlarr", 8644},
+	{(const unsigned char*)"boxuR", 9560},
+	{(const unsigned char*)"minus", 8722},
+	{(const unsigned char*)"xlarr", 10229},
+	{(const unsigned char*)"lHar", 10594},
+	{(const unsigned char*)"rHar", 10596},
+	{(const unsigned char*)"subseteqq", 10949},
+	{NULL, 0},
+	{(const unsigned char*)"uHar", 10595},
+	{(const unsigned char*)"epsis", 1013},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ssetmn", 8726},
+	{(const unsigned char*)"equals", 61},
+	{NULL, 0},
+	{(const unsigned char*)"NotExists", 8708},
+	{(const unsigned char*)"prnsim", 8936},
+	{(const unsigned char*)"lsh", 8624},
+	{(const unsigned char*)"curlyeqsucc", 8927},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"int", 8747},
+	{NULL, 0},
+	{(const unsigned char*)"rsh", 8625},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LessSlantEqual", 10877},
+	{(const unsigned char*)"DiacriticalDot", 729},
+	{NULL, 0},
+	{(const unsigned char*)"nvDash", 8877},
+	{(const unsigned char*)"prnap", 10937},
+	{(const unsigned char*)"ZeroWidthSpace", 8203},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"oplus", 8853},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"middot", 183},
+	{NULL, 0},
+	{(const unsigned char*)"emptyset", 8709},
+	{(const unsigned char*)"uplus", 8846},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxhu", 9524},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"softcy", 1100},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"squarf", 9642},
+	{(const unsigned char*)"TripleDot", 8411},
+	{(const unsigned char*)"DownTee", 8868},
+	{(const unsigned char*)"cir", 9675},
+	{(const unsigned char*)"expectation", 8496},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"cirfnint", 10768},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sfrown", 8994},
+	{(const unsigned char*)"ntriangleright", 8939},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nisd", 8954},
+	{(const unsigned char*)"dash", 8208},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nvHarr", 10500},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"hybull", 8259},
+	{(const unsigned char*)"RightArrowBar", 8677},
+	{(const unsigned char*)"leftrightsquigarrow", 8621},
+	{(const unsigned char*)"minusb", 8863},
+	{NULL, 0},
+	{(const unsigned char*)"frac38", 8540},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"centerdot", 183},
+	{(const unsigned char*)"nwnear", 10535},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"larrpl", 10553},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"hookleftarrow", 8617},
+	{(const unsigned char*)"hellip", 8230},
+	{(const unsigned char*)"rarrpl", 10565},
+	{(const unsigned char*)"mid", 8739},
+	{NULL, 0},
+	{(const unsigned char*)"oast", 8859},
+	{(const unsigned char*)"NotTildeTilde", 8777},
+	{NULL, 0},
+	{(const unsigned char*)"NotTilde", 8769},
+	{(const unsigned char*)"ohacgr", 974},
+	{(const unsigned char*)"marker", 9646},
+	{(const unsigned char*)"langle", 9001},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"vellip", 8942},
+	{(const unsigned char*)"NotRightTriangleEqual", 8941},
+	{(const unsigned char*)"rangle", 9002},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gnsim", 8935},
+	{(const unsigned char*)"malt", 10016},
+	{(const unsigned char*)"times", 215},
+	{(const unsigned char*)"RightDownTeeVector", 10589},
+	{NULL, 0},
+	{(const unsigned char*)"lnsim", 8934},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"preceq", 10927},
+	{(const unsigned char*)"equiv", 8801},
+	{(const unsigned char*)"geqq", 8807},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Iota", 921},
+	{(const unsigned char*)"leqq", 8806},
+	{NULL, 0},
+	{(const unsigned char*)"cuepr", 8926},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxtimes", 8864},
+	{(const unsigned char*)"numero", 8470},
+	{(const unsigned char*)"setmn", 8726},
+	{NULL, 0},
+	{(const unsigned char*)"ForAll", 8704},
+	{NULL, 0},
+	{(const unsigned char*)"excl", 33},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"bsol", 92},
+	{(const unsigned char*)"imof", 8887},
+	{(const unsigned char*)"dsol", 10742},
+	{(const unsigned char*)"ic", 8291},
+	{(const unsigned char*)"ReverseElement", 8715},
+	{(const unsigned char*)"Exists", 8707},
+	{NULL, 0},
+	{(const unsigned char*)"parsl", 11005},
+	{(const unsigned char*)"bprime", 8245},
+	{(const unsigned char*)"Ccedil", 199},
+	{(const unsigned char*)"sc", 8827},
+	{(const unsigned char*)"propto", 8733},
+	{NULL, 0},
+	{(const unsigned char*)"osol", 8856},
+	{(const unsigned char*)"RightVectorBar", 10579},
+	{(const unsigned char*)"iota", 953},
+	{(const unsigned char*)"boxDR", 9556},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Theta", 920},
+	{(const unsigned char*)"lharu", 8636},
+	{(const unsigned char*)"Because", 8757},
+	{(const unsigned char*)"qprime", 8279},
+	{(const unsigned char*)"simrarr", 10610},
+	{NULL, 0},
+	{(const unsigned char*)"tprime", 8244},
+	{(const unsigned char*)"rharu", 8640},
+	{(const unsigned char*)"vprime", 8242},
+	{(const unsigned char*)"YUcy", 1070},
+	{(const unsigned char*)"plusmn", 177},
+	{NULL, 0},
+	{(const unsigned char*)"planckh", 8462},
+	{(const unsigned char*)"YIcy", 1031},
+	{NULL, 0},
+	{(const unsigned char*)"NotRightTriangle", 8939},
+	{(const unsigned char*)"becaus", 8757},
+	{NULL, 0},
+	{(const unsigned char*)"PrecedesEqual", 10927},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nsupe", 8841},
+	{(const unsigned char*)"ccedil", 231},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"yacy", 1103},
+	{(const unsigned char*)"succnsim", 8937},
+	{(const unsigned char*)"theta", 952},
+	{(const unsigned char*)"because", 8757},
+	{(const unsigned char*)"pre", 10927},
+	{NULL, 0},
+	{(const unsigned char*)"sharp", 9839},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"timesb", 8864},
+	{(const unsigned char*)"Longleftarrow", 10232},
+	{(const unsigned char*)"Sqrt", 8730},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Vert", 8214},
+	{NULL, 0},
+	{(const unsigned char*)"Rho", 929},
+	{NULL, 0},
+	{(const unsigned char*)"LeftDownTeeVector", 10593},
+	{(const unsigned char*)"erDot", 8787},
+	{NULL, 0},
+	{(const unsigned char*)"integers", 8484},
+	{(const unsigned char*)"Dot", 168},
+	{(const unsigned char*)"eqvparsl", 10725},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"efDot", 8786},
+	{NULL, 0},
+	{(const unsigned char*)"NewLine", 10},
+	{(const unsigned char*)"sbquo", 8218},
+	{NULL, 0},
+	{(const unsigned char*)"Diamond", 8900},
+	{(const unsigned char*)"Not", 10988},
+	{NULL, 0},
+	{(const unsigned char*)"Eta", 919},
+	{(const unsigned char*)"longleftarrow", 10229},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"starf", 9733},
+	{(const unsigned char*)"RoundImplies", 10608},
+	{(const unsigned char*)"RightAngleBracket", 9002},
+	{NULL, 0},
+	{(const unsigned char*)"diamondsuit", 9830},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"vert", 124},
+	{(const unsigned char*)"eth", 240},
+	{(const unsigned char*)"NotReverseElement", 8716},
+	{(const unsigned char*)"Longleftrightarrow", 10234},
+	{(const unsigned char*)"ssmile", 8995},
+	{(const unsigned char*)"bot", 8869},
+	{(const unsigned char*)"supe", 8839},
+	{(const unsigned char*)"dot", 729},
+	{(const unsigned char*)"pointint", 10773},
+	{(const unsigned char*)"intercal", 8890},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rho", 961},
+	{NULL, 0},
+	{(const unsigned char*)"primes", 8473},
+	{(const unsigned char*)"fllig", 64258},
+	{NULL, 0},
+	{(const unsigned char*)"diamond", 8900},
+	{(const unsigned char*)"not", 172},
+	{(const unsigned char*)"precapprox", 10935},
+	{(const unsigned char*)"eta", 951},
+	{NULL, 0},
+	{(const unsigned char*)"backprime", 8245},
+	{(const unsigned char*)"GreaterEqualLess", 8923},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightTeeArrow", 8614},
+	{(const unsigned char*)"boxHd", 9572},
+	{(const unsigned char*)"Gammad", 988},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Assign", 8788},
+	{(const unsigned char*)"squf", 9642},
+	{(const unsigned char*)"angzarr", 9084},
+	{(const unsigned char*)"longleftrightarrow", 10231},
+	{NULL, 0},
+	{(const unsigned char*)"pound", 163},
+	{(const unsigned char*)"topbot", 9014},
+	{(const unsigned char*)"twoheadleftarrow", 8606},
+	{(const unsigned char*)"Congruent", 8801},
+	{(const unsigned char*)"nshortparallel", 8742},
+	{(const unsigned char*)"LeftArrowRightArrow", 8646},
+	{NULL, 0},
+	{(const unsigned char*)"sube", 8838},
+	{NULL, 0},
+	{(const unsigned char*)"hamilt", 8459},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"harrcir", 10568},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxV", 9553},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gammad", 989},
+	{(const unsigned char*)"OpenCurlyDoubleQuote", 8220},
+	{NULL, 0},
+	{(const unsigned char*)"target", 8982},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"bigsqcup", 10758},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxVr", 9567},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"eegr", 951},
+	{(const unsigned char*)"awint", 10769},
+	{(const unsigned char*)"EEacgr", 905},
+	{(const unsigned char*)"cwint", 8753},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightVector", 8640},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Vvdash", 8874},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Aacute", 193},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Eacute", 201},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Iacute", 205},
+	{(const unsigned char*)"boxHU", 9577},
+	{(const unsigned char*)"daleth", 8504},
+	{(const unsigned char*)"olcross", 10683},
+	{(const unsigned char*)"eqcirc", 8790},
+	{NULL, 0},
+	{(const unsigned char*)"Oacute", 211},
+	{(const unsigned char*)"bigodot", 10752},
+	{(const unsigned char*)"notinva", 8713},
+	{(const unsigned char*)"LeftRightArrow", 8596},
+	{(const unsigned char*)"lozenge", 9674},
+	{NULL, 0},
+	{(const unsigned char*)"Uacute", 218},
+	{(const unsigned char*)"nvdash", 8876},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Yacute", 221},
+	{(const unsigned char*)"boxvL", 9569},
+	{(const unsigned char*)"Bscr", 8492},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Escr", 8496},
+	{(const unsigned char*)"Fscr", 8497},
+	{(const unsigned char*)"Hacek", 711},
+	{(const unsigned char*)"Hscr", 8459},
+	{(const unsigned char*)"Iscr", 8464},
+	{(const unsigned char*)"boxVh", 9579},
+	{(const unsigned char*)"aacute", 225},
+	{(const unsigned char*)"Lscr", 8466},
+	{(const unsigned char*)"Mscr", 8499},
+	{(const unsigned char*)"Downarrow", 8659},
+	{(const unsigned char*)"eacute", 233},
+	{(const unsigned char*)"iacute", 237},
+	{(const unsigned char*)"VerticalLine", 124},
+	{(const unsigned char*)"Rscr", 8475},
+	{(const unsigned char*)"ap", 8776},
+	{(const unsigned char*)"NegativeVeryThinSpace", 8203},
+	{(const unsigned char*)"LessTilde", 8818},
+	{(const unsigned char*)"oacute", 243},
+	{(const unsigned char*)"blk12", 9618},
+	{(const unsigned char*)"frac25", 8534},
+	{(const unsigned char*)"mp", 8723},
+	{(const unsigned char*)"fnof", 402},
+	{(const unsigned char*)"Conint", 8751},
+	{(const unsigned char*)"uacute", 250},
+	{(const unsigned char*)"dd", 8518},
+	{(const unsigned char*)"scsim", 8831},
+	{(const unsigned char*)"NotSucceeds", 8833},
+	{(const unsigned char*)"yacute", 253},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"wp", 8472},
+	{(const unsigned char*)"infin", 8734},
+	{(const unsigned char*)"escr", 8495},
+	{NULL, 0},
+	{(const unsigned char*)"DJcy", 1026},
+	{(const unsigned char*)"gscr", 8458},
+	{(const unsigned char*)"LowerRightArrow", 8600},
+	{(const unsigned char*)"GJcy", 1027},
+	{(const unsigned char*)"dzcy", 1119},
+	{(const unsigned char*)"brvbar", 166},
+	{(const unsigned char*)"sqcup", 8852},
+	{(const unsigned char*)"KJcy", 1036},
+	{(const unsigned char*)"LJcy", 1033},
+	{(const unsigned char*)"oscr", 8500},
+	{(const unsigned char*)"NJcy", 1034},
+	{(const unsigned char*)"ddagger", 8225},
+	{(const unsigned char*)"Agrave", 192},
+	{(const unsigned char*)"downarrow", 8595},
+	{NULL, 0},
+	{(const unsigned char*)"duhar", 10607},
+	{(const unsigned char*)"Egrave", 200},
+	{(const unsigned char*)"Oslash", 216},
+	{NULL, 0},
+	{(const unsigned char*)"preccurlyeq", 8828},
+	{(const unsigned char*)"Igrave", 204},
+	{(const unsigned char*)"conint", 8750},
+	{(const unsigned char*)"drbkarow", 10512},
+	{(const unsigned char*)"DownRightTeeVector", 10591},
+	{(const unsigned char*)"odot", 8857},
+	{NULL, 0},
+	{(const unsigned char*)"Ograve", 210},
+	{(const unsigned char*)"ldot", 8918},
+	{(const unsigned char*)"LeftAngleBracket", 9001},
+	{(const unsigned char*)"tdot", 8411},
+	{(const unsigned char*)"idiagr", 912},
+	{(const unsigned char*)"sdot", 8901},
+	{(const unsigned char*)"Ugrave", 217},
+	{(const unsigned char*)"triangleleft", 9667},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"diam", 8900},
+	{(const unsigned char*)"commat", 64},
+	{(const unsigned char*)"udiagr", 944},
+	{(const unsigned char*)"larrb", 8676},
+	{(const unsigned char*)"hslash", 8463},
+	{(const unsigned char*)"rightleftarrows", 8644},
+	{(const unsigned char*)"succnapprox", 10938},
+	{(const unsigned char*)"agrave", 224},
+	{NULL, 0},
+	{(const unsigned char*)"egs", 10902},
+	{NULL, 0},
+	{(const unsigned char*)"egrave", 232},
+	{(const unsigned char*)"oslash", 248},
+	{NULL, 0},
+	{(const unsigned char*)"nge", 8817},
+	{(const unsigned char*)"igrave", 236},
+	{(const unsigned char*)"hbar", 8463},
+	{NULL, 0},
+	{(const unsigned char*)"NestedLessLess", 8810},
+	{NULL, 0},
+	{(const unsigned char*)"nexist", 8708},
+	{(const unsigned char*)"ograve", 242},
+	{NULL, 0},
+	{(const unsigned char*)"ldquor", 8222},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rdquor", 8221},
+	{(const unsigned char*)"ugrave", 249},
+	{(const unsigned char*)"div", 247},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"blacktriangledown", 9662},
+	{(const unsigned char*)"UpArrow", 8593},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"niv", 8715},
+	{(const unsigned char*)"llhard", 10603},
+	{(const unsigned char*)"boxdl", 9488},
+	{(const unsigned char*)"piv", 982},
+	{NULL, 0},
+	{(const unsigned char*)"NotPrecedes", 8832},
+	{(const unsigned char*)"lbarr", 10508},
+	{NULL, 0},
+	{(const unsigned char*)"andd", 10844},
+	{(const unsigned char*)"bigwedge", 8896},
+	{(const unsigned char*)"InvisibleTimes", 8290},
+	{NULL, 0},
+	{(const unsigned char*)"rbarr", 10509},
+	{NULL, 0},
+	{(const unsigned char*)"ApplyFunction", 8289},
+	{(const unsigned char*)"bottom", 8869},
+	{(const unsigned char*)"awconint", 8755},
+	{(const unsigned char*)"cwconint", 8754},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dwangle", 10662},
+	{(const unsigned char*)"rarrb", 8677},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UpArrowBar", 10514},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"realine", 8475},
+	{(const unsigned char*)"uwangle", 10663},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lowbar", 95},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Cayleys", 8493},
+	{NULL, 0},
+	{(const unsigned char*)"bigstar", 9733},
+	{(const unsigned char*)"isin", 8712},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"backepsilon", 1014},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"OpenCurlyQuote", 8216},
+	{NULL, 0},
+	{(const unsigned char*)"Cross", 10799},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lesseqgtr", 8922},
+	{(const unsigned char*)"Upsi", 978},
+	{(const unsigned char*)"DoubleRightArrow", 8658},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Laplacetrf", 8466},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"bigcirc", 9711},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"epsi", 1013},
+	{(const unsigned char*)"LeftTeeVector", 10586},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleUpDownArrow", 8661},
+	{NULL, 0},
+	{(const unsigned char*)"DiacriticalGrave", 96},
+	{(const unsigned char*)"triangle", 9653},
+	{NULL, 0},
+	{(const unsigned char*)"permil", 8240},
+	{NULL, 0},
+	{(const unsigned char*)"lpargt", 10656},
+	{(const unsigned char*)"UpEquilibrium", 10606},
+	{(const unsigned char*)"backsimeq", 8909},
+	{(const unsigned char*)"Supset", 8913},
+	{(const unsigned char*)"boxUr", 9561},
+	{(const unsigned char*)"sccue", 8829},
+	{(const unsigned char*)"rpargt", 10644},
+	{(const unsigned char*)"cross", 10007},
+	{(const unsigned char*)"upsi", 965},
+	{NULL, 0},
+	{(const unsigned char*)"cularr", 8630},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"varkappa", 1008},
+	{(const unsigned char*)"half", 189},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sfgr", 962},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ImaginaryI", 8520},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Tau", 932},
+	{(const unsigned char*)"bernou", 8492},
+	{(const unsigned char*)"DoubleLeftArrow", 8656},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"supset", 8835},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"MediumSpace", 8287},
+	{NULL, 0},
+	{(const unsigned char*)"Subset", 8912},
+	{(const unsigned char*)"NegativeThickSpace", 8203},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxuL", 9563},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"notin", 8713},
+	{NULL, 0},
+	{(const unsigned char*)"Re", 8476},
+	{NULL, 0},
+	{(const unsigned char*)"nleq", 8816},
+	{(const unsigned char*)"nLeftrightarrow", 8654},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Beta", 914},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dollar", 36},
+	{(const unsigned char*)"Product", 8719},
+	{(const unsigned char*)"tau", 964},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Poincareplane", 8460},
+	{(const unsigned char*)"ee", 8519},
+	{(const unsigned char*)"CenterDot", 183},
+	{(const unsigned char*)"Jsercy", 1032},
+	{(const unsigned char*)"ge", 8805},
+	{(const unsigned char*)"Rarrtl", 10518},
+	{(const unsigned char*)"subset", 8834},
+	{NULL, 0},
+	{(const unsigned char*)"le", 8804},
+	{NULL, 0},
+	{(const unsigned char*)"ne", 8800},
+	{(const unsigned char*)"mapstoleft", 8612},
+	{(const unsigned char*)"NotSucceedsSlantEqual", 8929},
+	{(const unsigned char*)"upsih", 978},
+	{(const unsigned char*)"cedil", 184},
+	{(const unsigned char*)"Zeta", 918},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"apos", 39},
+	{(const unsigned char*)"nsube", 8840},
+	{(const unsigned char*)"beta", 946},
+	{(const unsigned char*)"frac78", 8542},
+	{(const unsigned char*)"nltri", 8938},
+	{(const unsigned char*)"iiiint", 10764},
+	{NULL, 0},
+	{(const unsigned char*)"veebar", 8891},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightTeeVector", 10587},
+	{(const unsigned char*)"Dagger", 8225},
+	{(const unsigned char*)"vltri", 8882},
+	{(const unsigned char*)"larrtl", 8610},
+	{(const unsigned char*)"iocy", 1105},
+	{(const unsigned char*)"dashv", 8867},
+	{(const unsigned char*)"frac12", 189},
+	{(const unsigned char*)"GreaterLess", 8823},
+	{(const unsigned char*)"jsercy", 1112},
+	{(const unsigned char*)"rarrtl", 8611},
+	{(const unsigned char*)"oline", 8254},
+	{(const unsigned char*)"sup3", 179},
+	{(const unsigned char*)"emsp13", 8196},
+	{(const unsigned char*)"asymp", 8776},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"zeta", 950},
+	{(const unsigned char*)"UpperRightArrow", 8599},
+	{NULL, 0},
+	{(const unsigned char*)"smallsetminus", 8726},
+	{(const unsigned char*)"LeftUpTeeVector", 10592},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dagger", 8224},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftDownVector", 8643},
+	{(const unsigned char*)"sime", 8771},
+	{(const unsigned char*)"precsim", 8830},
+	{(const unsigned char*)"MinusPlus", 8723},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftVector", 8636},
+	{NULL, 0},
+	{(const unsigned char*)"profalar", 9006},
+	{(const unsigned char*)"dtri", 9663},
+	{(const unsigned char*)"between", 8812},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"hyphen", 8208},
+	{NULL, 0},
+	{(const unsigned char*)"NegativeThinSpace", 8203},
+	{(const unsigned char*)"downdownarrows", 8650},
+	{(const unsigned char*)"xmap", 10236},
+	{(const unsigned char*)"ltri", 9667},
+	{(const unsigned char*)"bdquo", 8222},
+	{(const unsigned char*)"notinvb", 8951},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rtri", 9657},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"hoarr", 8703},
+	{(const unsigned char*)"plusdo", 8724},
+	{(const unsigned char*)"ldquo", 8220},
+	{(const unsigned char*)"bigoplus", 10753},
+	{(const unsigned char*)"loarr", 8701},
+	{(const unsigned char*)"natur", 9838},
+	{(const unsigned char*)"utri", 9653},
+	{NULL, 0},
+	{(const unsigned char*)"rdquo", 8221},
+	{NULL, 0},
+	{(const unsigned char*)"roarr", 8702},
+	{(const unsigned char*)"VerticalBar", 8739},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"NotPrecedesSlantEqual", 8928},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"imped", 437},
+	{(const unsigned char*)"thinsp", 8201},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dArr", 8659},
+	{(const unsigned char*)"dlcorn", 8990},
+	{NULL, 0},
+	{(const unsigned char*)"LeftUpDownVector", 10577},
+	{(const unsigned char*)"hArr", 8660},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lArr", 8656},
+	{(const unsigned char*)"ltimes", 8905},
+	{NULL, 0},
+	{(const unsigned char*)"rightharpoondown", 8641},
+	{(const unsigned char*)"otimes", 8855},
+	{(const unsigned char*)"RightTee", 8866},
+	{(const unsigned char*)"rArr", 8658},
+	{(const unsigned char*)"rtimes", 8906},
+	{(const unsigned char*)"varsigma", 962},
+	{(const unsigned char*)"uArr", 8657},
+	{(const unsigned char*)"ulcorn", 8988},
+	{(const unsigned char*)"vArr", 8661},
+	{(const unsigned char*)"szlig", 223},
+	{(const unsigned char*)"Vdash", 8873},
+	{(const unsigned char*)"nspar", 8742},
+	{(const unsigned char*)"bsim", 8765},
+	{(const unsigned char*)"LeftTriangleBar", 10703},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gsim", 8819},
+	{(const unsigned char*)"lcub", 123},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"isinE", 8953},
+	{(const unsigned char*)"lsim", 8818},
+	{NULL, 0},
+	{(const unsigned char*)"rcub", 125},
+	{(const unsigned char*)"boxH", 9552},
+	{NULL, 0},
+	{(const unsigned char*)"nsim", 8769},
+	{(const unsigned char*)"bkarow", 10509},
+	{(const unsigned char*)"mdash", 8212},
+	{(const unsigned char*)"odash", 8861},
+	{(const unsigned char*)"clubsuit", 9827},
+	{(const unsigned char*)"bigcup", 8899},
+	{(const unsigned char*)"nwarhk", 10531},
+	{(const unsigned char*)"boxDL", 9559},
+	{(const unsigned char*)"ndash", 8211},
+	{NULL, 0},
+	{(const unsigned char*)"vdash", 8866},
+	{(const unsigned char*)"swarhk", 10534},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"blacklozenge", 10731},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleLeftRightArrow", 8660},
+	{NULL, 0},
+	{(const unsigned char*)"naturals", 8469},
+	{(const unsigned char*)"incare", 8453},
+	{NULL, 0},
+	{(const unsigned char*)"RightUpDownVector", 10575},
+	{NULL, 0},
+	{(const unsigned char*)"zwnj", 8204},
+	{(const unsigned char*)"nprec", 8832},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"circledast", 8859},
+	{NULL, 0},
+	{(const unsigned char*)"heartsuit", 9829},
+	{(const unsigned char*)"esdot", 8784},
+	{(const unsigned char*)"bigtriangledown", 9661},
+	{(const unsigned char*)"Uparrow", 8657},
+	{(const unsigned char*)"gsdot", 8919},
+	{(const unsigned char*)"Coproduct", 8720},
+	{NULL, 0},
+	{(const unsigned char*)"circledcirc", 8858},
+	{(const unsigned char*)"oint", 8750},
+	{(const unsigned char*)"qint", 10764},
+	{NULL, 0},
+	{(const unsigned char*)"ldsh", 8626},
+	{(const unsigned char*)"trade", 8482},
+	{(const unsigned char*)"lrhar2", 8651},
+	{(const unsigned char*)"larrhk", 8617},
+	{(const unsigned char*)"tint", 8749},
+	{NULL, 0},
+	{(const unsigned char*)"rdsh", 8627},
+	{(const unsigned char*)"psgr", 968},
+	{(const unsigned char*)"rarrhk", 8618},
+	{(const unsigned char*)"Psi", 936},
+	{NULL, 0},
+	{(const unsigned char*)"larrsim", 10611},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Epsilon", 917},
+	{NULL, 0},
+	{(const unsigned char*)"rarrsim", 10612},
+	{(const unsigned char*)"male", 9794},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"uparrow", 8593},
+	{(const unsigned char*)"Scaron", 352},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Upsilon", 933},
+	{NULL, 0},
+	{(const unsigned char*)"hearts", 9829},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"eqsim", 8770},
+	{(const unsigned char*)"Sigma", 931},
+	{(const unsigned char*)"Or", 10836},
+	{(const unsigned char*)"UpArrowDownArrow", 8645},
+	{(const unsigned char*)"twixt", 8812},
+	{(const unsigned char*)"psi", 968},
+	{NULL, 0},
+	{(const unsigned char*)"nabla", 8711},
+	{(const unsigned char*)"bowtie", 8904},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"epsilon", 949},
+	{NULL, 0},
+	{(const unsigned char*)"GreaterSlantEqual", 10878},
+	{(const unsigned char*)"NotLeftTriangleEqual", 8940},
+	{(const unsigned char*)"apacir", 10863},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"upharpoonright", 8638},
+	{NULL, 0},
+	{(const unsigned char*)"scaron", 353},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"af", 8289},
+	{(const unsigned char*)"upsilon", 965},
+	{(const unsigned char*)"TildeEqual", 8771},
+	{NULL, 0},
+	{(const unsigned char*)"Lambda", 923},
+	{(const unsigned char*)"neArr", 8663},
+	{(const unsigned char*)"sigma", 963},
+	{(const unsigned char*)"ETH", 208},
+	{(const unsigned char*)"leftthreetimes", 8907},
+	{(const unsigned char*)"seArr", 8664},
+	{(const unsigned char*)"thicksim", 8764},
+	{(const unsigned char*)"bigcap", 8898},
+	{(const unsigned char*)"ang", 8736},
+	{(const unsigned char*)"ldca", 10550},
+	{(const unsigned char*)"rdca", 10551},
+	{(const unsigned char*)"wr", 8768},
+	{NULL, 0},
+	{(const unsigned char*)"or", 8744},
+	{(const unsigned char*)"pr", 8826},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"triangleq", 8796},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gtrsim", 8819},
+	{(const unsigned char*)"looparrowleft", 8619},
+	{(const unsigned char*)"LongRightArrow", 10230},
+	{(const unsigned char*)"nis", 8956},
+	{(const unsigned char*)"Aring", 197},
+	{(const unsigned char*)"LeftDownVectorBar", 10585},
+	{(const unsigned char*)"NotTildeEqual", 8772},
+	{(const unsigned char*)"lambda", 955},
+	{(const unsigned char*)"larrlp", 8619},
+	{(const unsigned char*)"leftharpoondown", 8637},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sup2", 178},
+	{NULL, 0},
+	{(const unsigned char*)"rarrlp", 8620},
+	{(const unsigned char*)"SmallCircle", 8728},
+	{(const unsigned char*)"bNot", 10989},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"aleph", 8501},
+	{(const unsigned char*)"blacktriangle", 9652},
+	{NULL, 0},
+	{(const unsigned char*)"circleddash", 8861},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rhov", 1009},
+	{NULL, 0},
+	{(const unsigned char*)"UpTee", 8869},
+	{(const unsigned char*)"die", 168},
+	{(const unsigned char*)"bump", 8782},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"epar", 8917},
+	{(const unsigned char*)"gnap", 10890},
+	{(const unsigned char*)"RightFloor", 8971},
+	{(const unsigned char*)"aring", 229},
+	{NULL, 0},
+	{(const unsigned char*)"lnap", 10889},
+	{(const unsigned char*)"approx", 8776},
+	{(const unsigned char*)"larrbfs", 10527},
+	{(const unsigned char*)"lpar", 40},
+	{(const unsigned char*)"npar", 8742},
+	{(const unsigned char*)"gEl", 10892},
+	{(const unsigned char*)"boxVl", 9570},
+	{(const unsigned char*)"eqcolon", 8789},
+	{(const unsigned char*)"rarrbfs", 10528},
+	{(const unsigned char*)"rpar", 41},
+	{(const unsigned char*)"spar", 8741},
+	{(const unsigned char*)"thksim", 8764},
+	{NULL, 0},
+	{(const unsigned char*)"RightDownVectorBar", 10581},
+	{NULL, 0},
+	{(const unsigned char*)"para", 182},
+	{(const unsigned char*)"thkap", 8776},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Superset", 8835},
+	{NULL, 0},
+	{(const unsigned char*)"ddarr", 8650},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Gamma", 915},
+	{(const unsigned char*)"frac15", 8533},
+	{(const unsigned char*)"kappav", 1008},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"udarr", 8645},
+	{(const unsigned char*)"Therefore", 8756},
+	{(const unsigned char*)"hairsp", 8202},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CircleMinus", 8854},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ordf", 170},
+	{(const unsigned char*)"VerticalTilde", 8768},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftVectorBar", 10578},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"UnderBracket", 9141},
+	{NULL, 0},
+	{(const unsigned char*)"gamma", 947},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleDot", 168},
+	{(const unsigned char*)"lceil", 8968},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"curlyeqprec", 8926},
+	{(const unsigned char*)"varnothing", 8709},
+	{(const unsigned char*)"nhpar", 10994},
+	{(const unsigned char*)"therefore", 8756},
+	{(const unsigned char*)"dlcrop", 8973},
+	{(const unsigned char*)"rceil", 8969},
+	{(const unsigned char*)"leftleftarrows", 8647},
+	{(const unsigned char*)"vangrt", 10652},
+	{NULL, 0},
+	{(const unsigned char*)"lrm", 8206},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"curvearrowright", 8631},
+	{(const unsigned char*)"thetas", 952},
+	{(const unsigned char*)"PartialD", 8706},
+	{(const unsigned char*)"nVDash", 8879},
+	{(const unsigned char*)"wedgeq", 8793},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ulcrop", 8975},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"zigrarr", 8669},
+	{(const unsigned char*)"lozf", 10731},
+	{(const unsigned char*)"sung", 9834},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"iff", 8660},
+	{(const unsigned char*)"xnis", 8955},
+	{(const unsigned char*)"ring", 730},
+	{(const unsigned char*)"dfisht", 10623},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nltrie", 8940},
+	{(const unsigned char*)"llcorner", 8990},
+	{NULL, 0},
+	{(const unsigned char*)"lfisht", 10620},
+	{(const unsigned char*)"ctdot", 8943},
+	{(const unsigned char*)"dtdot", 8945},
+	{(const unsigned char*)"CloseCurlyQuote", 8217},
+	{(const unsigned char*)"par", 8741},
+	{NULL, 0},
+	{(const unsigned char*)"rfisht", 10621},
+	{(const unsigned char*)"ulcorner", 8988},
+	{NULL, 0},
+	{(const unsigned char*)"ufisht", 10622},
+	{NULL, 0},
+	{(const unsigned char*)"notinvc", 8950},
+	{(const unsigned char*)"orderof", 8500},
+	{NULL, 0},
+	{(const unsigned char*)"Rrightarrow", 8667},
+	{(const unsigned char*)"emsp", 8195},
+	{(const unsigned char*)"Chi", 935},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"utdot", 8944},
+	{(const unsigned char*)"bull", 8226},
+	{NULL, 0},
+	{(const unsigned char*)"khgr", 967},
+	{(const unsigned char*)"ominus", 8854},
+	{(const unsigned char*)"eqslantgtr", 10902},
+	{(const unsigned char*)"multimap", 8888},
+	{(const unsigned char*)"lowast", 8727},
+	{(const unsigned char*)"ohgr", 969},
+	{(const unsigned char*)"NotLess", 8814},
+	{(const unsigned char*)"alefsym", 8501},
+	{(const unsigned char*)"Phi", 934},
+	{(const unsigned char*)"thgr", 952},
+	{NULL, 0},
+	{(const unsigned char*)"isinsv", 8947},
+	{(const unsigned char*)"OHacgr", 911},
+	{NULL, 0},
+	{(const unsigned char*)"NotElement", 8713},
+	{(const unsigned char*)"nearrow", 8599},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleLeftTee", 10980},
+	{(const unsigned char*)"nrightarrow", 8603},
+	{NULL, 0},
+	{(const unsigned char*)"searrow", 8600},
+	{(const unsigned char*)"UpTeeArrow", 8613},
+	{NULL, 0},
+	{(const unsigned char*)"dbkarow", 10511},
+	{(const unsigned char*)"period", 46},
+	{(const unsigned char*)"Gg", 8921},
+	{(const unsigned char*)"circledR", 174},
+	{(const unsigned char*)"DownBreve", 785},
+	{NULL, 0},
+	{(const unsigned char*)"imagline", 8464},
+	{(const unsigned char*)"gneq", 10888},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"chi", 967},
+	{NULL, 0},
+	{(const unsigned char*)"lneq", 10887},
+	{(const unsigned char*)"phi", 981},
+	{NULL, 0},
+	{(const unsigned char*)"spadesuit", 9824},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"prsim", 8830},
+	{(const unsigned char*)"Atilde", 195},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"isinv", 8712},
+	{(const unsigned char*)"rlarr2", 8644},
+	{(const unsigned char*)"nrArr", 8655},
+	{NULL, 0},
+	{(const unsigned char*)"angst", 8491},
+	{NULL, 0},
+	{(const unsigned char*)"sdotb", 8865},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Ntilde", 209},
+	{(const unsigned char*)"gg", 8811},
+	{(const unsigned char*)"xrArr", 10233},
+	{(const unsigned char*)"DoubleLongLeftRightArrow", 10234},
+	{(const unsigned char*)"Otilde", 213},
+	{NULL, 0},
+	{(const unsigned char*)"lg", 8822},
+	{(const unsigned char*)"LeftArrowBar", 8676},
+	{(const unsigned char*)"thickapprox", 8776},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"precnsim", 8936},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Element", 8712},
+	{(const unsigned char*)"atilde", 227},
+	{NULL, 0},
+	{(const unsigned char*)"LessEqualGreater", 8922},
+	{NULL, 0},
+	{(const unsigned char*)"eqslantless", 10901},
+	{(const unsigned char*)"EmptyVerySmallSquare", 9643},
+	{(const unsigned char*)"phgr", 966},
+	{(const unsigned char*)"epsiv", 949},
+	{(const unsigned char*)"DoubleVerticalBar", 8741},
+	{(const unsigned char*)"LeftTriangle", 8882},
+	{NULL, 0},
+	{(const unsigned char*)"spades", 9824},
+	{(const unsigned char*)"frac23", 8532},
+	{(const unsigned char*)"ntilde", 241},
+	{(const unsigned char*)"otilde", 245},
+	{NULL, 0},
+	{(const unsigned char*)"sup1", 185},
+	{(const unsigned char*)"GreaterGreater", 10914},
+	{(const unsigned char*)"iecy", 1077},
+	{(const unsigned char*)"NestedGreaterGreater", 8811},
+	{(const unsigned char*)"lfloor", 8970},
+	{(const unsigned char*)"SquareSubsetEqual", 8849},
+	{NULL, 0},
+	{(const unsigned char*)"acute", 180},
+	{(const unsigned char*)"YAcy", 1071},
+	{NULL, 0},
+	{(const unsigned char*)"rfloor", 8971},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"quest", 63},
+	{NULL, 0},
+	{(const unsigned char*)"rlhar", 8652},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"geq", 8805},
+	{(const unsigned char*)"CloseCurlyDoubleQuote", 8221},
+	{(const unsigned char*)"lsquor", 8218},
+	{NULL, 0},
+	{(const unsigned char*)"tshcy", 1115},
+	{(const unsigned char*)"leq", 8804},
+	{(const unsigned char*)"boxUl", 9564},
+	{(const unsigned char*)"lurdshar", 10570},
+	{(const unsigned char*)"rsquor", 8217},
+	{(const unsigned char*)"VerticalSeparator", 10072},
+	{(const unsigned char*)"boxdR", 9554},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"scap", 10936},
+	{(const unsigned char*)"hkswarow", 10534},
+	{NULL, 0},
+	{(const unsigned char*)"CapitalDifferentialD", 8517},
+	{(const unsigned char*)"NoBreak", 8288},
+	{(const unsigned char*)"lthree", 8907},
+	{(const unsigned char*)"bigtriangleup", 9651},
+	{(const unsigned char*)"elinters", 65533},
+	{NULL, 0},
+	{(const unsigned char*)"forall", 8704},
+	{(const unsigned char*)"NotGreater", 8815},
+	{(const unsigned char*)"rthree", 8908},
+	{(const unsigned char*)"Jukcy", 1028},
+	{NULL, 0},
+	{(const unsigned char*)"Iukcy", 1030},
+	{NULL, 0},
+	{(const unsigned char*)"gtreqqless", 10892},
+	{NULL, 0},
+	{(const unsigned char*)"UnderParenthesis", 65078},
+	{NULL, 0},
+	{(const unsigned char*)"nearr", 8599},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"perp", 8869},
+	{(const unsigned char*)"bepsi", 1014},
+	{(const unsigned char*)"searr", 8600},
+	{(const unsigned char*)"iexcl", 161},
+	{(const unsigned char*)"LeftArrow", 8592},
+	{(const unsigned char*)"NegativeMediumSpace", 8203},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ast", 42},
+	{NULL, 0},
+	{(const unsigned char*)"lAarr", 8666},
+	{(const unsigned char*)"DownRightVectorBar", 10583},
+	{(const unsigned char*)"cuvee", 8910},
+	{NULL, 0},
+	{(const unsigned char*)"iukcy", 1110},
+	{(const unsigned char*)"jukcy", 1108},
+	{(const unsigned char*)"latail", 10521},
+	{(const unsigned char*)"disin", 8946},
+	{NULL, 0},
+	{(const unsigned char*)"rAarr", 8667},
+	{(const unsigned char*)"angsph", 8738},
+	{NULL, 0},
+	{(const unsigned char*)"InvisibleComma", 8291},
+	{(const unsigned char*)"ratail", 10522},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"supnE", 10956},
+	{(const unsigned char*)"ngt", 8815},
+	{(const unsigned char*)"order", 8500},
+	{(const unsigned char*)"divide", 247},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"colon", 58},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CirclePlus", 8853},
+	{(const unsigned char*)"frac18", 8539},
+	{(const unsigned char*)"nsup", 8837},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"intprod", 10812},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"And", 10835},
+	{NULL, 0},
+	{(const unsigned char*)"Cup", 8915},
+	{NULL, 0},
+	{(const unsigned char*)"nsimeq", 8772},
+	{NULL, 0},
+	{(const unsigned char*)"subnE", 10955},
+	{NULL, 0},
+	{(const unsigned char*)"SHCHcy", 1065},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LessLess", 10913},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rightarrowtail", 8611},
+	{(const unsigned char*)"EEgr", 919},
+	{(const unsigned char*)"Sup", 8913},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"simeq", 8771},
+	{(const unsigned char*)"leftharpoonup", 8636},
+	{NULL, 0},
+	{(const unsigned char*)"boxhd", 9516},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"and", 8743},
+	{(const unsigned char*)"Cedilla", 184},
+	{(const unsigned char*)"cup", 8746},
+	{NULL, 0},
+	{(const unsigned char*)"ensp", 8194},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gimel", 8503},
+	{NULL, 0},
+	{(const unsigned char*)"straightphi", 981},
+	{(const unsigned char*)"nbsp", 160},
+	{(const unsigned char*)"NotLessGreater", 8824},
+	{(const unsigned char*)"thetav", 977},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sup", 8835},
+	{(const unsigned char*)"lsqb", 91},
+	{NULL, 0},
+	{(const unsigned char*)"check", 10003},
+	{(const unsigned char*)"Gt", 8811},
+	{(const unsigned char*)"boxv", 9474},
+	{(const unsigned char*)"rsqb", 93},
+	{(const unsigned char*)"Implies", 8658},
+	{(const unsigned char*)"shortparallel", 8741},
+	{(const unsigned char*)"Lt", 8810},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Sub", 8912},
+	{NULL, 0},
+	{(const unsigned char*)"HARDcy", 1066},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"thorn", 254},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxvr", 9500},
+	{(const unsigned char*)"DD", 8517},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nVdash", 8878},
+	{(const unsigned char*)"angrt", 8735},
+	{(const unsigned char*)"gt", 62},
+	{(const unsigned char*)"trianglerighteq", 8885},
+	{(const unsigned char*)"sub", 8834},
+	{(const unsigned char*)"it", 8290},
+	{NULL, 0},
+	{(const unsigned char*)"lt", 60},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"cudarrr", 10549},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DZcy", 1039},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"seswar", 10537},
+	{(const unsigned char*)"boxhU", 9576},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"precnapprox", 10937},
+	{NULL, 0},
+	{(const unsigned char*)"fallingdotseq", 8786},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"vartheta", 977},
+	{(const unsigned char*)"digamma", 989},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Omicron", 927},
+	{(const unsigned char*)"oror", 10838},
+	{NULL, 0},
+	{(const unsigned char*)"DownLeftRightVector", 10576},
+	{(const unsigned char*)"NonBreakingSpace", 160},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"NotVerticalBar", 8740},
+	{NULL, 0},
+	{(const unsigned char*)"boxvh", 9532},
+	{(const unsigned char*)"smile", 8995},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Bumpeq", 8782},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Proportion", 8759},
+	{(const unsigned char*)"eDot", 8785},
+	{NULL, 0},
+	{(const unsigned char*)"numsp", 8199},
+	{NULL, 0},
+	{(const unsigned char*)"ShortLeftArrow", 8592},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"omicron", 959},
+	{(const unsigned char*)"realpart", 8476},
+	{NULL, 0},
+	{(const unsigned char*)"HumpEqual", 8783},
+	{(const unsigned char*)"RightDoubleBracket", 12315},
+	{NULL, 0},
+	{(const unsigned char*)"lhard", 8637},
+	{NULL, 0},
+	{(const unsigned char*)"Union", 8899},
+	{(const unsigned char*)"rhard", 8641},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"topcir", 10993},
+	{NULL, 0},
+	{(const unsigned char*)"Copf", 8450},
+	{(const unsigned char*)"bumpeq", 8783},
+	{(const unsigned char*)"ntrianglelefteq", 8940},
+	{(const unsigned char*)"lsquo", 8216},
+	{(const unsigned char*)"drarr", 8600},
+	{(const unsigned char*)"erarr", 10609},
+	{(const unsigned char*)"crarr", 8629},
+	{NULL, 0},
+	{(const unsigned char*)"Hopf", 8461},
+	{(const unsigned char*)"rsquo", 8217},
+	{NULL, 0},
+	{(const unsigned char*)"Nopf", 8469},
+	{(const unsigned char*)"lrarr", 8646},
+	{(const unsigned char*)"Uarrocir", 10569},
+	{(const unsigned char*)"nrarr", 8603},
+	{(const unsigned char*)"backcong", 8780},
+	{(const unsigned char*)"orarr", 8635},
+	{(const unsigned char*)"RBarr", 10512},
+	{(const unsigned char*)"rrarr", 8649},
+	{(const unsigned char*)"srarr", 8594},
+	{(const unsigned char*)"Qopf", 8474},
+	{(const unsigned char*)"Ropf", 8477},
+	{(const unsigned char*)"trianglelefteq", 8884},
+	{(const unsigned char*)"Popf", 8473},
+	{(const unsigned char*)"xrarr", 10230},
+	{NULL, 0},
+	{(const unsigned char*)"Zopf", 8484},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CupCap", 8781},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"comma", 44},
+	{(const unsigned char*)"Acy", 1040},
+	{(const unsigned char*)"Bcy", 1041},
+	{(const unsigned char*)"lBarr", 10510},
+	{(const unsigned char*)"HilbertSpace", 8459},
+	{(const unsigned char*)"Ecy", 1069},
+	{(const unsigned char*)"Fcy", 1060},
+	{(const unsigned char*)"Gcy", 1043},
+	{(const unsigned char*)"rBarr", 10511},
+	{(const unsigned char*)"Icy", 1048},
+	{(const unsigned char*)"Jcy", 1049},
+	{(const unsigned char*)"Kcy", 1050},
+	{(const unsigned char*)"Lcy", 1051},
+	{(const unsigned char*)"aelig", 230},
+	{(const unsigned char*)"Mcy", 1052},
+	{(const unsigned char*)"Ocy", 1054},
+	{(const unsigned char*)"Pcy", 1055},
+	{(const unsigned char*)"Ncy", 1053},
+	{(const unsigned char*)"Rcy", 1056},
+	{(const unsigned char*)"Scy", 1057},
+	{(const unsigned char*)"ShortUpArrow", 8593},
+	{(const unsigned char*)"Ucy", 1059},
+	{(const unsigned char*)"Vcy", 1042},
+	{(const unsigned char*)"Tcy", 1058},
+	{(const unsigned char*)"DiacriticalDoubleAcute", 733},
+	{(const unsigned char*)"Alpha", 913},
+	{(const unsigned char*)"Ycy", 1067},
+	{(const unsigned char*)"Zcy", 1047},
+	{(const unsigned char*)"nmid", 8740},
+	{(const unsigned char*)"NotSubsetEqual", 8840},
+	{(const unsigned char*)"ntrianglerighteq", 8941},
+	{(const unsigned char*)"straightepsilon", 1013},
+	{(const unsigned char*)"ddotseq", 10871},
+	{(const unsigned char*)"acy", 1072},
+	{(const unsigned char*)"bcy", 1073},
+	{NULL, 0},
+	{(const unsigned char*)"dcy", 1076},
+	{(const unsigned char*)"ecy", 1101},
+	{(const unsigned char*)"gnapprox", 10890},
+	{(const unsigned char*)"fcy", 1092},
+	{(const unsigned char*)"Dcy", 1044},
+	{(const unsigned char*)"icy", 1080},
+	{(const unsigned char*)"gcy", 1075},
+	{(const unsigned char*)"lnapprox", 10889},
+	{(const unsigned char*)"TildeFullEqual", 8773},
+	{(const unsigned char*)"jcy", 1081},
+	{(const unsigned char*)"kcy", 1082},
+	{(const unsigned char*)"lcy", 1083},
+	{(const unsigned char*)"ReverseUpEquilibrium", 10607},
+	{(const unsigned char*)"ncy", 1085},
+	{(const unsigned char*)"ocy", 1086},
+	{(const unsigned char*)"ocir", 8858},
+	{(const unsigned char*)"scy", 1089},
+	{(const unsigned char*)"rcy", 1088},
+	{(const unsigned char*)"pcy", 1087},
+	{(const unsigned char*)"mcy", 1084},
+	{(const unsigned char*)"ucy", 1091},
+	{(const unsigned char*)"alpha", 945},
+	{(const unsigned char*)"DoubleContourIntegral", 8751},
+	{(const unsigned char*)"zcy", 1079},
+	{(const unsigned char*)"nshortmid", 8740},
+	{(const unsigned char*)"ohm", 8486},
+	{(const unsigned char*)"tcy", 1090},
+	{(const unsigned char*)"ycy", 1099},
+	{(const unsigned char*)"vcy", 1074},
+	{(const unsigned char*)"sqsub", 8847},
+	{(const unsigned char*)"Udigr", 939},
+	{(const unsigned char*)"DownLeftTeeVector", 10590},
+	{(const unsigned char*)"udigr", 971},
+	{(const unsigned char*)"ecir", 8790},
+	{(const unsigned char*)"cularrp", 10557},
+	{(const unsigned char*)"idigr", 970},
+	{(const unsigned char*)"smid", 8739},
+	{(const unsigned char*)"Idigr", 938},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleLongLeftArrow", 10232},
+	{NULL, 0},
+	{(const unsigned char*)"SquareSupersetEqual", 8850},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"FilledSmallSquare", 9724},
+	{(const unsigned char*)"oelig", 339},
+	{(const unsigned char*)"NotGreaterLess", 8825},
+	{(const unsigned char*)"b.Gammad", 988},
+	{NULL, 0},
+	{(const unsigned char*)"rarrap", 10613},
+	{NULL, 0},
+	{(const unsigned char*)"cylcty", 9005},
+	{(const unsigned char*)"ContourIntegral", 8750},
+	{(const unsigned char*)"Intersection", 8898},
+	{(const unsigned char*)"acd", 8767},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"fltns", 9649},
+	{(const unsigned char*)"Lleftarrow", 8666},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"NotSupersetEqual", 8841},
+	{NULL, 0},
+	{(const unsigned char*)"nvinfin", 10718},
+	{(const unsigned char*)"Acirc", 194},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"circlearrowleft", 8634},
+	{(const unsigned char*)"Ecirc", 202},
+	{(const unsigned char*)"Mu", 924},
+	{(const unsigned char*)"Nu", 925},
+	{(const unsigned char*)"complexes", 8450},
+	{(const unsigned char*)"Icirc", 206},
+	{NULL, 0},
+	{(const unsigned char*)"NotLeftTriangle", 8938},
+	{(const unsigned char*)"dotsquare", 8865},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Ocirc", 212},
+	{(const unsigned char*)"swnwar", 10538},
+	{(const unsigned char*)"nsucc", 8833},
+	{NULL, 0},
+	{(const unsigned char*)"Pi", 928},
+	{NULL, 0},
+	{(const unsigned char*)"Ucirc", 219},
+	{(const unsigned char*)"squ", 9633},
+	{(const unsigned char*)"boxur", 9492},
+	{(const unsigned char*)"Xi", 926},
+	{(const unsigned char*)"there4", 8756},
+	{(const unsigned char*)"LeftRightVector", 10574},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nleftarrow", 8602},
+	{(const unsigned char*)"NotSquareSubsetEqual", 8930},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"acirc", 226},
+	{(const unsigned char*)"leftrightharpoons", 8651},
+	{(const unsigned char*)"Omega", 937},
+	{(const unsigned char*)"Aacgr", 902},
+	{(const unsigned char*)"boxHD", 9574},
+	{(const unsigned char*)"ecirc", 234},
+	{(const unsigned char*)"nu", 957},
+	{(const unsigned char*)"nhArr", 8654},
+	{(const unsigned char*)"Mellintrf", 8499},
+	{(const unsigned char*)"icirc", 238},
+	{(const unsigned char*)"succ", 8827},
+	{(const unsigned char*)"mu", 956},
+	{NULL, 0},
+	{(const unsigned char*)"ni", 8715},
+	{(const unsigned char*)"ocirc", 244},
+	{(const unsigned char*)"pi", 960},
+	{(const unsigned char*)"DiacriticalAcute", 180},
+	{(const unsigned char*)"xhArr", 10234},
+	{(const unsigned char*)"curlyvee", 8910},
+	{(const unsigned char*)"deg", 176},
+	{(const unsigned char*)"ucirc", 251},
+	{(const unsigned char*)"yen", 165},
+	{NULL, 0},
+	{(const unsigned char*)"xi", 958},
+	{(const unsigned char*)"xcirc", 9711},
+	{(const unsigned char*)"IOcy", 1025},
+	{(const unsigned char*)"els", 10901},
+	{(const unsigned char*)"gE", 8807},
+	{(const unsigned char*)"leg", 8922},
+	{(const unsigned char*)"Iacgr", 906},
+	{(const unsigned char*)"LeftTeeArrow", 8612},
+	{(const unsigned char*)"dscy", 1109},
+	{(const unsigned char*)"SucceedsSlantEqual", 8829},
+	{(const unsigned char*)"fpartint", 10765},
+	{(const unsigned char*)"omega", 969},
+	{(const unsigned char*)"frac34", 190},
+	{(const unsigned char*)"reg", 174},
+	{(const unsigned char*)"ShortDownArrow", 8595},
+	{(const unsigned char*)"quot", 34},
+	{(const unsigned char*)"ell", 8467},
+	{(const unsigned char*)"circlearrowright", 8635},
+	{(const unsigned char*)"inodot", 305},
+	{(const unsigned char*)"xdtri", 9661},
+	{(const unsigned char*)"iacgr", 943},
+	{(const unsigned char*)"imagpart", 8465},
+	{(const unsigned char*)"ldrdhar", 10599},
+	{(const unsigned char*)"tscy", 1094},
+	{(const unsigned char*)"jnodot", 106},
+	{(const unsigned char*)"colone", 8788},
+	{(const unsigned char*)"Eacgr", 904},
+	{(const unsigned char*)"blk34", 9619},
+	{(const unsigned char*)"eacgr", 941},
+	{(const unsigned char*)"LongLeftArrow", 10229},
+	{(const unsigned char*)"lE", 8806},
+	{(const unsigned char*)"nsmid", 8740},
+	{(const unsigned char*)"uacgr", 973},
+	{(const unsigned char*)"boxVR", 9568},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Oacgr", 908},
+	{(const unsigned char*)"aacgr", 940},
+	{(const unsigned char*)"oacgr", 972},
+	{(const unsigned char*)"luruhar", 10598},
+	{(const unsigned char*)"ii", 8520},
+	{NULL, 0},
+	{(const unsigned char*)"telrec", 8981},
+	{NULL, 0},
+	{(const unsigned char*)"DDotrahd", 10513},
+	{(const unsigned char*)"nle", 8816},
+	{(const unsigned char*)"gtrless", 8823},
+	{NULL, 0},
+	{(const unsigned char*)"midcir", 10992},
+	{(const unsigned char*)"DownArrowBar", 10515},
+	{NULL, 0},
+	{(const unsigned char*)"semi", 59},
+	{(const unsigned char*)"Uacgr", 910},
+	{(const unsigned char*)"lbrace", 123},
+	{(const unsigned char*)"phmmat", 8499},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rbrace", 125},
+	{(const unsigned char*)"NotCongruent", 8802},
+	{NULL, 0},
+	{(const unsigned char*)"shchcy", 1097},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"simdot", 10858},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"cirmid", 10991},
+	{NULL, 0},
+	{(const unsigned char*)"SubsetEqual", 8838},
+	{(const unsigned char*)"female", 9792},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nsc", 8833},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxVH", 9580},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ldrushar", 10571},
+	{(const unsigned char*)"triangleright", 9657},
+	{(const unsigned char*)"gneqq", 8809},
+	{NULL, 0},
+	{(const unsigned char*)"DownArrow", 8595},
+	{NULL, 0},
+	{(const unsigned char*)"backsim", 8765},
+	{(const unsigned char*)"lneqq", 8808},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Sum", 8721},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"fflig", 64256},
+	{NULL, 0},
+	{(const unsigned char*)"hardcy", 1098},
+	{(const unsigned char*)"nsub", 8836},
+	{NULL, 0},
+	{(const unsigned char*)"napprox", 8777},
+	{(const unsigned char*)"caret", 8257},
+	{NULL, 0},
+	{(const unsigned char*)"succneqq", 10934},
+	{(const unsigned char*)"frac13", 8531},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"num", 35},
+	{(const unsigned char*)"emsp14", 8197},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sum", 8721},
+	{NULL, 0},
+	{(const unsigned char*)"Cconint", 8752},
+	{NULL, 0},
+	{(const unsigned char*)"blacktriangleright", 9656},
+	{NULL, 0},
+	{(const unsigned char*)"SupersetEqual", 8839},
+	{(const unsigned char*)"sim", 8764},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftFloor", 8970},
+	{NULL, 0},
+	{(const unsigned char*)"RightTriangleEqual", 8885},
+	{NULL, 0},
+	{(const unsigned char*)"boxDr", 9555},
+	{NULL, 0},
+	{(const unsigned char*)"plus", 43},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"phiv", 966},
+	{NULL, 0},
+	{(const unsigned char*)"npr", 8832},
+	{(const unsigned char*)"RightCeiling", 8969},
+	{(const unsigned char*)"phone", 9742},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"mnplus", 8723},
+	{NULL, 0},
+	{(const unsigned char*)"vDash", 8872},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"isindot", 8949},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"PSgr", 936},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ntriangleleft", 8938},
+	{(const unsigned char*)"image", 8465},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxh", 9472},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightDownVector", 8642},
+	{(const unsigned char*)"scpolint", 10771},
+	{(const unsigned char*)"boxdL", 9557},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightUpTeeVector", 10588},
+	{NULL, 0},
+	{(const unsigned char*)"TSHcy", 1035},
+	{(const unsigned char*)"longmapsto", 10236},
+	{(const unsigned char*)"doublebarwedge", 8966},
+	{(const unsigned char*)"frasl", 8260},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleLongRightArrow", 10233},
+	{(const unsigned char*)"gnE", 8809},
+	{NULL, 0},
+	{(const unsigned char*)"lnE", 8808},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"exponentiale", 8519},
+	{NULL, 0},
+	{(const unsigned char*)"larrfs", 10525},
+	{(const unsigned char*)"NotDoubleVerticalBar", 8742},
+	{NULL, 0},
+	{(const unsigned char*)"curlywedge", 8911},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rarrfs", 10526},
+	{(const unsigned char*)"quatint", 10774},
+	{NULL, 0},
+	{(const unsigned char*)"frac58", 8541},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gtreqless", 8923},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"PrecedesSlantEqual", 8828},
+	{NULL, 0},
+	{(const unsigned char*)"DotEqual", 8784},
+	{(const unsigned char*)"iquest", 191},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"NotEqual", 8800},
+	{NULL, 0},
+	{(const unsigned char*)"barwedge", 8965},
+	{(const unsigned char*)"b.gammad", 989},
+	{NULL, 0},
+	{(const unsigned char*)"block", 9608},
+	{NULL, 0},
+	{(const unsigned char*)"strns", 175},
+	{NULL, 0},
+	{(const unsigned char*)"prod", 8719},
+	{(const unsigned char*)"cupre", 8828},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"SquareUnion", 8852},
+	{(const unsigned char*)"Auml", 196},
+	{NULL, 0},
+	{(const unsigned char*)"upuparrows", 8648},
+	{NULL, 0},
+	{(const unsigned char*)"Euml", 203},
+	{(const unsigned char*)"HorizontalLine", 9472},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Iuml", 207},
+	{(const unsigned char*)"nvrArr", 10499},
+	{(const unsigned char*)"bullet", 8226},
+	{(const unsigned char*)"ClockwiseContourIntegral", 8754},
+	{NULL, 0},
+	{(const unsigned char*)"prop", 8733},
+	{(const unsigned char*)"Ouml", 214},
+	{NULL, 0},
+	{(const unsigned char*)"chcy", 1095},
+	{(const unsigned char*)"quaternions", 8461},
+	{(const unsigned char*)"beth", 8502},
+	{(const unsigned char*)"macr", 175},
+	{(const unsigned char*)"Uuml", 220},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"khcy", 1093},
+	{(const unsigned char*)"Star", 8902},
+	{(const unsigned char*)"copysr", 8471},
+	{(const unsigned char*)"Yuml", 376},
+	{NULL, 0},
+	{(const unsigned char*)"curren", 164},
+	{NULL, 0},
+	{(const unsigned char*)"Square", 9633},
+	{(const unsigned char*)"shcy", 1096},
+	{(const unsigned char*)"auml", 228},
+	{NULL, 0},
+	{(const unsigned char*)"boxUR", 9562},
+	{(const unsigned char*)"uml", 168},
+	{(const unsigned char*)"euml", 235},
+	{NULL, 0},
+	{(const unsigned char*)"zhcy", 1078},
+	{(const unsigned char*)"iuml", 239},
+	{NULL, 0},
+	{(const unsigned char*)"Backslash", 8726},
+	{(const unsigned char*)"square", 9633},
+	{NULL, 0},
+	{(const unsigned char*)"sqsube", 8849},
+	{(const unsigned char*)"ouml", 246},
+	{NULL, 0},
+	{(const unsigned char*)"Tilde", 8764},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"prap", 10935},
+	{(const unsigned char*)"uuml", 252},
+	{(const unsigned char*)"cire", 8791},
+	{NULL, 0},
+	{(const unsigned char*)"dzigrarr", 10239},
+	{(const unsigned char*)"yuml", 255},
+	{(const unsigned char*)"star", 9734},
+	{(const unsigned char*)"sqsubseteq", 8849},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"fork", 8916},
+	{(const unsigned char*)"supsetneqq", 10956},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleDownArrow", 8659},
+	{NULL, 0},
+	{(const unsigned char*)"dharr", 8642},
+	{(const unsigned char*)"lagran", 8466},
+	{NULL, 0},
+	{(const unsigned char*)"lrhard", 10605},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"downharpoonleft", 8643},
+	{(const unsigned char*)"tilde", 732},
+	{(const unsigned char*)"nharr", 8622},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"puncsp", 8200},
+	{(const unsigned char*)"uharr", 8638},
+	{(const unsigned char*)"boxHu", 9575},
+	{(const unsigned char*)"models", 8871},
+	{(const unsigned char*)"xharr", 10231},
+	{(const unsigned char*)"nparallel", 8742},
+	{NULL, 0},
+	{(const unsigned char*)"Proportional", 8733},
+	{NULL, 0},
+	{(const unsigned char*)"ltrif", 9666},
+	{NULL, 0},
+	{(const unsigned char*)"dtrif", 9662},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"subsetneqq", 10955},
+	{(const unsigned char*)"NotGreaterEqual", 8817},
+	{(const unsigned char*)"rtrif", 9656},
+	{NULL, 0},
+	{(const unsigned char*)"utrif", 9652},
+	{(const unsigned char*)"boxvl", 9508},
+	{(const unsigned char*)"curvearrowleft", 8630},
+	{(const unsigned char*)"lessapprox", 10885},
+	{(const unsigned char*)"scnE", 10934},
+	{(const unsigned char*)"thetasym", 977},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ExponentialE", 8519},
+	{(const unsigned char*)"andv", 10842},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"mapstodown", 8615},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DownLeftVector", 8637},
+	{(const unsigned char*)"rightharpoonup", 8640},
+	{(const unsigned char*)"mapsto", 8614},
+	{(const unsigned char*)"Lang", 12298},
+	{(const unsigned char*)"SquareSuperset", 8848},
+	{(const unsigned char*)"rightsquigarrow", 8605},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Rang", 12299},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"sigmav", 962},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"SquareIntersection", 8851},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"downharpoonright", 8642},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lang", 9001},
+	{(const unsigned char*)"compfn", 8728},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rang", 9002},
+	{NULL, 0},
+	{(const unsigned char*)"Leftrightarrow", 8660},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ReverseEquilibrium", 8651},
+	{NULL, 0},
+	{(const unsigned char*)"Rightarrow", 8658},
+	{(const unsigned char*)"planck", 8463},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"KHgr", 935},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"OHgr", 937},
+	{(const unsigned char*)"PHgr", 934},
+	{NULL, 0},
+	{(const unsigned char*)"sqsup", 8848},
+	{NULL, 0},
+	{(const unsigned char*)"THgr", 920},
+	{NULL, 0},
+	{(const unsigned char*)"rppolint", 10770},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"gtrapprox", 10886},
+	{(const unsigned char*)"LongLeftRightArrow", 10231},
+	{NULL, 0},
+	{(const unsigned char*)"iinfin", 10716},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"frac16", 8537},
+	{NULL, 0},
+	{(const unsigned char*)"leftrightarrow", 8596},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rightarrow", 8594},
+	{(const unsigned char*)"risingdotseq", 8787},
+	{NULL, 0},
+	{(const unsigned char*)"blacksquare", 9642},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DotDot", 8412},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"radic", 8730},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"nRightarrow", 8655},
+	{NULL, 0},
+	{(const unsigned char*)"reals", 8477},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"varphi", 966},
+	{NULL, 0},
+	{(const unsigned char*)"DownRightVector", 8641},
+	{(const unsigned char*)"Equal", 10869},
+	{(const unsigned char*)"NotCupCap", 8813},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"SucceedsTilde", 8831},
+	{NULL, 0},
+	{(const unsigned char*)"Succeeds", 8827},
+	{(const unsigned char*)"dotplus", 8724},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"notniva", 8716},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"looparrowright", 8620},
+	{(const unsigned char*)"ggg", 8921},
+	{(const unsigned char*)"EmptySmallSquare", 9723},
+	{NULL, 0},
+	{(const unsigned char*)"nrtri", 8939},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"oS", 9416},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"IEcy", 1045},
+	{NULL, 0},
+	{(const unsigned char*)"succeq", 10928},
+	{(const unsigned char*)"vrtri", 8883},
+	{(const unsigned char*)"DownTeeArrow", 8615},
+	{NULL, 0},
+	{(const unsigned char*)"frac45", 8536},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dblac", 733},
+	{NULL, 0},
+	{(const unsigned char*)"blk14", 9617},
+	{NULL, 0},
+	{(const unsigned char*)"lesseqqgtr", 10891},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"yucy", 1102},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"yicy", 1111},
+	{NULL, 0},
+	{(const unsigned char*)"gne", 10888},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"udhar", 10606},
+	{(const unsigned char*)"UnionPlus", 8846},
+	{(const unsigned char*)"blank", 9251},
+	{(const unsigned char*)"lne", 10887},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"NotTildeFullEqual", 8775},
+	{(const unsigned char*)"supE", 10950},
+	{NULL, 0},
+	{(const unsigned char*)"PlusMinus", 177},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"GreaterTilde", 8819},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"duarr", 8693},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"LeftDoubleBracket", 12314},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"CounterClockwiseContourIntegral", 8755},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"natural", 9838},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"uuarr", 8648},
+	{(const unsigned char*)"biguplus", 10756},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DownLeftVectorBar", 10582},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"subE", 10949},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"part", 8706},
+	{(const unsigned char*)"drcorn", 8991},
+	{(const unsigned char*)"horbar", 8213},
+	{(const unsigned char*)"sbsol", 65128},
+	{(const unsigned char*)"varrho", 1009},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"cudarrl", 10552},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"boxul", 9496},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"ordm", 186},
+	{NULL, 0},
+	{(const unsigned char*)"urcorn", 8989},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"dotminus", 8760},
+	{(const unsigned char*)"scnsim", 8937},
+	{(const unsigned char*)"andslope", 10840},
+	{(const unsigned char*)"Cfr", 8493},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rightthreetimes", 8908},
+	{(const unsigned char*)"Hfr", 8460},
+	{(const unsigned char*)"sqsubset", 8847},
+	{(const unsigned char*)"lAtail", 10523},
+	{(const unsigned char*)"rightleftharpoons", 8652},
+	{(const unsigned char*)"Ifr", 8465},
+	{(const unsigned char*)"infintie", 10717},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rAtail", 10524},
+	{(const unsigned char*)"scnap", 10938},
+	{(const unsigned char*)"lharul", 10602},
+	{(const unsigned char*)"Rfr", 8476},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"parallel", 8741},
+	{(const unsigned char*)"rharul", 10604},
+	{NULL, 0},
+	{(const unsigned char*)"Zfr", 8488},
+	{(const unsigned char*)"RuleDelayed", 10740},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"RightArrowLeftArrow", 8644},
+	{(const unsigned char*)"profsurf", 8979},
+	{(const unsigned char*)"nsupseteq", 8841},
+	{(const unsigned char*)"nearhk", 10532},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"triangledown", 9663},
+	{NULL, 0},
+	{(const unsigned char*)"searhk", 10533},
+	{(const unsigned char*)"empty", 8709},
+	{NULL, 0},
+	{(const unsigned char*)"DoubleUpArrow", 8657},
+	{(const unsigned char*)"checkmark", 10003},
+	{NULL, 0},
+	{(const unsigned char*)"succapprox", 10936},
+	{NULL, 0},
+	{(const unsigned char*)"Cap", 8914},
+	{(const unsigned char*)"RightTriangle", 8883},
+	{NULL, 0},
+	{(const unsigned char*)"tosa", 10537},
+	{(const unsigned char*)"RightUpVector", 8638},
+	{NULL, 0},
+	{(const unsigned char*)"boxVL", 9571},
+	{(const unsigned char*)"ecolon", 8789},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"Map", 10501},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"lbrack", 91},
+	{(const unsigned char*)"THORN", 222},
+	{(const unsigned char*)"DownArrowUpArrow", 8693},
+	{NULL, 0},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"rbrack", 93},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"DiacriticalTilde", 732},
+	{(const unsigned char*)"amp", 38},
+	{(const unsigned char*)"rlhar2", 8652},
+	{NULL, 0},
+	{(const unsigned char*)"bcong", 8780},
+	{NULL, 0},
+	{NULL, 0},
+	{(const unsigned char*)"exist", 8707},
+	{(const unsigned char*)"ord", 10845},
+	{NULL, 0},
+	{(const unsigned char*)"cap", 8745},
+	{(const unsigned char*)"eeacgr", 942},
+	{(const unsigned char*)"PrecedesTilde", 8830},
+	{(const unsigned char*)"divideontimes", 8903},
+	{(const unsigned char*)"Precedes", 8826},
+};
+const struct hashtable entities_htable = {
+	entities_htable_elements, 3079, 1643, 2463
+};

Added: test-suite/trunk/MultiSource/Applications/ClamAV/execs.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/execs.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/execs.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/execs.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,45 @@
+/*
+ *  Copyright (C) 2005 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __EXECS_H
+#define __EXECS_H
+
+#include "cltypes.h"
+#include <sys/types.h>
+
+struct cli_exe_section {
+    uint32_t rva;
+    uint32_t vsz;
+    uint32_t raw;
+    uint32_t rsz;
+    uint32_t chr;
+    uint32_t urva; /* PE - unaligned VirtualAddress */
+    uint32_t uvsz; /* PE - unaligned VirtualSize */
+    uint32_t uraw; /* PE - unaligned PointerToRawData */
+    uint32_t ursz; /* PE - unaligned SizeOfRawData */
+};
+
+struct cli_exe_info {
+    uint32_t ep;
+    uint16_t nsections;
+    off_t offset;
+    struct cli_exe_section *section;
+};
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/filetypes.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/filetypes.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/filetypes.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/filetypes.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,82 @@
+/*
+ *  Copyright (C) 2002 - 2005 Tomasz Kojm <tkojm at clamav.net>
+ *  With enhancements from Thomas Lamy <Thomas.Lamy at in-online.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __FILETYPES_H
+#define __FILETYPES_H
+
+#include <sys/types.h>
+
+#define MAGIC_BUFFER_SIZE 256
+#define CL_TYPENO 500
+#define MAX_EMBEDDED_OBJ 10
+
+typedef enum {
+    CL_TYPE_UNKNOWN_TEXT = CL_TYPENO,
+    CL_TYPE_UNKNOWN_DATA,
+    CL_TYPE_MSEXE,
+    CL_TYPE_ELF,
+    CL_TYPE_DATA,
+    CL_TYPE_POSIX_TAR,
+    CL_TYPE_OLD_TAR,
+    CL_TYPE_GZ,
+    CL_TYPE_ZIP,
+    CL_TYPE_BZ,
+    CL_TYPE_RAR,
+    CL_TYPE_ARJ,
+    CL_TYPE_MSSZDD,
+    CL_TYPE_MSOLE2,
+    CL_TYPE_MSCAB,
+    CL_TYPE_MSCHM,
+    CL_TYPE_SIS,
+    CL_TYPE_SCRENC,
+    CL_TYPE_GRAPHICS,
+    CL_TYPE_RIFF,
+    CL_TYPE_BINHEX,
+    CL_TYPE_TNEF,
+    CL_TYPE_CRYPTFF,
+    CL_TYPE_PDF,
+    CL_TYPE_UUENCODED,
+    CL_TYPE_PST,	/* Microsoft Outlook binary email folder (.pst file) */
+    CL_TYPE_HTML_UTF16,
+    CL_TYPE_RTF,
+
+    /* bigger numbers have higher priority (in o-t-f detection) */
+    CL_TYPE_HTML, /* on the fly */
+    CL_TYPE_MAIL,  /* magic + on the fly */
+    CL_TYPE_SFX, /* foo SFX marker */
+    CL_TYPE_ZIPSFX, /* on the fly */
+    CL_TYPE_RARSFX, /* on the fly */
+    CL_TYPE_CABSFX,
+    CL_TYPE_ARJSFX,
+    CL_TYPE_NULSFT, /* on the fly */
+    CL_TYPE_AUTOIT
+} cli_file_t;
+
+struct cli_matched_type {
+    cli_file_t type;
+    off_t offset;
+    unsigned short cnt;
+    struct cli_matched_type *next;
+};
+
+cli_file_t cli_filetype(const unsigned char *buf, size_t buflen);
+cli_file_t cli_filetype2(int desc, const struct cl_engine *engine);
+int cli_addtypesigs(struct cl_engine *engine);
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/fsg.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/fsg.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/fsg.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/fsg.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,31 @@
+/*
+ *  Copyright (C) 2004 aCaB <acab at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __FSG_H
+#define __FSG_H
+
+#include "cltypes.h"
+#include "execs.h"
+
+int unfsg_200(char *, char *, int, int, uint32_t, uint32_t, uint32_t, int);
+int unfsg_133(char *, char *, int , int, struct cli_exe_section *, int, uint32_t, uint32_t, int);
+
+#endif
+
+
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/getopt.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/getopt.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/getopt.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/getopt.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,180 @@
+/* Declarations for getopt.
+   Copyright (C) 1989,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument		(or 0) if the option does not take an argument,
+   required_argument	(or 1) if the option requires an argument,
+   optional_argument 	(or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if defined __STDC__ && __STDC__
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument		0
+# define required_argument	1
+# define optional_argument	2
+#endif	/* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if defined __STDC__ && __STDC__
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
+		        const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int __argc, char *const *__argv,
+			     const char *__shortopts,
+		             const struct option *__longopts, int *__longind,
+			     int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef	__cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */

Added: test-suite/trunk/MultiSource/Applications/ClamAV/global.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/global.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/global.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/global.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,35 @@
+/*
+ *  Copyright (C) 2002 - 2004 Tomasz Kojm <tkojm at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#ifndef __GLOBAL_H
+#define __GLOBAL_H
+
+struct s_info {
+    unsigned int sigs;		/* number of signatures */
+    unsigned int dirs;		/* number of scanned directories */
+    unsigned int files;		/* number of scanned files */
+    unsigned int ifiles;	/* number of infected files */
+    unsigned int notremoved;	/* number of not removed files (if --remove) */
+    unsigned int notmoved;	/* number of not moved files (if --move) */
+    unsigned long int blocks;	/* number of read 16kb blocks */
+};
+
+extern struct s_info info;
+extern short recursion, printinfected, bell;
+
+#endif

Added: test-suite/trunk/MultiSource/Applications/ClamAV/hashtab.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/hashtab.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/hashtab.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/hashtab.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,88 @@
+/*
+ *  HTML Entity & Encoding normalization.
+ *
+ *  Copyright (C) 2006 Török Edvin <edwin at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as 
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#include <stdio.h>
+#include <stddef.h>
+#ifndef _HASHTAB_H
+#define _HASHTAB_H
+
+typedef long element_data;
+
+/* define this for debugging/profiling purposes only, NOT in production/release code */
+#ifdef PROFILE_HASHTABLE
+
+
+typedef struct {
+	size_t calc_hash;
+	size_t found;
+	size_t find_req;
+	size_t found_tries;
+	size_t not_found;
+	size_t not_found_tries;
+	size_t grow_found;
+	size_t grow_found_tries;
+	size_t grow;
+	size_t update;
+	size_t update_tries;
+	size_t inserts;
+	size_t insert_tries;
+	size_t deleted_reuse;
+	size_t deleted_tries;
+	size_t deletes;
+	size_t clear;
+	size_t hash_exhausted;
+} PROFILE_STRUCT_;
+
+#define STRUCT_PROFILE PROFILE_STRUCT_ PROFILE_STRUCT;
+#else
+
+#define STRUCT_PROFILE
+
+#endif
+struct element 
+{
+	const unsigned char* key;
+	element_data data;
+};
+
+struct hashtable {
+	struct element* htable;
+	size_t capacity;
+	size_t used;
+	size_t maxfill;/* 80% */
+
+	STRUCT_PROFILE
+};
+
+
+
+int hashtab_generate_c(const struct hashtable *s,const char* name);
+struct element* hashtab_find(const struct hashtable *s,const unsigned char* key,const size_t len);
+int hashtab_init(struct hashtable *s,size_t capacity);
+int hashtab_insert(struct hashtable *s,const unsigned char* key,size_t len,element_data data);
+void hashtab_delete(struct hashtable *s,const unsigned char* key,const size_t len);
+void hashtab_clear(struct hashtable *s);
+
+int hashtab_load(FILE* in, struct hashtable *s);
+int hashtab_store(const struct hashtable *s,FILE* out);
+
+#endif
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/htmlnorm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/htmlnorm.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/htmlnorm.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/htmlnorm.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,46 @@
+/*
+ *  Copyright (C) 2004 Trog <trog at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+ 
+#ifndef __HTMLNORM_H
+#define __HTMLNORM_H
+
+typedef struct tag_arguments_tag
+{
+        int count;
+	int scanContents;
+        unsigned char **tag;
+        unsigned char **value;
+	struct blob   **contents; 
+} tag_arguments_t;
+
+typedef struct m_area_tag {
+	unsigned char *buffer;
+	off_t length;
+	off_t offset;
+} m_area_t;
+
+
+unsigned char *cli_readline(FILE *stream, m_area_t *m_area, unsigned int max_len);
+int html_normalise_mem(unsigned char *in_buff, off_t in_size, const char *dirname, tag_arguments_t *hrefs,const struct cli_dconf* dconf);
+int html_normalise_fd(int fd, const char *dirname, tag_arguments_t *hrefs,const struct cli_dconf* dconf);
+void html_tag_arg_free(tag_arguments_t *tags);
+int html_screnc_decode(int fd, const char *dirname);
+ 
+#endif
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/iana_tld.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/iana_tld.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/iana_tld.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/iana_tld.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,27 @@
+/*
+ *  Phishing module: iana tld list.
+ *
+ *  Copyright (C) 2006 Torok Edvin <edwintorok at gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as 
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ */
+
+#ifndef IANA_TLD_H
+#define IANA_TLD_H
+#define iana_tld "(A[CDEFGILMNOQRSTUWXZ]|B[ABDEFGHIJMNORSTVWYZ]|C[ACDFGHIKLMNORUVXYZ]|D[EJKMOZ]|E[CEGRSTU]|F[IJKMOR]|G[ABDEFGHILMNPQRSTUWY]|H[KMNRTU]|I[DELMNOQRST]|J[EMOP]|K[EGHIMNRWYZ]|L[ABCIKRSTUVY]|M[ACDGHKLMNOPQRSTUVWXYZ]|N[ACEFGILOPRUZ]|OM|P[AEFGHKLMNRSTWY]|QA|R[EOUW]|S[ABCDEGHIJKLMNORTUVYZ]|T[CDFGHJKLMNOPRTVWZ]|U[AGKMSYZ]|V[ACEGINU]|W[FS]|Y[ETU]|Z[AMW]|BIZ|CAT|COM|EDU|GOV|INT|MIL|NET|ORG|PRO|AERO|ARPA|COOP|INFO|JOBS|MOBI|NAME|MUSEUM)"
+#define iana_cctld "(a[dfilmoqrtuwxz]|b[bdeghijmorstwyz]|c[ahlmnosuy]|d[ejkmz]|e[cegrstu]|f[ijr]|g[abdeghilmnprtuwy]|h[nrtu]|i[delnqst]|j[emop]|k[eghimwz]|l[birstuv]|m[acglmnoqrstuvwxyz]|n[aegilopru]|om|p[aehkltwy]|qa|r[ow]|s[cdeginorz]|t[dghjklmnorvwz]|u[agyz]|v[enu]|ws|y[etu])"
+#endif
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/README
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/README?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/README (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/README Wed Jan 30 15:17:10 2008
@@ -0,0 +1,3 @@
+clam.exe is an extremely small (544 bytes!) MZ+PE executable that prints
+a nice message :-) You can use it to test attachment scanning in your ClamAV
+based mail scanner.

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v2.rar
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v2.rar?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v2.rar

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v3.rar
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v3.rar?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam-v3.rar

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.cab
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.cab?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.cab

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe.bz2
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe.bz2?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.exe.bz2

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.zip
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.zip?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clam.zip

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clamdoc.pdf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clamdoc.pdf?rev=46573&view=auto

==============================================================================
Binary file - no diff available.

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/clamdoc.pdf

------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,111 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid11825703}{\*\generator Micr
+osoft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min31}{\revtim\yr2006\mo11\dy19\hr19\min31}{\version1}{\edmins0}{\nofpages1}{\nofwords3}{\nofchars18}{\*\company -}{\nofcharsws20}{\vern24689}}
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot11825703\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11825703 {\object\objemb\objw855\objh765{\*\objclass Package}{\*\objdata 0105000002000000080000005061636b6167650000000000000000005b020000
+0200436c616d2e65786500443a5c727466735c636c616d2e657865000000030011000000443a5c727466735c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a00000000000000000000000000000000000000000000000000000000000000000000010000bb71104000
+33c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c010000080100000000000000000000000000000da100000f410000000000000000000000000000000000000000000004b4552
+4e454c33322e444c4c00004578697450726f63657373005553455233322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900040000000600000000000040100000001000004000000000004000001000000002000001
+0000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000000000000000c0000001050000050000000d0000004d45544146494c455049435400
+e4050000bbfaffff7c0e00000800e40545050000
+0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d6100006f070aa744f70700b8a4f377c1a4f3772030f577a7056613040000002d01000005000000090200000000050000000102ffffff00a5000000
+410bc600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c00000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc020000000001020222
+53797374656d0000a705661300000a0026008a0100000000ffffffffd0f70700040000002d010100030000000000}{\result {\insrsid11825703 {\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1508\pich1349\picwgoal855\pichgoal765\wmetafile8\bliptag-476490493\blipupi94{\*\blipuid e3995503256cfa9cb3be14e2d301ee38}0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461
+686f6d6100006f070aa744f70700b8a4f377c1a4f3772030f577a7056613040000002d01000005000000090200000000050000000102ffffff00a5000000410b
+c600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000
+ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+ffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000a705661300000a0026008a0100000000ffffffffd0f70700040000002d010100030000000000}}}}}{\insrsid11825703 
+
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc1.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,545 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid5398644\rsid11825703}
+{\*\generator Microsoft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min33}{\revtim\yr2006\mo11\dy19\hr19\min33}{\version2}{\edmins0}{\nofpages1}{\nofwords4}{\nofchars27}{\*\company -}{\nofcharsws30}
+{\vern24689}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot11825703\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid5398644 {\object\objemb\objsetsize\objw840\objh764{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000576f72642e446f63756d656e742e3800000000000000000000420000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff1000000003000000040000000500000006000000070000000800000009000000fefffffffeffffff0c0000000d0000000e0000000f00000012000000110000001d000000130000001e00000015000000160000001700000018000000190000001a0000001b0000001c000000fefffffffeff
+ffff1f000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff040000000609020000000000c0000000000000460000000000000000000000004032
+39d4000cc7010b0000008010000000000000440061007400610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000002000000001000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0002000100000003000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000d008000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000024000000710000000000000026020000440064000000000000000a000000000000000100000000005703fd02e803e80300000000000000000000000000000000000000000000000000000000000000000f0004f03e000000b2040af00800000001040000000a000023000bf00c0000000441
+01000000ff0100000800130022f106000000bf0300800080000010f00400000000000080320007f0940100000304d0187bf57f117cb8394a957eb39fe4ddff007001000001000000440000000000140060211bf068010000d0187bf57f117cb8394a957eb39fe4dd740e000000000000000000003800000032000000a048
+0800086907003601000000fe78da6364e0646060b6626760606250646300025620e66682b178988c182c186480acdf4c5fff3380c1044620c1c802d4119298919f9bc8c0b08e9dcb98e10f3bc38e259fcb0f02b182c1d7f2771c699c2c4085ba8c109338e1663232fdffff9f612990e5c87d8ca183410108410042f33068
+80d90c0c0e20b50c8c104ba1143a009934d0e0ff0039e23f1480e2cd91db8d210d67482a80035002a28d8761d881065a0288f907680390cd0792ffa90a46cd1f357fd4fc51f347cd1f359f3ee65317a0994febfa773f030379087fcb8472f3214e65c0c61812e6e341748b5f9ab60f873a00f5ca981819a12c3d46504790
+0b88155939189c731273f5522b521581bd40483f5080811dac6b0fb847c7c8c4a4145c595c929acbc000eaf38174aa317431c27a283dc07e21a41fc8c8c00cd6070086641bbe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a00
+00000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000feffffff25000000fefffffffefffffffeffffff29000000
+fefffffffeffffff2c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000feffffff3700000038000000390000003a0000003b0000003c000000feffffff3e0000003f0000004000000041000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86020f00120001009c000f00040000000000000000000400000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04
+000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d480904734809047448090400000000000000000000000000000000000044004140f2ffa10044000c0500000000000000001600440065006600610075006c007400200050006100720061006700720061007000
+6800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f603000002000b00000028006b40f4ffc10028000005000000000000000007004e006f00
+20004c00690073007400000002000c000000000000000000120000000600001000000100ffffffff000000001400000049c80030000000000000000001000000000000000000000000000007000600001208000005000000000600001208000006000000000600001208000007000000000000000e000000100000001200
+0000133a94ff95800f0000f038000000000006f01800000002040000020000000100000001000000010000000200000040001ef110000000ffff00000000ff0080808000f7000010000f0002f092000000100008f00800000001000000010400000f0003f0300000000f0004f028000000010009f0100000000000000000
+000000000000000000000002000af00800000000040000050000000f0004f04200000012000af00800000001040000000e000053000bf01e000000bf0100001000cb0100000000ff01000008000403090000003f0301000100000011f00400000001000000030000000400000008000000e50000000000000002000000ab
+1d5600f91e8a000c43b300ff40021000000000000000120000006000001000400000ffff01000000070055006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a
+0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a
+0020000000800800000000000000ff0100000000000041007200690061006c000000220004000100881800f0d0020000680100000000d99cab06dc9cab06000000000100030000000200000010000000010001000000040003100100000002000000100000000100010000000100000000000000210300f0100000000100
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000807a005b400b4008181123400000000000000000000000000001100000011000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000020000000000000000000032831100f0100008000000000000000000000000000000000000000000000000000000000008000000000000f0ff0f0100013f000000000000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f0c43b3000000
+0000320000000000000000000000000000000000ffff120000000000000001002000000000000000050065006400770069006e00050065006400770069006e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000100feff030a0000ffffffff0609020000000000c0000000000000461f0000004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b27100000000000000000000000000000000000000
+0000000000000000000203000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000020800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201020000000b000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000
+2600000006000000000000004f0062006a0065006300740050006f006f006c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000101ffffffffffffffff060000000000000000000000000000000000000000000000403239d4000cc701403239d4000c
+c7010000000000000000000000005f00310032003200350034003600390038003900370000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000101ffffffffffffffff080000000c00030000000000c00000000000004600000000403239d4000cc701403239d4
+000cc70100000000000000000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000
+000000000000270000001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010700000009000000ffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000028000000500000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffff0a000000ffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000002a000000060000000000000001004f006c006500310030004e0061007400690076006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000002b000000830200000000000057006f007200640044006f00630075006d0065006e007400000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200050000000c000000ffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000001400000032100000000000000100feff030a0000ffffffff0c00030000000000c000000000000046080000005061636b61676500080000005061636b61676500080000005061636b61676500f439b2710000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000800003000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0200000200436c616d2e65786500433a5c444f43554d457e315c656477696e5c44
+65736b746f705c636c616d2e657865000000030023000000433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a000000000000000000000000000000000000000000000000000000000000000000000100
+00bb7110400033c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c010000080100000000000000000000000000000da100000f41000000000000000000000000000000000000000
+0000004b45524e454c33322e444c4c00004578697450726f63657373005553455233322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900040000000600000000000040100000001000004000000000004000001000
+0000020000010000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000000000000000c00000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000feff0000050102000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d93000000068010000110000000100000090000000020000009800000003000000a400000004000000b000
+000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f8000000eca5c100716009040000f812bf000000000000100000000000060000120800000e00626a626a715071500000000000000000000000000000000000000904160032100000133a0100133a01001200000000000000
+000000000000000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a403000014000000
+0000000000000000b803000000000000dc03000000000000dc03000000000000dc03000000000000dc0300000c000000e80300000c000000b80300000000000072050000b600000000040000160000001604000000000000160400000000000016040000000000001604000000000000f104000000000000f10400000000
+0000f104000000000000150500000200000017050000000000001705000000000000170500000000000017050000000000001705000000000000170500000000000028060000680200009008000040000000170500001500000000000000000000000000000000000000a403000000000000f10400000000000000000000
+000000000000000000000000f104000000000000f104000000000000f104000000000000f10400000000000017050000000000000000000000000000a403000000000000a4030000000000001604000000000000000000000000000016040000db0000002c05000016000000f104000000000000f104000000000000f104
+000000000000f104000000000000a4030000000000001604000000000000a403000000000000160400000000000015050000000000000000000000000000f104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000
+15050000000000000000000000000000f1040000000000000000000000000000f104000000000000a403000000000000a4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000160400000000
+0000f40300000c000000b0e1ecab000cc7010000000000000000dc03000000000000f104000000000000f1040000000000000000000000000000150500000000000042050000300000007205000000000000f104000000000000d008000000000000f104000000000000d008000000000000f10400000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0080000000000000000000000000000a403000000000000f10400002400000000000000000000000000000000000000f1040000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f104000000000000170500000000000017050000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000
+0000000000000000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f1040000000000007205000000000000f104000000000000f104000000000000f104000000000000f1040000000000000000000000000000b803000000000000b803000000000000b80300002400
+0000dc03000000000000b803000000000000b803000000000000b803000000000000dc03000000000000b803000000000000b803000000000000b803000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c01
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013454d424544205061636b6167651401150d00000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000010800000e0800000f080000100800001108000012080000f7f3e8e0f7f300000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000f036a000000001668ab1d560055080115036ac92f0b490a080116680c43b3005508015608010616680c43b300000f036a0000000016680c43b30055080100060006000012080000fd000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000012080000fd00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101013000319068011c5001001fb0d02f20b0e03d21b0
+080722b008072390a0052490a00525b0000017b0d00218b0d0020c90d002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500530075006d006d006100
+7200790049006e0066006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff0d000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000360000009801000000000000050044006f0063007500
+6d0065006e007400530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000003d00000018010000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000000
+040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f000000500100001000000058010000130000006001000002000000e40400001e00000004000000200000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e0000000400
+0000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000310000001e000000180000004d6963726f736f6674204f666669636520576f72640000004000000000d2496b0000000040000000007e09a4ff0bc701400000000050530f000cc7010300000001000000
+03000000020000000300000010000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff000005010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c000000010000006800
+00000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac00000016000000b40000000d000000bc0000000c000000ca00000002000000e40400001e000000040000002d00000003000000010000000300000001000000
+030000001100000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e100000010000000200000020000c100000020000001e000000060000005469746c6500030000000100000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000105000000000000}{\result {\insrsid5398644 {\*\shppict{\pict{\*\picprop\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1482\pich1348\picwgoal840\pichgoal764\emfblip\bliptag2068528598{\*\blipuid 7b4b3dd658634a1ff4d94a0e8051d743}
+010000006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d0000000500000000000000
+00000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a00000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff00000000000000000000000090010000
+0000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000
+00000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000
+ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a004006140078011400000000000000000000000000000000000000000068511a00
+000000000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff0100000000000054006900
+6d00650073002000000065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000c8be1200caa70230c8be1200
+2cd3a830e0be12006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e000000
+1800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff65010000400100000000000046000000
+4c0f0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005
+a80e00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a070000020021060000
+0000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000ae070a3300fc0700b8a4
+f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000410bc6008800200020000000000020002000
+00000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff00000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b460066002000
+2000000000002000200000000c002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000
+00000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0
+c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000
+050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ee08
+660900000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db010000000300000000000000
+00000000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3e
+ffffff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c00000001000000
+110000000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b000000
+1000000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c000000
+00000000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff0000000000000000000000009001000000000000
+07400012540069006d006500730020004e0065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000000000000
+000000000000f27700000000dc0821691900b0011122f277000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+10751a0000000000dc08216910009001000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000
+410b4600000020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000748c12003a24f277
+d4f221006476000800000000250000000c000000020000000a000000100000000000000000000000090000001000000038000000320000005200000070010000
+03000000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d0061000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000001200000000005c8a120018ee907cf006917cffffffffeb06917cdf99807c
+0000140008001400f099807c00000000b04c1a00ffffffff0000000000000000542a2f013601000008000000348a120001000900fc8d1200a89a837cf899807c
+fffffffff099807cedf9f17740000000b04c1a003a0a0a79948a1200b230f27700002100308b120064010000d88c12007b30f277d88c1200d622f27702000000
+dc0821691900b0011122f2776609040000002d01000005000000090200000000000000000102ffffff00a5001b99f177f698f177088b12006401000000000000
+000000006876e4020b020100000000003a0a0a79b08c1200df99f177e799f1776476000800000000250000000c00000003000000180000000c00000000000000
+190000000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c000000
+000000002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c00000030000000
+9c0000008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff00
+0000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c00000000000000
+00000000000000002000000020000000500000002800000078000000000c00000000000046006600200000002000000028000000200000002000000001001800
+00000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000
+c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000120000000c00000001000000160000000c00000006000000540000007c00000024000000d3000000
+3f010000270100000100000071d8d641cdccd8411c00000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c00
+61006d002e0065007800650007000000020000000600000009000000040000000500000006000000060000005200000070010000040000001000000007000000
+0000000000000000bc0200000000000007020222530079007300740065006d000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000023000000000000000000000000004600660000000000cc82230000000100aa6ef1775207013700000100
+008b1200af61f27752070137f88e2300608a1200460f917c2100000001000000e404000000000000220ec9030000000000000000dc08216943006c0061006d00
+2e0065007800650001000000b08223000000000000000000a88223007801140000000000b082230028000000000c000000000000780114000000000060511a00
+0000803fe00ad20200000000b08223000000008000000000b04c1a0068511a00500c0000000000000000000000000000a8822300ffffff0000000000000c0000
+28000000500c000000001400548b1200780114006476000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080
+300000000c0000000f000080250000000c000000010000004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000
+250000000c00000000000080250000000c00000007000080220000000c000000ffffffff250000000c0000000d000080280000000c0000000200000022000000
+0c000000ffffffff220000000c000000ffffffff460000007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40
+ffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c000000
+000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000
+ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e0100003f0100005000000020000000
+2d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080
+000000802100000008000000620000000c000000010000004c000000640000000000000000000000630100003f01000000000000000000006401000040010000
+2900aa0000000000000000000000803f00000000000000000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict
+{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1482\pich1348\picwgoal840\pichgoal764\wmetafile8\bliptag2068528598\blipupi601{\*\blipuid 7b4b3dd658634a1ff4d94a0e8051d743}
+010009000003ca1c000006001610000000001610000026060f002220574d464301000000000001008131000000000200000000200000b8080000b82800000100
+00006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d00000005000000000000000000
+0000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff000000000000000000000000900100000000
+000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000000000000000000000000000000000000000
+0000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000ace3
+c802020f2cc75d97073030c112000068a7304468a730ec94073060511a004006140078011400000000000000000000000000000000000000000068511a000000
+00000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d00
+650073002000000065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000c8be1200caa70230c8be12002cd3
+a830e0be12006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e0000001800
+000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff650100004001000000000000460000004c0f
+0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005a80e
+00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a0700000200210600000000
+050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000ae070a3300fc0700b8a4f377
+c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000410bc60088002000200000000000200020000000
+0c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000
+000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0
+c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000201010000000500
+00002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ee086609
+00000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db0100000003000000000000000000
+0000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3effff
+ff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c000000010000001100
+00000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b0000001000
+000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c0000000000
+0000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff00000000000000000000000090010000000000000740
+0012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000000000000000
+00000000f27700000000dc0821691900b0011122f277000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001075
+1a0000000000dc08216910009001000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b
+4600000020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000748c12003a24f277d4f2
+21006476000800000000250000000c000000020000000a0000001000000000000000000000000900000010000000380000003200000052000000700100000300
+0000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d00610000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000001200000000005c8a120018ee907cf006917cffffffffeb06917cdf99807c0000
+140008001400f099807c00000000b04c1a00ffffffff0000000000000000542a2f013601000008000000348a120001000900fc8d1200a89a837cf899807cffff
+fffff099807cedf9f17740000000b04c1a003a0a0a79948a1200b230f27700002100308b120064010000d88c12007b30f277d88c1200d622f27702000000dc08
+21691900b0011122f2776609040000002d01000005000000090200000000000000000102ffffff00a5001b99f177f698f177088b120064010000000000000000
+00006876e4020b020100000000003a0a0a79b08c1200df99f177e799f1776476000800000000250000000c00000003000000180000000c000000000000001900
+00000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c0000000000
+00002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c000000300000009c00
+00008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff000000
+000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff
+ffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c000000000000000000
+0000000000002000000020000000500000002800000078000000000c000000000000460066002000000020000000280000002000000020000000010018000000
+0000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080807204
+000026060f00da08574d4643010000000000010000000000000002000000b808000000000000b828000080ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c08080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c000000080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000080808000
+0000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000120000000c00000001000000160000000c00000006000000540000007c00000024000000d30000003f010000270100000100000071d8d641cdccd8411c00
+000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c0061006d002e0065007800650007000000020000000600
+0000090000000400000005000000060000000600000052000000700100000400000010000000070000000000000000000000bc02000000000000070202225300
+79007300740065006d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+23000000000000000000000000004600660000000000cc82230000000100aa6ef1775207013700000100008b1200af61f27752070137f88e2300608a1200460f
+917c2100000001000000e404000000000000220ec9030000000000000000dc08216943006c0061006d002e0065007800650001000000b0822300000000000000
+0000a88223007801140000000000b082230028000000000c000000000000780114000000000060511a000000803fe00ad20200000000b0822300000000800000
+0000b04c1a0068511a00500c0000000000000000000000000000a8822300ffffff0000000000000c000028000000500c000000001400548b1200780114006476
+000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080300000000c0000000f000080250000000c0000000100
+00004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000250000000c00000000000080250000000c0000000700
+0080220000000c000000ffffffff250000000c0000000d000080280000000c00000002000000220000000c000000ffffffff220000000c000000ffffffff4600
+00007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40ffffff3effffff3e2a40000024000000180000000000
+803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c00000000000000460000001400000008000000474449430300
+0000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000ffffffffffffffff01000000052f8740008087406401
+00003f010000010000004c0000000400000000000000000000005e0100003f01000050000000200000002d000000250000000c0000000e000080460000003400
+000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080000000802100000008000000620000000c0000000100
+00004c000000640000000000000000000000630100003f010000000000000000000064010000400100002900aa0000000000000000000000803f000000000000
+00000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d
+462b024000000c000000000000000e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c022e0033000400
+00002e0118001c000000fb02f2ff0000000000009001000000000440001254696d6573204e657720526f6d616e00000000000000000000000000000000000400
+00002d010000040000000201010005000000090200000002030000001e00040000002c0100000700000016042e00320000000000030000001e00040000002c01
+0000030000001e00030000001e0008000000fa0200000000000000000000040000002d01010007000000fc020000ffffff000000040000002d01020004000000
+2e01000005000000090200000000050000000102ffffff000400000004010d001c000000fb02a3ff0000000000009001000000000740001254696d6573204e65
+7720526f6d616e0000000000000000000000000000000000040000002d0103001c000000fb02f6ff000000000000900100000001070002005461686f6d610000
+000000000000000000000000000000000000000000000000040000002d01040005000000090200000000050000000102ffffff00050000000102ffffff000500
+000009020000000069000000410bc600880020002000000000001e001d0000000b00280000002000000022000000010001000000000088000000000000000000
+0000000000000000000000000000ffffff000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffff050000000102ffffff000500000009020000000021060000410b460066002000200000000000
+1e001d0000000b002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000000000000000
+00000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c00000
+00c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000002010100040000002e010600
+13000000320a1f001a0008000000436c616d2e657865060002000500090003000500050006001c000000fb020f00060000000000bc0200000000070202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d010500040000002d010100040000002d010200040000002d0100000400
+0000f001040004000000f0010500040000002d010200040000002d010100040000002701ffff1c000000fb020f00060000000000bc0200000000010202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d01040004000000f0010300040000002701ffff040000002701ffff0400
+00002701ffff040000002d0100000d000000320a2e003300010004000000000032002e00209907001c000000fb020200010000000000bc020000000001020222
+53797374656d0000000000000000000000000000000000000000000000000000040000002d010300030000001e000c00000040092900aa000000000000002e00330000000000040000002701ffff030000000000}}}}}}{\insrsid11825703 
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc11.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,543 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid1723683}{\*\generator Micro
+soft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min29}{\revtim\yr2006\mo11\dy19\hr19\min29}{\version1}{\edmins0}{\nofpages1}{\nofwords4}{\nofchars27}{\*\company -}{\nofcharsws30}{\vern24689}}
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot1723683\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1723683 {\object\objemb\objsetsize\objw840\objh764{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000576f72642e446f63756d656e742e3800000000000000000000400000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff1000000003000000040000000500000006000000070000000800000009000000fefffffffeffffff0c0000000d0000000e0000000f00000012000000110000001d000000130000001e00000015000000160000001700000018000000190000001a0000001b0000001c000000fefffffffeff
+fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff040000000609020000000000c00000000000004600000000000000000000000090aa
+8a56000cc7010b000000c00f000000000000440061007400610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000002000000001000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0002000100000003000000ffffffff0000000000000000000000000000000000000000000000000000
+00000000000000000000000000007708000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000022000000710000000000000018020000440064000000000000000a000000000000000000000000005703fd02e803e80300000000000000000000000000000000000000000000000000000000000000000f0004f030000000b2040af00800000001040000000a000023000bf00c0000000441
+01000000ff0100000800000010f00400000000000080320007f09401000003043032e3948a325a3b14ec17a541d6f092ff007001000001000000440000000000140060211bf0680100003032e3948a325a3b14ec17a541d6f092740e000000000000000000003800000032000000a0480800086907003601000000fe78da
+6364e0646060b6626760606250646300025620e66682b178988c182c186480acdf4c5fff3380c1044620c1c802d4119298919f9bc8c020c7c365c9f0879d61c792cfe5078158c1e06bf95bee340716a0425d4688499c70331999feffffcfb014c872e43ec6d0c1a000842000a1791834c06c060607905a064688a5500a1d
+804c1a68f07f801cf11f0a40f1e6c8edc69086332415c0012801d1c6c330ec40032d01c4fc03b401c8e603c9ff5405a3e68f9a3f6afea8f9a3e68f9a4f1ff3a90bd0cca775fdbb9f81813c84bf6542b9f910a73260630c09f3f120bac52f4ddb87431d807a654c8c8c50961e23a823c805c48aac1c0cce3989b97aa915a9
+8ac05e20a41f28c0c00ed6b507dca3636462520aae2c2e49cd656000f5f9403ad518ba18613d941e60bf10d20f64646006eb0300531b1bab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a00
+00000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f0000002000000021000000feffffff23000000fefffffffefffffffeffffff27000000fefffffffeffffff
+2a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000feffffff340000003500000036000000370000003800000039000000feffffff3b0000003c0000003d0000003e000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86020f00120001009c000f00040000000000000000000400000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04
+000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d480904734809047448090400000000000000000000000000000000000044004100f2ffa10044000c0500000000000000001600440065006600610075006c007400200050006100720061006700720061007000
+6800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f603000002000b00000028006b00f4ffc10028000005000000000000000007004e006f00
+20004c006900730074000000020000000000000000000000150000000600001000000500ffffffff0100000004200000ffff0100a07a990000000000000000001500000000000000000000000000000000001700000000010000c02100008f69070000000000170000009800000000300000000000000080000000800000
+000000000000000000060000150800000500000000060000150800000600000000060000150800000700000000000000110000001300000015000000133a94ff958000000000140000001700000004000700000000001700000004000000000017000000070000000000170000000700010000000400000008000000e500
+000000000000000000009a6d8700ff4003800100140000001400000054df33023900390014000000000000001400000000000000021000000000000000150000006000001000400000ffff01000000070055006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ff
+ff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052006f006d0061006e000000351690010200050501020107060205070000000000000010000000000000000000
+00008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a0020000000800800000000000000ff0100000000000041007200690061006c000000220004003108881800f0d0020000680100000000dd9cab06dd9cab0600000000020000000000030000001200000001000100000004
+0003100100000003000000120000000100010000000100000000000000210300f0100000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000807a005b400b4008181723400000000000000000000000000001400000014
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000133831100f0100008000000000000000000000000000000000000000000000000000000000048500000000029f0ff0f0100013f00
+00e4040000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f9a6d870000000000320000000000000000000000000000000000ffff12000000000000000000000000000000050065006400770069006e00050065006400770069006e0000000000000000000000000000000000000000000000000000
+000000000100feff030a0000ffffffff0609020000000000c0000000000000461f0000004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b271000000000000000000000000000000000000000000
+000000000000000203000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000100feff030a0000ffffffff0c00030000000000c000000000000046080000005061636b61676500080000005061636b61676500080000005061636b61676500f439b2710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201020000000b000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000
+2400000006000000000000004f0062006a0065006300740050006f006f006c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000101ffffffffffffffff06000000000000000000000000000000000000000000000090aa8a56000cc70190aa8a56000c
+c7010000000000000000000000005f00310032003200350034003600390037003300340000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000101ffffffffffffffff080000000c00030000000000c0000000000000460000000090aa8a56000cc70190aa8a56
+000cc70100000000000000000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000
+000000000000250000001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010700000009000000ffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000026000000500000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffff0a000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000028000000060000000000000001004f006c006500310030004e0061007400690076006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000290000005f0200000000000057006f007200640044006f00630075006d0065006e007400000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200050000000c000000ffffffff00000000000000000000000000000000000000000000
+0000000000000000000000000000140000002e10000000000000800003000400bb003d01c2040010000130201d02c842d003000000000000000000000000000000000000000000000000000000000000000000000000000000005b0200000200436c616d2e65786500443a5c727466735c636c616d2e6578650000000300
+11000000443a5c727466735c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a00000000000000000000000000000000000000000000000000000000000000000000010000bb7110400033c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe31
+00e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c010000080100000000000000000000000000000da100000f410000000000000000000000000000000000000000000004b45524e454c33322e444c4c00004578697450726f63657373005553455233322e444c
+4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b010219000400000006000000000000401000000010000040000000000040000010000000020000010000000000000003000a00000000000020000000040000000000000200000000
+001000002000000000100000100000000000001000000000000000000000008410000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000feff000005010200000000000000000000000000000000000100
+0000e0859ff2f94f6810ab9108002b27b3d93000000068010000110000000100000090000000020000009800000003000000a400000004000000b000000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f800000012000000040100000a000000240100000c00000030010000
+0d0000003c0100000e000000480100000f000000500100001000000058010000130000006001000002000000e40400001e00000004000000000000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e00000004000000000000001e000000080000004e6f726d616c
+00001e00000008000000656477696e0000001e00000004000000320000001e000000180000004d696372eca5c100716009040000f812bf000000000000100000000000060000150800000e00626a626a71507150000000000000000000000000000000000000090416002e100000133a0100133a01001500000000000000
+000000000000000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a403000014000000
+0000000000000000de03000014000000160400000000000016040000000000001604000000000000160400000c000000220400000c000000f2030000000000001b050000b60000003a0400001600000050040000000000005004000000000000500400000000000050040000000000005004000000000000500400000000
+000050040000000000009a040000020000009c040000000000009c040000000000009c040000000000009c040000000000009c040000000000009c04000024000000d105000068020000390800003e000000c00400001500000000000000000000000000000000000000a403000000000000500400000000000000000000
+0000000000000000000000005004000000000000500400000000000050040000000000005004000000000000c0040000000000000000000000000000a403000000000000a403000000000000500400000000000000000000000000005004000000000000d5040000160000007e040000000000007e040000000000007e04
+0000000000005004000010000000a4030000000000005004000000000000a40300000000000050040000000000009a0400000000000000000000000000007e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005004000000000000
+9a0400000000000000000000000000007e0400000000000000000000000000007e04000000000000a403000000000000a40300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007e04000000000000500400000000
+00002e0400000c000000e0d7df4c000cc70100000000000000001604000000000000600400000a0000007e0400000000000000000000000000009a04000000000000eb040000300000001b050000000000007e0400000000000077080000000000006a0400000a00000077080000000000007e0400000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077080000000000000000000000000000a4030000000000007e0400001c000000500400000000000050040000000000007e040000000000005004
+00000000000050040000000000000000000000000000000000000000000000000000000000000000000000000000500400000000000050040000000000005004000000000000c004000000000000c0040000000000000000000000000000000000000000000000000000000000000000000000000000740400000a000000
+00000000000000000000000000000000000000000000000000000000000000005004000000000000500400000000000050040000000000001b0500000000000050040000000000005004000000000000500400000000000050040000000000000000000000000000f203000000000000f203000000000000f20300002400
+00001604000000000000f203000000000000f203000000000000f2030000000000001604000000000000b803000014000000cc0300000e000000da03000004000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c01
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001320454d424544205061636b61676520201401150d00000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000108000011080000120800001408000015080000f7f3e4f7f3000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000001d036a262f0b490a080116689a6d8700434a1400550801560801614a14000616689a6d8700000f036a0000000016689a6d870055080100050006000015080000fd000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000015080000fd00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101012c00319068011fb0d02f20b0e03d21b0080722b0
+08072390a0052490a00525b0000017b0d00218b0d0020c90d00200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cd023001d000000537def0c64fad111a2030000f81fedee070000001f00000000001e00000001000000500072006f00640075006300740020004e0061006d0065000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500530075006d006d006100
+7200790049006e0066006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff0d000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000330000009801000000000000050044006f0063007500
+6d0065006e007400530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000003a00000018010000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f736f66
+74204f666669636520576f72640000004000000000000000000000004000000000961633000cc7014000000000961633000cc701030000000100000003000000030000000300000012000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff
+000005010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c00000001000000680000000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac000000
+16000000b40000000d000000bc0000000c000000c900000002000000e40400001e000000040000002d00000003000000010000000300000001000000030000001400000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e1000000100000001000000000c10000002
+0000001e000000060000005469746c650003000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000105000000000000}{\result {\insrsid1723683 {\*\shppict{\pict{\*\picprop\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}
+{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}
+{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}
+{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1482\pich1348\picwgoal840\pichgoal764\emfblip\bliptag-1640101528{\*\blipuid 9e3e09681b831561249a35029efb7b85}010000006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d0000000500000000000000
+00000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a00000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff00000000000000000000000090010000
+0000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000
+00000000000000000000a7309c2e4a03f83214000000000000672000e8321400dc5414007801140004c01100c09507309000ed009c2e4a030000000000000000
+9c2e4a038cd581c65d97073088c011000068a7304468a730ec940730000000000000000000000000000000000000000000000000000000000000000000000000
+000000001010cc0300000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff0100000000000054006900
+6d00650073002000000065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000020be1100caa7023020be1100
+2cd3a83038be11006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e000000
+1800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff65010000400100000000000046000000
+4c0f0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005
+a80e00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a070000020021060000
+0000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d6100001e0c0a3900fc0700b8a4
+f377c1a4f3772030f577ed0b6640040000002d01000005000000090200000000050000000102ffffff00a5000000410bc6008800200020000000000020002000
+00000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff00000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b460066002000
+2000000000002000200000000c002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000
+00000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0
+c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000
+050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ed0b
+664000000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db010000000300000000000000
+00000000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3e
+ffffff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c00000001000000
+110000000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b000000
+1000000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c000000
+00000000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff0000000000000000000000009001000000000000
+07400012540069006d006500730020004e0065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000000000000
+000000000000f27700000000000621aa1900b0011122f277f85f0430000000000100000008b023000000f7010000000000b02300780114000000000008b02300
+780000000000000000000000c842d0030000000000101d020000000000000000000000000000000000001400036a00000000000008101d02f00f000000000000
+c05e1d0200000000000621aa10009001908b110018ee907c7005917cffffffff000014005a99807c0000140000000000000000000000000068000101fe010000
+d48a110000000273c88b110018ee907c7005917cffffffff6d05917cfffc807c0000140000000000585514000400000008ad1100c2600030cc8b11003a24f277
+fc4123026476000800000000250000000c000000020000000a000000100000000000000000000000090000001000000038000000320000005200000070010000
+03000000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d0061000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000110000000000b489110018ee907cf006917cffffffffeb06917cdf99807c
+0000140008001400f099807c00000000c8891d02ffffffff00000000000000000000f70100000000080000008c89110000000000548d1100a89a837cf899807c
+fffffffff099807cedf9f17740000000c8891d0204070ac8ec891100b230f27700002302888a110064010000308c11007b30f277308c1100d622f27702000000
+000621aa1900b0011122f27700000000000000000000000000000000000000000000000000000000000000001b99f177f698f177608a11006401000000000000
+0000000030fa22000b0201000000000004070ac8088c1100df99f177e799f1776476000800000000250000000c00000003000000180000000c00000000000000
+190000000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c000000
+000000002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c00000030000000
+9c0000008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff00
+0000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c00000000000000
+00000000000000002000000020000000500000002800000078000000000c00000000000046006600200000002000000028000000200000002000000001001800
+00000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000
+c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000120000000c00000001000000160000000c00000006000000540000007c00000024000000d3000000
+3f010000270100000100000071d8d641cdccd8411c00000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c00
+61006d002e0065007800650007000000020000000600000009000000040000000500000006000000060000005200000070010000040000001000000007000000
+0000000000000000bc0200000000000007020222530079007300740065006d000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000cc0300000000000000000000000046006600000000006400cc030000010010dc22002003140000000100
+588a1100af61f277ed010199900ccc03b8891100460f917c3500000001000000e404000000000000220e50030000000000000000000621aa43006c0061006d00
+2e00650078006500010000004800cc030000f701000000004000cc0378011400000000004800cc0328000000000c000000000000c842d0030000000008dc2200
+0000803fd0013102000000004800cc030000008000000000c8891d0210dc2200500c000000000000380ecc03000000004000cc03ffffff0000000000000c0000
+28000000500c000000001400ac8a1100780114006476000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080
+300000000c0000000f000080250000000c000000010000004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000
+250000000c00000000000080250000000c00000007000080220000000c000000ffffffff250000000c0000000d000080280000000c0000000200000022000000
+0c000000ffffffff220000000c000000ffffffff460000007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40
+ffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c000000
+000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000
+ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e0100003f0100005000000020007300
+2d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080
+000000802100000008000000620000000c000000010000004c000000640000000000000000000000630100003f01000000000000000000006401000040010000
+2900aa0000000000000000000000803f00000000000000000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict
+{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1482\pich1348\picwgoal840\pichgoal764\wmetafile8\bliptag-1640101528\blipupi601{\*\blipuid 9e3e09681b831561249a35029efb7b85}
+010009000003ca1c000006001610000000001610000026060f002220574d4643010000000000010012ef000000000200000000200000b8080000b82800000100
+00006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d00000005000000000000000000
+0000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff000000000000000000000000900100000000
+000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000000000000000000000000000000000000000
+0000000000000000a7309c2e4a03f83214000000000000672000e8321400dc5414007801140004c01100c09507309000ed009c2e4a0300000000000000009c2e
+4a038cd581c65d97073088c011000068a7304468a730ec9407300000000000000000000000000000000000000000000000000000000000000000000000000000
+00001010cc0300000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d00
+650073002000000065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000020be1100caa7023020be11002cd3
+a83038be11006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e0000001800
+000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff650100004001000000000000460000004c0f
+0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005a80e
+00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a0700000200210600000000
+050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d6100001e0c0a3900fc0700b8a4f377
+c1a4f3772030f577ed0b6640040000002d01000005000000090200000000050000000102ffffff00a5000000410bc60088002000200000000000200020000000
+0c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000
+000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0
+c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000201010000000500
+00002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ed0b6640
+00000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db0100000003000000000000000000
+0000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3effff
+ff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c000000010000001100
+00000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b0000001000
+000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c0000000000
+0000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff00000000000000000000000090010000000000000740
+0012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000000000000000
+00000000f27700000000000621aa1900b0011122f277f85f0430000000000100000008b023000000f7010000000000b02300780114000000000008b023007800
+00000000000000000000c842d0030000000000101d020000000000000000000000000000000000001400036a00000000000008101d02f00f000000000000c05e
+1d0200000000000621aa10009001908b110018ee907c7005917cffffffff000014005a99807c0000140000000000000000000000000068000101fe010000d48a
+110000000273c88b110018ee907c7005917cffffffff6d05917cfffc807c0000140000000000585514000400000008ad1100c2600030cc8b11003a24f277fc41
+23026476000800000000250000000c000000020000000a0000001000000000000000000000000900000010000000380000003200000052000000700100000300
+0000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d00610000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000110000000000b489110018ee907cf006917cffffffffeb06917cdf99807c0000
+140008001400f099807c00000000c8891d02ffffffff00000000000000000000f70100000000080000008c89110000000000548d1100a89a837cf899807cffff
+fffff099807cedf9f17740000000c8891d0204070ac8ec891100b230f27700002302888a110064010000308c11007b30f277308c1100d622f277020000000006
+21aa1900b0011122f27700000000000000000000000000000000000000000000000000000000000000001b99f177f698f177608a110064010000000000000000
+000030fa22000b0201000000000004070ac8088c1100df99f177e799f1776476000800000000250000000c00000003000000180000000c000000000000001900
+00000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c0000000000
+00002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c000000300000009c00
+00008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff000000
+000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff
+ffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c000000000000000000
+0000000000002000000020000000500000002800000078000000000c000000000000460066002000000020000000280000002000000020000000010018000000
+0000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080807204
+000026060f00da08574d4643010000000000010000000000000002000000b808000000000000b828000080ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c08080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c000000080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000080808000
+0000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000120000000c00000001000000160000000c00000006000000540000007c00000024000000d30000003f010000270100000100000071d8d641cdccd8411c00
+000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c0061006d002e0065007800650007000000020000000600
+0000090000000400000005000000060000000600000052000000700100000400000010000000070000000000000000000000bc02000000000000070202225300
+79007300740065006d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+cc0300000000000000000000000046006600000000006400cc030000010010dc22002003140000000100588a1100af61f277ed010199900ccc03b8891100460f
+917c3500000001000000e404000000000000220e50030000000000000000000621aa43006c0061006d002e00650078006500010000004800cc030000f7010000
+00004000cc0378011400000000004800cc0328000000000c000000000000c842d0030000000008dc22000000803fd0013102000000004800cc03000000800000
+0000c8891d0210dc2200500c000000000000380ecc03000000004000cc03ffffff0000000000000c000028000000500c000000001400ac8a1100780114006476
+000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080300000000c0000000f000080250000000c0000000100
+00004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000250000000c00000000000080250000000c0000000700
+0080220000000c000000ffffffff250000000c0000000d000080280000000c00000002000000220000000c000000ffffffff220000000c000000ffffffff4600
+00007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40ffffff3effffff3e2a40000024000000180000000000
+803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c00000000000000460000001400000008000000474449430300
+0000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000ffffffffffffffff01000000052f8740008087406401
+00003f010000010000004c0000000400000000000000000000005e0100003f01000050000000200073002d000000250000000c0000000e000080460000003400
+000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080000000802100000008000000620000000c0000000100
+00004c000000640000000000000000000000630100003f010000000000000000000064010000400100002900aa0000000000000000000000803f000000000000
+00000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d
+462b024000000c000000000000000e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c022e0033000400
+00002e0118001c000000fb02f2ff0000000000009001000000000440001254696d6573204e657720526f6d616e00000000000000000000000000000000000400
+00002d010000040000000201010005000000090200000002030000001e00040000002c0100000700000016042e00320000000000030000001e00040000002c01
+0000030000001e00030000001e0008000000fa0200000000000000000000040000002d01010007000000fc020000ffffff000000040000002d01020004000000
+2e01000005000000090200000000050000000102ffffff000400000004010d001c000000fb02a3ff0000000000009001000000000740001254696d6573204e65
+7720526f6d616e0000000000000000000000000000000000040000002d0103001c000000fb02f6ff000000000000900100000001070002005461686f6d610000
+000000000000000000000000000000000000000000000000040000002d01040005000000090200000000050000000102ffffff00050000000102ffffff000500
+000009020000000069000000410bc600880020002000000000001e001d0000000b00280000002000000022000000010001000000000088000000000000000000
+0000000000000000000000000000ffffff000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffff050000000102ffffff000500000009020000000021060000410b460066002000200000000000
+1e001d0000000b002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000000000000000
+00000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c00000
+00c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000002010100040000002e010600
+13000000320a1f001a0008000000436c616d2e657865060002000500090003000500050006001c000000fb020f00060000000000bc0200000000070202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d010500040000002d010100040000002d010200040000002d0100000400
+0000f001040004000000f0010500040000002d010200040000002d010100040000002701ffff1c000000fb020f00060000000000bc0200000000010202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d01040004000000f0010300040000002701ffff040000002701ffff0400
+00002701ffff040000002d0100000d000000320a2e003300010004000000000032002e00207a07001c000000fb020200010000000000bc020000000001020222
+53797374656d0000000000000000000000000000000000000000000000000000040000002d010300030000001e000c00000040092900aa000000000000002e00330000000000040000002701ffff030000000000}}}}}}{\insrsid1723683 
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc2.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,545 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid10425417}{\*\generator Micr
+osoft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min31}{\revtim\yr2006\mo11\dy19\hr19\min32}{\version1}{\edmins1}{\nofpages1}{\nofwords4}{\nofchars27}{\*\company -}{\nofcharsws30}{\vern24689}}
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot10425417\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid10425417 {\object\objemb\objsetsize\objw840\objh764{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000576f72642e446f63756d656e742e3800000000000000000000420000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff1000000003000000040000000500000006000000070000000800000009000000fefffffffeffffff0c0000000d0000000e0000000f00000012000000110000001d000000130000001e00000015000000160000001700000018000000190000001a0000001b0000001c000000fefffffffeff
+ffff1f000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff040000000609020000000000c000000000000046000000000000000000000000b0db
+46b2000cc7010b0000008010000000000000440061007400610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000002000000001000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0002000100000003000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000d008000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000024000000710000000000000026020000440064000000000000000a000000000000000100000000005703fd02e803e80300000000000000000000000000000000000000000000000000000000000000000f0004f03e000000b2040af00800000001040000000a000023000bf00c0000000441
+01000000ff0100000800130022f106000000bf0300800080000010f00400000000000080320007f0940100000304d0187bf57f117cb8394a957eb39fe4ddff007001000001000000440000000000140060211bf068010000d0187bf57f117cb8394a957eb39fe4dd740e000000000000000000003800000032000000a048
+0800086907003601000000fe78da6364e0646060b6626760606250646300025620e66682b178988c182c186480acdf4c5fff3380c1044620c1c802d4119298919f9bc8c0b08e9dcb98e10f3bc38e259fcb0f02b182c1d7f2771c699c2c4085ba8c109338e1663232fdffff9f612990e5c87d8ca183410108410042f33068
+80d90c0c0e20b50c8c104ba1143a009934d0e0ff0039e23f1480e2cd91db8d210d67482a80035002a28d8761d881065a0288f907680390cd0792ffa90a46cd1f357fd4fc51f347cd1f359f3ee65317a0994febfa773f030379087fcb8472f3214e65c0c61812e6e341748b5f9ab60f873a00f5ca981819a12c3d46504790
+0b88155939189c731273f5522b521581bd40483f5080811dac6b0fb847c7c8c4a4145c595c929acbc000eaf38174aa317431c27a283dc07e21a41fc8c8c00cd6070086641bbe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a00
+00000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000feffffff25000000fefffffffefffffffeffffff29000000
+fefffffffeffffff2c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000feffffff3700000038000000390000003a0000003b0000003c000000feffffff3e0000003f0000004000000041000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86020f00120001009c000f00040000000000000000000400000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04
+000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d480904734809047448090400000000000000000000000000000000000044004140f2ffa10044000c0500000000000000001600440065006600610075006c007400200050006100720061006700720061007000
+6800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f603000002000b00000028006b40f4ffc10028000005000000000000000007004e006f00
+20004c00690073007400000002000c000000000000000000120000000600001000000100ffffffff000000001400000049c80030000000000000000001000000000000000000000000000007000600001208000005000000000600001208000006000000000600001208000007000000000000000e000000100000001200
+0000133a94ff95800f0000f038000000000006f01800000002040000020000000100000001000000010000000200000040001ef110000000ffff00000000ff0080808000f7000010000f0002f092000000100008f00800000001000000010400000f0003f0300000000f0004f028000000010009f0100000000000000000
+000000000000000000000002000af00800000000040000050000000f0004f04200000012000af00800000001040000000e000053000bf01e000000bf0100001000cb0100000000ff01000008000403090000003f0301000100000011f00400000001000000030000000400000008000000e50000000000000002000000ab
+1d5600f91e8a000c43b300ff40021000000000000000120000006000001000400000ffff01000000070055006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a
+0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a
+0020000000800800000000000000ff0100000000000041007200690061006c000000220004000100881800f0d0020000680100000000d99cab06dc9cab06000000000100030000000200000010000000010001000000040003100100000002000000100000000100010000000100000000000000210300f0100000000100
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000807a005b400b4008181123400000000000000000000000000001100000011000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000020000000000000000000032831100f0100008000000000000000000000000000000000000000000000000000000000008000000000000f0ff0f0100013f000000000000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f0c43b3000000
+0000320000000000000000000000000000000000ffff120000000000000001002000000000000000050065006400770069006e00050065006400770069006e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000100feff030a0000ffffffff0609020000000000c0000000000000461f0000004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b27100000000000000000000000000000000000000
+0000000000000000000203000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000020800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201020000000b000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000
+2600000006000000000000004f0062006a0065006300740050006f006f006c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000101ffffffffffffffff060000000000000000000000000000000000000000000000b0db46b2000cc701b0db46b2000c
+c7010000000000000000000000005f00310032003200350034003600390038003900370000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000101ffffffffffffffff080000000c00030000000000c00000000000004600000000b0db46b2000cc701b0db46b2
+000cc70100000000000000000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000
+000000000000270000001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010700000009000000ffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000028000000500000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffff0a000000ffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000002a000000060000000000000001004f006c006500310030004e0061007400690076006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000002b000000830200000000000057006f007200640044006f00630075006d0065006e007400000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200050000000c000000ffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000001400000032100000000000000100feff030a0000ffffffff0c00030000000000c000000000000046080000005061636b61676500080000005061636b61676500080000005061636b61676500f439b2710000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000800003000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0200000200436c616d2e65786500433a5c444f43554d457e315c656477696e5c44
+65736b746f705c636c616d2e657865000000030023000000433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a000000000000000000000000000000000000000000000000000000000000000000000100
+00bb7110400033c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c010000080100000000000000000000000000000da100000f41000000000000000000000000000000000000000
+0000004b45524e454c33322e444c4c00004578697450726f63657373005553455233322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900040000000600000000000040100000001000004000000000004000001000
+0000020000010000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000000000000000c00000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000feff0000050102000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d93000000068010000110000000100000090000000020000009800000003000000a400000004000000b000
+000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f8000000eca5c100716009040000f812bf000000000000100000000000060000120800000e00626a626a715071500000000000000000000000000000000000000904160032100000133a0100133a01001200000000000000
+000000000000000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a403000014000000
+0000000000000000b803000000000000dc03000000000000dc03000000000000dc03000000000000dc0300000c000000e80300000c000000b80300000000000072050000b600000000040000160000001604000000000000160400000000000016040000000000001604000000000000f104000000000000f10400000000
+0000f104000000000000150500000200000017050000000000001705000000000000170500000000000017050000000000001705000000000000170500000000000028060000680200009008000040000000170500001500000000000000000000000000000000000000a403000000000000f10400000000000000000000
+000000000000000000000000f104000000000000f104000000000000f104000000000000f10400000000000017050000000000000000000000000000a403000000000000a4030000000000001604000000000000000000000000000016040000db0000002c05000016000000f104000000000000f104000000000000f104
+000000000000f104000000000000a4030000000000001604000000000000a403000000000000160400000000000015050000000000000000000000000000f104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000
+15050000000000000000000000000000f1040000000000000000000000000000f104000000000000a403000000000000a4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000160400000000
+0000f40300000c000000b0e1ecab000cc7010000000000000000dc03000000000000f104000000000000f1040000000000000000000000000000150500000000000042050000300000007205000000000000f104000000000000d008000000000000f104000000000000d008000000000000f10400000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0080000000000000000000000000000a403000000000000f10400002400000000000000000000000000000000000000f1040000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f104000000000000170500000000000017050000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000
+0000000000000000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f1040000000000007205000000000000f104000000000000f104000000000000f104000000000000f1040000000000000000000000000000b803000000000000b803000000000000b80300002400
+0000dc03000000000000b803000000000000b803000000000000b803000000000000dc03000000000000b803000000000000b803000000000000b803000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c01
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013454d424544205061636b6167651401150d00000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000010800000e0800000f080000100800001108000012080000f7f3e8e0f7f300000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000f036a000000001668ab1d560055080115036ac92f0b490a080116680c43b3005508015608010616680c43b300000f036a0000000016680c43b30055080100060006000012080000fd000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000012080000fd00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101013000319068011c5001001fb0d02f20b0e03d21b0
+080722b008072390a0052490a00525b0000017b0d00218b0d0020c90d002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500530075006d006d006100
+7200790049006e0066006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff0d000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000360000009801000000000000050044006f0063007500
+6d0065006e007400530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000003d00000018010000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000000
+040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f000000500100001000000058010000130000006001000002000000e40400001e00000004000000200000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e0000000400
+0000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000310000001e000000180000004d6963726f736f6674204f666669636520576f72640000004000000000d2496b0000000040000000007e09a4ff0bc701400000000050530f000cc7010300000001000000
+03000000020000000300000010000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff000005010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c000000010000006800
+00000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac00000016000000b40000000d000000bc0000000c000000ca00000002000000e40400001e000000040000002d00000003000000010000000300000001000000
+030000001100000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e100000010000000200000020000c100000020000001e000000060000005469746c6500030000000100000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000105000000000000}{\result {\insrsid10425417 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1482\pich1348\picwgoal840\pichgoal764\emfblip\bliptag2068528598{\*\blipuid 7b4b3dd658634a1ff4d94a0e8051d743}
+010000006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d0000000500000000000000
+00000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a00000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff00000000000000000000000090010000
+0000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000
+00000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000
+ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a004006140078011400000000000000000000000000000000000000000068511a00
+000000000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff0100000000000054006900
+6d00650073002000000065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000c8be1200caa70230c8be1200
+2cd3a830e0be12006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e000000
+1800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff65010000400100000000000046000000
+4c0f0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005
+a80e00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a070000020021060000
+0000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000ae070a3300fc0700b8a4
+f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000410bc6008800200020000000000020002000
+00000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff00000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b460066002000
+2000000000002000200000000c002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000
+00000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0
+c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000
+050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ee08
+660900000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db010000000300000000000000
+00000000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3e
+ffffff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c00000001000000
+110000000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b000000
+1000000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c000000
+00000000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff0000000000000000000000009001000000000000
+07400012540069006d006500730020004e0065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000000000000
+000000000000f27700000000dc0821691900b0011122f277000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+10751a0000000000dc08216910009001000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000
+410b4600000020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000748c12003a24f277
+d4f221006476000800000000250000000c000000020000000a000000100000000000000000000000090000001000000038000000320000005200000070010000
+03000000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d0061000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000001200000000005c8a120018ee907cf006917cffffffffeb06917cdf99807c
+0000140008001400f099807c00000000b04c1a00ffffffff0000000000000000542a2f013601000008000000348a120001000900fc8d1200a89a837cf899807c
+fffffffff099807cedf9f17740000000b04c1a003a0a0a79948a1200b230f27700002100308b120064010000d88c12007b30f277d88c1200d622f27702000000
+dc0821691900b0011122f2776609040000002d01000005000000090200000000000000000102ffffff00a5001b99f177f698f177088b12006401000000000000
+000000006876e4020b020100000000003a0a0a79b08c1200df99f177e799f1776476000800000000250000000c00000003000000180000000c00000000000000
+190000000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c000000
+000000002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c00000030000000
+9c0000008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff00
+0000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ffffffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c00000000000000
+00000000000000002000000020000000500000002800000078000000000c00000000000046006600200000002000000028000000200000002000000001001800
+00000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c08080
+80ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000
+c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000120000000c00000001000000160000000c00000006000000540000007c00000024000000d3000000
+3f010000270100000100000071d8d641cdccd8411c00000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c00
+61006d002e0065007800650007000000020000000600000009000000040000000500000006000000060000005200000070010000040000001000000007000000
+0000000000000000bc0200000000000007020222530079007300740065006d000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000023000000000000000000000000004600660000000000cc82230000000100aa6ef1775207013700000100
+008b1200af61f27752070137f88e2300608a1200460f917c2100000001000000e404000000000000220ec9030000000000000000dc08216943006c0061006d00
+2e0065007800650001000000b08223000000000000000000a88223007801140000000000b082230028000000000c000000000000780114000000000060511a00
+0000803fe00ad20200000000b08223000000008000000000b04c1a0068511a00500c0000000000000000000000000000a8822300ffffff0000000000000c0000
+28000000500c000000001400548b1200780114006476000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080
+300000000c0000000f000080250000000c000000010000004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000
+250000000c00000000000080250000000c00000007000080220000000c000000ffffffff250000000c0000000d000080280000000c0000000200000022000000
+0c000000ffffffff220000000c000000ffffffff460000007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40
+ffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c000000
+000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000
+ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e0100003f0100005000000020000000
+2d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080
+000000802100000008000000620000000c000000010000004c000000640000000000000000000000630100003f01000000000000000000006401000040010000
+2900aa0000000000000000000000803f00000000000000000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict
+{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1482\pich1348\picwgoal840\pichgoal764\wmetafile8\bliptag2068528598\blipupi601{\*\blipuid 7b4b3dd658634a1ff4d94a0e8051d743}
+010009000003ca1c000006001610000000001610000026060f002220574d46430100000000000100816e000000000200000000200000b8080000b82800000100
+00006c0000000000000000000000630100003f0100000000000000000000ca0500004405000020454d4600000100b82800004d00000005000000000000000000
+0000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+000010000000000000000000000009000000100000005e0100003f0100005200000070010000010000009cffffff000000000000000000000000900100000000
+000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000000000000000000000000000000000000000
+0000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000ace3
+c802020f2cc75d97073030c112000068a7304468a730ec94073060511a004006140078011400000000000000000000000000000000000000000068511a000000
+00000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d00
+650073002000000065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000c8be1200caa70230c8be12002cd3
+a830e0be12006476000800000000250000000c00000001000000120000000c00000001000000180000000c0000000000000221000000080000001e0000001800
+000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff650100004001000000000000460000004c0f
+0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080214005000c0000000000000008400005a80e
+00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e0000000000455700000100090000033a0700000200210600000000
+050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000ae070a3300fc0700b8a4f377
+c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000410bc60088002000200000000000200020000000
+0c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000
+000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0
+c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000201010000000500
+00002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ee086609
+00000a0026008a0100000000ffffffff8cfc0700040000002d0101000300000000000840010824000000180000000210c0db0100000003000000000000000000
+0000000000001b400000400000003400000001000000020000000000000000000000000060420000484203000000ffffff3effffff3eaa2ab243ffffff3effff
+ff3e54d59f432100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c000000010000001100
+00000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b0000001000
+000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c0000000000
+0000190000000c000000ffffff00140000000c0000000d0000005200000070010000020000009cffffff00000000000000000000000090010000000000000740
+0012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000000000000000
+00000000f27700000000dc0821691900b0011122f277000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001075
+1a0000000000dc08216910009001000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b
+4600000020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000748c12003a24f277d4f2
+21006476000800000000250000000c000000020000000a0000001000000000000000000000000900000010000000380000003200000052000000700100000300
+0000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d00610000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000001200000000005c8a120018ee907cf006917cffffffffeb06917cdf99807c0000
+140008001400f099807c00000000b04c1a00ffffffff0000000000000000542a2f013601000008000000348a120001000900fc8d1200a89a837cf899807cffff
+fffff099807cedf9f17740000000b04c1a003a0a0a79948a1200b230f27700002100308b120064010000d88c12007b30f277d88c1200d622f27702000000dc08
+21691900b0011122f2776609040000002d01000005000000090200000000000000000102ffffff00a5001b99f177f698f177088b120064010000000000000000
+00006876e4020b020100000000003a0a0a79b08c1200df99f177e799f1776476000800000000250000000c00000003000000180000000c000000000000001900
+00000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000017010000cc0000000c0000000000
+00002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c000000300000009c00
+00008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff000000
+000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff
+ffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000017010000cc0000000c000000000000000000
+0000000000002000000020000000500000002800000078000000000c000000000000460066002000000020000000280000002000000020000000010018000000
+0000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080807204
+000026060f00da08574d4643010000000000010000000000000002000000b808000000000000b828000080ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c08080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c000000080808000
+0000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000080808000
+0000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000120000000c00000001000000160000000c00000006000000540000007c00000024000000d30000003f010000270100000100000071d8d641cdccd8411c00
+000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c0061006d002e0065007800650007000000020000000600
+0000090000000400000005000000060000000600000052000000700100000400000010000000070000000000000000000000bc02000000000000070202225300
+79007300740065006d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+23000000000000000000000000004600660000000000cc82230000000100aa6ef1775207013700000100008b1200af61f27752070137f88e2300608a1200460f
+917c2100000001000000e404000000000000220ec9030000000000000000dc08216943006c0061006d002e0065007800650001000000b0822300000000000000
+0000a88223007801140000000000b082230028000000000c000000000000780114000000000060511a000000803fe00ad20200000000b0822300000000800000
+0000b04c1a0068511a00500c0000000000000000000000000000a8822300ffffff0000000000000c000028000000500c000000001400548b1200780114006476
+000800000000250000000c00000004000000250000000c00000007000080250000000c00000000000080300000000c0000000f000080250000000c0000000100
+00004b000000100000000000000005000000280000000c00000003000000280000000c00000004000000250000000c00000000000080250000000c0000000700
+0080220000000c000000ffffffff250000000c0000000d000080280000000c00000002000000220000000c000000ffffffff220000000c000000ffffffff4600
+00007000000064000000454d462b2c40000024000000180000005555cb4000000080000000804344cc40ffffff3effffff3e2a40000024000000180000000000
+803f00000080000000800000803f0000008000000080214007000c00000000000000044000000c00000000000000460000001400000008000000474449430300
+0000220000000c000000ffffffff250000000c0000000100000054000000540000000000000000000000ffffffffffffffff01000000052f8740008087406401
+00003f010000010000004c0000000400000000000000000000005e0100003f01000050000000200000002d000000250000000c0000000e000080460000003400
+000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080000000802100000008000000620000000c0000000100
+00004c000000640000000000000000000000630100003f010000000000000000000064010000400100002900aa0000000000000000000000803f000000000000
+00000000803f0000000000000000000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d
+462b024000000c000000000000000e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c022e0033000400
+00002e0118001c000000fb02f2ff0000000000009001000000000440001254696d6573204e657720526f6d616e00000000000000000000000000000000000400
+00002d010000040000000201010005000000090200000002030000001e00040000002c0100000700000016042e00320000000000030000001e00040000002c01
+0000030000001e00030000001e0008000000fa0200000000000000000000040000002d01010007000000fc020000ffffff000000040000002d01020004000000
+2e01000005000000090200000000050000000102ffffff000400000004010d001c000000fb02a3ff0000000000009001000000000740001254696d6573204e65
+7720526f6d616e0000000000000000000000000000000000040000002d0103001c000000fb02f6ff000000000000900100000001070002005461686f6d610000
+000000000000000000000000000000000000000000000000040000002d01040005000000090200000000050000000102ffffff00050000000102ffffff000500
+000009020000000069000000410bc600880020002000000000001e001d0000000b00280000002000000022000000010001000000000088000000000000000000
+0000000000000000000000000000ffffff000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ffffffffffffffff050000000102ffffff000500000009020000000021060000410b460066002000200000000000
+1e001d0000000b002800000020000000200000000100180000000000000c00000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00000000000000000000000000000000000000
+00000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c00000
+00c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000002010100040000002e010600
+13000000320a1f001a0008000000436c616d2e657865060002000500090003000500050006001c000000fb020f00060000000000bc0200000000070202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d010500040000002d010100040000002d010200040000002d0100000400
+0000f001040004000000f0010500040000002d010200040000002d010100040000002701ffff1c000000fb020f00060000000000bc0200000000010202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d01040004000000f0010300040000002701ffff040000002701ffff0400
+00002701ffff040000002d0100000d000000320a2e003300010004000000000032002e00205c07001c000000fb020200010000000000bc020000000001020222
+53797374656d0000000000000000000000000000000000000000000000000000040000002d010300030000001e000c00000040092900aa000000000000002e00330000000000040000002701ffff030000000000}}}}}}{\insrsid10425417 
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/Doc22.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,759 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid10425417\rsid12942913}
+{\*\generator Microsoft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min33}{\revtim\yr2006\mo11\dy19\hr19\min33}{\version2}{\edmins0}{\nofpages1}{\nofwords4}{\nofchars27}{\*\company -}{\nofcharsws30}
+{\vern24689}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot10425417\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid12942913 {\object\objemb\objsetsize\objw825\objh764{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000576f72642e446f63756d656e742e3800000000000000000000760000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff1000000003000000040000000500000006000000070000000800000009000000fefffffffeffffff0c0000000d0000000e0000000f0000001a000000110000001f00000013000000140000001500000016000000170000001800000019000000feffffff1b0000001c0000001d0000001e00
+00002000000021000000220000002c0000002d0000002400000025000000260000002700000028000000290000002a0000002b000000feffffff390000002e000000380000003000000031000000320000003300000034000000350000003600000037000000fefffffffefffffffeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff040000000609020000000000c00000000000004600000000000000000000000000a4
+41e0000cc7010b000000c01d000000000000440061007400610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000002000000001000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0002000100000003000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000d408000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+000000000000000000000000240000007100000000000000f9060000440064000000000000000a000000000000000100000000004803fc02e803e80300000000000000000000000000000000000000000000000000000000000000000f0004f03e000000b2040af00800000001040000000a000023000bf00c0000000441
+01000000ff0100000800130022f106000000bf0300800080000010f00400000000000080220007f06706000002047b4b3dd658634a1ff4d94a0e8051d743ff0043060000010000004400000000001400403d1af03b0600007b4b3dd658634a1ff4d94a0e8051d743b828000000000000000000005f0100003f0100001024
+0800a06707000906000000fe78daed5a5d6c5445143e33fb73b73fb6656db0fc847497a2b516b8a944090ff6962dc59f620a2eea039256592c09054c2b5bb40f1b7ca0413425c128c4c4174d9b8668c3130f44cb0b229698882289249048a28942680da64692f59cf9d99d5eb76b5b5b08e64e3af79eb933f3cd9d33e766
+fb7d390c007642b6bcc200ea59b67d2e00d088b572dd8626000627ab0136e0f3004c2c55f7e36501c037782b6513fb9eaef1c1f3513f2000d462adc48a708f3087c162b4cbb0f2b2e11f69ec8b5c561abb056b8b1a1b75fc50acf096380519bb0a31b46d3b5c60f9452b551f71ac4c9fdf818c3d1fa45d81b550adaf4b81
+6a6f557ed884f61e463b07f8309d4e9bfbea6319ec701c76400724a01377f72cde9378df04bbf1591bec82a9947efbf84f67f9785db96cbe5a09bfa07d392edbc787c330fc9e65f7c175a0717a16d9bcb4f6cb97deb76cfb7418a0bddf6ec4fadb11cb6eddb8109c603974b3f29c2bb6637faeb27e3eed8cf3a02fe00f70
+9fffc01be2c85221d59f56fb36f70cd3d8f3d9cfc370ae9fdb74afbd30605fc5fbb6bd20e097a9b3a125c2865d0199f3e311bcd0e025eab92efacc2876304c456cad6f7c2a46ce4aab92c07e47bd3f8d6b2ec576a98cb11a8c91aa0c66aa9e2eb266ed8813c8c451c881c04009c645898c5f5a876a17b67f387fe6981cb5
+1aea60abb0d6bd407bc108f3adb168642408ea4b2ae2da2ae6753883defc2f7e2b6dc419f3e38c785bfbee8e36804fadc247e1b605273ffe3d791a6ba57d2b7923b4bd80227f39934805194cc629703f41aba1e80cf4e229550a5c792f16be22cb11be56ce61b9cfcef509dc9592be4b2fa16388ceada1a809b64feac94a
+e140159bc5f0bf2ba9b92c127f786e8a898fd7f4ac160fdfc3f7f03d7c0fdfc3bf33f8b35b5cf873fdfbfb05c0ccfef2ff67f2dff1e5ab422ee39ec0cff377c7ce774eff3fbcd70bb132ce98b256b0a05222228110c476b675ac48742722c802250f2c034bcc3a25181de33cfadcbeceae440700713e9af9201c649aa11c
+425e287920039fe2a92ca4792df1541aea73bdd12247f2bf558afaf109bdad6b019e5ceb932b3c4175b0e6444cdbf1ef3f8a694efeb2c1d99f31b415da67ae31f3941dcaa3c5acc65aa7c699fd45aabd4d717a8daf3504f45a6a599680a5e61b64ccd01348b61236d1ca7265df0759ed87e7d17eac59d17ec69274bd1c8a
+ec5800436c5e54b6ef040f2e7b5d6a40b476596657d3e3c130031edc75280c6baac692df8d45fea1fdf029c4823e1b8ac95bb9cf8659a498e019b4abb39859098beb968361a8b8d1d7733378b887f6fe2bdeaf1c4df500464c08eb4d61030c352f9c702ef19a95ec3126e372156290fe73fb9d300c1c7bab671ce7d0589a
+7bfdcfd1a4a3e6af292cdc7704c79eb0290e2260bf1d16317e097df6263ea3fb458c11ee8a995cfa0f18facfa2a3a3c93f3e184d86145e4607dc7b8d1771f980d61e42fc2b38f667aceeb3f1e5f9764cdb1c437a7115c237abf603688f18fd3a52489b327ec9eb5db6f861d1ae25cddaa6ef126baf81a1232f6a6859bdf0
+ef5ad6ddd69426f3dd46acddc593fb0e5c3e6c513ee836be38a9544df48fa750790a9587efe17bf81ebe87efe17b0a95a750790a95a75099ac576b345a37098a9c0f0022baa4275d00996ff190ca8f79edd2c586f323971a161b5a4ff3247c87727b62c8e2da9099af8004f2958450b9b85aa740e5f104543b68707ebfd2
+022c03f79462bb16a963b00f3aa10b113b66b8fba5135ac49fa88cec5f2a3c32b86b34b9c9628f8b5d2397feac6d4cb4c7df5d0aadc8db9b4a0ff74494efaec9642488967c9591dc88b3bbf74e6387f667d71d405be7edd0f36a83a7e9e7ad227f27557fb5f05b0ed9f929ad43507e4f8b8bdb116e86ea164b3e28c79443
+1cf742d86eceefcfa3a9d9ca2e359ee7d2feaa0dfda03a072e18f3698d68960fa7976535b954b5a11199634c9b14a93da40baadcb15a23af67f3e6af1dad25c41a471cad614e2df727773e5993f09e8c77ca37f2b9decdf44b5c55f7f720b4e095071c481d70b6a93c26a6be1f7f8e1ca716c5e1971b3e2cc1776c521a6e
+354c23a729872edbacfc37595ea0d65c1f86c17c9a4ddee23e339d0b48efcd0dff9628ff82ea27fb6f8f87ad64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000030000000400000005000000060000000700000008000000090000000a00
+00000b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f00000020000000210000002200000023000000feffffff25000000fefffffffefffffffeffffff29000000
+2a0000002b0000002c0000002d0000002e0000002f000000300000003100000032000000330000003400000035000000360000003700000038000000390000003a0000003b0000003c0000003d0000003e0000003f0000004000000041000000420000004300000044000000450000004600000047000000480000004900
+00004a0000004b000000feffffff4d000000fefffffffefffffffeffffff51000000fefffffffeffffff5400000055000000560000005700000058000000590000005a0000005b0000005c0000005d000000fefffffffeffffff600000006100000062000000630000006400000065000000feffffff6700000068000000
+690000006a000000feffffff6c0000006d0000006e0000006f0000007000000071000000feffffff73000000740000007500000076000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86020f00120001009c000f00040000000000000000000400000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04
+000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d480904734809047448090400000000000000000000000000000000000044004140f2ffa10044000c0500000000000000001600440065006600610075006c007400200050006100720061006700720061007000
+6800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f603000002000b00000028006b40f4ffc10028000005000000000000000007004e006f00
+20004c00690073007400000002000c0000000000000000001d0000000700001000000100ffffffff000000001f00000049c80030000000000000000001000000000000000000000000000007000600001d08000005000000000600001d08000006000000000600001d0800000700000000000000190000001b0000001d00
+0000133a94ff95800f0000f038000000000006f01800000002040000020000000100000001000000010000000200000040001ef110000000ffff00000000ff0080808000f7000010000f0002f092000000100008f00800000001000000010400000f0003f0300000000f0004f028000000010009f0100000000000000000
+000000000000000000000002000af00800000000040000050000000f0004f04200000012000af00800000001040000000e000053000bf01e000000bf0100001000cb0100000000ff01000008000403090000003f0301000100000011f00400000001000000040000000400000008000000e5000000000000000200000066
+373d00746052008b6a9b002772b400ff400210000000000000001d0000007000001000400000ffff01000000070055006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff00000000030000004716900100000202060305040502
+0304877a0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b060402020202
+0204877a0020000000800800000000000000ff0100000000000041007200690061006c000000220004000100881800f0d0020000680100000000e19cab06e19cab06000000000200000000000400000019000000010001000000040003100100000004000000190000000100010000000100000000000000210300f01000
+000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000807a005b400b4008181123400000000000000000000000000001c0000001c0000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000020000000000000000000032831100f0100008000000000000000000000000000000000000000000000000000000000008000000000000f0ff0f0100013f000000000000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f2772
+b40000000000320000000000000000000000000000000000ffff120000000000000001002000000000000000050065006400770069006e00050065006400770069006e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000100feff030a0000ffffffff0609020000000000c0000000000000461f0000004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b27100000000000000000000000000000000000000
+0000000000000000000203000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000003004f0062006a0049006e0066006f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010200000016000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000
+2600000006000000000000004f0062006a0065006300740050006f006f006c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000101ffffffffffffffff06000000000000000000000000000000000000000000000000a441e0000cc70100a441e0000c
+c7010000000000000000000000005f00310032003200350034003600390039003800360000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000101ffffffffffffffff0a0000000609020000000000c0000000000000460000000000a441e0000cc70100a441e0
+000cc70100000000000000000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000
+000000000000270000001400000000000000440061007400610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0002010700000009000000ffffffff00000000000000000000000000000000000000000000000000000000
+000000000000000012000000001000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000201ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000028000000d008000000000000010043006f006d0070004f0062006a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201080000000c000000ffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000004c000000710000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000004e000000060000000000000026020000440064000000000000000a000000000000000100000000005703fd02e803e80300000000000000000000000000000000000000000000000000000000000000000f0004f03e000000b2040af00800000001040000000a000023000bf00c000000
+044101000000ff0100000800130022f106000000bf0300800080000010f00400000000000080320007f0940100000304d0187bf57f117cb8394a957eb39fe4ddff007001000001000000440000000000140060211bf068010000d0187bf57f117cb8394a957eb39fe4dd740e000000000000000000003800000032000000
+a0480800086907003601000000fe78da6364e0646060b6626760606250646300025620e66682b178988c182c186480acdf4c5fff3380c1044620c1c802d4119298919f9bc8c0b08e9dcb98e10f3bc38e259fcb0f02b182c1d7f2771c699c2c4085ba8c109338e1663232fdffff9f612990e5c87d8ca183410108410042f3
+306880d90c0c0e20b50c8c104ba1143a009934d0e0ff0039e23f1480e2cd91db8d210d67482a80035002a28d8761d881065a0288f907680390cd0792ffa90a46cd1f357fd4fc51f347cd1f359f3ee65317a0994febfa773f030379087fcb8472f3214e65c0c61812e6e341748b5f9ab60f873a00f5ca981819a12c3d4650
+47900b88155939189c731273f5522b521581bd40483f5080811dac6b0fb847c7c8c4a4145c595c929acbc000eaf38174aa317431c27a283dc07e21a41fc8c8c00cd6070086641bbe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086020f00120001009c000f00040000000000000000000400000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04000000000000
+000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d480904734809047448090400000000000000000000000000000000000044004140f2ffa10044000c0500000000000000001600440065006600610075006c007400200050006100720061006700720061007000680020004600
+6f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f603000002000b00000028006b40f4ffc10028000005000000000000000007004e006f0020004c006900
+73007400000002000c000000000000000000120000000600001000000100ffffffff000000001400000049c80030000000000000000001000000000000000000000000000007000600001208000005000000000600001208000006000000000600001208000007000000000000000e0000001000000012000000133a94ff
+95800f0000f038000000000006f01800000002040000020000000100000001000000010000000200000040001ef110000000ffff00000000ff0080808000f7000010000f0002f092000000100008f00800000001000000010400000f0003f0300000000f0004f028000000010009f0100000000000000000000000000000
+000000000002000af00800000000040000050000000f0004f04200000012000af00800000001040000000e000053000bf01e000000bf0100001000cb0100000000ff01000008000403090000003f0301000100000011f00400000001000000030000000400000008000000e50000000000000002000000ab1d5600f91e8a
+000c43b300ff40021000000000000000120000006000001000400000ffff01000000070055006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a002000000080
+0800000000000000ff01000000000000540069006d006500730020004e0065007700200052006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a002000000080
+0800000000000000ff0100000000000041007200690061006c000000220004000100881800f0d0020000680100000000d99cab06dc9cab06000000000100030000000200000010000000010001000000040003100100000002000000100000000100010000000100000000000000210300f0100000000100000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000807a005b400b4008181123400000000000000000000000000001100000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000020000000000000000000032831100f0100008000000000000000000000000000000000000000000000000000000000008000000000000f0ff0f0100013f000000000000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f0c43b3000000000032000000
+0000000000000000000000000000ffff120000000000000001002000000000000000050065006400770069006e00050065006400770069006e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0100feff030a0000ffffffff0609020000000000c0000000000000461f0000004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b27100000000000000000000000000000000000000000000000000
+0000000203000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000020800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000004f0062006a0065006300740050006f006f006c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160001010b000000130000000d000000000000000000000000000000000000000000000000a441e0000cc70100a441e0000cc701000000000000
+0000000000005f00310032003200350034003600390038003900370000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000101ffffffffffffffff0f0000000c00030000000000c0000000000000460000000000a441e0000cc70100a441e0000cc70100000000
+000000000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000004f00
+00001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010e00000010000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000
+5000000050000000000000000100feff030a0000ffffffff0c00030000000000c000000000000046080000005061636b61676500080000005061636b61676500080000005061636b61676500f439b27100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000800003000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0200000200436c616d2e65786500433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e6578
+65000000030023000000433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a00000000000000000000000000000000000000000000000000000000000000000000010000bb7110400033c050508bf35353
+50b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c010000080100000000000000000000000000000da100000f410000000000000000000000000000000000000000000004b45524e454c33322e444c
+4c00004578697450726f6365737300555345523303004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffff11000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000052000000060000000000000001004f006c006500310030004e0061007400690076006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000053000000830200000000000002004f006c006500500072006500730030003000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000005e000000240000000000000057006f007200640044006f00630075006d0065006e007400000000000000000000000000000000000000000000000000000000000000000000000000000000001a0002001200000014000000ffffffff0000000000000000000000000000000000000000
+00000000000000000000000000000000230000003210000000000000322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900040000000600000000000040100000001000004000000000004000001000000002000001
+0000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000400000001000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff0000050102000000000000000000000000000000000001000000
+e0859ff2f94f6810ab9108002b27b3d93000000068010000110000000100000090000000eca5c100716009040000f812bf000000000000100000000000060000120800000e00626a626a715071500000000000000000000000000000000000000904160032100000133a0100133a01001200000000000000000000000000
+000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a403000014000000000000000000
+0000b803000000000000dc03000000000000dc03000000000000dc03000000000000dc0300000c000000e80300000c000000b80300000000000072050000b600000000040000160000001604000000000000160400000000000016040000000000001604000000000000f104000000000000f104000000000000f1040000
+00000000150500000200000017050000000000001705000000000000170500000000000017050000000000001705000000000000170500000000000028060000680200009008000040000000170500001500000000000000000000000000000000000000a403000000000000f10400000000000000000000000000000000
+000000000000f104000000000000f104000000000000f104000000000000f10400000000000017050000000000000000000000000000a403000000000000a4030000000000001604000000000000000000000000000016040000db0000002c05000016000000f104000000000000f104000000000000f104000000000000
+f104000000000000a4030000000000001604000000000000a403000000000000160400000000000015050000000000000000000000000000f104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000150500000000
+00000000000000000000f1040000000000000000000000000000f104000000000000a403000000000000a4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000001604000000000000f4030000
+0c000000b0e1ecab000cc7010000000000000000dc03000000000000f104000000000000f1040000000000000000000000000000150500000000000042050000300000007205000000000000f104000000000000d008000000000000f104000000000000d008000000000000f10400000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0080000000000000000000000000000a403000000000000f10400002400000000000000000000000000000000000000f1040000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f104000000000000170500000000000017050000000000000000000000000000000000000000000000000000000000000000000000000000f104000000000000000000000000
+0000000000000000000000000000000000000000000000000000f104000000000000f104000000000000f1040000000000007205000000000000f104000000000000f104000000000000f104000000000000f1040000000000000000000000000000b803000000000000b803000000000000b803000024000000dc030000
+00000000b803000000000000b803000000000000b803000000000000dc03000000000000b803000000000000b803000000000000b803000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c01000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013454d424544205061636b6167651401150d00000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000010800000e0800000f080000100800001108000012080000f7f3e8e0f7f300000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000f036a000000001668ab1d560055080115036ac92f0b490a080116680c43b3005508015608010616680c43b300000f036a0000000016680c43b30055080100060006000012080000fd000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000012080000fd00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101013000319068011c5001001fb0d02f20b0e03d21b0080722b00807
+2390a0052490a00525b0000017b0d00218b0d0020c90d002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500530075006d006d006100720079004900
+6e0066006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff15000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000005f0000009801000000000000050044006f00630075006d0065006e00
+7400530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000066000000180100000000000057006f007200640044006f006300
+75006d0065006e007400000000000000000000000000000000000000000000000000000000000000000000000000000000001a0002000500000017000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000002f00000032100000000000000500530075006d006d006100
+7200790049006e0066006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff18000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000006b000000980100000000000002000000980000000300
+0000a400000004000000b000000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f800000012000000040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f000000500100001000000058010000130000006001000002000000e4040000
+1e00000004000000200000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e00000004000000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000310000001e000000180000004d6963726f736f667420
+4f666669636520576f72640000004000000000d2496b0000000040000000007e09a4ff0bc701400000000050530f000cc701030000000100000003000000020000000300000010000000030000000000000072006d0061006c0000001c0017f603000034d60600010a036c0034d60600010503000061f6030000feff0000
+05010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c00000001000000680000000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac0000001600
+0000b40000000d000000bc0000000c000000ca00000002000000e40400001e000000040000002d00000003000000010000000300000001000000030000001100000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e100000010000000200000020000c1000000200
+00001e000000060000005469746c6500030000000100000000000000000000000000000000000002000af00800000000040000050000000f0004f04200000012feff0000050102000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d9300000006801000011000000010000009000
+0000020000009800000003000000a400000004000000b000000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f800000012000000040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f00000050010000100000005801000013000000
+6001000002000000e40400001e00000004000000200000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e00000004000000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000320000001e0000001800
+00004d696372eca5c100716009040000f812bf0000000000001000000000000600001d0800000e00626a626a715071500000000000000000000000000000000000000904160032100000133a0100133a01001d00000000000000000000000000000000000000000000000000000000000000ffff0f000000000000000000
+ffff0f000000000000000000ffff0f0000000000000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a4030000140000000000000000000000b803000000000000dc03000000000000dc03000000000000dc030000
+00000000dc0300000c000000e80300000c000000b80300000000000076050000b600000000040000160000001604000000000000160400000000000016040000000000001604000000000000f104000000000000f104000000000000f10400000000000019050000020000001b050000000000001b050000000000001b05
+0000000000001b050000000000001b050000000000001b050000000000002c0600006802000094080000400000001b0500001500000000000000000000000000000000000000a403000000000000f10400000000000000000000000000000000000000000000f104000000000000f104000000000000f104000000000000
+f1040000000000001b050000000000000000000000000000a403000000000000a4030000000000001604000000000000000000000000000016040000db0000003005000016000000f104000000000000f104000000000000f104000000000000f104000000000000a4030000000000001604000000000000a40300000000
+0000160400000000000019050000000000000000000000000000f104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f10400000000000019050000000000000000000000000000f1040000000000000000000000000000f1040000
+00000000a403000000000000a4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000001604000000000000f40300000c000000801aaadb000cc7010000000000000000dc03000000000000f104
+000000000000f1040000000000000000000000000000190500000000000046050000300000007605000000000000f104000000000000d408000000000000f104000000000000d408000000000000f10400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000d4080000000000000000000000000000a403000000000000f10400002800000000000000000000000000000000000000f1040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000f104000000000000f104000000000000f1040000000000001b050000000000001b050000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000000000000000000000000000000000000000000000000000000000000000000000f1040000
+00000000f104000000000000f1040000000000007605000000000000f104000000000000f104000000000000f104000000000000f1040000000000000000000000000000b803000000000000b803000000000000b803000024000000dc03000000000000b803000000000000b803000000000000b803000000000000dc03
+000000000000b803000000000000b803000000000000b803000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c01000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000013454d42454420576f72642e446f63756d656e742e38205c731401150d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000001080000190800001a0800001b0800001c0800001d080000f7f3e8e0f7dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000616682772b400000f036a0000000016688b
+6a9b0055080115036a22300b490a080116687460520055080156080106166874605200000f036a000000001668746052005508010006000600001d080000fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000600001d080000fd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101013000319068011c5001001fb0d02f20b0e03d21b0080722b008072390a0052490a00525b0000017b0d00218b0d0020c90d002790000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000feffffff000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000006f736f6674204f666669636520576f72640000004000000000000000000000004000000000ae23c2000cc70140000000
+00ae23c2000cc70103000000010000000300000004000000030000001900000003000000000000000000000000000000000000000f0004f03e000000b2040af00800000001040000000a000023000bf0feff000005010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae3000
+0000e80000000c00000001000000680000000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac00000016000000b40000000d000000bc0000000c000000ca00000002000000e40400001e000000040000002d000000
+03000000010000000300000001000000030000001c00000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e100000010000000200000020000c100000020000001e000000060000005469746c650003000000010000008626000627ab0136e0f3004c2c55f7e36501
+c037782b6513fb9eaef1c1f3513f2000d462adc48a708f3087c162b4cbb0f2b2e11f69ec8b5c561abb056b8b1a1b75fc50acf096380519bb0a31b46d3b5c60f9452b551f71ac4c9fdf818c3d1fa45d81b550adaf4b81050044006f00630075006d0065006e007400530075006d006d0061007200790049006e0066006f00
+72006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000007200000018010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}{\result {\insrsid12942913 {\*\shppict
+{\pict{\*\picprop\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw1455\pich1348\picwgoal825\pichgoal764\emfblip\bliptag1394186988{\*\blipuid 53199aec23a9e0178f989e3bcef0d449}
+010000006c00000000000000000000005d0100003d0100000000000000000000b00500004305000020454d460000010054350000820000000700000000000000
+00000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a0000001000000000000000000000000900000010000000580100003e010000250000000c0000000e000080120000000c00000001000000180000000c000000
+000000025200000070010000010000009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e00650077002000
+52006f006d0061006e00000000000000000000000000000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000
+e8321400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec940730
+60511a004006140078011400000000000000000000000000000000000000000068511a0000000000000000000000000000000000000000004716900100000202
+0603050405020304877a0020000000800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e000000
+000000000000000000000000000000000000000000000000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c00000001000000
+21000000080000001e000000180000000000000000000000580100003e01000046000000280000001c0000004744494302000000ffffffffffffffff5f010000
+3f01000000000000460000005c14000050140000454d462b2a40000024000000180000000000803f00000080000000800000803f000000800000008008400005
+c4130000b81300000210c0db0200000004000000a8130000010000006c0000000000000000000000630100003f0100000000000000000000ca05000044050000
+20454d4600000100a813000017000000050000000000000000000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a0300
+56220400460000002c00000020000000454d462b014001001c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b
+224004000c000000000000001e4009000c00000000000000244001000c000000000000003040020010000000040000000000803f214007000c00000000000000
+044000000c00000000000000160000000c000000180000000a00000010000000000000000000000009000000100000005e0100003f0100005200000070010000
+010000009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000
+00000000000000000000000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000
+acc01200c09507309000ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a004006140078011400
+000000000000000000000000000000000000000068511a00000000000000000000000000000000000000000047169001000002020603050405020304877a0020
+000000800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e000000000000000000000000000000
+000000000000000000000000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c00000001000000120000000c00000001000000
+180000000c0000000000000221000000080000001e0000001800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000
+ffffffffffffffff650100004001000000000000460000004c0f0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f
+0000008000000080214005000c0000000000000008400005a80e00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e00
+00000000455700000100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff00000000000090010000
+0001040002005461686f6d610000ae070a3300fc0700b8a4f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffff
+ff00a5000000410bc600880020002000000000002000200000000c00280000002000000040000000010001000000000000010000000000000000000000000000
+0000000000000000ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffffffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c00000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000008080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c08080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0
+c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb0210000700
+00000000bc02000000000102022253797374656d0000ee08660900000a0026008a0100000000ffffffff8cfc0700040000002d01010003000000000008400108
+24000000180000000210c0db01000000030000000000000000000000000000001b40000040000000340000000100000002000000000000000000000000006042
+0000484203000000ffffff3effffff3eaa2ab243ffffff3effffff3e54d59f43460000007000000064000000454d462b2c40000024000000180000005555cb40
+00000080000000804344cc40ffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f0000008000000080214007000c000000
+00000000044000000c000000000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000100000054000000
+540000000000000000000000ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e010000
+3f01000050000000200000002d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080
+000000800000803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000
+0840010824000000180000000210c0db01000000030000000000000000000000000000001b400000400000003400000001000000020000000000000000000000
+e1e7af4365ac9f4303000000ffffff3effffff3eff3faf43ffffff3effffff3e54359f432100000008000000620000000c000000010000004b00000010000000
+000000000500000021000000080000002100000008000000730000000c000000000000001c00000008000000250000000c00000000000080250000000c000000
+07000080250000000c0000000e000080300000000c0000000f000080190000000c000000ffffff00180000000c00000000000000120000000c00000002000000
+130000000c00000001000000140000000c0000000d000000150000000c00000001000000160000000c000000000000000d000000100000000000000000000000
+3a0000000c0000000a0000001b000000100000000000000000000000230000002000000092ad7e3f0000000000000000baea7e3f000000800000008024000000
+2400000092ad7e3f0000000000000000baea7e3f000000800000008004000000730000000c000000000000000d00000010000000000000000000000052000000
+700100000200000010000000070000000000000000000000bc0200000000000007020222530079007300740065006d0000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000c0c0808080000000808080c0c0c0808080ffffffffffffffffff
+ffffffff10751a00ffffffff10751a0026008a01dd0b21550b008801ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808000e08703449712001414917c9615917ceb06917c000000000000000048008403ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff90951200000014000000917c450000007813140000001400f0561a00ac9512000000d002
+3207917c4c000000c814d0020000d0022004850384951200b49512003a24f27790f721006476000800000000250000000c000000020000004600000028000000
+1c000000474449430200000000000000000000005f0100003e01000000000000160000000c00000018000000230000002000000092ad7e3f0000000000000000
+baea7e3f0000000000000000240000002400000092ad7e3f0000000000000000baea7e3f0000000000000000040000005200000070010000030000009cffffff
+000000000000000000000000900100000000000007400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000
+0000000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c0950730
+9000ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a0040061400780114000000000000000000
+00000000000000000000000068511a00000000000000000000000000000000000000000047169001000002020603050405020304877a00200000008008000000
+00000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e0000000000000000000000000000000000000000000000
+00000000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c00000003000000120000000c00000001000000180000000c000000
+0000000021000000080000001e0000001800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff
+6501000040010000000000002100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c000000
+01000000110000000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c000000100000000000000000000000
+0b0000001000000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c0000000000000018000000
+0c00000000000000190000000c000000ffffff00140000000c0000000d0000005200000070010000040000009cffffff00000000000000000000000090010000
+0000000007400012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000
+00000000000000000000f27700000000dd0b21551900b0011122f27700000000e0c91200e87fac0098270330a1a9cc30884df2009c84cc30f8321400e8321400
+00000000000000000000000000000000030000009ca2c8020100000011ca12000000000046010000e0bacc30010000008800f2008800f2001000f200d427c802
+2200000010751a0000000430dd0b215510009001a004ed00000000008c67610294871200eb2903301f0000004449043092881200040000001c881200c2600030
+9288120075c91200000000000c00000004000000761a03300400000054881200a33f000001000000c48712004402ed00eb3f00000000610205200000ec871200
+3a24f27718fd21006476000800000000250000000c000000040000000a0000001000000000000000000000000900000010000000380000003200000052000000
+7001000005000000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d00610000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000012002f002f00d485120018ee907cf006917cffffffffeb06917c
+df99807c0000140008001400f099807c00000000b04c1a00fffffffff0ac1200f0ac1200a1a9cc3010ad120008000000ac8512000000000074891200a89a837c
+f899807cfffffffff099807cedf9f17740000000b04c1a00af0a0a1b0c861200b230f27700002100a886120064010000508812007b30f27750881200d622f277
+04000000dd0b21551900b0011122f277ee010000fffbef0000000000000000002490000000000000001000006c2703301b99f177f698f1778086120064010000
+00000000000000006876e4020b02010000000000af0a0a1b28881200df99f177e799f1776476000800000000250000000c00000005000000180000000c000000
+00000000190000000c000000ffffff00190000000c000000ffffff00180000000c000000000000004d000000240100004c0000000000000015010000cb000000
+0c000000000000002000000020000000c600880000000000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c000000
+300000009c0000008800000020000000200000002800000020000000220000000100010000000000880000000000000000000000000000000000000000000000
+ffffff000000000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffffffffffff190000000c000000ffffff00180000000c0000000000000051000000780c00004c0000000000000015010000cb0000000c000000
+0000000000000000000000002000000020000000500000002800000078000000000c000000000000460066002000000020000000280000002000000020000000
+0100180000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000808080808080808080808080808080808080808080808080808080808080808080808080
+808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080808080808080808080808080808080808080808080808080808080
+808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0
+c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0
+c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0
+c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000000080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000120000000c00000001000000160000000c00000006000000540000007c00000023000000
+d20000003e010000250100000100000071d8d641cdccd8411c00000021000000080000004c000000000000000000000000000000ffffffffffffffff5c000000
+43006c0061006d002e00650078006500070000000200000006000000090000000400000006000000050000000600000052000000700100000600000010000000
+070000000000000000000000bc0200000000000007020222530079007300740065006d0000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000017000000000000000000000000004600660000000000c491170000000100aa6ef177ec0b0199
+0000010078861200af61f277ec0b0199f09d1700d8851200460f917cef00000001000000e4040000000000002a4eab030000000000000000dd0b215543006c00
+61006d002e0065007800650001000000a89117000000000000000000a09117007801140000000000a891170028000000000c0000000000006826a90300000000
+98381e000000803f4007950300000000a89117000000008000000000b04c1a00a0381e00500c00000000000068a5170000000000a0911700ffffff0000000000
+000c000028000000500c000000001400cc861200780114006476000800000000250000000c00000006000000250000000c00000007000080250000000c000000
+00000080300000000c0000000f000080250000000c000000030000004b000000100000000000000005000000280000000c00000005000000280000000c000000
+06000000250000000c00000000000080250000000c00000007000080220000000c000000ffffffff250000000c0000000d000080280000000c00000004000000
+220000000c000000ffffffff220000000c000000ffffffff4600000014000000080000004744494303000000220000000c000000ffffffff250000000c000000
+0300000054000000540000000000000000000000ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000
+000000005e0100003f01000050000000200000002d00000052000000700100000400000010000000070000000000000000000000bc0200000000000007020222
+530079007300740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000f277e912f277dd0b215500000000000000000100000070278001c09412009312f277dd0b21550000000000000000540000007027800108e0870338951200
+c10cf277dd0b2155d8831700050000005400000008e0870308e087030000604200004842000000000000000000006042026a873974048503a8951200a8951200
+0000907ce8df907c260a817cd40200003c951200249512001800000005000000409512003a24f2774011220025000000b04c1a006c96120032648839dd0b2155
+00001700702780010500000008e08703ebf18839fcf18839dd0b21550300000025000000fb0b0a760000010000000a009895120041e7f177dd0b2155fb0b0a76
+6476000800000000250000000c000000040000004600000014000000080000004744494303000000220000000c000000ffffffff280000000c00000003000000
+220000000c000000ffffffff250000000c0000000d000080280000000c00000002000000280000000c00000004000000220000000c000000ffffffff46000000
+6400000058000000454d462b2c40000024000000180000008aae7e3f000000800000008080da7e3fffffff3effffff3e2a40000024000000180000000000803f
+00000080000000800000803f0000008000000080044000000c000000000000004600000014000000080000004744494303000000220000000c000000ffffffff
+250000000c0000000100000054000000540000000000000000000000ffffffffffffffff01000000052f8740008087405e0100003e010000010000004c000000
+040000000000000000000000580100003e01000050000000200000002d000000250000000c0000000e000080460000003400000028000000454d462b2a400000
+24000000180000000000803f00000080000000800000803f00000080000000802100000008000000620000000c000000010000004c0000006400000000000000
+000000005d0100003d01000000000000000000005e0100003e0100002900aa0000000000000000000000803f00000000000000000000803f0000000000000000
+000000000000000000000000000000000000000000000000220000000c000000ffffffff460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict{\pict\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1455\pich1348\picwgoal825\pichgoal764\wmetafile8\bliptag1394186988\blipupi601{\*\blipuid 53199aec23a9e0178f989e3bcef0d449}0100090000030424000009001610000000001610000026060f002220574d464301000000000001007c9d00000000020000000020000054150000543500000100
+00006c00000000000000000000005d0100003d0100000000000000000000b00500004305000020454d4600000100543500008200000007000000000000000000
+0000000000002413000000190000cf0000000f0100000000000000000000000000004a2a030056220400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+00001000000000000000000000000900000010000000580100003e010000250000000c0000000e000080120000000c00000001000000180000000c0000000000
+00025200000070010000010000009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e006500770020005200
+6f006d0061006e00000000000000000000000000000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000e832
+1400dc54140000000000acc01200c09507309000ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec9407306051
+1a004006140078011400000000000000000000000000000000000000000068511a00000000000000000000000000000000000000000047169001000002020603
+050405020304877a0020000000800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e0000000000
+00000000000000000000000000000000000000000000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c000000010000002100
+0000080000001e000000180000000000000000000000580100003e01000046000000280000001c0000004744494302000000ffffffffffffffff5f0100003f01
+000000000000460000005c14000050140000454d462b2a40000024000000180000000000803f00000080000000800000803f000000800000008008400005c413
+0000b81300000210c0db0200000004000000a8130000010000006c0000000000000000000000630100003f0100000000000000000000ca050000440500002045
+4d4600000100a813000017000000050000000000000000000000000000002413000000190000cf0000000f0100000000000000000000000000004a2a03005622
+0400460000002c00000020000000454d462b014001001c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b2240
+04000c000000000000001e4009000c00000000000000244001000c000000000000003040020010000000040000000000803f214007000c000000000000000440
+00000c00000000000000160000000c000000180000000a00000010000000000000000000000009000000100000005e0100003f01000052000000700100000100
+00009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000
+0000000000000000000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc0
+1200c09507309000ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a0040061400780114000000
+00000000000000000000000000000000000068511a00000000000000000000000000000000000000000047169001000002020603050405020304877a00200000
+00800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e0000000000000000000000000000000000
+00000000000000000000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c00000001000000120000000c000000010000001800
+00000c0000000000000221000000080000001e0000001800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffff
+ffffffffffff650100004001000000000000460000004c0f0000400f0000454d462b2a40000024000000180000000000803f00000080000000800000803f0000
+008000000080214005000c0000000000000008400005a80e00009c0e00000210c0db0200000002000000740e0000d7cdc69a000000000000380032005e000000
+0000455700000100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001
+040002005461686f6d610000ae070a3300fc0700b8a4f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00
+a5000000410bc600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000
+000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000ffffffffffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0
+c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb02100007000000
+0000bc02000000000102022253797374656d0000ee08660900000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000084001082400
+0000180000000210c0db01000000030000000000000000000000000000001b400000400000003400000001000000020000000000000000000000000060420000
+484203000000ffffff3effffff3eaa2ab243ffffff3effffff3e54d59f43460000007000000064000000454d462b2c40000024000000180000005555cb400000
+0080000000804344cc40ffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f0000008000000080214007000c0000000000
+0000044000000c000000000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c00000001000000540000005400
+00000000000000000000ffffffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e0100003f01
+000050000000200000002d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f000000800000
+00800000803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e000000140000000000000010000000140000000840
+010824000000180000000210c0db01000000030000000000000000000000000000001b400000400000003400000001000000020000000000000000000000e1e7
+af4365ac9f4303000000ffffff3effffff3eff3faf43ffffff3effffff3e54359f432100000008000000620000000c000000010000004b000000100000000000
+00000500000021000000080000002100000008000000730000000c000000000000001c00000008000000250000000c00000000000080250000000c0000000700
+0080250000000c0000000e000080300000000c0000000f000080190000000c000000ffffff00180000000c00000000000000120000000c000000020000001300
+00000c00000001000000140000000c0000000d000000150000000c00000001000000160000000c000000000000000d0000001000000000000000000000003a00
+00000c0000000a0000001b000000100000000000000000000000230000002000000092ad7e3f0000000000000000baea7e3f0000008000000080240000002400
+000092ad7e3f0000000000000000baea7e3f000000800000008004000000730000000c000000000000000d000000100000000000000000000000520000007001
+00000200000010000000070000000000000000000000bc0200000000000007020222530079007300740065006d00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000c0c0808080000000808080c0c0c0808080ffffffffffffffffffffff
+ffff10751a00ffffffff10751a0026008a01dd0b21550b008801ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffc0c0c0808080000000808000e08703449712001414917c9615917ceb06917c000000000000000048008403ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff90951200000014000000917c450000007813140000001400f0561a00ac9512000000d0023207
+917c4c000000c814d0020000d0022004850384951200b49512003a24f27790f721006476000800000000250000000c0000000200000046000000280000001c00
+0000474449430200000000000000000000005f0100003e01000000000000160000000c00000018000000230000002000000092ad7e3f0000000000000000baea
+7e3f0000000000000000240000002400000092ad7e3f0000000000000000baea7e3f0000000000000000040000005200000070010000030000009cffffff0000
+00000000000000000000900100000000000007400012540069006d006500730020004e0065007700200052006f006d0061006e00000000000000000000000000
+000000000000000000000000000000000000000000000000a730ace3c802f83214000000000000672000e8321400dc54140000000000acc01200c09507309000
+ed00ace3c8020000000000000000ace3c802020f2cc75d97073030c112000068a7304468a730ec94073060511a00400614007801140000000000000000000000
+0000000000000000000068511a00000000000000000000000000000000000000000047169001000002020603050405020304877a002000000080080000000000
+0000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000
+0000c8be1200caa70230c8be12002cd3a830e0be12006476000800000000250000000c00000003000000120000000c00000001000000180000000c0000000000
+000021000000080000001e0000001800000000000000000000005e0100003f01000046000000280000001c0000004744494302000000ffffffffffffffff6501
+000040010000000000002100000008000000620000000c000000010000004b0000001000000000000000050000002100000008000000620000000c0000000100
+0000110000000c000000080000000a000000100000000000000000000000090000001000000038000000320000000c0000001000000000000000000000000b00
+00001000000064010000400100002100000008000000250000000c00000007000080250000000c00000000000080160000000c00000000000000180000000c00
+000000000000190000000c000000ffffff00140000000c0000000d0000005200000070010000040000009cffffff000000000000000000000000900100000000
+000007400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000000000000000000000000000000000000000
+0000000000000000f27700000000dd0b21551900b0011122f27700000000e0c91200e87fac0098270330a1a9cc30884df2009c84cc30f8321400e83214000000
+0000000000000000000000000000030000009ca2c8020100000011ca12000000000046010000e0bacc30010000008800f2008800f2001000f200d427c8022200
+000010751a0000000430dd0b215510009001a004ed00000000008c67610294871200eb2903301f0000004449043092881200040000001c881200c26000309288
+120075c91200000000000c00000004000000761a03300400000054881200a33f000001000000c48712004402ed00eb3f00000000610205200000ec8712003a24
+f27718fd21006476000800000000250000000c000000040000000a00000010000000000000000000000009000000100000003800000032000000520000007001
+000005000000f5ffffff0000000000000000000000009001000000000001070002005400610068006f006d006100000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000012002f002f00d485120018ee907cf006917cffffffffeb06917cdf99
+807c0000140008001400f099807c00000000b04c1a00fffffffff0ac1200f0ac1200a1a9cc3010ad120008000000ac8512000000000074891200a89a837cf899
+807cfffffffff099807cedf9f17740000000b04c1a00af0a0a1b0c861200b230f27700002100a886120064010000508812007b30f27750881200d622f277c00a
+000026060f007615574d464301000000000001000000000000000200000054150000000000005435000004000000dd0b21551900b0011122f277ee010000fffb
+ef0000000000000000002490000000000000001000006c2703301b99f177f698f177808612006401000000000000000000006876e4020b02010000000000af0a
+0a1b28881200df99f177e799f1776476000800000000250000000c00000005000000180000000c00000000000000190000000c000000ffffff00190000000c00
+0000ffffff00180000000c000000000000004d000000240100004c0000000000000015010000cb0000000c000000000000002000000020000000c60088000000
+0000000000000000803f00000000000000000000803f0000008000000080ffffff00000000006c000000300000009c0000008800000020000000200000002800
+000020000000220000000100010000000000880000000000000000000000000000000000000000000000ffffff000000000000000000ffffffff000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff190000000c000000ffff
+ff00180000000c0000000000000051000000780c00004c0000000000000015010000cb0000000c00000000000000000000000000000020000000200000005000
+00002800000078000000000c0000000000004600660020000000200000002800000020000000200000000100180000000000000c000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000120000000c00000001000000160000000c00000006000000540000007c00000023000000d20000003e010000250100000100000071d8d641cdcc
+d8411c00000021000000080000004c000000000000000000000000000000ffffffffffffffff5c00000043006c0061006d002e00650078006500070000000200
+000006000000090000000400000006000000050000000600000052000000700100000600000010000000070000000000000000000000bc020000000000000702
+0222530079007300740065006d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000017000000000000000000000000004600660000000000c491170000000100aa6ef177ec0b01990000010078861200af61f277ec0b0199f09d1700d885
+1200460f917cef00000001000000e4040000000000002a4eab030000000000000000dd0b215543006c0061006d002e0065007800650001000000a89117000000
+000000000000a09117007801140000000000a891170028000000000c0000000000006826a9030000000098381e000000803f4007950300000000a89117000000
+008000000000b04c1a00a0381e00500c00000000000068a5170000000000a0911700ffffff0000000000000c000028000000500c000000001400cc8612007801
+14006476000800000000250000000c00000006000000250000000c00000007000080250000000c00000000000080300000000c0000000f000080250000000c00
+0000030000004b000000100000000000000005000000280000000c00000005000000280000000c00000006000000250000000c00000000000080250000000c00
+000007000080220000000c000000ffffffff250000000c0000000d000080280000000c00000004000000220000000c000000ffffffff220000000c000000ffff
+ffff4600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000300000054000000540000000000000000000000ffff
+ffffffffffff01000000052f874000808740640100003f010000010000004c0000000400000000000000000000005e0100003f01000050000000200000002d00
+000052000000700100000400000010000000070000000000000000000000bc0200000000000007020222530079007300740065006d0000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f277e912f277dd0b215500000000000000000100
+000070278001c09412009312f277dd0b21550000000000000000540000007027800108e0870338951200c10cf277dd0b2155d8831700050000005400000008e0
+870308e087030000604200004842000000000000000000006042026a873974048503a8951200a89512000000907ce8df907c260a817cd40200003c9512002495
+12001800000005000000409512003a24f2774011220025000000b04c1a006c96120032648839dd0b215500001700702780010500000008e08703ebf18839fcf1
+8839dd0b21550300000025000000fb0b0a760000010000000a009895120041e7f177dd0b2155fb0b0a766476000800000000250000000c000000040000004600
+000014000000080000004744494303000000220000000c000000ffffffff280000000c00000003000000220000000c000000ffffffff250000000c0000000d00
+0080280000000c00000002000000280000000c00000004000000220000000c000000ffffffff460000006400000058000000454d462b2c400000240000001800
+00008aae7e3f000000800000008080da7e3fffffff3effffff3e2a40000024000000180000000000803f00000080000000800000803f00000080000000800440
+00000c000000000000004600000014000000080000004744494303000000220000000c000000ffffffff250000000c0000000100000054000000540000000000
+000000000000ffffffffffffffff01000000052f8740008087405e0100003e010000010000004c000000040000000000000000000000580100003e0100005000
+0000200000002d000000250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000
+803f00000080000000802100000008000000620000000c000000010000004c0000006400000000000000000000005d0100003d01000000000000000000005e01
+00003e0100002900aa0000000000000000000000803f00000000000000000000803f000000000000000000000000000000000000000000000000000000000000
+0000220000000c000000ffffffff460000001c00000010000000454d462b024000000c000000000000000e000000140000000000000010000000140000000400
+000003010800050000000b0200000000050000000c022e003200040000002e0118001c000000fb020200010000000000bc02000000000102022253797374656d
+0000000000000000000000000000000000000000000000000000040000002d0100000400000002010100050000000902000000021c000000fb02f2ff00000000
+00009001000000000440001254696d6573204e657720526f6d616e0000000000000000000000000000000000040000002d010100030000001e00040000002c01
+00000700000016042e00320000000000030000001e00040000002c010000030000001e00030000001e0007000000fc020000ffffff000000040000002d010200
+08000000fa0200000000000000000000040000002d010300040000002d010000050000000102ffffff0005000000090200000000040000000201020004000000
+060101000400000004010d000400000007010100040000002e010000050000001402000000001c000000fb020200010000000000bc0200000000070202225379
+7374656d0000000000000000000000000000000000000000000000000000040000002d010400040000002e0118001c000000fb02f2ff00000000000090010000
+00000740001254696d6573204e657720526f6d616e0000000000000000000000000000000000040000002d010500040000000201010005000000090200000000
+030000001e00040000002c0100000700000016042e00320000000000030000001e00040000002c010000030000001e00030000001e00040000002d0103000400
+00002d010200040000002e01000005000000090200000000050000000102ffffff000400000004010d001c000000fb02a4ff0000000000009001000000000740
+001254696d6573204e657720526f6d616e0000000000000000000000000000000000040000002d0106001c000000fb02f6ff0000000000009001000000010700
+02005461686f6d610000000000000000000000000000000000000000000000000000040000002d01070005000000090200000000050000000102ffffff000500
+00000102ffffff000500000009020000000069000000410bc600880020002000000000001d001d0000000b002800000020000000220000000100010000000000
+880000000000000000000000000000000000000000000000ffffff000000000000000000ffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000ffffffffffffffff050000000102ffffff000500000009020000000021060000410b4600
+660020002000000000001d001d0000000b002800000020000000200000000100180000000000000c000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000
+0000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0
+bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c000
+0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000201
+0100040000002e01060013000000320a1e001a0008000000436c616d2e657865060002000500080004000600040006001c000000fb020f00060000000000bc02
+000000000702022253797374656d0000000000000000000000000000000000000000000000000000040000002d010800040000002d010300040000002d010200
+040000002d01050004000000f001070004000000f0010800040000002d010200040000002d010300040000002701ffff1c000000fb020f00060000000000bc02
+000000000102022253797374656d0000000000000000000000000000000000000000000000000000040000002d01070004000000f0010600040000002701ffff
+040000002701ffff040000002701ffff040000002d0105000d000000320a2e003300010004000000000032002e00205207001c000000fb020200010000000000
+bc02000000000702022253797374656d0000000000000000000000000000000000000000000000000000040000002d010600040000002701ffff04000000f001
+0500040000002701ffff040000002d01070004000000f001040004000000f0010600040000002701ffff040000002701ffff040000002d0101000d000000320a
+2e003200010004000000000032002e0020520700040000002d010000030000001e000c00000040092900aa000000000000002e00320000000000040000002701ffff030000000000}}}}}}{\insrsid10425417 
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/doc3.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,111 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid11748108}{\*\generator Micr
+osoft Word 11.0.5604;}{\info{\title  }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy19\hr19\min25}{\revtim\yr2006\mo11\dy19\hr19\min28}{\version1}{\edmins3}{\nofpages1}{\nofwords3}{\nofchars18}{\*\company -}{\nofcharsws20}{\vern24689}}
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot11748108\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid11748108 {\object\objemb\objw855\objh765{\*\objclass Package}{\*\objdata 0105000002000000080000005061636b6167650000000000000000007f020000
+0200436c616d2e65786500433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e657865000000030023000000433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a000000000000
+00000000000000000000000000000000000000000000000000000000010000bb7110400033c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c01000008010000000000000000000
+0000000000da100000f410000000000000000000000000000000000000000000004b45524e454c33322e444c4c00004578697450726f63657373005553455233322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900
+0400000006000000000000401000000010000040000000000040000010000000020000010000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000
+000000000000c0000001050000050000000d0000004d45544146494c455049435400e4050000bbfaffff7c0e00000800e40545050000
+0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000ae070a3300fc0700b8a4f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000
+410bc600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c00000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc020000000001020222
+53797374656d0000ee08660900000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}{\result {\insrsid11748108 {\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1508\pich1349\picwgoal855\pichgoal765\wmetafile8\bliptag-803701771\blipupi94{\*\blipuid d0187bf57f117cb8394a957eb39fe4dd}0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461
+686f6d610000ae070a3300fc0700b8a4f377c1a4f3772030f577ee086609040000002d01000005000000090200000000050000000102ffffff00a5000000410b
+c600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000
+ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+ffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000ee08660900000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}}}}}{\insrsid11748108 
+
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/docCLAMexe.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,417 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid1989802\rsid2244587}
+{\*\generator Microsoft Word 11.0.5604;}{\info{\title   }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy25\hr13\min7}{\revtim\yr2006\mo11\dy25\hr13\min7}{\version2}{\edmins0}{\nofpages1}{\nofwords9}{\nofchars52}{\*\company -}{\nofcharsws60}
+{\vern24689}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot1989802\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2244587 {\object\objemb\objsetsize\objw8640\objh276{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000576f72642e446f63756d656e742e38000000000000000000004e0000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff0c00000003000000040000000500000006000000070000000800000009000000fefffffffefffffffefffffffeffffff0e0000000f000000100000001100000012000000130000001400000015000000feffffff1700000018000000190000001a0000001b0000001c0000001d000000feff
+ffff1f000000200000002100000022000000230000002400000025000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff020000000609020000000000c000000000000046000000000000000000000000d040
+6cd78110c7010b000000c00000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+0000000000000000020000000010000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010100000004000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000710000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000002000000060000000000000086020f00120001009c000f00040000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d4809047348090474480904000000000000000000000000000000000000
+44004100f2ffa10044000c0500000000000000001600440065006600610075006c0074002000500061007200610067007200610070006800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034
+d60600010a036c0034d60600010503000061f603000002000b00000028006b00f4ffc10028000005000000000000000007004e006f0020004c006900730074000000020000000000000000000000060000000600001000000500ffffffff0100000004200000ffff0100a07a990000000000000000000600000000000000
+000000000000000000000800000000010000c02100008dac020000000000080000009800000000300000000000000080000000800000000000000000000000060000060800000500000000060000060800000600000000060000060800000700000000000000050000000800000004000700000000000800000004000000
+000005000000080000000500070000000000050000000800000004000700010000000400000008000000e500000000000000000000006d15f800ff40008001000500000005000000a4a1c4030100010005000000000000000500000000000000021000000000000000060000006000001000400000ffff01000000070055
+006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052
+006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a0020000000800800000000000000ff0100000000000041007200690061006c000000220004003108881800
+f0d002000068010000000046cbabc646cbabc6000000000200000000000000000005000000010001000000040003100100000000000000050000000100010000000100000000000000210300f010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000807a005b400b4008181723400000000000000000000000000000500000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000133831100f0100008
+000000000000000000000000000000000000000000000000000000000048500000000029f0ff0f0100013f0000e4040000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f6d15f80000000000320000000000000000000000000000000000ffff120000000000000000000000000000000500650064
+00770069006e00050065006400770069006e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0100feff030a0000ffffffff0609020000000000c0000000000000461f00
+00004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b271000000000000000000000000000000000000000000000000000000000203000d0000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057006f007200640044006f00630075006d0065006e00
+7400000000000000000000000000000000000000000000000000000000000000000000000000000000001a0002000300000005000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000d0000002e100000000000000500530075006d006d0061007200790049006e00
+66006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff06000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000160000000010000000000000050044006f00630075006d0065006e007400
+530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000001e000000001000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eca5c100716009040000f012bf00
+0000000000100000000000060000060800000e00626a626a71507150000000000000000000000000000000000000090416002e100000133a0100133a01000600000000000000000000000000000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000
+000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a4030000140000000000000000000000de03000014000000160400000000000016040000000000001604000000000000160400000c000000220400000c000000
+f20300000000000011050000b60000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a0400000000000090040000020000009204000000000000920400000000000092040000000000009204000000000000920400000000
+00009204000024000000c7050000680200002f0800003e000000b60400001500000000000000000000000000000000000000a4030000000000003a04000000000000000000000000000000000000000000003a040000000000003a040000000000003a040000000000003a04000000000000b60400000000000000000000
+00000000a403000000000000a4030000000000003a0400000000000000000000000000003a04000000000000cb040000160000007404000000000000740400000000000074040000000000003a04000010000000a4030000000000003a04000000000000a4030000000000003a0400000000000090040000000000000000
+00000000000074040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a0400000000000090040000000000000000000000000000740400000000000000000000000000007404000000000000a403000000000000a403000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074040000000000003a040000000000002e0400000c00000020afbfcf8110c701000000000000000016040000000000004a0400000a0000007404000000000000000000000000
+00009004000000000000e104000030000000110500000000000074040000000000006d0800000000000054040000100000006d080000000000007404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000006d080000000000000000000000000000a403000000000000740400001c0000003a040000000000003a0400000000000074040000000000003a040000000000003a0400000000000000000000000000000000000000000000000000000000000000000000000000003a040000000000003a04
+0000000000003a04000000000000b604000000000000b6040000000000000000000000000000000000000000000000000000000000000000000000000000640400001000000000000000000000000000000000000000000000000000000000000000000000003a040000000000003a040000000000003a04000000000000
+11050000000000003a040000000000003a040000000000003a040000000000003a040000000000000000000000000000f203000000000000f203000000000000f2030000240000001604000000000000f203000000000000f203000000000000f2030000000000001604000000000000b803000014000000cc0300000e00
+0000da03000004000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000054657374310d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000600000508000006080000f8ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001415686d
+15f80016686d15f8006d48180473481804000e16686d15f8006d48180473481804020006000006080000fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000006080000fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101012c00319068011fb0d02f20b0e03d21b0080722b008072390a0052490a00525b0000017b0d00218b0d0020c90d002000000000000000000000c00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00
+0000000000000000000000000000000000000000000000000000b4242200180000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000feff0000050102000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d9300000006801000011000000010000009000000002000000
+9800000003000000a400000004000000b000000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f800000012000000040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f00000050010000100000005801000013000000600100000200
+0000e40400001e00000004000000000000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e00000004000000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000320000001e000000180000004d696372
+6f736f6674204f666669636520576f726400000040000000000000000000000040000000005c6bb08110c70140000000005c6bb08110c70103000000010000000300000000000000030000000500000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff0000
+05010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c00000001000000680000000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac0000001600
+0000b40000000d000000bc0000000c000000c900000002000000e40400001e000000040000002d00000003000000010000000300000001000000030000000500000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e1000000100000001000000000c100000020000
+001e000000060000005469746c6500030000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}{\result {\insrsid2244587 {\*\shppict{\pict{\*\picprop\shplid1030{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}
+{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}
+{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw15238\pich487\picwgoal8639\pichgoal276\emfblip\bliptag811903762{\*\blipuid 3064ab12a72219a285207b0654db2be0}
+010000006c00000000000000000000000a010000710000000000000000000000873b0000e601000020454d4600000100e4030000100000000200000000000000
+0000000000000000981200009e1a0000ca000000210100000000000000000000000000003e13030016670400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a0000001000000000000000000000000900000010000000100e0000730000005200000070010000010000009cffffff00000000000000000000000090010000
+0000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff0100000000000054006900
+6d00650073002000000065007700200052006f006d0061006e000000bcbbe77700040000bcc211004c3f0073003f00730000000050be1100caa7023050be1100
+2cd3a83068be11006476000800000000250000000c00000001000000120000000c00000001000000180000000c00000000000002540000006c00000000000000
+00000000dd00000071000000010000005fcc874078b88740000000005a000000050000004c000000040000000000000000000000100e00007300000058000000
+5400650073007400310000003d0000002c000000270000001c000000320000005400000054000000de000000000000000a01000071000000010000005fcc8740
+78b88740de0000005a000000010000004c000000040000000000000000000000100e00007300000050000000200000002d000000250000000c0000000e000080
+460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict
+{\pict\picscalex100\picscaley98\piccropl0\piccropr0\piccropt0\piccropb0\picw15238\pich487\picwgoal8639\pichgoal276\wmetafile8\bliptag811903762\blipupi-160{\*\blipuid 3064ab12a72219a285207b0654db2be0}
+0100090000038f02000002000802000000000802000026060f000604574d464301000000000001005f350000000001000000e403000000000000e40300000100
+00006c00000000000000000000000a010000710000000000000000000000873b0000e601000020454d4600000100e40300001000000002000000000000000000
+000000000000981200009e1a0000ca000000210100000000000000000000000000003e13030016670400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+00001000000000000000000000000900000010000000100e0000730000005200000070010000010000009cffffff000000000000000000000000900100000000
+000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d00
+650073002000000065007700200052006f006d0061006e000000bcbbe77700040000bcc211004c3f0073003f00730000000050be1100caa7023050be11002cd3
+a83068be11006476000800000000250000000c00000001000000120000000c00000001000000180000000c00000000000002540000006c000000000000000000
+0000dd00000071000000010000005fcc874078b88740000000005a000000050000004c000000040000000000000000000000100e000073000000580000005400
+650073007400310000003d0000002c000000270000001c000000320000005400000054000000de000000000000000a01000071000000010000005fcc874078b8
+8740de0000005a000000010000004c000000040000000000000000000000100e00007300000050000000200000002d000000250000000c0000000e0000804600
+00003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080460000001c00000010000000454d
+462b024000000c000000000000000e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c02110008020400
+00002e0118001c000000fb02f2ff0000000000009001000000000440001254696d6573204e657720526f6d616e00000000000000000000000000000000000400
+00002d01000004000000020101000500000009020000000213000000320a0d000000050004000000000009021100546573743100090006000600040007000d00
+0000320a0d002000010004000000000009021100204f07001c000000fb020200010000000000bc02000000000102022253797374656d0000000000000000000000000000000000000000000000000000040000002d010100030000000000}}}}}}{\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid2244587 {\object\objemb\objsetsize\objw8640\objh276{\*\objclass Word.Document.8}{\*\objdata 010500000200000010000000
+576f72642e446f63756d656e742e38000000000000000000004e0000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000a00000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdffffff0c00000003000000040000000500000006000000070000000800000009000000fefffffffefffffffefffffffeffffff0e0000000f000000100000001100000012000000130000001400000015000000feffffff1700000018000000190000001a0000001b0000001c0000001d000000feff
+ffff1f000000200000002100000022000000230000002400000025000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff020000000609020000000000c000000000000046000000000000000000000000d0b1
+6ed78110c7010b000000c00000000000000031005400610062006c006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+0000000000000000020000000010000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010100000004000000ffffffff0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000710000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+00000000000000000000000002000000060000000000000086020f00120001009c000f00040000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000040000040f1ff020040000c04000000000000000006004e006f0072006d0061006c000000020000001800434a18005f480104614a18006d4809047348090474480904000000000000000000000000000000000000
+44004100f2ffa10044000c0500000000000000001600440065006600610075006c0074002000500061007200610067007200610070006800200046006f006e0074000000000052006900f3ffb30052000c0500000000000000000c005400610062006c00650020004e006f0072006d0061006c0000001c0017f603000034
+d60600010a036c0034d60600010503000061f603000002000b00000028006b00f4ffc10028000005000000000000000007004e006f0020004c006900730074000000020000000000000000000000060000000600001000000500ffffffff0100000006200000ffff0100a07a990000000000000000000600000000000000
+000000000000000000000800000002010000c02100008dac020000000000080000009800000000300000000000000080000000800000000000000000000700060000060800000500000000060000060800000600000000060000060800000700000000000000050000000800000004000700000000000800000004000000
+000005000000080000000400070000000000050000000800000004000700010000000400000008000000e5000000000000000000000009211500ff40008001000500000005000000b444c4030100010005000000000000000500000000000000021000000000000000060000006000001000400000ffff01000000070055
+006e006b006e006f0077006e00ffff0100080000000000000000000000ffff010000000000ffff00000200ffff00000000ffff00000200ffff000000000300000047169001000002020603050405020304877a0020000000800800000000000000ff01000000000000540069006d006500730020004e0065007700200052
+006f006d0061006e00000035169001020005050102010706020507000000000000001000000000000000000000008000000000530079006d0062006f006c000000332690010000020b0604020202020204877a0020000000800800000000000000ff0100000000000041007200690061006c000000220004003108881800
+f0d002000068010000000046cbabc646cbabc6000000000200000000000000000005000000010001000000040003100100000000000000050000000100010000000100000000000000210300f010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000807a005b400b4008181123400000000000000000000000000000500000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000f0100008
+000000000000000000000000000000000000000000000000000000000048500000000009f0ff0f0000013f0000e4040000ffffff7fffffff7fffffff7fffffff7fffffff7fffffff7fffffff7f0921150000000000320000000000000000000000000000000000ffff120000000000000000000000000000000500650064
+00770069006e00050065006400770069006e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0100feff030a0000ffffffff0609020000000000c0000000000000461f00
+00004d6963726f736f6674204f666669636520576f726420446f63756d656e74000a0000004d53576f7264446f630010000000576f72642e446f63756d656e742e3800f439b271000000000000000000000000000000000000000000000000000000000203000d0000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057006f007200640044006f00630075006d0065006e00
+7400000000000000000000000000000000000000000000000000000000000000000000000000000000001a0002000300000005000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000d0000002e100000000000000500530075006d006d0061007200790049006e00
+66006f0072006d006100740069006f006e00000000000000000000000000000000000000000000000000000028000201ffffffff06000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000160000000010000000000000050044006f00630075006d0065006e007400
+530075006d006d0061007200790049006e0066006f0072006d006100740069006f006e000000000000000000000038000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000001e000000001000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eca5c100716009040000f012bf00
+0000000000100000000000060000060800000e00626a626a71507150000000000000000000000000000000000000090416002e100000133a0100133a01000600000000000000000000000000000000000000000000000000000000000000ffff0f000000000000000000ffff0f000000000000000000ffff0f0000000000
+000000000000000000000000a40000000000a403000000000000a4030000a403000000000000a403000000000000a403000000000000a403000000000000a4030000140000000000000000000000de03000014000000160400000000000016040000000000001604000000000000160400000c000000220400000c000000
+f20300000000000011050000b60000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a040000000000003a0400000000000090040000020000009204000000000000920400000000000092040000000000009204000000000000920400000000
+00009204000024000000c7050000680200002f0800003e000000b60400001500000000000000000000000000000000000000a4030000000000003a04000000000000000000000000000000000000000000003a040000000000003a040000000000003a040000000000003a04000000000000b60400000000000000000000
+00000000a403000000000000a4030000000000003a0400000000000000000000000000003a04000000000000cb040000160000007404000000000000740400000000000074040000000000003a04000010000000a4030000000000003a04000000000000a4030000000000003a0400000000000090040000000000000000
+00000000000074040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a0400000000000090040000000000000000000000000000740400000000000000000000000000007404000000000000a403000000000000a403000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074040000000000003a040000000000002e0400000c000000109422d48110c701000000000000000016040000000000004a0400000a0000007404000000000000000000000000
+00009004000000000000e104000030000000110500000000000074040000000000006d0800000000000054040000100000006d080000000000007404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000006d080000000000000000000000000000a403000000000000740400001c0000003a040000000000003a0400000000000074040000000000003a040000000000003a0400000000000000000000000000000000000000000000000000000000000000000000000000003a040000000000003a04
+0000000000003a04000000000000b604000000000000b6040000000000000000000000000000000000000000000000000000000000000000000000000000640400001000000000000000000000000000000000000000000000000000000000000000000000003a040000000000003a040000000000003a04000000000000
+11050000000000003a040000000000003a040000000000003a040000000000003a040000000000000000000000000000f203000000000000f203000000000000f2030000240000001604000000000000f203000000000000f203000000000000f2030000000000001604000000000000b803000014000000cc0300000e00
+0000da03000004000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000a403000000000000ffffffff0000000002000c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000054657374320d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000600000508000006080000f8ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014156809
+2115001668092115006d48180473481804000e1668092115006d48180473481804020006000006080000fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000001000000010006000006080000fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000404000101012c00319068011fb0d02f20b0e03d21b0080722b008072390a0052490a00525b0000017b0d00218b0d0020c90d002000000000000000000000c00000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00
+0000000000000000000000000000000000000000000000000000b4242200180000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000feff0000050102000000000000000000000000000000000001000000e0859ff2f94f6810ab9108002b27b3d9300000006801000011000000010000009000000002000000
+9800000003000000a400000004000000b000000005000000c000000006000000cc00000007000000d800000008000000e800000009000000f800000012000000040100000a000000240100000c000000300100000d0000003c0100000e000000480100000f00000050010000100000005801000013000000600100000200
+0000e40400001e00000004000000000000001e00000004000000000000001e00000008000000656477696e0000001e00000004000000000000001e00000004000000000000001e000000080000004e6f726d616c00001e00000008000000656477696e0000001e00000004000000320000001e000000180000004d696372
+6f736f6674204f666669636520576f726400000040000000000000000000000040000000005c6bb08110c70140000000005c6bb08110c70103000000010000000300000000000000030000000500000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feff0000
+05010200000000000000000000000000000000000100000002d5cdd59c2e1b10939708002b2cf9ae30000000e80000000c00000001000000680000000f00000070000000050000007c0000000600000084000000110000008c00000017000000940000000b0000009c00000010000000a400000013000000ac0000001600
+0000b40000000d000000bc0000000c000000c900000002000000e40400001e000000040000002d00000003000000010000000300000001000000030000000500000003000000e6150b000b000000000000000b000000000000000b000000000000000b000000000000001e1000000100000001000000000c100000020000
+001e000000060000005469746c6500030000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}{\result {\insrsid2244587 {\*\shppict{\pict{\*\picprop\shplid1032{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLockAspectRatio}{\sv 1}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}}{\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fRecolorFillAsPicture}{\sv 0}}
+{\sp{\sn fUseShapeAnchor}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}}
+{\sp{\sn fLine}{\sv 0}}{\sp{\sn fPreferRelativeResize}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fCameFromImgDummy}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}
+\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw15238\pich487\picwgoal8639\pichgoal276\emfblip\bliptag-893520492{\*\blipuid cabdf594f09abc870c7dcae72283f7be}
+010000006c00000000000000000000000a010000710000000000000000000000873b0000e601000020454d4600000100f0030000110000000200000000000000
+0000000000000000981200009e1a0000ca000000210100000000000000000000000000003e13030016670400460000002c00000020000000454d462b01400100
+1c000000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c00000000000000
+244001000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c00000018000000
+0a0000001000000000000000000000000900000010000000100e000073000000250000000c0000000e000080120000000c000000010000005200000070010000
+010000009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e0065007700200052006f006d0061006e000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047169001000002020603050405020304877a0020
+000000800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e000000bcbbe77700040000bcc21100
+4c3f0073003f00730000000050be1100caa7023050be11002cd3a83068be11006476000800000000250000000c00000001000000180000000c00000000000002
+540000006c0000000000000000000000dd00000071000000010000005fcc874078b88740000000005a000000050000004c000000040000000000000000000000
+100e0000730000005800000054006500730074003200f2773d0000002c000000270000001c000000320000005400000054000000de000000000000000a010000
+71000000010000005fcc874078b88740de0000005a000000010000004c000000040000000000000000000000100e00007300000050000000200000802d000000
+250000000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f0000008000000080460000001c00000010000000454d462b024000000c000000000000000e00000014000000000000001000000014000000}}{\nonshppict
+{\pict\picscalex100\picscaley98\piccropl0\piccropr0\piccropt0\piccropb0\picw15238\pich487\picwgoal8639\pichgoal276\wmetafile8\bliptag-893520492\blipupi-160{\*\blipuid cabdf594f09abc870c7dcae72283f7be}
+0100090000039902000002000e02000000000e02000026060f001204574d46430100000000000100b4040000000001000000f003000000000000f00300000100
+00006c00000000000000000000000a010000710000000000000000000000873b0000e601000020454d4600000100f00300001100000002000000000000000000
+000000000000981200009e1a0000ca000000210100000000000000000000000000003e13030016670400460000002c00000020000000454d462b014001001c00
+0000100000000210c0db000000005802000058020000460000005c00000050000000454d462b224004000c000000000000001e4009000c000000000000002440
+01000c000000000000003040020010000000040000000000803f214007000c00000000000000044000000c00000000000000160000000c000000180000000a00
+00001000000000000000000000000900000010000000100e000073000000250000000c0000000e000080120000000c0000000100000052000000700100000100
+00009cffffff000000000000000000000000900100000000000004400012540069006d006500730020004e0065007700200052006f006d0061006e0000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000047169001000002020603050405020304877a00200000
+00800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e000000bcbbe77700040000bcc211004c3f
+0073003f00730000000050be1100caa7023050be11002cd3a83068be11006476000800000000250000000c00000001000000180000000c000000000000025400
+00006c0000000000000000000000dd00000071000000010000005fcc874078b88740000000005a000000050000004c000000040000000000000000000000100e
+0000730000005800000054006500730074003200f2773d0000002c000000270000001c000000320000005400000054000000de000000000000000a0100007100
+0000010000005fcc874078b88740de0000005a000000010000004c000000040000000000000000000000100e00007300000050000000200000802d0000002500
+00000c0000000e000080460000003400000028000000454d462b2a40000024000000180000000000803f00000080000000800000803f00000080000000804600
+00001c00000010000000454d462b024000000c000000000000000e000000140000000000000010000000140000000400000003010800050000000b0200000000
+050000000c0211000802040000002e0118001c000000fb020200010000000000bc02000000000102022253797374656d00000000000000000000000000000000
+00000000000000000000040000002d01000004000000020101001c000000fb02f2ff0000000000009001000000000440001254696d6573204e657720526f6d61
+6e0000000000000000000000000000000000040000002d0101000500000009020000000213000000320a0d000000050004000000000009021100546573743200090006000600040007000d000000320a0d00200001000400000000000902110020060700040000002d010000030000000000}}}}}}{\insrsid1989802 
+
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf-novirus.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf Wed Jan 30 15:17:10 2008
@@ -0,0 +1,203 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid1989802}{\*\generator Micro
+soft Word 11.0.5604;}{\info{\title   }{\author edwin}{\operator edwin}{\creatim\yr2006\mo11\dy25\hr13\min4}{\revtim\yr2006\mo11\dy25\hr13\min5}{\version1}{\edmins1}{\nofpages1}{\nofwords6}{\nofchars35}{\*\company -}{\nofcharsws40}{\vern24689}}
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot1989802\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1989802 {\object\objemb\objw870\objh765{\*\objclass Package}{\*\objdata 0105000002000000080000005061636b616765000000000000000000a6000000
+020045696361722e636f6d00433a5c444f43554d457e315c656477696e5c4465736b746f705c65696361722e636f6d000000030024000000433a5c444f43554d457e315c656477696e5c4465736b746f705c65696361722e636f6d004400000058354f2150254041505b345c505a58353428505e2937434329377d244549
+4341522d5354414e444152442d414e544956495255532d544553542d46494c452124482b482a000001050000050000000d0000004d45544146494c455049435400ff050000bbfaffff7e0e00000800ff0545050000
+0100090000033b0700000200210600000000050000000b0200000000050000000c02320039001c000000fb02f5ff000000000000900100000001040002005461686f6d610000e2090a1500fc0700b8a4f377c1a4f3772030f577230a66ac040000002d01000005000000090200000000050000000102ffffff00a5000000
+410bc600880020002000000000002000200000000d002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000000000002000200000000d002800000020000000200000000100180000000000000c00000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000050000002e01060000000b0000002105090045696361722e636f6d0021001d001c000000fb021000070000000000bc02000000000102
+022253797374656d0000230a66ac00000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}{\result {\insrsid1989802 {\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1535\pich1349\picwgoal870\pichgoal765\wmetafile8\bliptag-484375346\blipupi94{\*\blipuid e32104ce837a06ca9ac450cc7789c0c2}0100090000033b0700000200210600000000050000000b0200000000050000000c02320039001c000000fb02f5ff000000000000900100000001040002005461
+686f6d610000e2090a1500fc0700b8a4f377c1a4f3772030f577230a66ac040000002d01000005000000090200000000050000000102ffffff00a5000000410b
+c600880020002000000000002000200000000d002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000
+ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+ffffffff21060000410b4600660020002000000000002000200000000d002800000020000000200000000100180000000000000c000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000005000000020101000000050000002e01060000000b0000002105090045696361722e636f6d0021001d001c000000fb021000070000000000bc02000000000102022253797374656d0000230a66ac00000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}}}}}{\pard\plain 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033\insrsid1989802 {\object\objemb\objw855\objh765{\*\objclass Package}{\*\objdata 0105000002000000080000005061636b61676500
+00000000000000007f020000
+0200436c616d2e65786500433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e657865000000030023000000433a5c444f43554d457e315c656477696e5c4465736b746f705c636c616d2e65786500200200004d5a50000200000004000f00ffff0000b80000002100000040001a000000000000
+00000000000000000000000000000000000000000000000000000000010000bb7110400033c050508bf3535350b02940300466ac79f9ba3100780dad50ff66700e1fbe3100e9e5ffb409cd21b44ccd21620c0a0102707617021e4e0c042fdacc100000000000000000000000000000c01000008010000000000000000000
+0000000000da100000f410000000000000000000000000000000000000000000004b45524e454c33322e444c4c00004578697450726f63657373005553455233322e444c4c00434c414d657373616765426f784100e6100000000000003f3f3f3f504500004c010100614361420000000000000000e0008e810b01021900
+0400000006000000000000401000000010000040000000000040000010000000020000010000000000000003000a0000000000002000000004000000000000020000000000100000200000000010000010000000000000100000000000000000000000841000008000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b434c414d41565d00100000001000000002000001000000000000000000000000
+000000000000c0000001050000050000000d0000004d45544146494c455049435400e4050000bbfaffff7c0e00000800e40545050000
+0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461686f6d610000c8090a3e00fc0700b8a4f377c1a4f3772030f577c50a66b4040000002d01000005000000090200000000050000000102ffffff00a5000000
+410bc600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c00000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0
+c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c080808000
+0000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
+c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf000000000000000000000000000000
+0000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c080808000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc020000000001020222
+53797374656d0000c50a66b400000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}{\result {\insrsid1989802 {\pict{\*\picprop\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}
+{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0
+\picw1508\pich1349\picwgoal855\pichgoal765\wmetafile8\bliptag-1407700598\blipupi94{\*\blipuid ac18318ac0649e703ac1ddfb490adf80}0100090000033a0700000200210600000000050000000b0200000000050000000c02320038001c000000fb02f5ff000000000000900100000001040002005461
+686f6d610000c8090a3e00fc0700b8a4f377c1a4f3772030f577c50a66b4040000002d01000005000000090200000000050000000102ffffff00a5000000410b
+c600880020002000000000002000200000000c002800000020000000400000000100010000000000000100000000000000000000000000000000000000000000
+ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
+ffffffff21060000410b4600660020002000000000002000200000000c002800000020000000200000000100180000000000000c000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080808080808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0808080000000808080c0c0c0808080ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0c0c0
+808080000000808080c0c0c080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+8080808080808080808080808080808080808080808080808080808080c0c0c0808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000000000000000000000000000000000000000000000000000000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000
+808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf
+0000bf0000c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0000000808080000000808080c0c0c0bf0000bf0000bf0000bf0000bf0000bf0000bf00
+00bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000bf0000
+808080000000808080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0
+c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c08080800000008080808080808080808080808080808080808080808080808080
+80808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080
+80808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000005000000020101000000050000002e01060000000a00000021050800436c616d2e65786521001c001c000000fb021000070000000000bc02000000000102022253797374656d0000c50a66b400000a0026008a0100000000ffffffff8cfc0700040000002d010100030000000000}}}}}{\insrsid1989802 
+
+\par }}
\ No newline at end of file

Propchange: test-suite/trunk/MultiSource/Applications/ClamAV/inputs/rtf-test/rtf1.rtf

------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/MultiSource/Applications/ClamAV/is_tar.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/is_tar.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/is_tar.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/is_tar.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,47 @@
+/*
+ * Header file for public domain tar (tape archive) program.
+ *
+ * @(#)tar.h 1.20 86/10/29	Public Domain.
+ *
+ * Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
+ *
+ * $Id: is_tar.h,v 1.2 2007/02/11 00:41:13 tkojm Exp $ # checkin only
+ */
+
+/*
+ * Header block on tape.
+ *
+ * I'm going to use traditional DP naming conventions here.
+ * A "block" is a big chunk of stuff that we do I/O on.
+ * A "record" is a piece of info that we care about.
+ * Typically many "record"s fit into a "block".
+ */
+#define	RECORDSIZE	512
+#define	NAMSIZ	100
+#define	TUNMLEN	32
+#define	TGNMLEN	32
+
+union record {
+	char		charptr[RECORDSIZE];
+	struct header {
+		char	name[NAMSIZ];
+		char	mode[8];
+		char	uid[8];
+		char	gid[8];
+		char	size[12];
+		char	mtime[12];
+		char	chksum[8];
+		char	linkflag;
+		char	linkname[NAMSIZ];
+		char	magic[8];
+		char	uname[TUNMLEN];
+		char	gname[TGNMLEN];
+		char	devmajor[8];
+		char	devminor[8];
+	} header;
+};
+
+/* The magic field is filled with this if uname and gname are valid. */
+#define	TMAGIC		"ustar  "	/* 7 chars and a null */
+
+int is_tar(unsigned char *buf, unsigned int nbytes);

Added: test-suite/trunk/MultiSource/Applications/ClamAV/jscript.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/jscript.h?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/jscript.h (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/jscript.h Wed Jan 30 15:17:10 2008
@@ -0,0 +1,24 @@
+/*
+ *  Copyright (C) 2006 Nigel Horne <njh at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#include "js.h"
+#include "jsint.h"
+
+int	cli_scanjs(const char *dir, int desc);
+JSInterpPtr	create_interp(JSIOFunc s_stdout);

Added: test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_aspack.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_aspack.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_aspack.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_aspack.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,417 @@
+/*
+ *  Copyright (C) 2007 Amaketos, LLC
+ *  Authors: Luciano Giuseppe 'Pnluck' <pnluck at virgilio.it>
+ *           aCaB <acab at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#include <string.h>
+#include "cltypes.h"
+#include "execs.h"
+#include "others.h"
+#include "rebuildpe.h"
+#include "aspack.h"
+
+
+struct DICT_HELPER {
+  uint32_t *starts;
+  uint8_t *ends;
+  uint32_t size;
+};
+
+struct ASPK {
+  uint32_t bitpos;
+  uint32_t hash;
+  uint8_t array1[19];
+  uint8_t array2[758];
+  uint32_t init_array[58];
+  struct DICT_HELPER dict_helper[4];
+  uint8_t *input;
+  uint8_t *iend;
+  uint8_t *decrypt_dict;
+  uint32_t decarray3[4][24];
+  uint32_t decarray4[4][24];
+  int dict_ok;
+};
+
+
+static inline int readstream(struct ASPK *stream) {
+  while (stream->bitpos >= 8) {
+    if (stream->input>=stream->iend) return 0;
+    stream->hash = (stream->hash << 8) | *stream->input;
+    stream->input++;
+    stream->bitpos -= 8;
+  }
+  return 1;
+}
+
+static uint32_t getdec(struct ASPK *stream, uint8_t which, int *err) {
+  uint32_t ret;
+  uint8_t pos;
+  uint32_t *d3 = stream->decarray3[which];
+  uint32_t *d4 = stream->decarray4[which];
+
+  *err=1;
+
+  if (!readstream(stream)) return 0;
+
+  ret = (stream->hash >> (8 - stream->bitpos)) & 0xfffe00;
+
+  if (ret < d3[8]) {
+    if ((ret>>16) >= 0x100) return 0;
+    if (!(pos=stream->dict_helper[which].ends[ret>>16]) || pos>= 24) return 0; /* 0<pos<24 */
+  } else {
+    if (ret < d3[10]) {
+      if (ret < d3[9]) pos = 9;
+      else pos = 10;
+    } else {
+      if (ret < d3[11] ) pos = 11;
+      else {
+	if (ret < d3[12]) pos = 12;
+	else {
+	  if (ret < d3[13]) pos = 13;
+	  else {
+	    if (ret < d3[14]) pos = 14;
+	    else pos = 15;
+	  }
+	}
+      }
+    }
+  }
+
+  stream->bitpos += pos;
+  ret = ((ret - d3[pos-1]) >> (24 - pos)) + d4[pos];
+
+  if (ret >= stream->dict_helper[which].size) return 0;
+  ret = stream->dict_helper[which].starts[ret];
+
+  *err=0;
+  return ret;
+}
+
+
+static uint8_t build_decrypt_array(struct ASPK *stream, uint8_t* array, uint8_t which) {
+  uint32_t sum = 0, counter = 23, i, endoff = 0, bus[18], dict[18];
+
+  uint32_t *d3 = stream->decarray3[which];
+  uint32_t *d4 = stream->decarray4[which];
+
+  memset(bus,0,sizeof(bus));
+  memset(dict,0,sizeof(dict));
+
+  for (i = 0; i < stream->dict_helper[which].size; i++) {
+    /* within bounds - see comments in build_decrypt_dictionaries */
+    if (array[i] > 17) return 0;
+    bus[array[i]]++;
+  }
+
+  d3[0] = 0;
+  d4[0] = 0;
+
+  i = 0;
+  while (counter >= 9) { /* 0<=i<=14 */
+    sum += (bus[i+1] << counter);
+    if (sum > 0x1000000) return 0;
+
+    d3[i+1] = sum;
+    d4[i+1] = dict[i+1] = bus[i] + d4[i];
+      
+    if (counter >= 0x10) {
+      uint32_t old = endoff;
+      endoff = d3[i+1] >> 0x10;
+      if (endoff-old) {
+	if (!CLI_ISCONTAINED(stream->dict_helper[which].ends, 0x100, stream->dict_helper[which].ends+old, endoff-old)) return 0;
+	memset((stream->dict_helper[which].ends + old), i+1, endoff-old);
+      }
+    }
+
+    i++;
+    counter--;
+  }
+
+  if (sum != 0x1000000) return 0;
+
+  i = 0;
+  for (i=0; i < stream->dict_helper[which].size; i++) {
+    if (array[i]) { /* within bounds - see above */
+      if (array[i] > 17) return 0;
+      if (dict[array[i]]>=stream->dict_helper[which].size) return 0;
+      stream->dict_helper[which].starts[dict[array[i]]] = i;
+      dict[array[i]]++;
+    }
+  }
+
+  return 1;
+}
+
+
+static uint8_t getbits(struct ASPK *stream, uint32_t num, int *err) {
+  uint8_t retvalue;
+
+  if (!readstream(stream)) {
+    *err=1;
+    return 0;
+  }
+
+  *err = 0;
+  retvalue = ((stream->hash >> (8 - stream->bitpos))&0xffffff) >> (24 - num);
+  stream->bitpos += num;
+
+  return retvalue;
+}
+
+
+static int build_decrypt_dictionaries(struct ASPK *stream) {
+  unsigned int counter;
+  uint32_t ret;
+  int oob;
+
+  if (!getbits(stream, 1, &oob)) memset(stream->decrypt_dict, 0, 0x2f5);
+  if (oob) return 0;
+
+  for (counter = 0; counter < 19; counter++) {
+    stream->array1[counter]=getbits(stream, 4, &oob);
+    if (oob) return 0;
+  }
+
+  if (!build_decrypt_array(stream, stream->array1, 3)) return 0; /* array1[19] - [3].size=19 */
+
+  counter = 0;
+  while (counter < 757) {
+    ret = getdec(stream, 3, &oob);
+    if (oob) return 0;
+    if (ret >= 16) {
+      if (ret != 16) {
+	if (ret == 17) ret = 3 + getbits(stream, 3, &oob);
+	else ret = 11 + getbits(stream, 7, &oob);
+	if (oob) return 0;
+	while (ret) {
+	  if (counter >= 757) break;
+	  stream->array2[1+counter] = 0;
+	  counter++;
+	  ret--;
+	}
+      } else {
+	ret = 3 + getbits(stream, 2, &oob);
+	if (oob) return 0;
+	while (ret) {
+	  if (counter >= 757) break;
+	  stream->array2[1+counter] = stream->array2[counter];
+	  counter++;
+	  ret--;
+	}
+      }
+    } else {
+      stream->array2[1+counter] = (stream->decrypt_dict[counter] + ret) & 0xF;
+      counter++;
+    }
+  }
+  
+  if (!build_decrypt_array(stream, &stream->array2[1], 0) /* array2[758-1=757] - [0].size=721 */ || !build_decrypt_array(stream, &stream->array2[722], 1) /* array2[758-722=36] - [1].size=28 */ || !build_decrypt_array(stream, &stream->array2[750], 2) /* array2[758-750=8] - [2].size=8 */ ) return 0;
+  
+  stream->dict_ok = 0;
+  for (counter = 0; counter < 8; counter++) {
+    if (stream->array2[750+counter] != 3) {
+      stream->dict_ok = 1;
+      break;
+    }
+  }
+
+  memcpy(stream->decrypt_dict,&stream->array2[1],757);
+
+  return 1;
+}
+
+
+static int decrypt(struct ASPK *stream, uint8_t *stuff, uint32_t size, uint8_t *output) {
+  /* ep+6d6 -> ep+748  = 0x72*/
+  uint32_t gen, backsize, backbytes, useold, counter = 0;
+  uint32_t hist[4]={0,0,0,0};
+  int oob;
+
+  while (counter < size) {
+    gen = getdec(stream, 0, &oob);
+    if (oob) return 0;
+    if (gen < 256) { /* implied within bounds */
+      output[counter] = (uint8_t)gen;
+      counter++;
+      continue;
+    }
+    if (gen >= 720) {
+      if (!build_decrypt_dictionaries(stream)) return 0;
+      continue;
+    }
+    if ((backbytes = (gen - 256) >> 3)>=58) return 0; /* checks init_array + stuff */
+    backsize =  ((gen - 256) & 7) + 2;
+    if ((backsize-2)==7) {
+      uint8_t hlp;
+      gen = getdec(stream, 1, &oob);
+      if (oob || gen>=0x56) return 0;
+      hlp = stuff[gen + 0x1c];
+      if (!readstream(stream)) return 0;
+      backsize += stuff[gen] + (( (stream->hash >> (8 - stream->bitpos)) & 0xffffff ) >> (0x18 - hlp));
+      stream->bitpos += hlp;
+    }
+
+    useold = stream->init_array[backbytes];
+    gen = stuff[backbytes + 0x38];
+
+    if (!stream->dict_ok || gen < 3) {
+      if (!readstream(stream)) return 0;
+      useold += ((stream->hash >> ( 8 - stream->bitpos) ) & 0xffffff) >> (24 - gen);
+      stream->bitpos += gen;
+    } else {
+      gen -= 3;
+      if (!readstream(stream)) return 0;
+      useold += ((((stream->hash >> ( 8 - stream->bitpos)) & 0xffffff) >> (24 - gen)) * 8);
+      stream->bitpos += gen;
+      useold += getdec(stream, 2, &oob);
+      if (oob) return 0;
+    }
+    
+    if (useold < 3) {
+      backbytes = hist[useold];
+      if (useold != 0) {
+	hist[useold] = hist[0];
+	hist[0] = backbytes;
+      }
+    } else {
+      hist[2] = hist[1];
+      hist[1] = hist[0];
+      hist[0] = backbytes = useold-3;
+    }
+
+    backbytes++;
+
+    if (!backbytes || backbytes>counter || backsize>size-counter) return 0;
+    while (backsize--) {
+      output[counter] = output[counter-backbytes];
+      counter++;
+    }
+  }
+
+  return 1;
+}
+
+
+static int decomp_block(struct ASPK *stream, uint32_t size, uint8_t *stuff, uint8_t *output) {
+  memset(stream->decarray3,0,sizeof(stream->decarray3));
+  memset(stream->decarray4,0,sizeof(stream->decarray4));
+  memset(stream->decrypt_dict, 0, 757);
+  stream->bitpos = 0x20;
+  if (!build_decrypt_dictionaries(stream)) return 0;
+  return decrypt(stream, stuff, size, output);
+}
+
+#define INIT_DICT_HELPER(n,sz)					\
+  stream.dict_helper[n].starts = (uint32_t *)wrkbuf;		\
+  stream.dict_helper[n].ends = &wrkbuf[sz * sizeof(uint32_t)];	\
+  stream.dict_helper[n].size = sz;				\
+  wrkbuf = &wrkbuf[sz * sizeof(uint32_t) + 0x100];
+
+int unaspack212(uint8_t *image, unsigned int size, struct cli_exe_section *sections, uint16_t sectcount, uint32_t ep, uint32_t base, int f) {
+  struct ASPK stream;
+  uint32_t i=0, j=0;
+  uint8_t *blocks = image+ep+0x57c, *wrkbuf;
+  uint32_t block_rva = 1, block_size;
+  struct cli_exe_section *outsects;
+
+  if (!(wrkbuf = cli_calloc(0x1800, sizeof(uint8_t)))) {
+    cli_dbgmsg("Aspack: Unable to allocate dictionary\n");
+    return 0;
+  }
+
+  INIT_DICT_HELPER(0, 721); /* dictionary -> dictionary + b44 */
+  INIT_DICT_HELPER(1, 28);  /* dictionary + c44 -> dictionary + cb4 */
+  INIT_DICT_HELPER(2, 8);   /* dictionary + db4 -> dictionary + dd4 */
+  INIT_DICT_HELPER(3, 19);  /* dictionary + ed4 -> dictionary + f20 */
+  stream.decrypt_dict = wrkbuf;
+
+  stream.hash = 0x10000;
+
+  for (i = 0; i < 58; i++) {
+    stream.init_array[i] = j;
+    j += ( 1 << image[ep+i+0x70e]); /* boundchecked in pe.c */
+  }
+
+  memset(stream.array1,0,sizeof(stream.array1));
+  memset(stream.array2,0,sizeof(stream.array2));
+
+  i=0;
+  while (CLI_ISCONTAINED(image, size, blocks, 8) && (block_rva = cli_readint32(blocks)) && (block_size = cli_readint32(blocks+4)) && CLI_ISCONTAINED(image, size, image+block_rva, block_size)) {
+    wrkbuf = (uint8_t *)cli_calloc(block_size+0x10e, sizeof(uint8_t));
+    if (!wrkbuf) break;
+
+    stream.input = wrkbuf;
+    stream.iend = &wrkbuf[block_size+0x10e];
+
+    memcpy(wrkbuf, image + block_rva, block_size);
+
+    cli_dbgmsg("Aspack: unpacking block rva:%x - sz:%x\n", block_rva, block_size);
+    if (!decomp_block(&stream, block_size, &image[ep+0x6d6], image + block_rva)) {
+      free(wrkbuf);
+      break;
+    }
+
+    free(wrkbuf);
+    
+    if (i==0 && block_size>7) { /* first sect j/c unrolling */
+      while (i < block_size - 6) {
+	uint8_t curbyte = image[block_rva+i];
+	if (curbyte == 0xe8 || curbyte == 0xe9) {
+	  wrkbuf = &image[block_rva+i+1];
+	  if (*wrkbuf == image[ep+0x148]) {
+	    uint32_t target = cli_readint32(wrkbuf) & 0xffffff00;
+	    CLI_ROL(target, 0x18);
+	    cli_writeint32(wrkbuf, target - i);
+	    i+=4;
+	  }
+	}
+	i++;
+      }
+    }
+    blocks+=8;
+  }
+  
+  free(stream.dict_helper[0].starts);
+  if (block_rva) {
+    cli_dbgmsg("Aspack: unpacking failure\n");
+    return 0;
+  }
+
+  if(sectcount>2 && ep == sections[sectcount-2].rva && !sections[sectcount-1].rsz) {
+    sectcount-=2;
+  }
+  if(!(outsects=cli_malloc(sizeof(struct cli_exe_section)*sectcount))) {
+    cli_dbgmsg("Aspack: OOM - rebuild failed\n");
+    cli_writen(f, image, size);
+    return 1; /* No whatsoheader - won't infloop in pe.c */
+  }
+  memcpy(outsects, sections, sizeof(struct cli_exe_section)*sectcount);
+  for(i=0; i<sectcount; i++) {
+    outsects[i].raw=outsects[i].rva;
+    outsects[i].rsz=outsects[i].vsz;
+  }
+  if (!cli_rebuildpe((char *)image, outsects, sectcount, base, cli_readint32(image + ep + 0x39b), 0, 0, f)) {
+    cli_dbgmsg("Aspack: rebuild failed\n");
+    cli_writen(f, image, size);
+  } else {
+    cli_dbgmsg("Aspack: successfully rebuilt\n");
+  }
+  free(outsects);
+  return 1;
+}
+

Added: test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_autoit.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_autoit.c?rev=46573&view=auto

==============================================================================
--- test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_autoit.c (added)
+++ test-suite/trunk/MultiSource/Applications/ClamAV/libclamav_autoit.c Wed Jan 30 15:17:10 2008
@@ -0,0 +1,950 @@
+/*
+ *  Copyright (C) 2007 Sourcefire Inc.
+ *  Author: aCaB <acab at clamav.net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include "clamav-config.h"
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifndef O_BINARY
+#define O_BINARY        0
+#endif
+
+#include "others.h"
+#include "scanners.h"
+
+
+/* FIXME: use unicode detection and normalization from edwin */
+static unsigned int u2a(uint8_t *dest, unsigned int len) {
+  uint8_t *src = dest;
+  unsigned int i,j;
+
+  if (len<2)
+    return len;
+
+  if (len>4 && src[0]==0xff && src[1]==0xfe && src[2]) {
+    len-=2;
+    src+=2;
+  } else {
+    unsigned int cnt=0;
+    j = (len > 20) ? 20 : (len&~1);
+      
+    for (i=0; i<j; i+=2)
+      cnt+=(src[i]!=0 && src[i+1]==0);
+
+    if (cnt*4 < j)
+      return len;
+  }
+
+  j=len;
+  len>>=1;
+  for (i=0; i<j; i+=2)
+    *dest++ = src[i];
+
+  return len;
+}
+
+
+/*********************
+   MT realted stuff 
+*********************/
+
+struct MT {
+  uint32_t mt[624];
+  uint32_t items;
+  uint32_t *next;
+};
+
+static uint8_t MT_getnext(struct MT *MT) {
+  uint32_t r;
+
+  if (!--MT->items) {
+    uint32_t *mt = MT->mt;
+    unsigned int i;
+
+    MT->items = 624;
+    MT->next = mt;
+
+    for (i=0; i<227; i++)
+      mt[i] = ((((mt[i] ^ mt[i+1])&0x7ffffffe)^mt[i])>>1)^((0-(mt[i+1]&1))&0x9908b0df)^mt[i+397];
+    for (; i<623; i++)
+      mt[i] = ((((mt[i] ^ mt[i+1])&0x7ffffffe)^mt[i])>>1)^((0-(mt[i+1]&1))&0x9908b0df)^mt[i-227];
+    mt[623] = ((((mt[623] ^ mt[0])&0x7ffffffe)^mt[623])>>1)^((0-(mt[0]&1))&0x9908b0df)^mt[i-227];
+  }
+
+  r = *(MT->next++);
+  r ^= (r >> 11);
+  r ^= ((r & 0xff3a58ad) << 7);
+  r ^= ((r & 0xffffdf8c) << 15);
+  r ^= (r >> 18);
+  return (uint8_t)(r >> 1);
+}
+
+static void MT_decrypt(uint8_t *buf, unsigned int size, uint32_t seed) {
+  struct MT MT;
+  unsigned int i;
+  uint32_t *mt = MT.mt;
+
+  *mt=seed;
+  for(i=1; i<624; i++)
+    mt[i] = i+0x6c078965*((mt[i-1]>>30)^mt[i-1]);
+  MT.items = 1;
+
+  while(size--)
+    *buf++ ^= MT_getnext(&MT);
+}
+
+
+/*********************
+     inflate stuff 
+*********************/
+
+struct UNP {
+  uint8_t *outputbuf;
+  uint8_t *inputbuf;
+  uint32_t cur_output;
+  uint32_t cur_input;
+  uint32_t usize;
+  uint32_t csize;
+  uint32_t bits_avail;
+  union {
+    uint32_t full;
+    struct {
+#if WORDS_BIGENDIAN != 0
+      uint16_t h; /* BE */
+      uint16_t l;
+#else
+      uint16_t l; /* LE */
+      uint16_t h;
+#endif
+    } half;
+  } bitmap;
+  uint32_t error;
+};
+
+
+static uint32_t getbits(struct UNP *UNP, uint32_t size) {
+  UNP->bitmap.half.h = 0;
+  if (size > UNP->bits_avail && ((size - UNP->bits_avail - 1)/16+1)*2 > UNP->csize - UNP->cur_input) {
+    cli_dbgmsg("autoit: getbits() - not enough bits available\n");
+    UNP->error = 1;
+    return 0; /* won't infloop nor spam */
+  }
+  while (size) {
+    if (!UNP->bits_avail) {
+      UNP->bitmap.half.l |= UNP->inputbuf[UNP->cur_input++]<<8;
+      UNP->bitmap.half.l |= UNP->inputbuf[UNP->cur_input++];
+      UNP->bits_avail = 16;
+    }
+    UNP->bitmap.full<<=1;
+    UNP->bits_avail--;
+    size--;
+  }
+  return (uint32_t)UNP->bitmap.half.h;
+}
+
+
+/*********************
+ autoit3 EA05 handler 
+*********************/
+
+
+static int ea05(int desc, cli_ctx *ctx, char *tmpd) {
+  uint8_t b[300], comp;
+  uint8_t *buf = b;
+  uint32_t s, m4sum=0;
+  int i;
+  unsigned int files=0;
+  char tempfile[1024];
+  struct UNP UNP;
+
+  if (cli_readn(desc, buf, 16)!=16)
+    return CL_CLEAN;
+
+  for (i=0; i<16; i++)
+    m4sum += buf[i];
+
+  while(!ctx->limits || !ctx->limits->maxfiles || files < ctx->limits->maxfiles) {
+    buf = b;
+    if (cli_readn(desc, buf, 8)!=8)
+      return CL_CLEAN;
+
+    /*     MT_decrypt(buf,4,0x16fa);  waste of time */
+    if((uint32_t)cli_readint32((char *)buf) != 0xceb06dff) {
+      cli_dbgmsg("autoit: no FILE magic found, extraction complete\n");
+      return CL_CLEAN;
+    }
+
+    s = cli_readint32((char *)buf+4) ^ 0x29bc;
+    if ((int32_t)s<0)
+      return CL_CLEAN; /* the original code wouldn't seek back here */
+    if(cli_debug_flag && s<sizeof(b)) {
+      if (cli_readn(desc, buf, s)!=(int)s)
+	return CL_CLEAN;
+      buf[s]='\0';
+      MT_decrypt(buf,s,s+0xa25e);
+      cli_dbgmsg("autoit: magic string '%s'\n", buf);
+    } else {
+      lseek(desc, s, SEEK_CUR);
+    }
+
+    if (cli_readn(desc, buf, 4)!=4)
+      return CL_CLEAN;
+    s = cli_readint32((char *)buf) ^ 0x29ac;
+    if ((int32_t)s<0)
+      return CL_CLEAN; /* the original code wouldn't seek back here */
+    if (cli_debug_flag && s<sizeof(b)) {
+      if (cli_readn(desc, buf, s)!=(int)s)
+	return CL_CLEAN;
+      MT_decrypt(buf,s,s+0xf25e);
+      buf[s]='\0';
+      cli_dbgmsg("autoit: original filename '%s'\n", buf);
+    } else {
+      lseek(desc, s, SEEK_CUR);
+    }
+
+    if (cli_readn(desc, buf, 13)!=13)
+      return CL_CLEAN;
+    comp = *buf;
+    UNP.csize = cli_readint32((char *)buf+1) ^ 0x45aa;
+    if ((int32_t)UNP.csize<0) {
+      cli_dbgmsg("autoit: bad file size - giving up\n");
+      return CL_CLEAN;
+    }
+
+    lseek(desc, 16, SEEK_CUR);
+
+    if(!UNP.csize) {
+      cli_dbgmsg("autoit: skipping empty file\n");
+      continue;
+    }
+    cli_dbgmsg("autoit: compressed size: %x\n", UNP.csize);
+    cli_dbgmsg("autoit: advertised uncompressed size %x\n", cli_readint32((char *)buf+5) ^ 0x45aa);
+    cli_dbgmsg("autoit: ref chksum: %x\n", cli_readint32((char *)buf+9) ^ 0xc3d2);
+
+    if(ctx->limits && ctx->limits->maxfilesize && UNP.csize > ctx->limits->maxfilesize) {
+      cli_dbgmsg("autoit: skipping file due to size limit (%u, max: %lu)\n", UNP.csize, ctx->limits->maxfilesize);
+      lseek(desc, UNP.csize, SEEK_CUR);
+      continue;
+    }
+
+    if (!(buf = cli_malloc(UNP.csize)))
+      return CL_EMEM;
+    if (cli_readn(desc, buf, UNP.csize)!=(int)UNP.csize) {
+      cli_dbgmsg("autoit: failed to read compressed stream. broken/truncated file?\n");
+      free(buf);
+      return CL_CLEAN;
+    }
+    MT_decrypt(buf,UNP.csize,0x22af+m4sum);
+
+    if (comp == 1) {
+      cli_dbgmsg("autoit: file is compressed\n");
+      if (cli_readint32((char *)buf)!=0x35304145) {
+	cli_dbgmsg("autoit: bad magic or unsupported version\n");
+	free(buf);
+	continue;
+      }
+
+      if(!(UNP.usize = be32_to_host(*(uint32_t *)(buf+4))))
+	UNP.usize = UNP.csize; /* only a specifically crafted or badly corrupted sample should land here */
+      if(ctx->limits && ctx->limits->maxfilesize && UNP.usize > ctx->limits->maxfilesize) {
+	cli_dbgmsg("autoit: skipping file due to size limit (%u, max: %lu)\n", UNP.csize, ctx->limits->maxfilesize);
+	free(buf);
+	continue;
+      }
+
+      if (!(UNP.outputbuf = cli_malloc(UNP.usize))) {
+	free(buf);
+	return CL_EMEM;
+      }
+      cli_dbgmsg("autoit: uncompressed size again: %x\n", UNP.usize);
+
+      UNP.inputbuf = buf;
+      UNP.cur_output = 0;
+      UNP.cur_input = 8;
+      UNP.bitmap.full = 0;
+      UNP.bits_avail = 0;
+      UNP.error = 0;
+
+      while (!UNP.error && UNP.cur_output < UNP.usize) {
+	if (getbits(&UNP, 1)) {
+	  uint32_t bb, bs, addme=0;
+	  bb = getbits(&UNP, 15);
+
+	  if ((bs = getbits(&UNP, 2))==3) {
+	    addme = 3;
+	    if((bs = getbits(&UNP, 3))==7) {
+	      addme = 10;
+	      if((bs = getbits(&UNP, 5))==31) {
+		addme = 41;
+		if((bs = getbits(&UNP, 8))==255) {
+		  addme = 296;
+		  while((bs = getbits(&UNP, 8))==255) {
+		    addme+=255;
+		  }
+		}
+	      }
+	    }
+	  }
+	  bs += 3+addme;
+
+	  if(!CLI_ISCONTAINED(UNP.outputbuf, UNP.usize, &UNP.outputbuf[UNP.cur_output], bs) ||
+	     !CLI_ISCONTAINED(UNP.outputbuf, UNP.usize, &UNP.outputbuf[UNP.cur_output-bb], bs)) {
+	    UNP.error = 1;
+	    break;
+	  }
+	  while(bs--) {
+	    UNP.outputbuf[UNP.cur_output]=UNP.outputbuf[UNP.cur_output-bb];
+	    UNP.cur_output++;
+	  }
+	} else {
+	  UNP.outputbuf[UNP.cur_output] = (uint8_t)getbits(&UNP, 8);
+	  UNP.cur_output++;
+	}
+      }
+
+      free(buf);
+      /* Sometimes the autoit exe is in turn packed/lamed with a runtime compressor and similar shit.
+       * However, since the autoit script doesn't compress a second time very well, chances are we're
+       * still able to match the headers and unpack something (see sample 0811129)
+       * I'd rather unpack something (although possibly highly corrupted) than nothing at all
+       *
+       * - Fortuna audaces iuvat -
+       */
+      if (UNP.error) 
+	cli_dbgmsg("autoit: decompression error - partial file may exist\n");
+    } else {
+      cli_dbgmsg("autoit: file is not compressed\n");
+      UNP.outputbuf = buf;
+      UNP.usize = UNP.csize;
+    }
+
+    files++;
+
+    /* FIXME: TODO send to text notmalization */
+
+    /* FIXME: ad-interim solution. ideally we should detect text and turn it to ascii */
+    UNP.usize = u2a(UNP.outputbuf, UNP.usize);
+
+    snprintf(tempfile, 1023, "%s/autoit.%.3u", tmpd, files);
+    tempfile[1023]='\0';
+    if((i = open(tempfile, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, S_IRWXU)) < 0) {
+      cli_dbgmsg("autoit: Can't create file %s\n", tempfile);
+      free(UNP.outputbuf);
+      return CL_EIO;
+    }
+    if(cli_writen(i, UNP.outputbuf, UNP.usize) != (int32_t)UNP.usize) {
+      cli_dbgmsg("autoit: cannot write %d bytes\n", UNP.usize);
+      close(i);
+      free(UNP.outputbuf);
+      return CL_EIO;
+    }
+    free(UNP.outputbuf);
+    if(cli_leavetemps_flag)
+      cli_dbgmsg("autoit: file extracted to %s\n", tempfile);
+    else 
+      cli_dbgmsg("autoit: file successfully extracted\n");
+    fsync(i);
+    lseek(i, 0, SEEK_SET);
+    if(cli_magic_scandesc(i, ctx) == CL_VIRUS) {
+      close(i);
+      if(!cli_leavetemps_flag) unlink(tempfile);
+      return CL_VIRUS;
+    }
+    close(i);
+    if(!cli_leavetemps_flag) unlink(tempfile);
+  }
+  cli_dbgmsg("autoit: files limit reached (max: %u)\n", ctx->limits->maxfiles);
+  return CL_EMAXFILES;
+}
+
+
+/*********************
+  LAME realted stuff 
+*********************/
+
+#ifdef FPU_WORDS_BIGENDIAN
+#define ROFL(a,b) (( a << (b % (sizeof(a)<<3) ))  |  (a >> (  (sizeof(a)<<3)  -  (b % (sizeof(a)<<3 )) ) ))
+
+struct LAME {
+  uint32_t c0;
+  uint32_t c1;
+  uint32_t grp1[17];
+};
+
+
+static double LAME_fpusht(struct LAME *l) {
+  union {
+    double as_double;
+    struct {
+#if FPU_WORDS_BIGENDIAN == 0
+      uint32_t lo;
+      uint32_t hi;
+#else
+      uint32_t hi;
+      uint32_t lo;
+#endif
+    } as_uint;
+  } ret;
+
+  uint32_t rolled = ROFL(l->grp1[l->c0],9) +  ROFL(l->grp1[l->c1],13);
+
+  l->grp1[l->c0] = rolled;
+
+  if (!l->c0--) l->c0 = 16;
+  if (!l->c1--) l->c1 = 16;
+
+/*   if (l->grp1[l->c0] == l->grp2[0]) { */
+/*     if (!memcmp(l->grp1, (uint32_t *)l + 0x24 - l->c0, 0x44)) */
+/*       return 0.0; */
+/*   } */
+
+  ret.as_uint.lo = rolled << 0x14;
+  ret.as_uint.hi = 0x3ff00000 | (rolled >> 0xc);
+  return ret.as_double - 1.0;
+}
+
+
+static void LAME_srand(struct LAME *l, uint32_t seed) {
+  unsigned int i;
+
+  for (i=0; i<17; i++) {
+    seed *= 0x53A9B4FB; /*1403630843*/
+    seed = 1 - seed;
+    l->grp1[i] = seed;
+  }
+
+  l->c0 = 0;
+  l->c1 = 10;
+
+  for (i = 0; i < 9; i++)
+    LAME_fpusht(l);
+}
+
+static uint8_t LAME_getnext(struct LAME *l) {
+  double x;
+  uint8_t ret;
+
+  LAME_fpusht(l);
+  x = LAME_fpusht(l) * 256.0;
+  if ((int32_t)x < 256) ret = (uint8_t)x;
+  else ret=0xff;
+  return ret;
+}
+
+static void LAME_decrypt (uint8_t *cypher, uint32_t size, uint16_t seed) {
+  struct LAME lame;
+  /* mt_srand_timewrap(struct srand_struc bufDC); */
+
+  LAME_srand(&lame, (uint32_t)seed);
+  while(size--)
+    *cypher++^=LAME_getnext(&lame);
+}
+
+
+/*********************
+ autoit3 EA06 handler 
+*********************/
+
+static int ea06(int desc, cli_ctx *ctx, char *tmpd) {
+  uint8_t b[600], comp, script;
+  uint8_t *buf;
+  uint32_t s;
+  int i;
+  unsigned int files=0;
+  char tempfile[1024];
+  const char prefixes[] = { '\0', '\0', '@', '$', '\0', '.', '"', '#' };
+  const char *opers[] = { ",", "=", ">", "<", "<>", ">=", "<=", "(", ")", "+", "-", "/", "*", "&", "[", "]", "==", "^", "+=", "-=", "/=", "*=", "&=" };
+  struct UNP UNP;
+
+  /* Useless due to a bug in CRC calculation - LMAO!!1 */
+  /*   if (cli_readn(desc, buf, 24)!=24) */
+  /*     return CL_CLEAN; */
+  /*   LAME_decrypt(buf, 0x10, 0x99f2); */
+  /*   buf+=0x10; */
+  lseek(desc, 16, SEEK_CUR);   /* for now we just skip the garbage */
+
+  while(!ctx->limits || !ctx->limits->maxfiles || files < ctx->limits->maxfiles) {
+    buf = b;
+    if (cli_readn(desc, buf, 8)!=8)
+      return CL_CLEAN;
+    /*     LAME_decrypt(buf, 4, 0x18ee); waste of time */
+    if(cli_readint32((char *)buf) != 0x52ca436b) {
+      cli_dbgmsg("autoit: no FILE magic found, giving up\n");
+      return CL_CLEAN;
+    }
+
+    script = 0;
+
+    s = cli_readint32((char *)buf+4) ^ 0xadbc;
+    if ((int32_t)(s*2)<0)
+      return CL_CLEAN; /* the original code wouldn't seek back here */
+    if(s<300) {
+      if (cli_readn(desc, buf, s*2)!=(int)s*2)
+	return CL_CLEAN;
+      LAME_decrypt(buf,s*2,s+0xb33f);
+      u2a(buf,s*2);
+      cli_dbgmsg("autoit: magic string '%s'\n", buf);
+      if (s==19 && !memcmp(">>>AUTOIT SCRIPT<<<", buf, 19))
+	script = 1;
+    } else {
+      cli_dbgmsg("autoit: magic string too long to print\n");
+      lseek(desc, s*2, SEEK_CUR);
+    }
+
+    if (cli_readn(desc, buf, 4)!=4)
+      return CL_CLEAN;
+    s = cli_readint32((char *)buf) ^ 0xf820;
+    if ((int32_t)(s*2)<0)
+      return CL_CLEAN; /* the original code wouldn't seek back here */
+    if(cli_debug_flag && s<300) {
+      if (cli_readn(desc, buf, s*2)!=(int)s*2)
+	return CL_CLEAN;
+      LAME_decrypt(buf,s*2,s+0xf479);
+      buf[s*2]='\0'; buf[s*2+1]='\0';
+      u2a(buf,s*2);
+      cli_dbgmsg("autoit: original filename '%s'\n", buf);
+    } else {
+      lseek(desc, s*2, SEEK_CUR);
+    }
+
+    if (cli_readn(desc, buf, 13)!=13)
+      return CL_CLEAN;
+    comp = *buf;
+    UNP.csize = cli_readint32((char *)buf+1) ^ 0x87bc;
+    if ((int32_t)UNP.csize<0) {
+      cli_dbgmsg("autoit: bad file size - giving up\n");
+      return CL_CLEAN;
+    }
+
+    lseek(desc, 16, SEEK_CUR);
+
+    if(!UNP.csize) {
+      cli_dbgmsg("autoit: skipping empty file\n");
+      continue;
+    }
+    cli_dbgmsg("autoit: compressed size: %x\n", UNP.csize);
+    cli_dbgmsg("autoit: advertised uncompressed size %x\n", cli_readint32((char *)buf+5) ^ 0x87bc);
+    cli_dbgmsg("autoit: ref chksum: %x\n", cli_readint32((char *)buf+9) ^ 0xa685);
+
+    if(ctx->limits && ctx->limits->maxfilesize && UNP.csize > ctx->limits->maxfilesize) {
+      cli_dbgmsg("autoit: skipping file due to size limit (%u, max: %lu)\n", UNP.csize, ctx->limits->maxfilesize);
+      lseek(desc, UNP.csize, SEEK_CUR);
+      continue;
+    }
+
+    files++;
+    if (!(buf = cli_malloc(UNP.csize)))
+      return CL_EMEM;
+    if (cli_readn(desc, buf, UNP.csize)!=(int)UNP.csize) {
+      cli_dbgmsg("autoit: failed to read compressed stream. broken/truncated file?\n");
+      free(buf);
+      return CL_CLEAN;
+    }
+    LAME_decrypt(buf,UNP.csize,0x2477 /* + m4sum (broken by design) */ );
+
+    if (comp == 1) {
+      cli_dbgmsg("autoit: file is compressed\n");
+      if (cli_readint32((char *)buf)!=0x36304145) {
+	cli_dbgmsg("autoit: bad magic or unsupported version\n");
+	free(buf);
+	continue;
+      }
+
+      if(!(UNP.usize = be32_to_host(*(uint32_t *)(buf+4))))
+	UNP.usize = UNP.csize; /* only a specifically crafted or badly corrupted sample should land here */
+      if(ctx->limits && ctx->limits->maxfilesize && UNP.usize > ctx->limits->maxfilesize) {
+	free(buf);
+	continue;
+      }
+      if (!(UNP.outputbuf = cli_malloc(UNP.usize))) {
+	free(buf);
+	return CL_EMEM;
+      }
+      cli_dbgmsg("autoit: uncompressed size again: %x\n", UNP.usize);
+
+      UNP.inputbuf = buf;
+      UNP.cur_output = 0;
+      UNP.cur_input = 8;
+      UNP.bitmap.full = 0;
+      UNP.bits_avail = 0;
+      UNP.error = 0;
+
+      while (!UNP.error && UNP.cur_output < UNP.usize) {
+	if (!getbits(&UNP, 1)) {
+	  uint32_t bb, bs, addme=0;
+	  bb = getbits(&UNP, 15);
+      
+	  if ((bs = getbits(&UNP, 2))==3) {
+	    addme = 3;
+	    if((bs = getbits(&UNP, 3))==7) {
+	      addme = 10;
+	      if((bs = getbits(&UNP, 5))==31) {
+		addme = 41;
+		if((bs = getbits(&UNP, 8))==255) {
+		  addme = 296;
+		  while((bs = getbits(&UNP, 8))==255) {
+		    addme+=255;
+		  }
+		}
+	      }
+	    }
+	  }
+	  bs += 3+addme;
+
+	  if(!CLI_ISCONTAINED(UNP.outputbuf, UNP.usize, &UNP.outputbuf[UNP.cur_output], bs) ||
+	     !CLI_ISCONTAINED(UNP.outputbuf, UNP.usize, &UNP.outputbuf[UNP.cur_output-bb], bs)) {
+	    UNP.error = 1;
+	    break;
+	  }
+	  while(bs--) {
+	    UNP.outputbuf[UNP.cur_output]=UNP.outputbuf[UNP.cur_output-bb];
+	    UNP.cur_output++;
+	  }
+	} else {
+	  UNP.outputbuf[UNP.cur_output] = (uint8_t)getbits(&UNP, 8);
+	  UNP.cur_output++;
+	}
+      }
+
+      free(buf);
+      if (UNP.error) 
+	cli_dbgmsg("autoit: decompression error - partial file may exist\n");
+    } else {
+      cli_dbgmsg("autoit: file is not compressed\n");
+      UNP.outputbuf = buf;
+      UNP.usize = UNP.csize;
+    }
+
+    if (UNP.usize<4) {
+      cli_dbgmsg("autoit: file is too short\n");
+      free(UNP.outputbuf);
+      continue;
+    }
+
+    if (script) {
+      UNP.csize = UNP.usize;
+      if (!(buf = cli_malloc(UNP.csize))) {
+	free(UNP.outputbuf);
+	return CL_EMEM;
+      }
+      UNP.cur_output = 0;
+      UNP.cur_input = 4;
+      UNP.bits_avail = cli_readint32((char *)UNP.outputbuf);
+      UNP.error = 0;
+      cli_dbgmsg("autoit: script has got %u lines\n", UNP.bits_avail);
+
+      while (!UNP.error && UNP.bits_avail && UNP.cur_input < UNP.usize) {
+	uint8_t op;
+
+	switch((op = UNP.outputbuf[UNP.cur_input++])) {
+	case 5: /* <INT> */
+	  if (UNP.cur_input >= UNP.usize-4) {
+	    UNP.error = 1;
+	    cli_dbgmsg("autoit: not enough space for an int\n");
+	    break;
+	  }
+	  if (UNP.cur_output+12 >= UNP.csize) {
+	    uint8_t *newout;
+	    UNP.csize += 512;
+	    if (!(newout = cli_realloc(buf, UNP.csize))) {
+	      UNP.error = 1;
+	      break;
+	    }
+	    buf = newout;
+	  }
+	  snprintf((char *)&buf[UNP.cur_output], 12, "0x%08x ", cli_readint32((char *)&UNP.outputbuf[UNP.cur_input]));
+	  UNP.cur_output += 11;
+	  UNP.cur_input += 4;
+	  break;
+
+	case 0x10: /* <INT64> */
+	  {
+	    uint64_t val;
+	    if (UNP.usize < 8 || UNP.cur_input >= UNP.usize-8) {
+	      UNP.error = 1;
+	      cli_dbgmsg("autoit: not enough space for an int64\n");
+	      break;
+	    }
+	    if (UNP.cur_output+20 >= UNP.csize) {
+	      uint8_t *newout;
+	      UNP.csize += 512;
+	      if (!(newout = cli_realloc(buf, UNP.csize))) {
+	      UNP.error = 1;
+	      break;
+	      }
+	      buf = newout;
+	    }
+	    val = (uint64_t)cli_readint32((char *)&UNP.outputbuf[UNP.cur_input+4]);
+	    val <<=32;
+	    val += (uint64_t)cli_readint32((char *)&UNP.outputbuf[UNP.cur_input]);
+	    snprintf((char *)&buf[UNP.cur_output], 20, "0x%016lx ", val);
+	    UNP.cur_output += 19;
+	    UNP.cur_input += 8;
+	    break;
+	  }
+
+	case 0x20: /* <DOUBLE> */
+	  if (UNP.usize < 8 || UNP.cur_input >= UNP.usize-8) {
+	    UNP.error = 1;
+	    cli_dbgmsg("autoit: not enough space for a double\n");
+	    break;
+	  }
+	  if (UNP.cur_output+40 >= UNP.csize) {
+	    uint8_t *newout;
+	    UNP.csize += 512;
+	    if (!(newout = cli_realloc(buf, UNP.csize))) {
+	      UNP.error = 1;
+	      break;
+	    }
+	    buf = newout;
+	  }
+#if FPU_WORDS_BIGENDIAN == 0
+	  snprintf((char *)&buf[UNP.cur_output], 39, "%g ", *(double *)&UNP.outputbuf[UNP.cur_input]);
+#else
+	  do {
+	    double x;
+	    uint8_t *j = (uint8_t *)&x;
+	    unsigned int i;
+
+	    for(i=0; i<8; i++)
+	      j[7-i]=UNP.outputbuf[UNP.cur_input+i];
+	    snprintf((char *)&buf[UNP.cur_output], 39, "%g ", x); /* FIXME: check */
+	  } while(0);
+#endif
+	  buf[UNP.cur_output+38]=' ';
+	  buf[UNP.cur_output+39]='\0';
+	  UNP.cur_output += strlen((char *)&buf[UNP.cur_output]);
+	  UNP.cur_input += 8;
+	  break;
+
+	case 0x30: /* COSTRUCT */
+	case 0x31: /* COMMAND */
+	case 0x32: /* MACRO */
+	case 0x33: /* VAR */
+	case 0x34: /* FUNC */
+	case 0x35: /* OBJECT */
+	case 0x36: /* STRING */
+	case 0x37: /* DIRECTIVE */
+	  {
+	    uint32_t chars, dchars, i;
+
+	    if (UNP.cur_input >= UNP.usize-4) {
+	      UNP.error = 1;
+	      cli_dbgmsg("autoit: not enough space for size\n");
+	      break;
+	    }
+	    chars = cli_readint32((char *)&UNP.outputbuf[UNP.cur_input]);
+	    dchars = chars*2;
+	    UNP.cur_input+=4;
+
+	    if (UNP.usize < dchars || UNP.cur_input >= UNP.usize-dchars) {
+	      UNP.error = 1;
+	      cli_dbgmsg("autoit: size too big - needed %d, total %d, avail %d\n", dchars, UNP.usize, UNP.usize - UNP.cur_input);
+	      break;
+	    }
+	    if (UNP.cur_output+chars+3 >= UNP.csize) {
+	      uint8_t *newout;
+	      UNP.csize += chars + 512;
+	      if (!(newout = cli_realloc(buf, UNP.csize))) {
+		UNP.error = 1;
+		break;
+	      }
+	      buf = newout;
+	    }
+
+	    if(prefixes[op-0x30])
+	      buf[UNP.cur_output++] = prefixes[op-0x30];
+
+	    if (chars) {
+	      for (i = 0; i<dchars; i+=2) {
+		UNP.outputbuf[UNP.cur_input+i] ^= (uint8_t)chars;
+		UNP.outputbuf[UNP.cur_input+i+1] ^= (uint8_t)(chars>>8);
+	      }
+	      u2a(&UNP.outputbuf[UNP.cur_input], dchars);
+	      memcpy(&buf[UNP.cur_output], &UNP.outputbuf[UNP.cur_input], chars);
+	      UNP.cur_output += chars;
+	      UNP.cur_input += dchars;
+	    }
+	    if (op==0x36)
+	      buf[UNP.cur_output++] = '"';
+	    if (op!=0x34)
+	      buf[UNP.cur_output++] = ' ';
+	  }
+	  break;
+
+	case 0x40: /* , */
+	case 0x41: /* = */
+	case 0x42: /* > */
+	case 0x43: /* < */
+	case 0x44: /* <> */
+	case 0x45: /* >= */
+	case 0x46: /* <= */
+	case 0x47: /* ( */
+	case 0x48: /* ) */
+	case 0x49: /* + */
+	case 0x4a: /* - */
+	case 0x4b: /* / */
+	case 0x4c: /* * */
+	case 0x4d: /* & */
+	case 0x4e: /* [ */
+	case 0x4f: /* ] */
+	case 0x50: /* == */
+	case 0x51: /* ^ */
+	case 0x52: /* += */
+	case 0x53: /* -= */
+	case 0x54: /* /= */
+	case 0x55: /* *= */
+	case 0x56: /* &= */
+	  if (UNP.cur_output+4 >= UNP.csize) {
+	    uint8_t *newout;
+	    UNP.csize += 512;
+	    if (!(newout = cli_realloc(buf, UNP.csize))) {
+	      UNP.error = 1;
+	      break;
+	    }
+	    buf = newout;
+	  }
+	  UNP.cur_output += snprintf((char *)&buf[UNP.cur_output], 4, "%s ", opers[op-0x40]);
+	  break;
+
+	case 0x7f:
+	  UNP.bits_avail--;
+	  if (UNP.cur_output+1 >= UNP.csize) {
+	    uint8_t *newout;
+	    UNP.csize += 512;
+	    if (!(newout = cli_realloc(buf, UNP.csize))) {
+	      UNP.error = 1;
+	      break;
+	    }
+	    buf = newout;
+	  }
+	  buf[UNP.cur_output++]='\n';
+	  break;
+
+	default:
+	  cli_dbgmsg("autoit: found unknown op (%x)\n", op);
+	  UNP.error = 1;
+	}
+      }
+
+      if (UNP.error)
+	cli_dbgmsg("autoit: decompilation aborted - partial script may exist\n");
+
+      free(UNP.outputbuf);
+    } else {
+      buf = UNP.outputbuf;
+      UNP.cur_output = UNP.usize ;
+    }
+
+    snprintf(tempfile, 1023, "%s/autoit.%.3u", tmpd, files);
+    tempfile[1023]='\0';
+    if((i = open(tempfile, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, S_IRWXU)) < 0) {
+      cli_dbgmsg("autoit: Can't create file %s\n", tempfile);
+      free(buf);
+      return CL_EIO;
+    }
+    if(cli_writen(i, buf, UNP.cur_output) != (int32_t)UNP.cur_output) {
+      cli_dbgmsg("autoit: cannot write %d bytes\n", UNP.usize);
+      close(i);
+      free(buf);
+      return CL_EIO;
+    }
+    free(buf);
+    if(cli_leavetemps_flag)
+      cli_dbgmsg("autoit: %s extracted to %s\n", (script)?"script":"file", tempfile);
+    else 
+      cli_dbgmsg("autoit: %s successfully extracted\n", (script)?"script":"file");
+    fsync(i);
+    lseek(i, 0, SEEK_SET);
+    if(cli_magic_scandesc(i, ctx) == CL_VIRUS) {
+      close(i);
+      if(!cli_leavetemps_flag) unlink(tempfile);
+      return CL_VIRUS;
+    }
+    close(i);
+    if(!cli_leavetemps_flag) unlink(tempfile);
+  }
+  cli_dbgmsg("autoit: Files limit reached (max: %u)\n", ctx->limits->maxfiles);
+  return CL_EMAXFILES;
+}
+
+#endif /* FPU_WORDS_BIGENDIAN */
+
+/*********************
+   autoit3 wrapper 
+*********************/
+
+int cli_scanautoit(int desc, cli_ctx *ctx, off_t offset) {
+  uint8_t version;
+  int r;
+  char *tmpd;
+
+  lseek(desc, offset, SEEK_SET);
+  if (cli_readn(desc, &version, 1)!=1)
+    return CL_EIO;
+
+  cli_dbgmsg("in scanautoit()\n");
+
+  if (!(tmpd = cli_gentemp(NULL)))    
+    return CL_ETMPDIR;
+  if (mkdir(tmpd, 0700)) {
+    cli_dbgmsg("autoit: Can't create temporary directory %s\n", tmpd);
+    free(tmpd);
+    return CL_ETMPDIR;
+  }
+  if (cli_leavetemps_flag)
+    cli_dbgmsg("autoit: Extracting files to %s\n", tmpd);
+
+  switch(version) {
+  case 0x35:
+    r = ea05(desc, ctx, tmpd);
+    break;
+  case 0x36:
+#ifdef FPU_WORDS_BIGENDIAN
+    r = ea06(desc, ctx, tmpd);
+#else
+    cli_dbgmsg("autoit: EA06 support not available\n");
+    r = CL_CLEAN;
+#endif
+    break;
+  default:
+    /* NOT REACHED */
+    cli_dbgmsg("autoit: unknown method\n");
+    r = CL_CLEAN;
+  }
+
+  if (!cli_leavetemps_flag)
+    cli_rmdirs(tmpd);
+
+  free(tmpd);
+  return r;
+}





More information about the llvm-commits mailing list