]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Remove incompatible contribWare
authorKurt Zeilenga <kurt@openldap.org>
Fri, 8 Sep 2000 17:03:48 +0000 (17:03 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Fri, 8 Sep 2000 17:03:48 +0000 (17:03 +0000)
78 files changed:
CHANGES
contrib/Makefile.in
contrib/README
contrib/tweb/CHANGES [deleted file]
contrib/tweb/COPYRIGHTS [deleted file]
contrib/tweb/FEATURE-LIST [deleted file]
contrib/tweb/GETTING-STARTED.openldap [deleted file]
contrib/tweb/LDAP_etc/allow.msg.0 [deleted file]
contrib/tweb/LDAP_etc/allow.msg.1 [deleted file]
contrib/tweb/LDAP_etc/ldapfilter.conf [deleted file]
contrib/tweb/LDAP_etc/ldapfriendly.0 [deleted file]
contrib/tweb/LDAP_etc/ldapfriendly.1 [deleted file]
contrib/tweb/LDAP_etc/search-only.foot.0 [deleted file]
contrib/tweb/LDAP_etc/search-only.foot.1 [deleted file]
contrib/tweb/LDAP_etc/search-only.head.0 [deleted file]
contrib/tweb/LDAP_etc/search-only.head.1 [deleted file]
contrib/tweb/LDAP_etc/tweb-base.foot.0 [deleted file]
contrib/tweb/LDAP_etc/tweb-base.foot.1 [deleted file]
contrib/tweb/LDAP_etc/tweb-base.head.0 [deleted file]
contrib/tweb/LDAP_etc/tweb-base.head.1 [deleted file]
contrib/tweb/LDAP_etc/tweb.footer.0 [deleted file]
contrib/tweb/LDAP_etc/tweb.footer.1 [deleted file]
contrib/tweb/LDAP_etc/tweb.header.0 [deleted file]
contrib/tweb/LDAP_etc/tweb.header.1 [deleted file]
contrib/tweb/LDAP_etc/tweb.help.0 [deleted file]
contrib/tweb/LDAP_etc/tweb.help.1 [deleted file]
contrib/tweb/Makefile.openldap [deleted file]
contrib/tweb/README [deleted file]
contrib/tweb/TWEB_conFiles/robots.txt [deleted file]
contrib/tweb/TWEB_conFiles/tweb.conf.0.dist [deleted file]
contrib/tweb/TWEB_conFiles/tweb.conf.1.dist [deleted file]
contrib/tweb/TWEB_conFiles/tweb.lang.0.dist [deleted file]
contrib/tweb/TWEB_conFiles/tweb.lang.1.dist [deleted file]
contrib/tweb/TWEB_conFiles/tweb.rc.dist [deleted file]
contrib/tweb/Versiongw.c [deleted file]
contrib/tweb/ch_malloc.c [deleted file]
contrib/tweb/ch_malloc_exp.h [deleted file]
contrib/tweb/charray.c [deleted file]
contrib/tweb/charray_exp.h [deleted file]
contrib/tweb/checkclient.c [deleted file]
contrib/tweb/checkclient.h [deleted file]
contrib/tweb/checkclient_exp.h [deleted file]
contrib/tweb/dn.c [deleted file]
contrib/tweb/dn.h [deleted file]
contrib/tweb/dn_exp.h [deleted file]
contrib/tweb/doc/Presentation/DANTE-01-99.ps [deleted file]
contrib/tweb/doc/Presentation/README [deleted file]
contrib/tweb/html.c [deleted file]
contrib/tweb/html.h [deleted file]
contrib/tweb/html_exp.h [deleted file]
contrib/tweb/init.c [deleted file]
contrib/tweb/init.h [deleted file]
contrib/tweb/init_exp.h [deleted file]
contrib/tweb/queries.c [deleted file]
contrib/tweb/queries.h [deleted file]
contrib/tweb/queries_exp.h [deleted file]
contrib/tweb/regular.c [deleted file]
contrib/tweb/regular.h [deleted file]
contrib/tweb/regular_exp.h [deleted file]
contrib/tweb/server.c [deleted file]
contrib/tweb/server.h [deleted file]
contrib/tweb/server_exp.h [deleted file]
contrib/tweb/strng.c [deleted file]
contrib/tweb/strng_exp.h [deleted file]
contrib/tweb/support.c [deleted file]
contrib/tweb/support.h [deleted file]
contrib/tweb/support_exp.h [deleted file]
contrib/tweb/tgeneral.h [deleted file]
contrib/tweb/tglobal.h [deleted file]
contrib/tweb/tweb.c [deleted file]
contrib/tweb/tweb.h [deleted file]
contrib/tweb/x500.c [deleted file]
contrib/tweb/x500.h [deleted file]
contrib/tweb/x500_exp.h [deleted file]
contrib/web_ldap/Makefile.in [deleted file]
contrib/web_ldap/web_ldap.c [deleted file]
contrib/web_ldap/web_ldap_usage.html [deleted file]
contrib/web_ldap/web_ldap_usage.txt [deleted file]

diff --git a/CHANGES b/CHANGES
index 1c52af6320d3e3b09e0f06aea04f9e865f26e76a..79b11c4acb613bf8afb5221ef9a6ca5f7b92683f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -13,6 +13,7 @@ OpenLDAP 2.0.X Engineering
        Build Environment
                Added test000-rootdse
                Fixed Kerberos detection (ITS#717)
+               Remove incompatible contribWare
        Documentation
                Fixed ldappasswd(1) user argument usage
                Fixed ldapmodify(1) (ITS#719)
index 74b14db7d4a75d16202e96baa4882c977106659b..c8e734ce3bdb8e37a88771f06abee69d1740d6c3 100644 (file)
@@ -4,4 +4,4 @@
 ##
 ## contrib Makefile.in for OpenLDAP
 
-SUBDIRS= saucer web_ldap
+SUBDIRS= saucer
index bb43ae5fcc4021ddcef804bf96eb7635bf4fa5bd..cbab845393521ccaedf61d23c4568431422c9bf0 100644 (file)
@@ -22,24 +22,6 @@ Current contributions:
                Contributed by Eric Rosenquist.  See saucer/README
                and its man page for more information.
 
-       tweb
-               HTTP gateway derived from web500gw.  Contributed
-               by the Universitaet Tuebingen, GERMANY.  See
-               tweb/README for more information.
-
-       web_ldap
-               web frontend (in C) from Jens Moller
-
-    web500gw
-               HTTP gateway for X.500, modeled after go500gw.
-               Contributed by Frank Richter.  See web500gw/README
-               for more information.
-
-    whois++
-               WHOIS++ gateway to X.500.  Contributed by Mark Prior.
-               See whois++/README for more information.
-
-
 Please submit your contributions using the OpenLDAP Issue
 Tracking System <http://www.openldap.org/>.
 
diff --git a/contrib/tweb/CHANGES b/contrib/tweb/CHANGES
deleted file mode 100644 (file)
index afc8fe6..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* CHANGES                                                                  *
-*                                                                          *
-* Function:..A short description of the last modifications of TWEB         *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            September 14 1995            Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            January 15 1999            ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-
-
-
-               Changes of the web-x.500-gateway TWEB
-               =====================================
-
-Version: tweb-2.3 1998/10/05
-
-Changes to code
-
-    - dynamic re-sort and re-display based on entries found in the DIT:
-        SORT definitions given by config files can be changed due to
-        local information within a DIT area; that provides for dynamic
-        definitions of sorting groups and/or display of groups with new
-        labels and/or other sorting order;
-        DISPLAY definitions can be replaced or added dynamically, in order
-        to display contents of entries in other than the statically
-        configured way
-
-
-Version: tweb-2.2 1998/3/20
-
-Changes in configuration files (please check!)
-
-    - INDEX-URL (new): display hrefs below a certain dit showing special parts
-              of the entry-dn in any sequence
-
-    - DIT-CONFIG (new): get from a specified location the information how to
-              switch to other gateways depending on the given dn.
-              With NOT-BROWSE you can turn of this functionality for browsing.
-
-    - DISP-SEA-RDN (new): with this option you can make search-results to be
-              displayed only by rdn and not by relative dn to the search-base
-
-    - TON-URLS (new): hereby you can reference a given organization/alunit
-              by TONS (special numbers for organizational hirarchies)
-              example: T013307 can mean:
-                     computing centre, dept. development of new services
-
-    - INDIRECT-ATTRS (new): attribute-value can be fetched by special keys from
-              other locations and additional be transformed by according
-              functions
-
-    - ALLOW-STRING DENY-STRING GRANT REFUSE : CHANGE IN BEHAVIOUR!!
-              now regular expressions are used. That means you have shorter
-              config strings.
-
-    - ALLOW-MSG (new): by this option you can specify a special file located
-              in the ETCDIRectorie containing a message to be displayed
-              in case of an allowed access to TWEB
-
-    - TABLES (new): triggered by the presence of a special objectclass
-               will be displayed a button in the header of the TWEB-page
-               allowing an eXtended data access such as:
-                      a table with names, telephonenumbers and e-mail addresses
-                      of the current organization
-
-               or     the access to the electronic telephonebook-data
-                      of the university of tuebingen generated by TWEB
-                      dynamically
-
-
-Version: tweb-2.0a 1997/1/7
-
-Changes in configuration files (please check!)
-
-    - PULL-DOWN-MENUS (new): use BUTTONS and PULL-DOWN-MENUS instead of links
-              in order to support: help, language-switch, move-upwards
-              and read-entry functionalities
-
-    - GRANT (new): allow general access to TWEB for specified locations
-              ( same syntax as ALLOW-STRING )
-
-    - REFUSE (new): refuse general access to TWEB for specified locations
-              ( same syntax as DENY-STRING )
-
-    - INDIRECT-ATTRS (new): Get specified attribute-values from another
-              location
-
-    - CACHING-TERMS (new): specify caching-behaviour for browsers and www-caches
-
-    - CACHE-EXPIRE-DEFAULT (new): set a default caching-time for browsers
-              and www-caches
-
-    - SHOW-DEFOC (new): Show Default Objectclass
-
-    - COMREFUSE (new): prevent engine-access
-
-    - robots.txt (new): supply robots.txt-file functionality with the same
-              behaviour as in www-servers
-
-
-Version: tweb-1.1b 1996/5/7
-
-Changes in configuration files (please check!)
-
-    - STRICT-BASEDN (new): Access not below basedn is switched to responsible
-                       gateway ( ->  gw-switch)
-
-    - ALLOW-PROXY (new): if NO-PROXY is configured access from 
-                       given domain is allowed
-
-
-Version: tweb-1.1a, 1996/4/25
-
-Changes in configuration files (please check!)
-
-    - SORT extensions: fourth parameter RELATED DISPLAY-CLASS:
-                       relation to according DISPLAY-entry
-                       (default is 'default')
-                       see DISPLAY changes
-
-                       fifth parameter SORT-ATTRIBUTE:
-                       attribute used to sort entries
-                       (default is 'sn')
-
-    - DISPLAY changes: The DISPLAY objectClass entry is replaced by the string
-                       that is used as fifth attribute with SORT
-
-    - NO-PROXY (new):  option for access restrictions via PROXY-servers
-
-    - TWEBHOST (new):  option to support a constant tweb-hostname
-
-    - NO-MODIFY (new): option to prevent entries with named objectclasses from
-                       modification
-
-    - PGPKEY (new):    DISPLAY-TYPE for PGPKeys enabling cut&paste
-
-
-  Changes to code
-
-    - conversion from upper to lowercase characters in:
-        make_oc_to_str(), pick_oc(), init_sort(), init_modify(),
-        attrs in display() and all internal comparison-strings!!!
-
-    - modification with multiline attributes now possible with NETSCAPE
-
-    - pictures in X.500 are shown (only with NETSCAPE)
-
-    - display is denied in do_read() in case of missing default-Display
-
-    - technical entries (gw...) are not shown if using DYNAMIC-GW
-
-    - the tokens to filter proxy-access with NO_PROXY are extended to:
-      " via " & "Proxy gateway"
-
-    - the tweb-version and compilation date is now shown with C & K options
-
-    - many bugfixes
-
-
-Version: tweb-1.0b, 1996/2/29
-
-  Changes in configuration files (please check!)
-
-    - ALLOW/DENY-String moved from tweb.conf.[01] to tweb.rc
-    - tweb.lang.[01]: string 4  TEXT/HTML  -->  text/html
-    - tweb.rc       : optional parameter TWEBHOST  (see FEATURE-LIST)
-
-  Changes to code
-
-    - better behaviour in modify operations
-      BEWARE: modification of inherited attributes still NOT possible (!)
-
-    - logging-option (-l) with facultative parameter: LOCAL[0-7] of syslogd
-
-          -lx  -->  LOCAL3 (default)
-
-    - simplified metasyntax of GW-switches:
-
-          labeledURI= http://<host>:<port>/ <descriptive string> (gw[-<lang>])
-
-    - use 'aliasedObjectName' in HREF of aliases
-    - always print HTML header
-    - many bugfixes
-
-
-Version: tweb-1.0a, 1996/2/7
-
-  - base distibution
-
diff --git a/contrib/tweb/COPYRIGHTS b/contrib/tweb/COPYRIGHTS
deleted file mode 100644 (file)
index 6b5f68d..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-Copyright (c) 1994 - 1999 University of Tuebingen, Germany.
-Written by Kurt Spanier and Bernhard Winkler. All rights reserved.
-
-This software is not subject to any license of the University of
-Tuebingen, Germany.
-
-Permission is granted to anyone to use this software for any purpose
-on any computer system, and to alter it and redistribute it, subject
-to the following restrictions:
-
-1. The author is not responsible for the consequences of use of this
-   software, no matter how awful, even if they arise from flaws in it.
-
-2. The origin of this software must not be misrepresented, either by
-   explicit claim or by omission.  Since few users ever read sources,
-   credits should appear in the documentation.
-
-3. Altered versions must be plainly marked as such, and must not be
-   misrepresented as being the original software.  Since few users
-   ever read sources, credits should appear in the documentation.
-
-4. This notice may not be removed or altered.
-
-
-
-This work is derived from the Technical University of Chemnitz web500gw
-by Frank Richter.  Information concerning is available at
-    http://www.tu-chemnitz.de/~fri/web500gw.
-
-web500gw is itself derived from the University of Michigan go500gw
-by Tim Howes.  Information concerning is available at
-    http://www.umich.edu/~dirsvcs/ldap/ldap.html
-
-This work also contains materials derived from public sources:
-
-    ch_malloc.c, charray.c, dn.c from the University of Michigan LDAPv3.3,
-      with some minor bug fixes.
-
-    regular.c from the University of Toronto regexp by Henry Spencer,
-      with renaming of functions for not colliding with putative
-      build-in regexp functions in the underlying LDAP libraries,
-      as well as minor modifications.
-      The original software can be obtained from
-          ftp://ftp.cs.toronto.edu/pub/regexp.README, and
-          ftp://ftp.cs.toronto.edu/pub/regexp.shar.Z
-
-
-Additional Information can be obtained by sending e-mail to:
-    tweb-support@mail500.uni-tuebingen.de
-
-
----
-
-Portions Copyright (c) 1994-1998 Chemnitz University of Technology.
-All rights reserved.
-              A LDAP based WWW - X.500 gateway
-  written by: Frank Richter, Frank.Richter@hrz.tu-chemnitz.de
-              Chemnitz University of Technology, Germany, 1994-1998
-  Redistribution and use in source and binary forms are permitted
-  provided that this notice is preserved and that due credit is given
-  to the Technical University of Chemnitz. The name of the University
-  may not be used to endorse or promote products derived from this
-  software without specific prior written permission. This software
-  is provided ``as is'' without express or implied warranty.
-
-
----
-
-Portions Copyright (c) 1992-1996 Regents of the University of Michigan.
-All rights reserved.
-
-  Redistribution and use in source and binary forms are permitted
-  provided that this notice is preserved and that due credit is given
-  to the University of Michigan at Ann Arbor. The name of the University
-  may not be used to endorse or promote products derived from this
-  software without specific prior written permission. This software
-  is provided ``as is'' without express or implied warranty.
-
-
----
-
-Portions Copyright (c) 1986 by University of Toronto.
-  Written by Henry Spencer.  Not derived from licensed software.
-  Permission is granted to anyone to use this software for any
-  purpose on any computer system, and to redistribute it freely,
-  subject to the following restrictions:
-  1. The author is not responsible for the consequences of use of
-     this software, no matter how awful, even if they arise
-     from defects in it.
-  2. The origin of this software must not be misrepresented, either
-     by explicit claim or by omission.
-  3. Altered versions must be plainly marked as such, and must not
-     be misrepresented as being the original software.
-
diff --git a/contrib/tweb/FEATURE-LIST b/contrib/tweb/FEATURE-LIST
deleted file mode 100644 (file)
index 9e33862..0000000
+++ /dev/null
@@ -1,1138 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* FEATURE-LIST                                                             *
-*                                                                          *
-* Function:..A description of the basic of TWEB,                           *
-*            the Tuebinger Web-X.500 gateway                               *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            September 14 1995            Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            January 15 1999            ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-
-
-
-0 TABLE OF CONTENTS
-
-   1      Introduction
-   2      General overview
-   2.1    A case of Public Relations
-   2.2    Configuration files and TWEB start-up
-   2.3    The running gateway
-   2.4    check4access: who is allowed to see (what) data
-   2.5    Preparing the data
-   2.6    Searching for data
-   2.7    Data based behaviour: the dynamic gateway
-   2.8    Restricting the service
-   2.8.1  Restricting the number of entries
-   2.8.2  Suppression of certain entries by RDN
-   2.8.3  Defining DIT areas for search-only operations
-   2.8.4  Controlling the hackers
-   3      Configuration of TWEB features in detail
-   3.1    Technical configuration options
-   3.2    Political configuration options
-   3.3    Load balancing configuration options
-   3.4    Display configuration options
-   4      Support and discussion list
-
-
-1 INTRODUCTION
-
-   TWEB is based on the Web500gw implementation by Frank Richter, 
-   Technische Universitaet Chemnitz-Zwickau, which is based on the 
-   go500gw implementation by Tim Howes, University of Michigan.
-
-   TWEB was compiled and tested on LINUX with cc, HPUX 9.05 with the
-   HP-ANSI C compiler, as well as SunOS 4.1.2 with the SUN C compiler.
-   TWEB was also compiled with gcc on all platforms. On SUN Solaris
-   2.6.x TWEB was also compiled with gcc 2.7.2.
-
-   The UMICH LDAP client library version 3.0 or 3.3
-   ( URL:ftp://terminator.rs.itd.umich.edu/ldap/ldap-3.3.tar.Z )
-   must be installed on the machine (library path and include file 
-   path is configured in Makefile). With QUIPU ICR-2.x the ISODE-
-   provided LDAP libraries should be used. As such, TWEB only supports
-   LDAP version 2 with the University of Michigan type C API. TWEB is
-   also adapted for the OpenLDAP LDAP library, release version 1.1.2
-   (http://www.openldap.org).
-
-   An upgrade to LDAP version 3 and a C API standadized by the IETF
-   is planned for a not so far away future, most probably in step 
-   with the OpenLDAP package.
-
-   TWEB, as provided here is a fully functional core gateway, which
-   is extended at the author's site by some local features. These
-   extensions are included into the same code base, so that some
-   "#ifdef TUE_TEL" or "#ifdef AMBIX" pre-processor statements can
-   be found throughout the code. 
-
-
-2 GENERAL OVERVIEW
-
-2.1 A case of Public Relations
-
-   TWEB is a gateway between the HTML-based World-Wide-Web (WWW 
-   for short) and the X.500-based wordlwide directory, nowadays
-   mainly accessed through LDAP, the Leightweight Directory Access
-   Protocoll. As such, TWEB is a mediator between these worlds,
-   providing run-time access to a lively database and preparing
-   results in a usable format.
-
-   Why not access the directory directly via my browser-built-in
-   LDAP functionality, you may ask. One answer is, that TWEB with
-   it's build-in security features may provide access to more
-   internal data for permitted users, while denying these data for
-   outside users. This might be very handy from the database
-   administration point of view, easing the task of checking
-   for consistencies between seperate inside and outside databases.
-
-   Secondly, TWEB provides for a flexible display of results,
-   not just showing the pure data. Corporate identity, even when
-   using a staff's directory, can be implemented by an organization.
-   Furtheron, important messages and hints can be added on the fly,
-   that are relevant to the directory user. This is also possible
-   via HTTP links, provided either through the directory data (e.g.,
-   links to personal home pages) or embeded into HTML text loaded
-   during result page preparation. Thus, the integration of WWW and
-   the directory can be two-ways, not just one-way.
-
-   Thirdly, TWEB can, with some extensions not yet provided in
-   the current distribution, easily be configured to access the
-   directory more than once, in order to return results for a
-   single request. For example, this can be used to build a page
-   with the phoenbook entries of a whole department, institute, or
-   faculty, spanning many hierarchies is the underlying directory
-   database, as implemented at the University of Tuebingen.
-
-   When running TWEB with some of the configuration options, one
-   might easily find more points that are in favor of a gateway
-   solution, rather than purely accessing the data of a single
-   directory entry at a time.
-
-   BUT AFTER THIS SHORT EXCURSION INTO THE WORLD OF PR, LET'S
-   HAVE A LOOK AT WHAT TWEB PROVIDES AND WHAT FEATURES CAN
-   BE USED.
-
-
-2.2 Configuration files and TWEB start-up
-
-   Allmost anything what TWEB provides is determined by a set of
-   configuration files during start-up, or at run-time. There is 
-   the main ressource file (tweb.rc) that provides for basic,
-   language-independant features, like host and port of the connected
-   directory server. Language-specific configuration parameters
-   are located in the config files (tweb.conf.x), with x (0-9)
-   standing for any of a set of supported languages. Language 
-   strings, that are used to build an HTML result page are taken
-   from the language files (tweb.lang.x), again with x indicating
-   the language in question. Those files are located in the 
-   TWEB_conFiles subdirectory; the TWEB binary, probably via a
-   symbolic link, should also reside within that directory.
-
-   Header and footer files, and certain message files are loaded
-   during run-time, so that the content can be updated on-the-fly,
-   without restarting the gateway. Those files can be found in the
-   LDAP_etc subdirectory, but can also be located elsewhere, after
-   setting the ETCDIR parameter in the tweb.rc file.
-
-   Certain configuration parameters can be overridden by command
-   line parameters during start-up. Type 'tweb -h' to get a short
-   description of each command line parameter, or have a look at
-   the description below. The important parameters are '-l' for
-   selection of the LOCAL user of the syslog facility, and '-L'
-   for selection of languages.
-
-   When starting, TWEB first of all determines which languages should
-   be supported. A sub-process is created for each language by the
-   fork() system call, and the starting process is terminated. (In case
-   of only one language, TWEB will not fork, but instead use the first
-   process for the gateway service.) Each sub-process is responsible for
-   one of the languages, and presents hyperlinks to the other languages'
-   HTTP addresses on HTML pages, so that the user can switch from one
-   language to the other. When language hints are provided within the
-   directory data (see below) even attribute values may be presented
-   language-specific. (This is not to be mixed up with the LDAPv3
-   standard, which provides for language specification via attribute
-   options.)
-
-   The starting TWEB initializes itself by reading the tweb.rc, the
-   tweb.conf.x, and the tweb.lang.x files, and stores the configuration
-   in a global data structure that can be used by all parts of the
-   program. Command line options are considered last, and can override
-   previously defined parameters. In the tweb.rc and tweb.conf.x files
-   parameters are generally additive, meaning that configuration can be
-   spread across those files (e.g., GW-SWITCH can be set to language-
-   independant gateways in tweb.rc and extended by language-specific
-   gateways in the tweb.conf.x files.)
-
-   Also, message, header and footer files are checked for presence, and
-   a warning is printed to standard output, if they are missing. After
-   some more sanity checks of the configuration, TWEB connects to the
-   port it was configured for and starts listening for HTTP requests.
-   (In the tweb.rc config file only a base port is given; the gateway
-   process serving for language 0 will listen at this port; the gateway
-   for language 1 at port+1, for language 2 at port+2, and so on, upto
-   the language with number 9.)
-
-
-2.3 The running gateway
-
-   When a request is started by an external HTTP client, TWEB checks
-   for access rights of that client (see below), and decides, whether
-   the request can be handled by the process itself (mainly simple
-   requests, like, e.g., sending the help file), or whether another
-   sub-process should be started. In both cases the TWEB master process
-   returns to listening for requests, so that new request can be
-   handled while old ones are still in progress.
-
-   A request is encoded into the URL, the Universial Ressource Locater,
-   the HTTP client sends to the gateway process. Such an URL is build
-   of different parts, as follows:
-
-      http://host:port/request
-
-   First of all, 'http://' defines the HTTP protocoll itself. As
-   TWEB is the mediator between WWW and the directory, it is an HTTP
-   server towards the browser, accepting normal HTTP request, but is an
-   LDAP client towards the directory server, sending LDAP requests.
-
-   Host and port are the same as in the tweb.rc configuration file,
-   and tell the browser, where to direct the request.
-
-   The request for TWEB is given in the last part of the URL, in a more
-   or less complicated format. The most simple request is the EMPTY
-   request ( http://host:port/ ), which will cause TWEB to return a
-   listing of directory entries just below it's BASEDN. (Besides beeing
-   the "home" for TWEB when sending an URL without further specification,
-   the BASEDN can also be configured as beeing the root entry of an DIT
-   area, and TWEB will only serve requests within, but not outside that
-   area; STRICT-BASEDN.)
-
-   All other requests are given by a starting letter (beware: that
-   letter is CASE-SENSITIVE) and possibly a further specification.
-   That letter directs TWEB to one of several actions, like returning
-   a directory listing, reading a specified entry, or sending a 
-   formular for modification of an entry. If a directory look-up
-   is necessary, TWEB will perform that via LDAP, prepare the results
-   as an HTML page, and return it to the requesting client. After
-   that the process will die, unless it was the master process, that
-   returns to listening for further requests. Thus, TWEB's action is
-   as state-less as the HTTP protocoll itself, but some information
-   for subsequent client requests can be embedded into the result,
-   like for example a gateway-switch (see below) or an entries' old
-   data in a modification formular.
-
-   Like in HTTP, the TWEB request URL should contain no space characters,
-   and certain special chars should be HTML escaped. TWEB will allways
-   prepare such URLs in its own results, e.g., when returning a list of
-   entries, with each one beeing a clickable hyperlink for the next data
-   retrieval. Thus, during interaction with TWEB, the user has not to
-   consider such special characters, for they are converted automatically.
-   Only the very first link to TWEB, be it embedded into a web page, or
-   entered directly into the browser's 'goto URL' field, or whatever it is
-   called, should be checked for those characters.
-
-
-2.4 check4access: who is allowed to see (what) data
-
-   A requesting client not only gives the URL to TWEB, but also it's
-   IP or Internet address. This is an address needed by computers to
-   find each other in the world-wide network. Normally, computers
-   have also so-called Internet Names, that are more human-readable.
-   To match IP addresses and internet names, the Domain Name Service
-   (DNS) is run on the Internet. When TWEB receives an IP adress,
-   it will try to look up the corresponding internet name of the
-   requesting client and use that information to decide on access
-   rights of the client. If a host's name cannot be found in the
-   DNS, this is also used as a bit of information. The configuration
-   parameters GRANT, REFUSE, ALLOW-STRING, and DENY-STRING can be
-   set to specify access rights based on internet names in a very
-   flexible way. Furtheron, the HTTP information of proxy access
-   is considered, if the parameters NO-PROXY and ALLOW-PROXY are set.
-
-   When TWEB has decided on access rights, it will continue depending 
-   on these rights. When service is totally refused to a requesting
-   host, or a complete IP domain, a corresponding message is send to
-   the client and the TWEB process terminates. Otherwise, TWEB selects
-   one of two configured WEBDNs (the directory names of corresponding
-   entries in the local directory) and WEBPWs (corresponding passwords)
-   and sends the LDAP requests with these DNs to the directory server.
-   The server should of course be configured in a way, that the one DN
-   has access to internal data, whereas the other has not. Thus, data
-   retrieval can be controlled by the server, not only by TWEB itself.
-
-
-2.5 Preparing the data
-
-   Almost any result page is build by combining different areas, as
-   appropriate for the result returned. A header and footer is located
-   at the top and the bottom of the HTML page, respectively. (In fact,
-   the footer is followed by a tiny TWEB version info, so the footer
-   is only the second-last element.) Below the header some internal
-   message can follow (ALLOW-MESSAGE), which will not be shown to an
-   outside requestor, and in front of the footer there can be a Legal
-   Message for the outsider (LEGAL; actually, if the ON-TOP parameter
-   is specified for the LEGAL option, this Legal Message will also be
-   printed at the beginning of the result page). Below the header/
-   internal message, an area for navigation, reading the current base
-   position and a search box may follow, that can be used for entering
-   further requests.  Below that, the results of the current request
-   are shown.
-
-   If there are more than one result entries to the current request (e.g.,
-   due to a listing of entries below the current DIT position, or multiple
-   matches for a search request), a hyperlink for each entry is displayed,
-   to give the user the possibility to follow the link and obtain the
-   results for the next request. The HREF within the hyperlink is a
-   complete URL, with host:port, and the directory entries' distinguished
-   name (DN) for the next request to TWEB.
-
-   Results can be grouped to different lists and sorted within each
-   group, according to the settings of the SORT configuration parameter,
-   and the entries' objectclasses. The objectclasses given in the SORT
-   configuration parameter are scanned for in each result entry,
-   sequentially, and an entry is placed into the appropriate group, as
-   soon as an objectclass is found. (Entries having none of the SORT
-   objectclasses will only be shown, if the SHOW-DEFOC configuration
-   parameter as well as a DEFAULT DISPLAY-TYPE is given.) After scanning
-   for groups, each group of entries is sorted according to the contents
-   of the sort attribute listed within the group's SORT clause, or by the
-   attribute "sn" (surname), if no explicite sort attribute is given, or
-   according to the entries' relative distinguished name, if there is no
-   sn attribute within the entries. The sorted groups are displayed in
-   the order, that is given numerically in the SORT clauses. Thus, the
-   order while scanning for objectclasses (i.e., preparing the groups)
-   is distinct from the order during display. Each group is prepanded
-   by the label given in the SORT clause, with a label consisting only
-   of space characters meaning no label. (Labels containing space
-   characters must be surrounded by double quote characters, i.e., '"'.)
-
-   If there is only one result to a request, TWEB will perform a read
-   request for the X.500 entry and display the attributes of the entry.
-   Since access rights are also checked at the server (see above), the
-   attribute list for a permitted user can differ from the list of an
-   external user. In each case, the attributes are sorted according to
-   the DISPLAY-OBJECT given in the SORT configuration parameter, after
-   classification of the entry to one of the SORT groups in much the 
-   same way, as described above. The DISPLAY-OBJECT selects the attributes
-   to be displayed and determines the order of, as well as labels for
-   the attributes. (If the DISPLAY-OBJECT parameter is not given to the
-   SORT configuration option, DISPLAY-OBJECT DEFAULT will be used; if
-   that, however, is not given by the configuration files, the entry
-   will NOT be displayed!) The method for displaying is also given. Thus,
-   attributes can be displayed as simple strings, prepared as HTTP URLs,
-   or as mailto hyperlinks. A complete list of display methods is given
-   below with the description of the FIRST-PAGE configuration parameter.
-   Within the DISPLAY-OBJECT definition, FIRST-PAGE describes attributes
-   to be shown on a first HTML page, and SECOND-PAGE lists attributes
-   for a second HTML page, if given. To obtain the second page, a hyper-
-   link that directs TWEB to read the same entry again with additional
-   attributes, is placed at the end of the first page's attribute list.
-
-
-2.6 Searching for data
-
-   As described above, one element of a result page may be a search box
-   that can be used to enter appropriate search strings. The input is
-   taken by TWEB and used according to the definitions of the
-   ldapfilter.conf file (a basic version is located in the LDAP_etc
-   sub directory.) In that file, rather complicated search algorithms
-   can be defined, but the most simple ones will be to look for cn or
-   sn attributes. By default, the search scope is restricted to one
-   level below the current DIT position, unless the base entry (the
-   current position) containes objectclasses 'organization' or
-   'organizationalUnit'. In this case, the search will cover the whole
-   DIT area rooted at the current position. (Subtree search.) This
-   scope also determines which search rules are taken from the 
-   ldapfilter.conf file. (Look for "web500gw onelevel" and "web500gw
-   subtree".)
-
-   One word for a warning: since TWEB is currently based on LDAPv2 and
-   servers that are NOT aware of special characters, like german umlaute,
-   such characters should NOT be entered to the search box. Depending
-   on the server's implementation and configuration, these characters
-   might crash the server, since they are not one of the expected ASCII
-   characters. TWEB, on the other hand, can hardly figure out the
-   character entered because of differrent code tables in use with 
-   the browsers and the platforms housing TWEB itself. If someone has
-   a simple sollution to the latter problem, the authers would welcome
-   a hint, so they could implement a safe character conversion method.
-
-
-2.7 Data based behaviour: the dynamic gateway
-
-   In the 'preparing data' section, the construction of hyperlinks for
-   further requests was described for situations, when more than one
-   entry matches the previous request. For these hyperlinks, the under-
-   lying URL will normally contain the TWEB's own host and port address,
-   so that requests will be directed towards the same gateway. This, 
-   however, can be modified by a feature called "gateway-switching",
-   directing further requests to other gateways.
-
-   Gateway-switching exists in two flavors: static (via the GW-SWITCH
-   configuration option) and dynamic (selected by the configuration
-   option DYNAMIC-GW) due to data contents. In both cases, a new host
-   and corresponding port address is inserted into the URL of a hyperlink.
-
-   Static gateway-switching is performed, if a DN given in the configu-
-   ration file, or an entry below that DN, is referred to in the hyperlink.
-   In that case, the beginning of the URL is taken from the configuration
-   file and the DN of the referred-to X.500 entry is appended. Like other
-   configuration options, GW-SWITCH in the tweb.rc file will refer to one
-   such external gateway for all TWEB languages, whereas GW-SWITCH in the
-   tweb.conf.x files will be language-specific.
-
-   When the configuration option DYNAMIC-GW is given, TWEB will scan each
-   entry to be referred to, for the presence of a so-called gateway-
-   switch-URL. For the time beeing, this is encoded in the attribute
-   "labeledURI", with the value having a special syntax. Normal syntax
-   is an URL of the from "http://host/ label". With the gateway-switching
-   option, this format is extended to "http://host:port/ label (gw)",
-   for a language-independant switch, and "http://host:port/ label (gw-xx)",
-   for a languager-specific switch. The "xx" has to be replaced by the
-   international 2-letter language tag, as defined in ISO 639, "Code for
-   the representation of names of languages" (see also RFC-1766). Thus,
-   "gw-de" means "german language", "gw-en" means "english", "gw-fr"
-   means "frensh". When displaying the contents of a labeledURI attribute,
-   TWEB will suppress values that follow the above syntax. For performance
-   reasons, searching of entries, as well as listing entries below the
-   current position (i.e., browsing through the directory), will allways
-   include look-up of the labeledURI and other attributes.
-
-   If both static and dynamic gateway-switching are active, the dynamic
-   switch will be considerred first; if no gateway-switch URL, first testing
-   for a language-specific one, than testing for an independant one, is
-   found within an entry, static switching is tested, again the specific
-   case prior to the un-specific.
-
-   The most prominent usage of the gateway-switching feature is to direct
-   requests for other organizations' data within a country (or for sub-
-   organizations within one organization) to specific gateways, thus
-   giving the option to implement a Corporate Identity for each organi-
-   zation via organization-specific header and footer files. Beside that,
-   of course, specific access policies can be implemented by each orga-
-   nization, and network traffic is reduced by accessing an organization's
-   data directly with a HTTP browser, not via an intermittant gateway
-   and X.500 server of another organization. This latter point may also
-   mean a much reduced response time, when unnecessary data transfers are
-   ommited.
-
-
-2.8 Restricting the service
-
-   A number of configuration options can be used to restrict the display
-   of certain information, or to deny service totally for certain users.
-   These options are described in the following sub-chapters.
-
-2.8.1 Restricting the number of entries
-
-   Normally, an X.500 server will have an option "sizelimit" set to
-   some small or medium value, e.g., 100 or 500. This sizelimit will
-   prevent the number of entries returned for any one request, to
-   exceed that number. This is mainly set by the server's administrator
-   to reduce system and network load.
-
-   When displaying all entries returned from the server, TWEB might
-   produce a very large HTML file. That file may take some time for
-   transfer, and may be very un-handy, because of the long list of
-   entries.
-
-   To prevent the possibiloty of such large files, the TWEB administrator
-   can reduce the number of entries displayed even further, by use of
-   the MAXCOUNT configuration option. This will reduce the number of
-   ALL entries returned from the server.
-
-   If this restriction should only apply to person's entries, the
-   configuration option MAX-PERSON can be used. This option will
-   apply to each sub list of person's entries seperately. Thus, the
-   total number of persons may exceed the MAX-PERSON limit, if more
-   sub lists containing person's entries are given.
-
-   Each restriction of the number of entries to be displayed, will
-   lead to a random list of entries, cutting the results as soon as
-   the maximum count is reached. However, rhis is also true for the
-   sizelimit option at the server itself.
-
-2.8.2 Suppression of certain entries by RDN
-
-   The server's access control rules will normally define, which entries
-   can be obtained by the TWEB gateway. In some situations, the TWEB
-   administrator might want to suppress even more entries, e.g., DSA
-   entries or other mere technical ones. (This can also mean, that
-   complete DIT areas could be hided from the user.)
-
-   To invoke that, the configuration option NO-SHOW-RDN can be defined
-   to reflect a space-seperated collection of RDNs, or parts of RDNs,
-   which will not be shown to the user. This, of course, is a very
-   crude method, but normally will give the results, the TWEB admin
-   may be interested in.
-
-2.8.3 Defining DIT areas for search-only operations
-
-   As described allready in the "Restricting the number of entries"
-   section, large lists of entries may be cumbersome to read, if at
-   all they are returned completely by the server. To exclude the
-   possibility of such partial, or ultra-long lists, TWEB can be
-   configured to display the search box only at certain DIT positions.
-   This is done via the SEARCH-ONLY configuration option, which defines
-   the DIT area(s) for this restriction, as well as certain message
-   files, which should explain the local restriction to the user, and
-   tell him, how to find the information, he is looking for. The
-   SEARCH-ONLY configuration option will only take effect, when
-   browsing the directory, but not prevent a normal subtree search.
-
-   This configuration option, of course, can also be used to implement
-   certain access policies. The option will be active for both the
-   internal and the external user.
-
-2.8.4 Controlling the hackers
-
-   From time to time, users will direct tools to the world-wide-web,
-   that will screen through all, what is supplied in the system. This
-   tools are known as robots, or crawles, and normally the collect data
-   to build indices for faster information retrieval.
-
-   Sometimes, however, these tools can be very ugly, especially, when 
-   they try to collect data as fast as possible. This might cause
-   severe performance decrease, preventing other users to get data 
-   at all. In order to have some mechanisms against this type of
-   data harvest, TWEB can be configured with the COMREFUSE option
-   activated, which will control the number of accesses to the gate-
-   way by a certain number of IP ranges within a selected time-slice.
-
-   Those IP ranges are constructed by reducing the requesting host's
-   32-bit Internet address to a 13-bit number, thus giving 8192
-   different IP ranges. Each IP range is controlled seperately during
-   a pre-set time-slice, and each IP range can be excluded from
-   further service (returning an appropriate error message), when
-   a pre-set number of accesses is reached within that time-slice.
-   All hosts of that IP range are suspended from TWEB's service for
-   a number of time-slices, and resumed for service afterwards.
-
-
-3 Configuration of TWEB features in detail
-
-   Runtime configuration is provided by the files tweb.rc (general
-   configuration) and tweb.conf.x (language-specific configuration).
-   For each supported language there must be a tweb.conf.x and 
-   tweb.lang.x file, with 0 <= x <= 9.
-
-   Remark: most of the features are best configured in the files as given
-           below, but there may be situations, where transfer, or even
-           splitting to other configuration files could be used, e.g.,
-           static gateway-switching may be configured in tweb.rc listing
-           organizations which support only one gateway, whereas organi-
-           zations supporting different language-specific gateways may be
-           configured in the appropriate tweb.conf.x files; the resulting
-           gw-switch list will contain all organizations, regardless of the
-           originating files.
-
-           In order to keep off WWW robots from blocking the gateway put
-           a file with name robots.txt into the directory, together with
-           the tweb binary, containing the following:
-
-                   # go away
-                   User-agent: *
-                   Disallow: /
-
-           This is the same behaviour as if there were a www-server with a
-           corresponding public directory containing the file robots.txt.
-
-
-   The following sections will list TWEB's configuration options.
-   (See also the example configuration files.)
-
-
-3.1 Technical configuration options
-
-   This section lists options, which define the technical parameters of
-   TWEB's operation. Most of them are located in the tweb.rc configuration
-   file, but some could also go into the tweb.conf.x files.
-
-        LDAPD             -- The host running the LDAP daemon
-                             ( usually located in tweb.rc )
-
-                     example:   LDAPD            x500.zdv.uni-tuebingen.de
-
-        LDAPPORT          -- The port the LDAP daemon is listening on
-                             ( usually located in tweb.rc )
-
-                     example:   LDAPPORT         389
-
-        WEBPORT           -- The base port the gateway is attached to
-                             (the language-specific offset x is added
-                              to this number for every running GW)
-                             ( usually located in tweb.rc )
-
-                     example:   WEBPORT          7000
-
-        TIMEOUT           -- Timeout in seconds for any one LDAP
-                             operation
-                             ( usually located in tweb.rc )
-
-                     example:   TIMEOUT         240
-
-        ETCDIR            -- The directory containing support files
-                             (help files, header/footer files ...)
-                             ( usually located in tweb.rc )
-
-                     example:   ETCDIR  ./LDAP_etc/
-
-        FILTERFILE        -- The LDAP filterfile
-                             ( usually located in tweb.rc )
-
-                     example:   FILTERFILE     ldapfilter.conf
-
-        BASEDN            -- The default starting point of DIB access, when 
-                             no other directory position is given
-                             At this position, optional header and footer
-                             information (HTML code in file) can be displayed
-                             ( usually located in tweb.conf.x )
-
-                     example:   BASEDN  "o=Universitaet Tuebingen, c=DE"
-                                        tweb-base.head.0 tweb-base.foot.0
-
-        HELPFILE          -- Name and path of the help-file
-                             ( usually located in tweb.conf.x )
-
-                     example:   HELPFILE       tweb.help.0
-
-        FRIENDLYFILE      -- Name and path of the friendly-file
-                             ( usually located in tweb.conf.x )
-
-                     example:   FRIENDLYFILE   ldapfriendly.0
-
-        HEADER/FOOTER     -- General header/footer information displayed on
-                             every HTML-page, except when other headers/footers
-                             apply
-                             ( usually located in tweb.conf.x )
-
-                     example:   HEADER         tweb.header.0
-                                FOOTER         tweb.footer.0
-
-        ALLOW-MSG         -- Option to specify a special file located in the
-                             ETCDIRectory containing a message to be displayed
-                             in case of an allowed access to TWEB
-                             (see next section)
-                             ( usually located in tweb.conf )
-
-                     example:   ALLOW-MSG      allow.msg.0
-
-
-3.2 Political configuration options
-
-   This section lists options to implement a certain access policy with the
-   TWEB web-X.500 gateway, or to alter the behaviour of the gateway when
-   displaying data from certain DIT areas. 
-
-        WEBDN             -- The DN of a technical webgw X.500 entry,
-                             which is used for a permitted (internal) user
-                             (for logging AND access control)
-                             ( usually located in tweb.rc )
-
-                     example:   WEBDN          "cn=TWEB-quickie-intern,
-                                               ou=SERVICES, o=Universitaet
-                                               Tuebingen, c=DE"
-
-        WEBPW             -- The Password in the WEBDN entry
-                             ( usually located in tweb.rc )
-
-                     example:   WEBPW          password4quickie-intern
-
-        WEBDN2*           -- The DN of a technical webgw X.500 entry,
-                             which is used for a not-permitted (external) user
-                             (for logging AND access control)
-                             ( usually located in tweb.rc )
-
-                     example:   WEBDN2         cn=TWEB-quickie-extern,
-                                               ou=SERVICES, o=Universitaet
-                                               Tuebingen, c=DE"
-
-        WEBPW2*           -- The Password in the WEBDN2 entry
-                             ( usually located in tweb.rc )
-
-                     example:   WEBPW2         password4quickie-extern
-
-            *  setting WEBDN2 as well as WEBPW2 to real values is useful,
-               if the X.500 service in the background is also used by other
-               directory user agents; in this case, a clean distinction,
-               even on the ACL level, can be made between TWEB and those
-               other DUAs.
-               To fully exploit the feature of two different WEBDNs the
-               DSA must support an ACL policy, which can reduce access
-               rights for a specified DN, while at the same time defining
-               broader access rights for a group of other DN, which may
-               also include the specific DN; such a behaviour is NOT
-               implemented in Isode's QUIPU 2.x DSA; a patch introducing
-               such a policy was developped at the University of Tuebingen
-               for QUIPU 2.2v4, and can be optained seperately.
-               Slapd stand-alone LDAP servers implement a different ACL
-               mechanism and can be configured more easily by use of the
-               first matching access-rule in the slapd.conf configuration file
-
-        GRANT**           -- A string describing IP domains allowed to access
-                             the gateway
-                             ( usually located in tweb.rc )
-
-                     example:   GRANT   (www9|mog|x500server|meal)
-                                        \.zdv\.uni-tuebingen\.de$|
-                                        (abcde01|xyz)\.modem\.org\.de$
-
-        REFUSE**          -- A string describing IP domains refused to access
-                             the gateway
-                             ( usually located in tweb.rc )
-
-                     example:   REFUSE hackhost\.(org1\.)?uni-xyz\.de$
-
-        ALLOW-STRING**    -- A string describing IP domains allowed to
-                             access the DIB authorized by WEBDN (see above)
-                             example: "\.de$|\.us$|\.edu$"
-                             ==> host of domains de, us and edu will
-                             have authorized access to the DSA, others NOT
-                             ( usually located in tweb.rc )
-
-                     example:   ALLOW-STRING    uni-tuebingen\.de$
-
-        DENY-STRING**     -- The opposite of ALLOW-STRING. Here, access for
-                             subsets of the ALLOW-STRING may be reduced.
-                             ( usually located in tweb.rc )
-
-                     example:   DENY-STRING     not\.secure\.host
-                                                \.uni-tuebingen\.de$
-
-            **  GRANT/REFUSE are considered first to decide, whether the
-                requesting host will be served at all; only hosts granted
-                the service will be checked against ALLOW-STRING/DENY-STRING
-                to classify as internal or external user (hence, giving
-                WEBDN or WEBDN2 as the DN during X.500 look-up);
-                both, GRANT and ALLOW-STRING are used as positive-lists,
-                whereas REFUSE and DENY-STRING are used as negative-lists;
-                if the positive-lists are defined, and the requesting host's
-                IP domain is NOT covered by the list's description, the
-                host is considered as not-permitted; only when the host
-                is accepted by the positive-list, the negative-list will
-                be considered to decide on a more specific exclusion of
-                the host's IP domain;
-                if the positive-lists are not defined, each host will be
-                accepted, as if contained within the list; if the negative-
-                lists are not defined, each host will be accepted, as if
-                NOT contained within the list;
-                hosts NOT found in the Domain Name Service (DNS) will be
-                granted access, but will NEVER have authorized access
-                via WEBDN
-
-        TWEBHOST          -- Supplies a constant hostname in the returned URL
-                             of HTTP links independant from the local one
-                             ( usually located in tweb.rc )
-
-                     example:   TWEBHOST        x500.zdv.uni-tuebingen.de
-
-        NO-PROXY          -- Access restrictions for WWW-PROXY-Servers
-                             ( usually located in tweb.rc )
-
-                     example:   NO-PROXY
-
-        ALLOW-PROXY       -- if NO-PROXY is configured
-                             access from a given set of proxy-hosts
-                             ('host1:host2') is allowed
-                             ( usually located in tweb.rc )
-
-                     example:   ALLOW-PROXY    www1.zdv.uni-tuebingen.de:
-                                               www2.zdv.uni-tuebingen.de
-
-        COMREFUSE         -- If configured, implements an interrupt-driven
-                             time-slicing of the gateway. During these
-                             slices only a maximum number of accesses
-                             from a given group of IP-addresses is permitted;
-                             additional accesses will lead to immediate
-                             suspension of the IP connection to the WWW
-                             client; this suspension will last for a con-
-                             figured number of time-slices, and service
-                             for the IP domain in question will resume
-                             afterwards. Additionally, access statistics will
-                             be dumped to a file at given intervals;
-                             the duration of a time-slice will be computed
-                             randomly between a minimum and maximum;
-                             all times are given in seconds
-                             ( usually located in tweb.rc )
-
-                     example:   COMREFUSE   100 200 40 12 43200
-                                            ./stats/hack-stats
-
-                     i.e.:      minimum timeslice -> 100 secs
-                                maximum timeslice -> 200 secs
-                                number of accesses to tolerate in slice -> 40
-                                how long will be blocked -> 12 slices
-                                period to write a stat-file -> 43200 secs
-                                name of stat-file -> ./stats/hack-stats
-                                   (i.e., file relative to TWEB binary)
-
-        STRICT-BASEDN     -- Access to entries not below basedn is relayed
-                             to another gateway ( ->  GW-SWITCH must be set)
-                             ( usually located in tweb.rc )
-
-                     example:   STRICT-BASEDN
-
-        MAXCOUNT          -- The maximum number of displayed entries
-                             ( usually located in tweb.rc )
-
-                     example:   MAXCOUNT        200
-
-        MAX-PERSON        -- Maximum number of persons displayed in any of
-                             the configured sub-lists ( -> SORT option),
-                             if access is not allowed;
-                             if STRICT is given, this number of persons is
-                             shown at maximum, even in case of an
-                             allowed access;
-                             if NO-BROWSE is given, only non-person entries
-                             will be displayed while browsing, whereas persons
-                             have to be searched for
-                             ( usually located in tweb.rc )
-
-                     example:   MAX-PERSON      5    STRICT  NO-BROWSE
-
-        NO-SHOW-RDN       -- Matching rules for RDNs that will NOT be displayed
-                             (e.g., technical entries in the DIT or internal
-                              OUs not to be displayed by the GW)
-                             words surrounded by spaces will be matched as
-                             substrings; allignment to the start or end of
-                             the tested RDN can be enforced by surrounding
-                             the words with "|", on either side
-                             ( usually located in tweb.rc )
-
-                     example:   NO-SHOW-RDN     "|cn=Dummy notToBeShownRDN"
-
-        SEARCH-ONLY       -- Defines the root of a DIT area, where browsing
-                             is restricted to non-person entries; person
-                             entries can only be found by explicite searching
-                             (with appropriate header and footer information)
-                             ( usually located in tweb.conf )
-
-                     example:   SEARCH-ONLY    "ou=students, o=my-university,
-                                                c=my" search-only.head.0
-                                                search-only.foot.0
-
-        LEGAL             -- Flag for displaying of a comment concerning
-                             Peoples Rights
-                             (the text is configured in the tweb.lang.x files,
-                             string numbered 65 of the gateway)
-                             (Comment: certainly, it would be better to have
-                              that text in an external file)
-                             Sub-option ON-TOP directs TWEB to display the
-                             message immediately below the HEADER information,
-                             not above the FOOTER message
-                             ( usually located in tweb.rc )
-
-                     example:   LEGAL ON-TOP
-
-        CACHE-EXPIRE-DEFAULT -- The default value for the expire time
-                             in seconds. After this time the page is no
-                             longer cached by a browser or WWW cache.
-                             ( usually located in tweb.rc )
-
-                     example:   CACHE-EXPIRE-DEFAULT 900
-
-        CACHING-TERMS     -- A more detailed description of caching directives.
-                             Format:
-                                <expire-time> READ|MENU|L2ND RDN|OC <value>
-                                ...
-
-                             To specify for a given access-type: 
-                             READ|MENU|L2ND (L2ND = second page) the expire-time
-                             in seconds for given RDN|OC values
-                             ( usually located in tweb.rc )
-
-                             BEWARE: THIS OPTION IS NOT USED AT THE AUTHOR'S
-                                     SITE, ROUTINELY. THUS, CORRECT BEHAVIOUR
-                                     CANNOT BE GARANTEED !
-
-                     example:   CACHING-TERMS  3600    READ    RDN     Fax
-                                               7200    MENU    OC      person
-                                               10800   menu    RDN     Mueller
-
-        MODIFY/MODATTR    -- Selects for specified object-class (MODIFY) the 
-                             attributes permitted for modification, their 
-                             labels and the maximum number of values to be 
-                             handled by TWEB (MODATTR)
-                             ( usually located in tweb.conf )
-
-                             BEWARE: THIS OPTION IS NOT USED AT THE AUTHOR'S
-                                     SITE, ROUTINELY. THUS, CORRECT BEHAVIOUR
-                                     CANNOT BE GARANTEED !
-
-                     example:   MODIFY          person
-                                MODATTR         personalTitle        title 1
-                                                telephoneNumber      phone 2
-                                                ...
-
-        NO-MODIFY         -- Entries that contain one of the named
-                            ObjectClasses will be displayed without
-                            the possibility for modification.
-                             ( usually located in tweb.rc )
-
-                     example:   NO-MODIFY      |toc_primas|
-
-
-3.3 Load balancing configuration options
-
-   This section lists configuration options related to gateway-switching.
-
-        GW-SWITCH         -- Defines DIT areas, which will direct TWEB to
-                             introduce other gateway addresses for the
-                             so-called gateway-switching
-                             (STATIC gateway-switching; see section 2.7)
-                             ( usually located in tweb.conf )
-
-                          REMARK: A set of slides explaining gateway-switching,
-                                  presented at the January-1999 DANTE meeting
-                                  in Utrecht, NL, can be found at the TWEB FTP
-                                  site at
-                                    ftp://ftp-x500.uni-tuebingen.de/tweb
-
-                     example:   GW-SWITCH   "ROOT" HTTP://x500-relay.
-                                                   uni-tuebingen.de:8901/M
-                                            "c=DE" HTTP://x500-relay.
-                                                   uni-tuebingen.de:8911/
-
-        DYNAMIC-GW        -- If given, tells TWEB to use dynamic gateway-
-                             switching; if not given, only static switching
-                             will be used, if configured;
-                             a labeledURI attribute in an X.500 entry con-
-                             taining (gw), (gw-de), or (gw-en) in its label
-                             part is used to link this entry to another gateway
-                             ( usually located in tweb.rc )
-
-                     example:   DYNAMIC-GW
-
-3.4 Display configuration options
-
-   This section lists options related to the displaying of results on an
-   HTML page. The options direct display of entries, attributes, as well
-   as styles for displaying.
-
-        SORT              -- Classification of a list of entries into sub-lists
-                             according to their object classes; generating of
-                             sub-lists will be according to the order the
-                             OCs are given in the SORT option; displaying the
-                             sub-lists will be according to the numbers given
-                             as third parameter; sub-lists without an intro-
-                             ducing label (second parameter) should have a
-                             label of " "; the fourth parameter is the DISPLAY-
-                             TYPE for a given object (see below) and the fifth
-                             parameter is the attribute used for sorting;
-                             parameters four and five are optional;
-                             if not given reasonable defaults will be used;
-                             if none of the entries objectclasses is given
-                             in the SORT option, TWEB will randomly select
-                             one of the entry's OCs as a new entry to the 
-                             SORT list, using DISPLAY-TYPE "default"; if that
-                             type is not defined, the entry will NOT be
-                             displayed at all
-                             (see also section 2.5)
-                             ( usually located in tweb.conf.x )
-
-                     example:   SORT person             Staff 4  person tat_sort
-                                     organization       Organizations 3 orgs
-                                     organizationalUnit "O Units"     2  ous
-                                     ...
-
-        DISPLAY-OBJECT    -- For specified DISPLAY-TYPES define the order, 
-                             labels and type of HTML-code produced for given
-                             attributes (see FIRST-PAGE, SECOND-PAGE below);
-                             a DISPLAY-TYPE "default" will match all types
-                             NOT specifically listed; when the default type
-                             is not giving, some X.500 entries might NOT be
-                             displayed (see also SHOW-DEFOC below)
-                             ( usually located in tweb.conf.x )
-
-                     example:   DISPLAY-OBJECT  person
-                                FIRST-PAGE      ....
-
-            FIRST-PAGE    -- Attributes to be displayed for a specified
-                             DISPLAY-TYPE
-                             Format: <attribute> <label> <display-type>
-                             Display-types:
-                                 MULTILINE    -- attribute with multiple lines
-                                 DATE         -- attribute as date
-                                 HREF         -- attribute with syntax DN
-                                                 as hyperlink (READ DN entry)
-                                 URI          -- attribute with syntax URL
-                                                 as hyperlink
-                                 MAILTO       -- attribute as mailto (must be
-                                                 supported by WWW client)
-                                 MOVETO       -- like HREF, but the link will
-                                                 be a LIST, instead of a READ
-                                                 hyperlink
-                                 BMP          -- phote as bitmap
-                                 JPEG         -- photo as jpeg
-                                 JPEG2GIF     -- convert jpeg to gif
-                                 BOOLEAN      -- binary attribute
-                                 PGPKEY       -- display PGPKey for cut&paste
-                                 DYNAMICDN    -- uses DIT-CONFIG to show
-                                                 attribute as hyperlink
-                                 INDEXURL     -- show this hyperlink as defined
-                                                 with INDEX-URL
-                                 DEFAULT      -- anything else
-
-                     example:   DISPLAY-OBJECT  person
-                                FIRST-PAGE      cn            Name  DEFAULT
-                                                personalTitle Title DEFAULT
-                                                ...
-
-            SECOND-PAGE   -- show additional attributes not displayed on
-                             the first page
-
-                     example:   DISPLAY-OBJECT  person
-                                FIRST-PAGE      ...
-                                                ...
-                                SECOND-PAGE     sn           Surname     DEFAULT
-                                                info         Information DEFAULT
-
-        SHOW-DEFOC        -- Show Default Objectclass. If no objectclass
-                             did match -> show entry with attributes as
-                             defined in default-display
-                             ( usually located in tweb.rc )
-
-                     example:   SHOW-DEFOC
-
-        PULL-DOWN-MENUS   -- Use BUTTONS and PULL-DOWN-MENUS instead of links
-                             in order to support: help, language-switch,
-                             move-upwards and read-entry functionalities
-                             ( usually located in tweb.rc )
-
-                     example:   PULL-DOWN-MENUS
-
-        LANGUAGE          -- The labels of buttons for the switch to
-                             the other started language-specific gateways
-                             ( usually located in tweb.rc )
-
-                     example:   LANGUAGE        Deutsch
-                                                English
-                                                Fran&ccedil;ais
-
-        STRIP-PIN         -- Specify here the object-classes where numbers
-                             ( PINs, personal ident numbers, etc. ) following
-                             an RDN will be stripped when displayed
-                             ( usually located in tweb.rc )
-
-                     example:   STRIP-PIN |toc_profs|person|toc_primas|
-                                          toc_cperson|toc_funcs|toc_pextra|
-
-        INDIRECT-ATTRS    -- Format:
-                               INDIRECT-ATTRS <ref-attribute>
-                               IND_ATTRS <selection> REPLACE|APPEND <attribute>
-                                                       <host> <port> <baseDN>
-
-                             If there is an attribute with name <ref-attribute>
-                             in a given entry, values of attribute <attribute>
-                             in this entry will be REPLACEed|APPENDed by values
-                             taken from the same attribute <attribute> of
-                             an entry with DN:
-                                 "cn=<ref-attribute-value>,<baseDN>",
-                             looked-up at an LDAP server <host>:<port>,
-                             but only when some value in <ref-attribute>
-                             matches <selection> at its beginning
-                             ( usually located in tweb.rc )
-
-                     example:   INDIRECT-ATTRS  tat_refattr
-                                IND_ATTRS  POST-  append postaladdress
-                                          x500.uni-tuebingen.de 10100
-                                          "ou=POST,ou=INTERNA,ou=NETZWERK,
-                                          o=Universitaet Tuebingen,c=DE"
-
-        DISP-SEA-RDN      -- Make search-results to be displayed only by RDN
-                             and not by DN relative to the search-base
-                             ( usually located in tweb.rc )
-
-                     example:   DISP-SEA-RDN
-
-        INDEX-URL         -- Display labels of hyperlinks only with selected
-                             RDN parts in the order configured by INDEX-URL;
-                             this option applies to URL attributes within an
-                             entry, which are directed towards other X.500
-                             entries; an application of that might be an
-                             index of entries
-                             DISPLAY-TYPE must be set to INDEXURL.
-                             ( usually located in tweb.rc )
-
-                     example:   INDEX-URL 0,-2 "o=Universitaet Tuebingen, c=DE"
-
-                     i.e.:      labels of a hyperlink below the University
-                                of Tuebingen are shown as follows:
-
-                                1. lowest part of the DN (e.g., a person's name)
-                                2. third-top-most part of the DN (e.g., faculty)
-
-                                all other DN parts will be supressed
-
-        TABLES            -- Format:
-                              TABLES <ALLOW|ALL> <objectclass> <Button-label>
-                                    <mode-selection>:<attribute>,<col-width>
-                                                    [&<attribute>,<col-width>]*
-
-                              During browsing, the entries listed below a
-                              base object (i.e., DIT position) can be displayed
-                              together with some selected attributes in a
-                              tabular format; the SORT configuration option
-                              will be applied to the entries; attribute mail
-                              will be displayed as mailto: and the RDN will
-                              be displayed as a link to the respective entry;
-                              in order to select the tabular format, TWEB will
-                              display a button with a given label, that, if
-                              pressed, will request the tabular format;
-                              however, the button will only be displayed, if
-                              the requesting user is allowed to get this
-                              feature (i.e., ALLOW will select internal users
-                              only, whereas ALL will select all users)
-                              
-                     example:   TABLES ALLOW oleaf Tabelle persontable:rdn,28
-                                          &telephonenumber,25&tat_dummyattr,2
-                                          &mail,45
-
-                     i.e.:      ALLOW -> only allowed users will see the table
-                                oleaf -> table button is shown on presence of
-                                         the objectclass oleaf in the base entry
-                                Tabelle -> the label for the table-request-
-                                         button
-                                persontable -> the keyword for function-
-                                               selection of a persons' table
-                                rdn,28 -> first the rdn-attribute is shown
-                                         in the table with width 28 percent
-                                telephonenumber,25 -> telephonenumber,
-                                         width 25
-                                tat_dummyattr,2 -> a separating column, width 2
-                                mail,45 -> the e-mail-address with width 45
-
-                                (all width values are given in percentage of
-                                 the width of the browsers window, and should
-                                 sum up to 100 %)
-
-
-4 Support and discussion list
-
-   Bug reports and flames (but also critical comments) send to 
-
-      tweb-support@mail500.uni-tuebingen.de. 
-    
-   For general discussion (e.g., about interesting new features,
-   which should be supported), there is a discussion list at
-
-      tweb-l@mail500.uni-tuebingen.de.
-
-   Send requests for subscription to
-
-      tweb-l-request@mail500.uni-tuebingen.de.
-
-
-
-TWEB development team, Tuebingen, January, 15th, 1999
-
-
diff --git a/contrib/tweb/GETTING-STARTED.openldap b/contrib/tweb/GETTING-STARTED.openldap
deleted file mode 100644 (file)
index d1d958c..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-TWEB WWW-X500 GATEWAY   -   GETTING STARTED
-
-With the information provided by this file you should be able to start
-an initial version of TWEB. Please follow the steps below:
-
-1. Copy the distribution Makefile onto Makefile:
-
-     > cp Makefile.openldap Makefile
-
-2. Edit the Makefile. You have to change the variables in the first block of
-   the file to your appropriate settings:
-
-     > vi Makefile
-
-3. Now type in make:
-
-     > make
-
-   This should make a binary called tweb whithout severe problems
-
-4. Running the TWEB www-x500 gateway
-
-4.1. Testing the newly compiled binary
-
-     Copy the tweb binary to the sub-directory TWEB_conFiles and
-     change to that directory:
-
-       > cp tweb TWEB_conFiles
-       > cd TWEB_conFiles
-
-     Copy the config files with extension .dist to their respective
-     basefiles:
-
-       > cp tweb.rc.dist tweb.rc
-       > cp tweb.conf.0.dist tweb.conf.0
-       > cp tweb.conf.1.dist tweb.conf.1
-       > cp tweb.lang.0.dist tweb.lang.0
-       > cp tweb.lang.1.dist tweb.lang.1
-
-     Edit tweb.rc to adjust the variables in the
-     first block to your appropriate settings:
-
-       > vi tweb.rc
-
-     Run TWEB with language 0 and 1 (i.e., german and english)
-
-       > ./tweb -L01
-
-     This will run two TWEB server processes, one for german language, the
-     other for english language, whithout syslog logging;
-     you can assess them with your WWW browser by giving the URL
-
-         http://<your-tweb-host>:<your-tweb-port>/
-
-4.2. Adapting TWEB to your local requirements
-
-     When you reached this point you have a running TWEB with basic
-     functionality. Have a look to the FEATURE-LIST file for a
-     description of all features, TWEB does provide. The least, you
-     might want to change are the several header and footer files
-     in order to build up your organizational identity with TWEB.
-     But check also the security features, and the performance (i.e.,
-     load balancing) features. By setting the respective parameters,
-     TWEB can provide for a very special appearance with local require-
-     ments enforced as far as possible. Should you want more reasonable
-     features, please don't hesitate to contact the development team.
-
-
-   Have fun,
-
-   TWEB development team, Tuebingen, September, 9th, 1999
-
-   email: tweb-support@mail500.uni-tuebingen.de
-
-
diff --git a/contrib/tweb/LDAP_etc/allow.msg.0 b/contrib/tweb/LDAP_etc/allow.msg.0
deleted file mode 100644 (file)
index 3314bfc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<strong>Datei: LDAP_etc/allow.msg.0<br>
-Achtung</strong>: Dies ist eine Meldung, die nur dem authorisierten
-Nutzer angezeigt wird !!!
-<hr>
diff --git a/contrib/tweb/LDAP_etc/allow.msg.1 b/contrib/tweb/LDAP_etc/allow.msg.1
deleted file mode 100644 (file)
index 9a5c311..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<strong>File: LDAP_etc/allow.msg.1<br>
-Attention</strong>: This message will only be shown to the 
-permitted user.
-<hr>
diff --git a/contrib/tweb/LDAP_etc/ldapfilter.conf b/contrib/tweb/LDAP_etc/ldapfilter.conf
deleted file mode 100644 (file)
index d189384..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-# ldap filter file
-#
-# lines like this that start with # or empty lines are ignored
-# 
-# syntax:
-#
-# <tag>
-#   <pattern1> <delimiters>    <filter1-1>     <desc1-1>       [<scope>]
-#                              <filter1-2>     <desc1-2>       [<scope>]
-#
-#   <pattern2> <delimiters>    <filter2-1>     <desc2-1>       [<scope>] ...
-#
-# The "desc" should describe the filter and it should correctly complete
-# both of the following phrases:
-#
-#      One <desc> match was found for...
-#      Three <desc> matches were found for...
-#
-# The scope is optional, and should be one of:
-#      "base"
-#      "onelevel"
-#      "subtree"
-# if it is included.
-#
-
-"finger and go500 and go500gw subtree and rp500 and rcpt500"
-    "="                " "     "%v"                            "arbitrary filter"
-
-    "^[0-9][0-9\-]*$"  " "     "(telephoneNumber=*%v)"         "phone number"
-
-    "@"                " "     "(mail=%v)"                     "email address"
-                       "(mail=%v*)"                    "start of email address"
-
-    "^.[\. _].*"       ". _"   "(cn=%v1* %v2-)"                "first initial"
-
-    ".*[. _].$"        ". _"   "(cn=%v1-*)"                    "last initial"
-
-    "[. _]"    ". _"   "(|(sn=%v1-)(cn=%v1-))"         "exact"
-                       "(|(sn~=%v1-)(cn~=%v1-))"       "approximate"
-
-    ".*"       ". "    "(|(cn=%v1)(sn=%v1)(uid=%v1))"  "exact"
-                       "(|(cn~=%v1)(sn~=%v1))"         "approximate"
-
-"web500gw subtree"
-    "="                " "     "%v"                            "arbitrary filter"
-
-    "^[0-9][0-9\-]*$"  " "     "(|(telephoneNumber=*%v)(facsimileTelephoneNumber=*%v))"                "phone number"
-
-    "@"                " "     "(mail=%v)"                     "email address"
-                       "(mail=%v*)"                    "start of email address"
-
-    "^.[\. _].*"       ". _"   "(cn=%v1* %v2-)"                "first initial"
-
-    ".*[. _].$"        ". _"   "(cn=%v1-*)"                    "last initial"
-############
-#    "[. _]"   ". _"   "(|(sn=%v1-)(cn=%v1-))"         "exact"
-#                      "(|(sn~=%v1-)(cn~=%v1-))"       "approximate"##
-#
-#    ".*"      ". "    "(|(cn=%v1)(sn=%v1))"   "exact"
-#                      "(|(cn~=%v1)(sn~=%v1))"                 "approximate"#
-#
-# Neue Einstellungen 970127 KPG:
-    "[oO][xX]:.*" ":" "(|(ou=%v2-))" "exact" 
-    "[xX][oO]:.*" ":" "(|(ou=%v2-))" "exact" 
-    "[oO]:.*" ":" "(|(ou=%v2-))" "exact" 
-                             "(|(ou~=%v2-))"   "approximate"
-    "[xX]:.*[. _].*" ":" "(|(cn=%v2%v3%v4-))" "exact" 
-    "[xX]:.*" ":" "(|(sn=%v2-))" "exact" 
-
-    "[. _]"    ". _"   "(|(cn=%v))"            "exact"
-                       "(|(cn~=%v))"   "approximate"
-
-    ".*"       ". "    "(|(sn=%v))"    "exact"
-                       "(|(sn~=%v))"                   "approximate"
-
-"go500gw onelevel and web500gw onelevel"
-    "^..$"     " "     "(|(o=%v)(c=%v)(l=%v)(co=%v))"          "exact"
-                       "(|(o~=%v)(c~=%v)(l~=%v)(co~=%v))"      "approximate"
-
-    " "                " "     "(|(o=%v)(l=%v)(co=%v))"        "exact"
-                       "(|(o~=%v)(l~=%v)(co~=%v))"     "approximate"
-
-    "\."       " "     "(associatedDomain=%v)"         "exact"
-
-    ".*"       " "     "(|(o=%v)(l=%v)(co=%v))"        "exact"
-                       "(|(o~=%v)(l~=%v)(co~=%v))"     "approximate"
diff --git a/contrib/tweb/LDAP_etc/ldapfriendly.0 b/contrib/tweb/LDAP_etc/ldapfriendly.0
deleted file mode 100644 (file)
index fba7fd7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-AU     Australien
-AR     Argentinien
-AT     &Ouml;sterreich
-BE     Belgien
-BR     Brasilien
-CA     Kanada
-HR     Kroatien
-CS     Tschechoslowakei
-CZ     Tschechische Republik
-DK     D&auml;nemark
-FI     Finnland
-FR     Frankreich
-DE     Deutschland
-EE     Estland
-GB     Gro&szlig;britannien
-GR     Griechenland
-HK     Hong Kong
-HU     Ungarn
-IS     Island
-IN     Indien
-IE     Irland
-IL     Israel
-IT     Italien
-JP     Japan
-KR     Korea
-LI     Liechtenstein
-LU     Luxemburg
-NL     Niederlande
-NZ     Neuseeland
-NO     Norwegen
-PL     Polen
-PT     Portugal
-ES     Spanien
-SE     Schweden
-CH     Schweiz
-RU     Russische F&ouml;deration
-US     Vereinigte Staaten von Amerika
-SI     Slowenien
-SK     Slowakei
-SG     Singapur
diff --git a/contrib/tweb/LDAP_etc/ldapfriendly.1 b/contrib/tweb/LDAP_etc/ldapfriendly.1
deleted file mode 100644 (file)
index e7aacbe..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-AU     Australia
-AR     Argentina
-AT     Austria
-BE     Belgium
-BR     Brazil
-CA     Canada
-HR     Croatia
-CS     Czechoslovakia
-CZ     Czech Republic
-DK     Denmark
-FI     Finland
-FR     France
-DE     Germany
-EE     Estonia
-GB     Great Britain
-GR     Greece
-HK     Hong Kong
-HU     Hungary
-IS     Iceland
-IN     India
-IE     Ireland
-IL     Israel
-IT     Italy
-JP     Japan
-KR     Korea
-LI     Liechtenstein
-LU     Luxemburg
-NL     Netherlands
-NZ     New Zealand
-NO     Norway
-PL     Poland
-PT     Portugal
-ES     Spain
-SE     Sweden
-CH     Switzerland
-RU     Russian Federation
-US     United States of America
-SI     Slovenia
-SK     Slovakia
-SG     Singapore
diff --git a/contrib/tweb/LDAP_etc/search-only.foot.0 b/contrib/tweb/LDAP_etc/search-only.foot.0
deleted file mode 100644 (file)
index 2450db2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>Datei: LDAP_etc/search-only.foot.0<br>
-Achtung:</strong> Dieser Text wird als Footer einer Search-Only-Seite
-angezeigt !!!
diff --git a/contrib/tweb/LDAP_etc/search-only.foot.1 b/contrib/tweb/LDAP_etc/search-only.foot.1
deleted file mode 100644 (file)
index 9db7150..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>File: LDAP_etc/search-only.foot.1<br>
-Attention:</strong> This footer will be display'ed at the end
-of a search-only page.
diff --git a/contrib/tweb/LDAP_etc/search-only.head.0 b/contrib/tweb/LDAP_etc/search-only.head.0
deleted file mode 100644 (file)
index dc1fe4c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>Search-Only-Seite</h1>
-<strong>Datei: LDAP_etc/search-only.head.0<br>
-Achtung:</strong> Dieser Text wird am Beginn einer Search-Only-Seite
-angezeigt !!!
-<hr>
diff --git a/contrib/tweb/LDAP_etc/search-only.head.1 b/contrib/tweb/LDAP_etc/search-only.head.1
deleted file mode 100644 (file)
index ff4f62c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>Search-Only-Page</h1>
-<strong>File: LDAP_etc/search-only.head.1<br>
-Attention:</strong> This header will be display'ed at the beginning
-of a search-only page.
-<hr>
diff --git a/contrib/tweb/LDAP_etc/tweb-base.foot.0 b/contrib/tweb/LDAP_etc/tweb-base.foot.0
deleted file mode 100644 (file)
index 2daad03..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>Datei: LDAP_etc/tweb-base.foot.0<br>
-Achtung:</strong> Diese Seite wird als Footer auf der BASEDN-Seite
-angezeigt !!!
diff --git a/contrib/tweb/LDAP_etc/tweb-base.foot.1 b/contrib/tweb/LDAP_etc/tweb-base.foot.1
deleted file mode 100644 (file)
index 0a8975e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>File: LDAP_etc/tweb-base.foot.1<br>
-Attention:</strong> This text will be display'ed at the end of
-the BASEDN page.
diff --git a/contrib/tweb/LDAP_etc/tweb-base.head.0 b/contrib/tweb/LDAP_etc/tweb-base.head.0
deleted file mode 100644 (file)
index d1626ca..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>BASEDN-Header</h1>
-<strong>Datei: LDAP_etc/tweb-base.head.0<br>
-Achtung:</strong> Dieser Header wird am Beginn der BASEDN-Seite
-angezeigt !!!
-<hr>
diff --git a/contrib/tweb/LDAP_etc/tweb-base.head.1 b/contrib/tweb/LDAP_etc/tweb-base.head.1
deleted file mode 100644 (file)
index 0c4dd9d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>BASEDN-Header</h1>
-<strong>File: LDAP_etc/tweb-base.head.1<br>
-Attention:</strong> This header will be display'ed at the beginning
-of the BASEDN page.
-<hr>
diff --git a/contrib/tweb/LDAP_etc/tweb.footer.0 b/contrib/tweb/LDAP_etc/tweb.footer.0
deleted file mode 100644 (file)
index 414cf57..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>Datei: LDAP_etc/tweb.footer.0<br>
-Achtung:</strong> Dieser Footer wird am Ende einer normalen
-Seite unterhalb BASEDN angezeigt !!!
diff --git a/contrib/tweb/LDAP_etc/tweb.footer.1 b/contrib/tweb/LDAP_etc/tweb.footer.1
deleted file mode 100644 (file)
index 88bcc1c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr>
-<strong>File: LDAP_etc/tweb.footer.1<br>
-Attention:</strong> This footer will be display'ed at the end of a page
-below BASEDN.
diff --git a/contrib/tweb/LDAP_etc/tweb.header.0 b/contrib/tweb/LDAP_etc/tweb.header.0
deleted file mode 100644 (file)
index b83c44e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>TWEB</h1>
-<strong>Datei: LDAP_etc/tweb.header.0<br>
-Achtung:</strong> Dieser Header wird am Beginn einer Seite unterhalb
-von BASEDN angezeigt !!!
-<hr>
diff --git a/contrib/tweb/LDAP_etc/tweb.header.1 b/contrib/tweb/LDAP_etc/tweb.header.1
deleted file mode 100644 (file)
index a4dfb09..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<h1>TWEB</h1> 
-<strong>File: LDAP_etc/tweb.header.1<br>
-Attention:</strong> This header will be display'ed at the beginning of
-a page below BASEDN.
-<hr>
diff --git a/contrib/tweb/LDAP_etc/tweb.help.0 b/contrib/tweb/LDAP_etc/tweb.help.0
deleted file mode 100644 (file)
index fd8913b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<TITLE>TWEB HILFE</TITLE>
-<BODY>
-<H2> Das TWEB WWW2X.500-Gateway </H2>
-
-Im X.500 sind weltweit viele Personen und Organisationen mit EMail- Adresse,
-Postanschrift, FAX, Telefonnummer, Aufgabenbereich, etc. zu finden.
-Zum einfachen Zugriff per WorldWideWeb dient <strong>TWEB</strong> WWW2X.500-Gateway.<P>
-
-<strong>TWEB</strong> erm&ouml;glicht das einfache Browsen, die Suche 
-und die Modifikation des eigenen Eintrages im X.500.<P>
-Das Gateway enth&auml;lt folgende Features
-<ul>
-
-<li>F&uuml;r den Administrator bietet <strong>TWEB</strong> umfangreiche M&ouml;glichkeiten
-der Konfiguration mittels Konfigurations-Dateien, ohne &Auml;nderungen im 
-Code und ohne erneutes &Uuml;bersetzen. 
-<li>Zus&auml;tzlich sind Datenschutzmechanismen aktivierbar.
-<li>Andere Sprachen sind durch Ersetzen/Hinzuf&uuml;gen 
-von Sprach-Dateien leicht realisierbar.
-
-<li>Wie Sie es vom WWW her gewohnt sind, brauchen Sie nur den gew&uuml;nschten
-unterstrichenen Eintrag anklicken, und Sie sehen, was darunter angesiedelt ist.
-
-<li>Mit "Weitere Informationen" wird eine zweite Info-Seite gezeigt.
-
-<li>Mit Hilfe der SUCH-Box k&ouml;nnen Sie nach Namen und Teilstrings suchen.
-
-<li>Ihren eigenen Eintrag k&ouml;nnen Sie mit Ihrem Passwort in Verbindung
-mit dem entsprechenden Button &auml;ndern.
-</ul>
-
-
-<hr>
-
-<strong>TWEB</strong> ist eine Weiterentwicklung vom Web500gw von Frank Richter, Technische
-Universitaet Chemnitz-Zwickau, basierend auf go500gw von Tim Howes,
-University of Michigan.
-
-<hr>
-
-Bei Fragen, Anregungen, Bug-Reports Mail an:
-
-<ADDRESS><A HREF="mailto:web500gw-support@mail500.uni-tuebingen.de"> web500gw-support@mail500.uni-tuebingen.de</A> - Stand: 16. Februar 1996</ADDRESS>
-
-<hr>
-
diff --git a/contrib/tweb/LDAP_etc/tweb.help.1 b/contrib/tweb/LDAP_etc/tweb.help.1
deleted file mode 100644 (file)
index 54f615b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<TITLE>TWEB HELP</TITLE>
-<BODY>
-<H2> TWEB WWW2X.500-Gateway HELP</H2>
-
-There are worldwide lots of persons and organizations stored in the X.500-
-directory with email-address, postal address, fax, telephone-number, 
-working-area, etc. For easy access with WorldWideWeb  there is the
-<strong>TWEB</strong> WWW2X.500-Gateway.<P>
-
-<strong>TWEB</strong> allows easy browsing, searching and modification of
-entries in the X.500-directory.<p>
-Features of the gateway include
-<ul>
-<li>For the administrator <strong>TWEB</strong> offers extensive opportunities of
-configuration by means of configuration-files without change of code
-and without recompilation.
-<li>Configurable data-protection-mechanisms are available.
-<li>Other languages are supported by language-resource-files.
-
-<li>As with other WWW applications you only have to click on the desired entry
-to see, what is settled beneath.
-
-<li>The button "More Information" shows a second page of information.
-
-<li>By means of the SEARCH-box you can look for persons with exact or substring
-match.
-
-<li>You can modify your own entry by typing in your password in combination
-with the modification button.
-</ul>
-
-
-
-<hr>
-
-<strong>TWEB</strong> is based on Web500gw from Frank Richter, Technische
-Universitaet Chemnitz-Zwickau, that itself is based on go500gw from Tim Howes,
-University of Michigan.
-
-<hr>
-
-For questions, suggestions, bug-reports mail to:
-
-<ADDRESS><A HREF="mailto:x500-netman@mail500.uni-tuebingen.de"> x500-netman@mail500.uni-tuebingen.de</A> - 27. October 1995</ADDRESS>
-
-<hr>
-
diff --git a/contrib/tweb/Makefile.openldap b/contrib/tweb/Makefile.openldap
deleted file mode 100644 (file)
index bbb9ba4..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# Makefile...                                                              *
-#                                                                          *
-# Function:..TWEB WWW to X.500-GATEWAY SERVER MAKEFILE                     *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung,                               *
-#            Bereich Entwicklungneuer Dienste,                             *
-#            Universitaet Tuebingen, GERMANY                               *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            August 16 1995               Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            September 13 1999          ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#-----------------------------------------------------------------------------
-#
-#  based on web500gw.c of Frank Richter, TU Chemnitz-Zwickau, DE
-#
-#  first edition: 95/07/28, /KSp
-#
-#  $Id: Makefile.openldap,v 1.6 1999/09/10 15:01:15 zrnsk01 Exp $
-#
-#-----------------------------------------------------------------------------
-
-#########################################################################
-###
-###  Tailor the following to your local settings
-###
-#########################################################################
-
-# where is your LDAP client library located
-# WE NEED portable.h AND ldap_log.h, SO POINT TO THE SOURCE TREE
-LDAP_RUNTIME=../..
-LDAP_SOURCE =../..
-
-LIBDIR= $(LDAP_RUNTIME)/libraries
-INCDIR= $(LDAP_RUNTIME)/include
-
-# where is some version information for your LDAP client library
-LDAPDIR= $(LDAP_SOURCE)/build
-
-# select your compiler (DEFAULT=cc) and uncomment ACFLAGS and/or COPTS
-# to have options for the linker and/or compiler
-CC= gcc
-# ACFLAGS= 
-# COPTS= -Aa -O  # cc  on a HP box
-COPTS= -Wall -ansi -pedantic -O2
-
-# uncomment next line when compiling on SUN
-# LXNET = -lxnet
-
-# we don't have any special definitions for the current distribution
-# DEFINES= 
-
-#########################################################################
-###
-###  You should leave the following definitions untouched
-###
-#########################################################################
-
-SRCS   = tweb.c strng.c init.c queries.c server.c \
-                 x500.c html.c support.c checkclient.c \
-                 charray.c ch_malloc.c dn.c regular.c
-OBJS   = tweb.o strng.o init.o queries.o server.o \
-                 x500.o html.o support.o checkclient.o \
-                 charray.o ch_malloc.o dn.o regular.o
-GWOBJS = $(OBJS) gwversion.o
-
-CFLAGS = $(COPTS) -I$(INCDIR) $(ACFLAGS) $(DEFINES) $(GWVERS)
-LIBS   = -lldap -llber $(KRBLIBFLAG) $(KRBLIBS) $(LXNET)
-DLIBS  = $(LIBDIR)/libldap.a $(LIBDIR)/liblber.a
-
-gw:    gwversion.o
-       $(CC) $(ALDFLAGS) -o $@ $(GWOBJS) -L$(LIBDIR) $(LIBS)
-       mv $@ tweb
-
-gwversion.c: $(OBJS) $(DLIBS)
-       rm -f $@
-       (u=$${USER-root} v=`cat $(LDAPDIR)/version` d=`pwd` h=`hostname` t=`date`; \
-       sed -e "s|%WHEN%|$${t}|" \
-       -e "s|%WHOANDWHERE%|$${u}@$${h}:$${d}|" \
-       -e "s|%VERSION%|$${v}|" \
-       < Versiongw.c > $@)
-
-lint:;
-       lint -I. $(SRCS)
-
-5lint:;
-       /usr/5bin/lint -I. $(SRCS)
-
-clean:;
-       rm -f *.o core a.out gwversion.c tweb 
-
-depend:;
-       $(LDAPDIR)/mkdep $(CFLAGS) $(SRCS)
-
-# DO NOT DELETE THIS LINE -- mkdep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/contrib/tweb/README b/contrib/tweb/README
deleted file mode 100644 (file)
index ddda6ed..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* README                                                                   *
-*                                                                          *
-* Function:..Introduction to the WWW-X.500 gateway TWEB                    *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            September 14 1995            Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-
-
-IMPORTANT HINT FOR UPGRADING TO VERSION 2.3.x:
-
-    the config-syntax of ALLOW-STRING DENY-STRING GRANT REFUSE has changed:
-    now regular expressions are used enabling shorter config strings.
-
-    the language-files have been extended. Please use the newly provided
-    language-files or update your old ones.
-
-
-
-INTRODUCTION
-
-   TWEB is based on the Web500gw implementation by Frank Richter, 
-   Technische Universitaet Chemnitz-Zwickau, which is based on the 
-   go500gw implementation by Tim Howes, University of Michigan.
-
-   TWEB was compiled and tested on LINUX with cc, HPUX 9.05 with the
-   HP-ANSI C compiler, as well as SunOS 4.1.2 with the SUN C compiler.
-   TWEB was also compiled with gcc on all platforms.
-
-   The UMICH LDAP client library version 3.0 or 3.3
-   ( URL:ftp://terminator.rs.itd.umich.edu/ldap/ldap-3.3.tar.Z )
-   must be installed on the machine (library path and include file 
-   path is configured in Makefile). With QUIPU ICR-2.x the ISODE-
-   provided LDAP libraries should be used. As such, TWEB only supports
-   LDAP version 2 with the University of Michigan type C API. TWEB is
-   also adapted for the OpenLDAP LDAP library, release version 1.1.2
-   (http://www.openldap.org).
-
-   An upgrade to LDAP version 3 and a C API standadized by the IETF
-   is planned for a not so far away future, most probably in step 
-   with the OpenLDAP package.
-
-   TWEB, as provided here is a fully functional core gateway, which
-   is extended at the author's site by some local features. These
-   extensions are included into the same code base, so that some
-   "#ifdef TUE_TEL" or "#ifdef AMBIX" pre-processor statements can
-   be found throughout the code. 
-
-   Have a look at the doc sub-directory to get some further documentation.
-
-
-INSTALLATION
-
-   The installation and configuration of TWEB is described in the
-   GETTING-STARTED file. After making and testing the basic TWEB
-   you should have a look to file FEATURE-LIST to learn about the 
-   several configuration parameters TWEB provides for runtime
-   configuration of the program.
-
-   SINCE THE CODE IS ONLY THE CORE GATEWAY, WITH SOME PRIVATE EXTENSIONS
-   NOT INCLUDED INTO THAT DISTRIBUTION, DO NOT DELETE CODE BETWEEN
-
-      #ifdef TUE_TEL
-      #endif
-
-   AND
-
-     #ifdef AMBIXGW
-     #endif
-
-   IN ANY OF THE SUPPORTED FILES !!!
-
-
-SUPPORT
-
-   Bug reports and flames (but also critical comments) please send to 
-
-       tweb-support@mail500.uni-tuebingen.de. 
-    
-   For general discussion (e.g., about interesting new features,
-   which should be supported), there is a discussion list at
-
-       tweb-l@mail500.uni-tuebingen.de.
-
-   Send requests for subscription to
-
-       tweb-l-request@mail500.uni-tuebingen.de.
-
-
-TWEB development team, Tuebingen, September, 9th, 1999
-
-
diff --git a/contrib/tweb/TWEB_conFiles/robots.txt b/contrib/tweb/TWEB_conFiles/robots.txt
deleted file mode 100644 (file)
index 1a3761a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# go away
-User-agent: *
-Disallow: /
diff --git a/contrib/tweb/TWEB_conFiles/tweb.conf.0.dist b/contrib/tweb/TWEB_conFiles/tweb.conf.0.dist
deleted file mode 100644 (file)
index eed392c..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# tweb.conf.0                                                              *
-#                                                                          *
-# Function:..Configuration-file for TWEB                                   *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-#            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            July 26 1996                 Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            December 18 1998           ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#==========================================================================
-# $Id: tweb.conf.0.dist,v 1.6 1999/09/10 15:01:21 zrnsk01 Exp $
-
-
-#  THE PARAMETERS IN THIS FILE AND THE CORRESPONDING CONFIG-FILE.1
-#  ARE PRE-SET TO PROVIDE A BASIC FUNCTIONALITY.
-#
-#  IF YOU LIKE, YOU CAN CHECK FOR FURTHER DISPLAY-OBJECTs, SORT,
-#  SEARCH-ONLY AND MODIFY DEFINITIONS IN THE SECOND PART OF THE FILE.
-#
-#  TO ACTIVATE A CERTAIN FEATURE, THE CORRESPONDING LINES HAVE TO
-#  BE DE-COMMENTED
-
-
-#########################################################################
-
-
-###
-###  the description, how to display an object upon read
-###
-
-#  FIRST-PAGE is the main view, SECOND-PAGE a linked page with more
-#  (e.g., not so important) information
-#
-#  given is a list of attributes, with labels for each and the method,
-#  how to display the content of the attribute
-
-DISPLAY-OBJECT  pers
-# 1.Bild
-FIRST-PAGE      cn                          Name             DEFAULT
-                personalTitle               Titel            DEFAULT
-                organizationalStatus        Dienststellung   DEFAULT
-                description                 Arbeitsgebiet    DEFAULT
-                telephoneNumber             Gesch&auml;fts-Telefon  DEFAULT
-                facsimileTelephoneNumber    Fax              DEFAULT
-                mail                        E-Mail-Adresse   MAILTO
-                textEncodedORaddress        X400-Adresse     DEFAULT
-                postalAddress               Anschrift        MULTILINE
-                roomNumber                  Raum             DEFAULT
-                labeledURI                  URL              URI
-# 2.Bild (see more)
-SECOND-PAGE     sn                          Nachname         DEFAULT
-                roleOccupant                Funktionstr&auml;ger HREF
-                memberOfGroup               E-Mail-Verteiler DEFAULT
-                homepostalAddress           Heimat-Anschrift MULTILINE
-                homePhone                   Privat-Telefon   DEFAULT
-                pager                       Pager            DEFAULT
-                lastModifiedTime   "letztmalig ge&auml;ndert"  DATE
-                lastModifiedBy     "letztmalig ge&auml;ndert von"  DEFAULT
-
-DISPLAY-OBJECT  organization
-# 1.Bild
-FIRST-PAGE      o                           Name             DEFAULT
-                ou                          Name             DEFAULT
-                l                           Ort              DEFAULT
-                description                 Beschreibung     DEFAULT
-                postalAddress               Postanschrift    MULTILINE
-                telephoneNumber             Telefon          DEFAULT
-                facsimileTelephoneNumber    Fax              DEFAULT
-                labeledURI                  URL              URI
-# 2.Bild (see more)
-SECOND-PAGE     st                          Bundesland       DEFAULT
-                seeAlso                     "weitere Informationen" MOVETO
-                lastModifiedTime   "letztmalig ge&auml;ndert"  DATE
-                lastModifiedBy     "letztmalig ge&auml;ndert von"  DEFAULT
-
-DISPLAY-OBJECT   rfc822MailList
-# 1. Bild
-FIRST-PAGE      description                 Beschreibung     DEFAULT
-                joinable                    abonnierbar      BOOLEAN
-                associatedDomain            E-Mail-Domain    DEFAULT
-                rfc822RequestsTo            "Anfragen an"    MAILTO
-                requestsTo                  "Anfragen an"    HREF
-                owner                       Eigent&uuml;mer  HREF
-# 2. Bild
-SECOND-PAGE     lastModifiedTime   "letzte &Auml;nderung"    DATE
-                lastModifiedBy      "ge&auml;ndert durch"    DEFAULT
-
-DISPLAY-OBJECT  country
-# 1.Bild
-FIRST-PAGE      friendlyCountryName         L&auml;ndernamen DEFAULT
-                associatedDomain            Domain           DEFAULT
-                manager                     Manager          HREF
-                labeledURI                  URL              URI
-# 2.Bild (see more)
-SECOND-PAGE     masterDSA                   Master-DSA       HREF
-                slaveDSA                    Slave-DSA        HREF
-                lastModifiedTime  "letztmalig ge&auml;ndert"      DATE
-                lastModifiedBy    "letztmalig ge&auml;ndert von"  DEFAULT
-                lastUpdateTime    "letztmalig ge&auml;ndert"      DATE
-
-DISPLAY-OBJECT   default
-# 1.Bild
-FIRST-PAGE      jpegPhoto                   Foto            JPEG
-                photo                       Foto            BMP
-                cn                          Name            DEFAULT
-                sn                          Nachname        DEFAULT
-                textEncodedMtaName          MTA-Name        DEFAULT
-                relatedMHSdomain            MHS-Domain      DEFAULT
-                description                 Beschreibung    DEFAULT
-                multiLineDescription        Beschreibung    MULTILINE
-                info                        "Allgemeines"   DEFAULT
-                productName                 Produktname     DEFAULT
-                mail                        Mail-Adresse    MAILTO
-                telephoneNumber             Telefon         DEFAULT
-                facsimileTelephoneNumber    Fax             DEFAULT
-                labeledURL                  URL             URL
-                memberOfGroup               E-Mail-Verteiler DEFAULT
-                member                      Mitglied        HREF
-                owner                       Eigent&uuml;mer HREF
-                requestsTo                  "Anfragen an"   HREF
-                errorsTo                    "Fehler an"     HREF
-                krbName                     Kerberos-Name   DEFAULT
-                postalAddress               Postanschrift   MULTILINE
-                l                           Ort             DEFAULT
-                textEncodedPSAP             Netz-Adresse    DEFAULT
-                presentationAddress         Netz-Adresse    DEFAULT
-                supportedApplicationContext Anwendung       DEFAULT
-                publicAccess                Zugang          DEFAULT
-                availability                Verf&uuml;gbarkeit  DEFAULT
-                knowledgeInformation        Kontakt         DEFAULT
-                seeAlso                     "siehe auch"    HREF
-                roleOccupant                Stelleninhabr   HREF
-                manager                     Manager         HREF
-                administrator               Manager         HREF
-                secretary                   Sekretariat     HREF
-                associatedName              "zugeordneter Name" HREF
-                responsiblePerson           Verantwortlicher HREF
-                domainComponent             Domain          DEFAULT
-                labeledURI                  URL             URI
-# 2.Bild (see more)
-SECOND-PAGE     source                      Quelle          DEFAULT
-                homePostalAddress           Heimat-Anschrift MULTILINE
-                masterDSA                   Master-DSA      HREF
-                slaveDSA                    Slave-DSA       HREF
-                lastModifiedTime   "letztmalig ge&auml;ndert"      DATE
-                lastModifiedBy     "letztmalig ge&auml;ndert von"  DEFAULT
-                lastUpdateTime     "letztmalig ge&auml;ndert"      DATE
-
-
-###
-###  sorting and display of groups of entries
-###
-
-#  while browsing and searching, entries below the current position
-#  in the DIT, or the search results, can be grouped according to some
-#  SORT rules; these rules determine,
-#     1. which objectclass should signal a specific group, and in what
-#        order the entries should be checked for those objectclasses
-#        (the sequential order of the objectclasses given below),
-#     2. what label should be applied to a group (" " means none),
-#     3. the order of groups during output,
-#     4. the display type for an object of the given object class
-#         when display´ing a read result, and
-#     5.  the attribute, that will control sort order of entries
-#          within each group
-#  the last two parameters are optional, and will default to display
-#  type Â´default´ (see DISPLAY-OBJECTS), and sort attribute sn (surname)
-#  (if given in the entry, otherwise the RDN itself)
-#
-#  When an entry has none of the listed object classes, it will NOT be
-#  included into the display !!!
-
-SORT   dNSDomain               Dom&auml;ne             8
-       domain                  Faxanschl&uuml;sse      9
-       rfc822MailList          X.500-E-Mail-Verteiler 10 rfc822MailList
-       organizationalPerson    Mitarbeiter             1 pers registeredAddress
-       residentialPerson       Privat-Personen         2 pers registeredAddress
-       person                  "sonstige Personen"     3 pers registeredAddress
-       locality                Gebiete                 7 organization
-       organization            Organisationen          5 organization
-       organizationalUnit      Unterorganisationen     6 organization 
-       alias                   Verweise               11
-       country                 L&auml;nder             4 country
-
-
-###
-###  the position of certain language-specific support-files
-###
-
-#    a help file (accessible via http://host:port/H)
-HELPFILE       tweb.help.0
-
-#    converting certain RDNs to a more user-friendly form)
-FRIENDLYFILE   ldapfriendly.0
-
-#    header and footer beeing attached to every HTML page (not BASEDN)
-HEADER         tweb.header.0
-FOOTER         tweb.footer.0
-
-#    a special message beeing attached to a HTML page when a allowed
-#    user accesses the gateway (see ALLOW-STRING/DENY-STRING in tweb.rc)
-ALLOW-MSG      allow.msg.0
-
-
-###
-###  some more settings for (language-specific) gateway-switches (see tweb.rc)
-###
-
-# GW-SWITCH  "ROOT"                http://<my-world-relay.my-domain>:<port0>/M
-#            "c=<my-country-ID>"   http://<my-country-relay.my-domain>:<port0>/
-
-
-###
-###  where to prevent listing and provide for searching only
-###
-
-#  a (list of) DN(s), where no person lists should be display´ed, but
-#  a search box only (e.g., because to many person are contained in
-#  here, so list results would be too long); also, which header and 
-#  footer files will be display´ed at that position
-
-# SEARCH-ONLY "ou=<some-ou>, o=<my-organization>, c=<my-country-ID>"  search-only.head.0 search-only.foot.0
-
-
-###
-###  modifying entries via TWEB
-###
-
-#  when the user is allowed to modify her own entry, MODIFY/MODATTR will
-#  describe, what can be modified
-#
-#  BEWARE: this feature is not allowed at the University of Tuebingen,
-#          so the code is not tested very well; usage is on own risc
-
-#  objects of what class can be modified
-#  (for each class a seperate description>)
-# MODIFY          person
-
-#  what attributes can be modified
-#  a label in the HTTP formular is given for each attribute,
-#  together with the maximum count of values, beeing accepted
-#  in the input area
-
-# MODATTR         personalTitle        Titel                      1
-#                 organizationalStatus Dienststellung             1
-#                 description          Beschreibung               2
-#                 telephoneNumber      Telefon                    2
-#                 facsimileTelephoneNumber FAX                    2
-#                 mail                 Mail-Adresse               2
-#                 roomNumber           Raum                       1
-#                 memberOfGroup        Mailgruppe                10
-#                 homePostalAddress    Heimatanschrift            1
-#                 homePhone            "privat Telefon"           2
-#                 pager                Pager                      2
-#                 info                 Information                2
-
-
diff --git a/contrib/tweb/TWEB_conFiles/tweb.conf.1.dist b/contrib/tweb/TWEB_conFiles/tweb.conf.1.dist
deleted file mode 100644 (file)
index 29b5aec..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# tweb.conf.1                                                              *
-#                                                                          *
-# Function:..Configuration-File for TWEB-SOFTWARE                          *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-#            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            July 26 1995                 Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            December 18 1998           ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#==========================================================================
-# $Id: tweb.conf.1.dist,v 1.6 1999/09/10 15:01:21 zrnsk01 Exp $
-
-#  FOR DESCRIPTION OF THE PARAMETERS SEE THE CONFIG FILE tweb.conf.0(.dist)
-
-
-###
-###  the description, how to display an object upon read
-###
-
-DISPLAY-OBJECT  person
-# main page
-FIRST-PAGE      cn                          Name             DEFAULT
-                personalTitle               Title            DEFAULT
-                organizationalStatus        Status           DEFAULT
-                description                 Working-Area     DEFAULT
-                telephoneNumber             Telephone        DEFAULT
-                facsimileTelephoneNumber    Fax              DEFAULT
-                mail                        E-Mail-Address   MAILTO
-                textEncodedORaddress        X400-Address     DEFAULT
-                postalAddress               "Postal address" MULTILINE
-                roomNumber                  Room             DEFAULT
-                labeledURI                  URL              URI
-# additional page
-SECOND-PAGE     sn                          Surname          DEFAULT
-                roleOccupant                Role-Occupant    HREF
-                memberOfGroup               Group-Member     DEFAULT
-                homepostalAddress           Home-Address     MULTILINE
-                homePhone                   Home-Phone       DEFAULT
-                pager                       Pager            DEFAULT
-                lastModifiedTime            "Last modified Time" DATE
-                lastModifiedBy              "Last modified by" DEFAULT
-
-DISPLAY-OBJECT  organization
-# main page
-FIRST-PAGE      o                           Name             DEFAULT
-                ou                          Name             DEFAULT
-                l                           Locality         DEFAULT
-                description                 Description      DEFAULT
-                postalAddress               "Postal address" MULTILINE
-                telephoneNumber             Telephone        DEFAULT
-                facsimileTelephoneNumber    Fax              DEFAULT
-                labeledURI                  URL              URI
-# additional page
-SECOND-PAGE     st                          State            DEFAULT
-                seeAlso                     "More Information" MOVETO
-                lastModifiedTime            "Last modified Time" DATE
-                lastModifiedBy              "Last modified by" DEFAULT
-
-DISPLAY-OBJECT  rfc822MailList
-# main page
-FIRST-PAGE      description                 Description      DEFAULT
-                joinable                    Joinable         BOOLEAN
-                associatedDomain            E-Mail-Domain    DEFAULT
-                rfc822RequestsTo            "Requests to"    MAILTO
-                requestsTo                  "Requests to"    HREF
-                owner                       Owner            HREF
-# additional page
-SECOND-PAGE     lastModifiedTime            "Last modified Time" DATE
-                lastModifiedBy              "Last modified by" DEFAULT
-
-DISPLAY-OBJECT  country
-# main page
-FIRST-PAGE      friendlyCountryName         Country-Name     DEFAULT
-                associatedDomain            Domain           DEFAULT
-                manager                     Manager          HREF
-                labeledURI                  URL              URI
-# additional page
-SECOND-PAGE     masterDSA                   Master-DSA       HREF
-                slaveDSA                    Slave-DSA        HREF
-                lastModifiedTime            "Last modified Time" DATE
-                lastModifiedBy              "Last modified by" DEFAULT
-                lastUpdateTime              "Last update Time" DATE
-
-DISPLAY-OBJECT  default
-# main page
-FIRST-PAGE      jpegPhoto                   Photo            JPEG
-                photo                       Photo            BMP
-                cn                          Name             DEFAULT
-                sn                          Surname          DEFAULT
-                textEncodedMtaName          MTA-Name         DEFAULT
-                relatedMHSdomain            MHS-Domain       DEFAULT
-                description                 Description      DEFAULT
-                multiLineDescription        Description      MULTILINE
-                info                        "More Information" DEFAULT
-                productName                 Productname      DEFAULT
-                mail                        Mail-Address     MAILTO
-                telephoneNumber             Telephone        DEFAULT
-                facsimileTelephoneNumber    Fax              DEFAULT
-                labeledURL                  URL              URL
-                memberOfGroup               "Member of Group" DEFAULT
-                member                      Member           HREF
-                owner                       Owner            HREF
-                requestsTo                  "Requests to"    HREF
-                errorsTo                    "Errors to"      HREF
-                krbName                     Kerberos-Name    DEFAULT
-                postalAddress               Postal-Address   MULTILINE
-                l                           Locality         DEFAULT
-                textEncodedPSAP             "Network address" DEFAULT
-                presentationAddress         "Network address" DEFAULT
-                supportedApplicationContext Application      DEFAULT
-                publicAccess                Access           DEFAULT
-                availability                Availability     DEFAULT
-                knowledgeInformation        Contact          DEFAULT
-                seeAlso                     "See also"       HREF
-                roleOccupant                Role-Occupant    HREF
-                manager                     Manager          HREF
-                administrator               Manager          HREF
-                secretary                   Secretary        HREF
-                associatedName              "Associated Name" HREF
-                responsiblePerson           "Responsible person" HREF
-                domainComponent             Domain           DEFAULT
-                labeledURI                  URL              URI
-# 2.Page (see more)
-SECOND-PAGE     source                      Source           DEFAULT
-                homePostalAddress           Home-Address     MULTILINE
-                masterDSA                   Master-DSA       HREF
-                slaveDSA                    Slave-DSA        HREF
-                lastModifiedTime            "Last modified Time" DATE
-                lastModifiedBy              "Last modified by" DEFAULT
-                lastUpdateTime              "Last update Time" DATE
-
-
-
-###
-###  sorting and display of groups of entries
-###
-
-SORT     dNSDomain               Domain                  8
-         domain                  Fax                     9
-         rfc822MailList          X.500-E-Mail-List      10 rfc822MailList
-         organizationalPerson    Staff                   1 person registeredAddress
-         residentialPerson       Residentials            2 person registeredAddress
-         person                  Persons                 3 person registeredAddress
-         locality                Localities              7 organization
-         organization            Organizations           5 organization
-         organizationalUnit      "Organizational Units"  6 organization 
-         alias                   Aliases                11
-         country                 Countries               4 country
-
-
-###
-###  the position of certain language-specific support-files
-###
-
-HELPFILE       tweb.help.1
-
-FRIENDLYFILE   ldapfriendly.1
-
-HEADER         tweb.header.1
-FOOTER         tweb.footer.1
-
-ALLOW-MSG      allow.msg.1
-
-
-###
-###  some more settings for (language-specific) gateway-switches (see tweb.rc)
-###
-
-# GW-SWITCH   "ROOT"              http://<my-world-relay.my-domain>:<port1>/M
-#             "c=<my-country-ID>"  http://<my-country-relay.my-domain>:<port1>/
-
-
-###
-###  where to prevent listing and provide for searching only
-###
-
-# SEARCH-ONLY "ou=<some-ou>, o=<my-organization>, c=<my-country-ID>"  search-only.head.1 search-only.foot.1
-
-
-###
-###  modifying entries via TWEB
-###
-
-# MODIFY          person
-# MODATTR         personalTitle        Title              1
-#                 organizationalStatus Status             1
-#                 description          Description        2
-#                 telephoneNumber      Telephone          2
-#                 facsimileTelephoneNumber  Fax           2
-#                 mail                 "E-Mail address"   2
-#                 roomNumber           Room               1
-#                 memberOfGroup        Group-Member      10
-#                 homePostalAddress    "Home address"     1
-#                 homePhone            "Home phone"       2
-#                 pager                Pager              2
-#                 info                 Information        2
-
-
diff --git a/contrib/tweb/TWEB_conFiles/tweb.lang.0.dist b/contrib/tweb/TWEB_conFiles/tweb.lang.0.dist
deleted file mode 100644 (file)
index 89f13b7..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# tweb.lang.0                                                              *
-#                                                                          *
-# Function:..Language-File for TWEB-SOFTWARE                               *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-#            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            February 14 1996             Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            February 20 1997           ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#
-# $Id: tweb.lang.0.dist,v 1.6 1999/09/10 15:01:22 zrnsk01 Exp $
-
-0  de
-1  [not used]
-2  [not used]
-3  [not used]
-4  [not used]
-5  Kommando nicht implementiert!
-6  Nicht gefunden
-7  Last-Modified
-8  &Auml;ndere Ergebnisse:
-9  &Auml;nderungs-Ergebnisse f&uuml;r
-10 &Auml;nderungen:
-11 Fehler w&auml;hrend &Auml;nderungs-Operation:
-12 L&Ouml;SCHE alten Wert
-13 von Attribut
-14 Der Fehler-Kode war
-15 &Auml;nderung
-16 Erfolgreich ausgef&uuml;hrt
-17 Lese diesen ge&auml;nderten Wert
-18 Benutzer-Passwort
-19 &Auml;ndere diesen Eintrag erneut
-20 Die angegebene Abfrage war nicht spezifisch genug, wodurch ein Sizelimit 
-       &uuml;berschritten wurde, wobei die ersten paar &Uuml;bereinstimmungen 
-       zur&uuml;ckgegeben wurden. Falls Sie nicht den gesuchten Eintrag 
-       gefunden haben, machen Sie bitte eine genauere Abfrage, 
-       zum Beispiel mit Vor- und Nachnamen.
-21 Die Anzahl der gefundenen Eintr&auml;ge hat eine systemseitig
-       vorgegebene Obergrenze &uuml;berschritten. Falls der gesuchte Eintrag
-       in der dargestellten Liste nicht vorhanden ist, nutzen Sie die
-       <STRONG>Such</STRONG>-Option, um das Gesuchte genauer zu spezifizieren.
-22 Fehler
-23 X.500 - WWW Fehler:
-24 Beim Durchsuchen von X.500 tauchte ein Fehler auf
-25 Der Fehlercode war
-26 Es ist keine zus&auml;tzliche Information erh&auml;ltlich.
-27 Liste unterhalb von
-28 aktuelle Position:
-29 About
-30 Suche:
-31 Wir haben nicht die entsprechenden Zugriffsrechte, um hier eine globale 
-       Suche zu starten, aber wenn Sie wissen, wen Sie suchen, benutzen Sie die
-       <STRONG>Such</STRONG>-Option oben mit dem Namen des
-       gew&uuml;nschten Eintrages.
-32 Habe nichts unter diesem Eintrag gefunden. Sie k&ouml;nnen den Eintrag
-       selbst lesen, oder eine Suche probieren ...
-33 (eingeschr&auml;nkte Liste
-34 siehe Fu&szlig;note
-35 suche in
-36 Keine Suchergebnisse:
-37 Habe nichts gefunden ...
-38 f&uuml;r
-39 Suchergebnisse:
-40 Suchergebnisse f&uuml;r
-41 <H2>X.500 - WWW Fehler:</H2><P>Bei der Darstellung des X.500 Eintrages 
-       tauchte ein Fehler auf. <P>Keine bekannte Object-Klasse 
-       f&uuml;r diesen Eintrag.<P>
-42 Weitere Informationen
-43 VORSICHT: Dies ist noch <B>EXPERIMENTELL</B>!!!
-44 Geben Sie das Passwort f&uuml;r diesen Eintrag ein
-45 wenn Sie ihn
-46 &uuml;bermitteln wollen
-47 &Auml;NDERN
-48 wollen
-49 Fehlendes Passwort!
-50 Unbekanntes Argument
-51 &Auml;ndern
-52 altes Passwort
-53 VORSICHT: Dies ist noch EXPERIMENTELL!!!
-54 Fehler in der Abfrage: Kein Wert
-55 f&uuml;r
-56 Fehler in der Abfrage: Kein alter Wert
-57 <B>Fehler w&auml;hrend der Modifikation:</B><P>Neuen Wert HINZUF&Uuml;GEN
-58 zum Attribut
-59 Der Fehlercode war
-60 <B>Fataler Fehler:</B><BR>Konnte den alten Wert nicht zur&uuml;cksetzen
-61 auf Attribut
-62 Setze den alten Wert wieder
-63 auf Attribut
-64 Mail an:
-65 Aus datenschutzrechtlichen Gr&uuml;nden werden <strong>keine</strong> 
-       umfangreichen Personenlisten ausgegeben. Falls die gesuchte Person 
-       in der angezeigten Teilliste nicht vorhanden ist, verwenden Sie die
-       <STRONG>Such</STRONG>-Option, um die gesuchte Person genauer 
-       zu spezifizieren.<BR>
-66 Einstufige Suche
-67 suche unterhalb nach...
-68 SUCHEN
-69 Eingabe l&ouml;schen
-70 Eintrag
-71 Eintr&auml;ge
-72 Eintr&auml;ge zuruecksetzen
-73 en
-74 gel&ouml;scht
-75 ersetzt
-76 hinzugef&uuml;gt
-77 Welt
-78 Ja
-79 Nein
-80 <B>Fataler Fehler:</B><BR>Konnte den Wert nicht modifizieren
-81 bei Attribut
-82 http://ambix.uni-tuebingen.de/cgi-bin/selbst
-83 http://ambix.uni-tuebingen.de/selbstinfo.html
-84 <FORM METHOD=POST ACTION=%s>Selbsteintrag:
-85      <INPUT type=hidden name="aloc" value="%s">
-       <INPUT TYPE="submit" name="worker" VALUE="Angestellte">
-86      <INPUT type=hidden name="sloc" value="%s">
-       <INPUT TYPE="submit" name="studie" VALUE="Studierende">
-87 </FORM>
-88 Ung&uuml;ltige Anfrage
-89 <EM>Fehlender Such-Filter!</EM>
-90 <EM>Fehlender Scope!</EM>
-91 [not used]
-92 <EM>Fehlender Suchbegriff!</EM> <P>Bitte geben Sie einen Suchbegriff an!
-93 <EM>Fehlender DN!</EM>
-94 <EM>Fehlendes Passwort!</EM>
-95 <EM>Unbekannte Abfrage!</EM>
-96 <H1>ZUGRIFF VERWEIGERT</H1>
-       Die angefragten Daten stehen &uuml;ber diesen Server nicht zur
-       Verf&uuml;gung!<br>Bitte benutzen Sie folgende URL:
-97 <H1>ZUGRIFF VERWEIGERT</H1>
-98 ...lesen
-99 %s<H6>Daten erstellt durch %s <br>
-       &copy; TWEB: Zentrum f&uuml;r Datenverarbeitung,
-       Universit&auml;t T&uuml;bingen, Deutschland</H6>
-100 BODY BGCOLOR=#ffffe0 TEXT=#000000 LINK=#0000a0 VLINK=#00a000 font-family="times serif"
-101 <HR>
-102 <BR><H1>Der Name Ihres Hosts ist nicht verfuegbar. Sie sehen deshalb nicht alle Daten!</H1><BR>
-103 [not used]
-104 Wenn Sie mehr Daten sehen wollen, schalten Sie Ihren Proxy-Server aus !
diff --git a/contrib/tweb/TWEB_conFiles/tweb.lang.1.dist b/contrib/tweb/TWEB_conFiles/tweb.lang.1.dist
deleted file mode 100644 (file)
index 0ab8857..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# tweb.lang.1                                                              *
-#                                                                          *
-# Function:..Language-File for TWEB-SOFTWARE                               *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-#            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            February 14 1996             Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            February 20 1997           ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#
-# $Id: tweb.lang.1.dist,v 1.6 1999/09/10 15:01:22 zrnsk01 Exp $
-
-0  en
-1  [not used]
-2  [not used]
-3  [not used]
-4  [not used]
-5  Command not implemented!
-6  Not found
-7  Last-Modified
-8  Modify results:
-9  Modify results for
-10 Changes:
-11 Error during modify operation:
-12 DELETE old value
-13 from attribute
-14 The error code was
-15 change
-16 successfully done
-17 Read this modified entry
-18 userPassword
-19 Modify this entry again
-20 The query you specified was not specific enough, causing a size limit to be exceeded and the first several matches found to be returned.<br>If you did not find the match you were looking for, try issuing a more specific query, for example one that contains both first and last name.<br>
-21 Not all entries could be returned because a size limit was exceeded.<br>There is no way to defeat this feature, but if you know who you are looking for, try choosing the <STRONG>Search</STRONG> option listed above and specifying the name of the entry you want.<br>
-22 Error
-23 X.500 - WWW Error:
-24 An error occurred searching X.500
-25 The error code was
-26 No additional information is available.
-27 Move upwards to
-28 current location:
-29 About
-30 search:
-31 We don't have the access right to do a global search here. If you know who you are looking for, try choosing the <STRONG>Search</STRONG> option listed above and specifying the name of the entry you want.<br>
-32 Didn't find anything below this entry! You can read the entry itself or try a search ...
-33 (restricted list
-34 see below
-35 search in
-36 No search results:
-37 Didn't find anything...
-38 for
-39 Search results:
-40 Search results for
-41 <H2>X.500 - WWW Error:</H2><P>An error occurred showing X.500 entry. <P>No known object-class for this entry.<P>
-42 See more attributes
-43 Beware, this is still <B>EXPERIMENTAL</B>!!!
-44 Enter the password of this entry
-45 if you want to
-46 submit
-47 MODIFY
-48 it
-49 Missing Password!
-50 Unknown argument
-51 Modify
-52 oldPassword
-53 Beware, this is still EXPERIMENTAL!!!
-54 Error in query: No value
-55 for
-56 Error in query: No oldvalue
-57 <B>Error during modify operation:</B><P><P>ADD new value
-58 to attribute
-59 The error code was
-60 <B>Fatal Error:</B><BR>Couldn't reset the old value
-61 to attribute
-62 Reset the old  value
-63 to attribute
-64 mailto:
-65 Due to Legal Rights no extended lists of persons will be displayed.
-       If the requested person is not in the list shown, please use the 
-       <STRONG>Search</STRONG>-option with a more significant personal name.
-       <BR>
-66 Onelevel search
-67 search below for...
-68 SEARCH
-69 DELETE INPUT
-70 entry
-71 entries
-72 RESET Values
-73 s
-74 deleted
-75 replaced
-76 added
-77 The World
-78 Yes
-79 No
-80 <B>Fatal Error:</B><BR>Couldn't modify the value
-81 at attribute
-82 http://ambix.uni-tuebingen.de/cgi-bin/selbst
-83 http://ambix.uni-tuebingen.de/selbstinfo.html
-84 <FORM METHOD=POST ACTION=%s>Self-subscription:
-85      <INPUT type=hidden name="aloc" value="%s">
-       <INPUT TYPE="submit" name="worker" VALUE="Staff">
-86      <INPUT type=hidden name="sloc" value="%s">
-       <INPUT TYPE="submit" name="studie" VALUE="Students">
-87 </FORM>
-88 Bad request
-89 <EM>Missing filter!</EM>
-90 <EM>Missing scope!</EM>
-91 [not used]
-92 <EM>Missing search value!</EM> <P>Please specify a search value.
-93 <EM>Missing DN!</EM>
-94 <EM>Missing password!</EM>
-95 <EM>Unknown query!</EM>
-96 <H1>ACCESS DENIED</H1>
-       The requested data are not delivered via this server!<br>
-       Please use the following URL:
-97 <H1>ACCESS DENIED</H1>
-98 ...read it
-99 %s<H6>Data composed by %s <br>
-       &copy; TWEB: Zentrum fuer Datenverarbeitung,
-       Universitaet Tuebingen, GERMANY</H6>
-100 BODY BGCOLOR=#ffffe0 TEXT=#000000 LINK=#0000a0 VLINK=#00a000
-101 <HR>
-102 <BR><H1>The name of your host is not available. Therefore you don't see the whole database!</H1><BR>
-103 [not used]
-104 If you want to see more data, please inactivate your proxy-server !
diff --git a/contrib/tweb/TWEB_conFiles/tweb.rc.dist b/contrib/tweb/TWEB_conFiles/tweb.rc.dist
deleted file mode 100644 (file)
index 3f22c8d..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-#*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-#                                                                          *
-# tweb.rc....                                                              *
-#                                                                          *
-# Function:..Ressource-File for TWEB                                       *
-#                                                                          *
-#                                                                          *
-#                                                                          *
-# Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-#            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-#            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-#                                                                          *
-#                                       ZZZZZ  DDD    V   V                *
-#            Creation date:                Z   D  D   V   V                *
-#            July 26 1995                 Z    D   D   V V                 *
-#            Last modification:          Z     D  D    V V                 *
-#            January 11 1999            ZZZZ   DDD      V                  *
-#                                                                          *
-#/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/
-#==========================================================================
-# $Id: tweb.rc.dist,v 1.6 1999/09/10 15:01:22 zrnsk01 Exp $
-
-
-##########################################################################
-#                                                                        #
-#    set the following variables to your local addresses (NEEDED)        #
-#    check also for the location of certain help files                   #
-#    and proper timeout                                                  #
-#                                                                        #
-##########################################################################
-
-#  the base port, TWEB is listening on;
-#  indizes for the languages are added to this base port number
-#  (e.g., TWEB with language 1 is listening on port (WEBPORT + 1))
-WEBPORT        <the-base-port-tweb-should-listen-to>
-
-#  the host and port, your x500 server (e.g., UMICH slapd) is listening on
-LDAPD          <the-host-running-your-ldap-server>
-LDAPPORT       <the-port-of-that-ldapserver>
-
-
-#------------------------------------------------------------------------#
-
-#  the DN, TWEB will consider it´s home, together with header and
-#  footer files to be display´ed at that position
-#
-#  the BASEDN will be accessed, when NO DN is given (http://host:port/
-#  the BASEDN will be stripped off from hyperlinks beeing display´ed
-#  access to DIT areas NOT below BASEDN will be denied, if STRICT-BASEDN
-#    (see tweb.rc(.dist)) is activ
-#
-#  BEWARE: HEADER AND FOORTER FILE NAMES ARE ONLY THE BASE NAMES; THE
-#          CORRESPONDING WORKING FILES MUST HAVE EXTENSIONS OF '.x'
-#          WITH x INDICATING THE DESIRED GATEWAY LANGUAGE NUMBER (0-9)
-
-BASEDN  "o=<my-organization>, c=<my-country-ID>" tweb-base.head  tweb-base.foot
-
-
-#------------------------------------------------------------------------#
-
-#  assuming you have copied the binary into the TWEB_conFiles directory,
-#  the ETCDIR directory should be a parallel directory of the current one
-ETCDIR         ../LDAP_etc/
-
-#  the filter file directs the mode, TWEB will search for entries
-#  (e.g., first search input as is in attribute cn, then search
-#         for any one word in attributes cn and/or sn ... )
-FILTERFILE     ldapfilter.conf
-
-#  the time in secs, TWEB will try to get a connection to the x500 server
-TIMEOUT        240
-
-
-##########################################################################
-#                                                                        #
-#    check the following variables for proper access rights              #
-#    and handling of entry lists/legal hints                             #
-#    (NOT NEEDED FOR FIRST START-UP)                                     #
-#                                                                        #
-##########################################################################
-
-#  DN and password of an x500 entry, TWEB will use, when access of the
-#  user to the servers data is without restrictions
-#
-# WEBDN          "cn=<TWEB-DN-1>, o=<your-organization>, c=<your-country>"
-# WEBPW          <TWEB-PW-1>
-
-#  DN (and password) of an x500 entry, TWEB will use, when access of the
-#  user to the servers data is restricted (e.g., external users);
-#  a NULL password (by not configuring) will lead to anonymous access,
-#  irrespective, whether the DN is given or not
-#
-# WEBDN2         "cn=<TWEB-DN-2>, o=<your-organization>, c=<your-country>"
-# WEBPW2         <TWEB-PW-2>
-
-#  Refuse/grant service to certain IP hosts/domains names;
-#  both settings will be checked when deciding deniel of service;
-#  the most special definition for the host given will dominate
-#  (settings can be given by using regular expressions, to cover more than
-#   one host/domain with one expression; alternatives, which should be
-#   or'ed must be seperated by '|')
-#  (continuations can be given on follow-up lines, whith no additional
-#   character at the end of the previous line, and an indentation by
-#   TAB or SPACE on the follow-up line)
-#  
-# REFUSE some-host(\.some-sub-domain)?\.some-domain$|another-domain$|
-#          ^some-initial-char[0-9]+.+\.some-domain$
-
-# GRANT        (host1|host2|host3).*\.another-domain$
-
-#  When service is granted to the requesting host, allow-string/deny-string
-#  decide on full or restricted access to the servers data; in both cases
-#  one of WEBDN1/WEBDN2 (or anonymous if not configured) is used for
-#  accessing the server;
-#  ACLs on the server must be set accourding to the required visibility of
-#  data (see description of ACLs in the servers documentation)
-#  (host/domain names are given as with GRANT/REFUSE)
-#
-# ALLOW-STRING    my-domain$
-# DENY-STRING     some-special-host/sub-domain-in-my-domain\.my-domain$
-
-#  Consider WWW proxies as not authorized to get un-restricted access
-# NO-PROXY
-
-#  Consider the explicit list of proxies as authorized to get full access
-#  (the list is as colon-seperated list of host names)
-# ALLOW-PROXY    proxy.in.my.domain:some-proxy.in.another.domain
-
-#  Refuse access to DNs, outside the scope of TWEBs BASEDN
-#  (this is necessary, if no referral mechanism is working on the
-#   x500 server level; e.g., with slapd in the UMICH package)
-# STRICT-BASEDN
-
-#  Activate anti-hacking code: count access from a range of IP adresses
-#  (IP-Group) to the gateway during a timeslice (randomly selected between
-#  a minimum and maximum number of secs); if the count exceeds a pre-
-#  defined maximum, refuse service for a certain number of timeslices;
-#  after that resume service for the IP-Group
-#  Print statistics for number of accesses from all IP-Groups to file,
-#  at regular intervalls
-#
-# COMREFUSE   TMIN TMAX MAX_ACCEPT SUSPEND_CYCLE STAT_CYCLE STAT_FILE
-COMREFUSE   100 200 40 12 43200 /LDAP/ldap-3.0/tweb-1.0/hack-stats
-
-#------------------------------------------------------------------------#
-
-#  The maximum number of entries display'ed on any one HTML page
-MAXCOUNT        2000
-
-#  During searching/browsing restrict the number of person entries to the
-#  given number; numbers apply to each of the person groups given by the
-#  SORT parameter
-#  STRICT means, even allowed access will be restricted in numbers
-#  NO-BROWSE means, during browsing no person entries are shown at all
-#  MAX-PERSON      5    STRICT  NO-BROWSE
-
-#  List of (parts of ) RDNs, which should not be display'ed
-#  For the current release, strings are seperated by BLANK, with forced
-#  matching to the beginning or end of an RDN signalled by '|';
-#  in a future release, this will be replaced by regular expressions,
-#  very like as in GRANT/REFUSE and beasts
-NO-SHOW-RDN     "|cn=Dummy| netz| LDAP-SAP Mail500|"
-
-
-#  Print a legal message for restricted users; 
-#  normally, this message is printed at the end of the HTML page,
-#  with ON-TOP, the message can be printed near the top of the page
-#
-# LEGAL ON-TOP
-
-
-##########################################################################
-#                                                                        #
-#    configure TWEB gateway-switching                                    #
-#                                                                        #
-##########################################################################
-
-#  Gateway-switching is an original feature of the TWEB, www-x500-gateway.
-#  Switching enables TWEB to generate hyper-links, that are directed towards
-#  other well-known gateways. Following those hyper-links will lead the
-#  user to those gateways, effectively balancing the load between a net
-#  of gateways. Another benefit is the 'Corporate Identity' each gateway
-#  can implement for an organizations own directory data.
-#
-#  Gateway-switching can be configured statically, in the config files
-#  tweb.rc and/or tweb.conf.? , or dynamically, via hints in the 
-#  directory data to be display'ed.
-#
-#  Select dynamic gateway-switching: TWEB will look for labeleduri
-#  attributes within each entry to be display'ed as a hyper-link
-#  before constructing the host-part of the hyper-link URL; the
-#  labelleduri attribut must follow the syntax:
-#      <base-url-of-the-other-gateway> <some-label> (gw[-<language-key>])
-#  The DN of the entry will be appended to the base-url, if the language
-#  selection matches, or no specific selection is given (gw)
-#
-DYNAMIC-GW
-
-#  Configure static gateway switches; they may be replaced at run-time by
-#  dynamic switches (in tweb.rc, gateways, which only support one language
-#  are given; gatways supporting more languages are defined in the
-#  tweb.conf.? files)
-GW-SWITCH   "l=DFN,c=DE"           http://ambix.uni-tuebingen.de:8889/
-
-
-##########################################################################
-#                                                                        #
-#    some miscelleneous configuration parameters                         #
-#                                                                        #
-##########################################################################
-
-#  the labelling of buttons/links leading to gateways with other languages
-LANGUAGE        Deutsch
-                English
-
-#  the hierarchy above the current DIT position is presented as a
-#  pull down menu and an action button, or as a list of hyperlinks
-PULL-DOWN-MENUS
-
-#  entries are kept for some time in a WWW browser´s or proxy´s cache,
-#  before expiring
-CACHE-EXPIRE-DEFAULT 900
-
-#  digits at the end of RDNs (e.g., to make RDNs unique) are stripped
-#  off before displaying; in the config parameter a list of object
-#  classes with stripping in the RDN parts is given
-# STRIP-PIN |toc_profs|person|toc_primas|toc_cperson|toc_funcs|toc_pextra|
-
-#  when MODIFY is configured (in tweb.conf.x), entries belonging to
-#  the object class(es) given here can NOT be modified
-# NO-MODIFY      |toc_primas|
-
-
diff --git a/contrib/tweb/Versiongw.c b/contrib/tweb/Versiongw.c
deleted file mode 100644 (file)
index 3b9bb2d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* Versiongw.c                                                              *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            August 26 1999             ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: Versiongw.c,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-/*
- * Redistribution and use in source and binary forms are permitted
- * provided that this notice is preserved and that due credit is given
- * to the University of Tuebingen, Gremany. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission. This software
- * is provided ``as is'' without express or implied warranty.
- */
-
-char version[]   = "TWEB 2.3.4 (%WHEN%)";
-char Version[]   = "  TWEB 2.3.4 (%WHEN%)\t%WHOANDWHERE%";
-char copyright[] = "TWEB Version 2.3.4";
-
-char sccsid[]  = "@(#) TWEB 2.3.4 - 1995-1999, University of Tuebingen, DE";
-
-
diff --git a/contrib/tweb/ch_malloc.c b/contrib/tweb/ch_malloc.c
deleted file mode 100644 (file)
index 1386921..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* ch_malloc.c                                                              *
-*                                                                          *
-* Function:..Alloc-Functions with Error-Handling                           *
-*                                                                          *
-*            from LDAP3.2 University of Michigan                           *
-*                                                                          *
-*            Patch: unsigned long --> size_t fuer size-Parameter           *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 16 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1998           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: ch_malloc.c,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-
-#include "ch_malloc_exp.h"
-#include "support_exp.h"
-
-
-/* ch_malloc.c - malloc routines that test returns from malloc and friends */
-
-PUBLIC char * ch_malloc( size )
-size_t size;
-{
-       char    *new;
-
-       if ( (new = (char *) calloc(1, size )) == NULL ) {
-               if (dosyslog) syslog( LOG_INFO, "malloc of %d bytes failed\n", size );
-               exit_tweb( 1 );
-       }
-
-       return( new );
-}
-/* end of function: ch_malloc */
-
-PUBLIC char * ch_realloc( block, size )
-char           *block;
-size_t size;
-{
-       char    *new;
-
-       if ( block == NULL ) {
-               return( ch_malloc( size ) );
-       }
-
-       if ( (new = (char *) realloc( block, size )) == NULL ) {
-               if (dosyslog) syslog( LOG_INFO, "realloc of %d bytes failed\n", size );
-               exit_tweb( 1 );
-       }
-
-       return( new );
-}
-/* end of function: ch_realloc */
-
-PUBLIC char * ch_calloc( nelem, size )
-size_t nelem;
-size_t size;
-{
-       char    *new;
-
-       if ( (new = (char *) calloc( nelem, size )) == NULL ) {
-               if (dosyslog) syslog( LOG_INFO, "calloc of %d elems of %d bytes failed\n",
-                 nelem, size );
-               exit_tweb( 1 );
-       }
-
-       return( new );
-}
-/* end of function: ch_calloc */
diff --git a/contrib/tweb/ch_malloc_exp.h b/contrib/tweb/ch_malloc_exp.h
deleted file mode 100644 (file)
index 54ef4b8..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* ch_malloc_exp.h                                                          *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 16 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: ch_malloc_exp.h,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#ifndef _CH_MALLOC_EXP_
-#define _CH_MALLOC_EXP_
-
-PUBLIC char * ch_malloc();
-PUBLIC char * ch_realloc();
-PUBLIC char * ch_calloc();
-
-
-#endif /* _CH_MALLOC_EXP_ */
diff --git a/contrib/tweb/charray.c b/contrib/tweb/charray.c
deleted file mode 100644 (file)
index c6de468..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* charray.c..                                                              *
-*                                                                          *
-* Function:..Array-Handling-Functions                                      *
-*                                                                          *
-*            from LDAP3.2 University of Michigan                           *
-*                                                                          *
-*            Patch: NULL-Pointers are caught in Arrays/Strings             *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 16 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 21 1998           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: charray.c,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "charray_exp.h"
-#include "ch_malloc_exp.h"
-
-/* charray.c - routines for dealing with char * arrays */
-
-
-PUBLIC void charray_add( a, s )
-char   ***a;
-char   *s;
-{
-       int     n;
-
-       if ( s == NULL )
-               return;
-
-       if ( *a == NULL ) {
-               *a = (char **) ch_malloc( 2 * sizeof(char *) );
-               n = 0;
-       } else {
-               for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
-                       ;       /* NULL */
-               }
-
-               *a = (char **) ch_realloc( (char *) *a,
-                   (n + 2) * sizeof(char *) );
-       }
-
-       (*a)[n++] = strdup(s);
-       (*a)[n] = NULL;
-}
-/* end of function: charray_add */
-
-PUBLIC void charray_merge( a, s )
-char   ***a;
-char   **s;
-{
-       int     i, n, nn;
-
-       if ( s == NULL )
-               return;
-
-       for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
-               ;       /* NULL */
-       }
-
-       for ( nn = 0; s[nn] != NULL; nn++ ) {
-               ;       /* NULL */
-       }
-
-       *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
-
-       for ( i = 0; i < nn; i++ ) {
-               (*a)[n + i] = s[i];
-       }
-       (*a)[n + nn] = NULL;
-}
-/* end of function: charray_merge */
-
-PUBLIC void charray_free( array )
-char **array;
-{
-       char    **a;
-
-       if ( array == NULL ) {
-               return;
-       }
-
-       for ( a = array; *a != NULL; a++ ) {
-               if ( *a != NULL ) {
-                       free( *a );
-               }
-       }
-       free( (char *) array );
-}
-/* end of function: charray_free */
-
-PUBLIC int charray_inlist( a, s )
-    char       **a;
-    char       *s;
-{
-       int     i;
-
-       if (( a == NULL ) || ( s == NULL ))
-               return( 0 );
-
-       for ( i = 0; a[i] != NULL; i++ ) {
-               if ( strcasecmp( s, a[i] ) == 0 ) {
-                       return( 1 );
-               }
-       }
-
-       return( 0 );
-}
-/* end of function: charray_inlist */
-
-PUBLIC char ** charray_dup( a )
-char **a;
-{
-       int     i;
-       char    **new;
-
-       if ( a == NULL )
-               return( NULL );
-
-       for ( i = 0; a[i] != NULL; i++ )
-               ;       /* NULL */
-
-       new = (char **) ch_malloc( (i + 1) * sizeof(char *) );
-
-       for ( i = 0; a[i] != NULL; i++ ) {
-               new[i] = strdup( a[i] );
-       }
-       new[i] = NULL;
-
-       return( new );
-}
-/* end of function: charray_dup */
-
-PUBLIC char ** str2charray( str, brkstr )
-char *str;
-char *brkstr;
-{
-       char    **res;
-       char    *s;
-       int     i;
-       char *str1;
-
-        if (( str == NULL ) || ( brkstr == NULL )) return( (char **) NULL );
-
-       str1 = strdup(str);
-       i = 1;
-       for ( s = str1; *s; s++ ) {
-               if ( strchr( brkstr, *s ) != NULL ) {
-                       i++;
-               }
-       }
-
-       res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
-       i = 0;
-       for ( s = strtok( str1, brkstr ); s != NULL; s = strtok( NULL,
-           brkstr ) ) {
-               res[i++] = strdup( s );
-       }
-       res[i] = NULL;
-
-       free(str1);
-       return( res );
-}
-/* end of function: str2charray */
diff --git a/contrib/tweb/charray_exp.h b/contrib/tweb/charray_exp.h
deleted file mode 100644 (file)
index 3f4a671..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* charray_exp.h                                                            *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 16 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: charray_exp.h,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#ifndef _CHARRAY_EXP_
-#define _CHARRAY_EXP_
-
-PUBLIC void charray_add();
-PUBLIC void charray_merge();
-PUBLIC void charray_free();
-PUBLIC int charray_inlist();
-PUBLIC char ** charray_dup();
-PUBLIC char ** str2charray();
-
-
-#endif /* _CHARRAY_EXP_ */
diff --git a/contrib/tweb/checkclient.c b/contrib/tweb/checkclient.c
deleted file mode 100644 (file)
index 45f2edf..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* checkclient.c                                                            *
-*                                                                          *
-* Function:..Client-Check-Funktions                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            March 7 1996                 Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            March 19 1999              ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: checkclient.c,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "init_exp.h"
-#include "charray_exp.h"
-#include "checkclient.h"
-#include "regular_exp.h"
-
-PRIVATE int check4access (host, glob)
-char *host;
-GLOB_STRUCT *glob;
-/*
- * check if host ends in a valid domain.
- * return OK if so, NOTOK otherwise
- */
-{
-    return(
-     (glob->allow_string ? checkad(host, glob->comp_allow, glob) : OK) &&
-     (glob->deny_string ? !checkad(host, glob->comp_deny, glob) : OK));
-
-}
-/* end of function: check4access */
-
-
-PRIVATE int checkad (host, string, glob)
-char *host;
-regexp *string;
-GLOB_STRUCT *glob;
-{
-    char nhost[BUFSIZ];
-
-    strcpy(nhost, host ? host : "unknown.xxx");
-    return( tweb_regexec( string, nhost ));
-
-}
-/* end of function: checkad */
-
-/* Analyse Web-Client-Type / proxy + Log-Message */
-
-PUBLIC void checkwwwclient (fp, ip_addr, ip_port, hp, glob)
-FILE *fp;
-char *ip_addr;
-unsigned int ip_port;
-struct hostent *hp;
-GLOB_STRUCT *glob;
-{
-    char in[BUFSIZ];
-    char agent[BUFSIZ], via[BUFSIZ];
-       char *host = hp ? hp->h_name : "unknown";
-
-       *via = *agent = '\0';
-
-    if(!((glob->grant ? checkad(host, glob->comp_grant, glob) : OK) &&
-    (glob->refuse ? !checkad(host, glob->comp_refuse, glob) : OK))){
-
-        if (dosyslog)
-                       syslog (LOG_INFO, "%s REFUSED <%08d>",
-                              glob->server_connection_msg, glob->svc_cnt);
-        fflush(fp);
-        if (http == 1) PRINT_HTML_HEADER;
-        fprintf( fp, HTML_HEAD_TITLE, "ACCESS DENIED", glob->la[100]);
-        disp_file(glob, glob->header, fp);
-        fprintf(fp, "%s", glob->la[97]);
-        disp_file(glob, glob->footer, fp);
-        PRINT_HTML_FOOTER;
-        close_ldap_connections(glob);
-        exit_tweb(0);
-    }
-
-    glob->is_proxy = FALSE;
-    while(fgets( in, BUFSIZ-1,  fp ) && *trimright(in, WSPACE) ) {
-        if(strstr(in, "User-Agent:")){
-            strcpy(agent, in);
-            if(strstr(str_tolower(in), PROXY_TOKEN1) ||
-                strstr(in, PROXY_TOKEN2))
-                     glob->is_proxy = TRUE;
-        }
-        if(strstr(in, "Via:")){
-            strcpy(via, in);
-            glob->is_proxy = TRUE;
-        }
-    }
-    if (dosyslog){
-         char useragent[BUFSIZ];
-
-         sprintf(useragent, "%s  (%s,%u) %s",
-                            *agent ?  agent : "User-Agent: unknown",
-                            ip_addr, ip_port, via);
-         glob->user_agent_msg = strdup(useragent);
-    }
-
-    /* check if access is allowed ... */
-
-    glob->allowed = 
-        ( hp
-          && ((check4access(str_tolower(hp->h_name), glob) == OK))
-          && !( glob->no_proxy && glob->is_proxy
-                && !charray_inlist(glob->allow_proxy, hp->h_name)
-              )
-        );
-}
-
-/* end of function: checkwwwclient */
-
-PUBLIC void decide_access(glob)
-GLOB_STRUCT *glob;
-{
-
-    if(!glob->allowed) {
-        /*  access from a non allowed computer
-            ==> put webdn/webpw on a alternative value (if existant) */
-        glob->webdn = glob->webdn2;
-        glob->webpw = glob->webpw2;
-        glob->noauth = TRUE;
-
-        if (dosyslog) syslog (LOG_INFO, "%s DENIED <%08d>",
-                                 glob->server_connection_msg, glob->svc_cnt);
-
-    } else {
-
-        /*  if allowed and not strict: list persons without limits */
-        if (!glob->strict) glob->max_person = 0;
-
-        if (dosyslog) syslog (LOG_INFO, "%s ALLOWED <%08d>",
-                                 glob->server_connection_msg, glob->svc_cnt);
-    }
-    if (dosyslog) syslog (LOG_INFO, "%s <%08d>",
-                                                       glob->user_agent_msg, glob->svc_cnt);
-
-    /*  non configured max-person means full listing */
-    if (!glob->max_person) glob->max_person = 100000;
-
-    /*  if result-lists shall be restricted: configure display of 
-        privacy-message */
-    glob->legal = glob->legal && (!glob->allowed || glob->strict);
-
-    /*  if browsing should be restricted: configure no_browse-variable */
-    glob->no_browse = glob->no_browse &&
-            (glob->noauth || glob->strict);
-
-}
-
-/* end of function: decide_access */
-
-/* Read ip_refuse dat_file and build up the data structure */
-
-PUBLIC void get_ip_refuse_clients(glob)
-GLOB_STRUCT *glob;
-{
-       if ( glob->ip_refuse ) {
-
-       FILE *rfp;
-       char  inLine[BUFSIZ];
-               char *inLineP;
-               size_t   buflen = REFU_BUFSIZ;
-        size_t   curlen = (size_t) 1;
-
-       if(!(rfp = fopen(glob->ip_refuse->dat_file, "r"))) {
-               return;
-       }
-
-               if ( glob->ip_refuse->refu_str ) free( glob->ip_refuse->refu_str );
-               glob->ip_refuse->refu_str = ch_calloc( 1, REFU_BUFSIZ );
-               *glob->ip_refuse->refu_str = '&';
-
-       while(fgets(inLine, BUFSIZ-1, rfp)) {
-                       int  inLen;
-
-                       if ( ( inLineP = strchr( inLine, '#' ) )) *inLineP = '\0';
-               inLineP = trim(inLine, " \t\n");
-               if ( *inLineP == '\0' ) continue;
-
-                       inLen = strlen( inLineP );
-                       if ( !( curlen + inLen + 1 < buflen )) {
-
-                               glob->ip_refuse->refu_str =
-                                       ch_realloc( glob->ip_refuse->refu_str,
-                                                                                       buflen + REFU_BUFSIZ );
-                               buflen += REFU_BUFSIZ;
-
-                       }
-
-                       sprintf( glob->ip_refuse->refu_str, "%s%s&",
-                                               glob->ip_refuse->refu_str, inLineP );
-
-                       curlen += inLen;
-
-       }
-               fclose( rfp );
-
-       }
-}  /*  get_ip_refuse_clients  */
-
-
-/* Routine needed to initialize structure in init.c */
-
-/*  Test the incomming IP address for denial  */
-
-PUBLIC int
-check_ip_denial( ip_connection, glob )
-struct sockaddr_in   *ip_connection;
-GLOB_STRUCT          *glob;
-{
-    int    res = OK;
-
-       if ( glob->ip_refuse ) {
-       char  ip_address[18];
-
-       sprintf( ip_address, "&%s&",  inet_ntoa( ip_connection->sin_addr ));
-               if ( strstr( glob->ip_refuse->refu_str, ip_address ))
-                       res = NOTOK;
-
-       }
-
-    return( res );
-
-}  /*  check_ip_denial  */
-
-
-/* re-read IP-REFUSE file if necessary */
-
-PUBLIC void
-re_readIPrefuse( glob )
-GLOB_STRUCT   *glob;
-{
-       static int ip_refuse_reload = 0;
-
-       if ( glob->ip_refuse &&
-                       !( ++ip_refuse_reload % glob->ip_refuse->rereadcycle )) {
-               get_ip_refuse_clients( glob );
-       }
-
-}  /*  re_readIPrefuse  */
-
diff --git a/contrib/tweb/checkclient.h b/contrib/tweb/checkclient.h
deleted file mode 100644 (file)
index ecdd9eb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* checkclient.h                                                            *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            March 18 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            March 19 1999              ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: checkclient.h,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-#include "checkclient_exp.h"
-#include "regular_exp.h"
-#include "support_exp.h"
-#include "x500_exp.h"
-#include "charray_exp.h"
-#include "ch_malloc_exp.h"
-
-#ifndef _CHECKCLIENT_
-#define _CHECKCLIENT_
-
-#define PROXY_TOKEN1 " via "
-#define PROXY_TOKEN2 "gateway"
-
-PRIVATE int checkad();
-PRIVATE int check4access();
-
-#endif /* _CHECKCLIENT_ */
diff --git a/contrib/tweb/checkclient_exp.h b/contrib/tweb/checkclient_exp.h
deleted file mode 100644 (file)
index 6b71b33..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* checkclient_exp.h                                                        *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            March 18 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            March 19 1999              ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: checkclient_exp.h,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#ifndef _CHECKCLIENT_EXP_
-#define _CHECKCLIENT_EXP_
-
-PUBLIC void checkwwwclient();
-PUBLIC void decide_access();
-PUBLIC void get_ip_refuse_clients();
-PUBLIC int  check_ip_denial();
-PUBLIC void re_readIPrefuse();
-
-#endif /* _CHECKCLIENT_EXP_ */
diff --git a/contrib/tweb/dn.c b/contrib/tweb/dn.c
deleted file mode 100644 (file)
index 86060bb..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* dn.c.......                                                              *
-*                                                                          *
-* Function:..DN-Handling-Functions                                         *
-*                                                                          *
-*            from LDAP3.2 University of Michigan                           *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 24 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: dn.c,v 1.8 1999/09/13 13:47:44 zrnsk01 Exp $
- *
- */
-
-/* dn.c - routines for dealing with distinguished names */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "strng_exp.h"
-#include "dn.h"
-
-#if OL_LDAPV == 2
-#define LDAP_DEBUG_ANY  0xffff
-#endif
-
-
-/*
- * dn_normalize - put dn into a canonical format.  the dn is
- * normalized in place, as well as returned.
- */
-
-PUBLIC char * dn_normalize( dn )
-char *dn;
-{
-       char    *d, *s;
-       int     state, gotesc;
-
-       /* Debug( LDAP_DEBUG_TRACE, "=> dn_normalize \"%s\"\n", dn, 0, 0 ); */
-
-       gotesc = 0;
-       state = B4TYPE;
-       for ( d = s = dn; *s; s++ ) {
-               switch ( state ) {
-               case B4TYPE:
-                       if ( ! SPACE( *s ) ) {
-                               state = INTYPE;
-                               *d++ = *s;
-                       }
-                       break;
-               case INTYPE:
-                       if ( *s == '=' ) {
-                               state = B4VALUE;
-                               *d++ = *s;
-                       } else if ( SPACE( *s ) ) {
-                               state = B4EQUAL;
-                       } else {
-                               *d++ = *s;
-                       }
-                       break;
-               case B4EQUAL:
-                       if ( *s == '=' ) {
-                               state = B4VALUE;
-                               *d++ = *s;
-                       } else if ( ! SPACE( *s ) ) {
-                               /* not a valid dn - but what can we do here? */
-                               *d++ = *s;
-                       }
-                       break;
-               case B4VALUE:
-                       if ( *s == '"' ) {
-                               state = INQUOTEDVALUE;
-                               *d++ = *s;
-                       } else if ( ! SPACE( *s ) ) { 
-                               state = INVALUE;
-                               *d++ = *s;
-                       }
-                       break;
-               case INVALUE:
-                       if ( !gotesc && SEPARATOR( *s ) ) {
-                               while ( SPACE( *(d - 1) ) )
-                                       d--;
-                               state = B4TYPE;
-                               if ( *s == '+' ) {
-                                       *d++ = *s;
-                               } else {
-                                       *d++ = ',';
-                               }
-                       } else if ( gotesc && !NEEDSESCAPE( *s ) &&
-                           !SEPARATOR( *s ) ) {
-                               *--d = *s;
-                               d++;
-                       } else {
-                               *d++ = *s;
-                       }
-                       break;
-               case INQUOTEDVALUE:
-                       if ( !gotesc && *s == '"' ) {
-                               state = B4SEPARATOR;
-                               *d++ = *s;
-                       } else if ( gotesc && !NEEDSESCAPE( *s ) ) {
-                               *--d = *s;
-                               d++;
-                       } else {
-                               *d++ = *s;
-                       }
-                       break;
-               case B4SEPARATOR:
-                       if ( SEPARATOR( *s ) ) {
-                               state = B4TYPE;
-                               *d++ = *s;
-                       }
-                       break;
-               default:
-
-#if OL_LDAPV >= 2
-
-            if ( ldap_debug & LDAP_DEBUG_ANY )
-                fprintf( stderr, "dn_normalize - unknown state %d\n", state );
-
-            if ( ldap_syslog & LDAP_DEBUG_ANY )
-                syslog( ldap_syslog_level,
-                             "dn_normalize - unknown state %d\n", state );
-
-#else
-                       Debug( LDAP_DEBUG_ANY,
-                           "dn_normalize - unknown state %d\n", state, 0, 0 );
-#endif
-
-                       break;
-               }
-               if ( *s == '\\' ) {
-                       gotesc = 1;
-               } else {
-                       gotesc = 0;
-               }
-       }
-       *d = '\0';
-
-       /* Debug( LDAP_DEBUG_TRACE, "<= dn_normalize \"%s\"\n", dn, 0, 0 ); */
-       return( dn );
-}
-/* end of function: dn_normalize */
-
-/*
- * dn_normalize_case - put dn into a canonical form suitable for storing
- * in a hash database.  this involves normalizing the case as well as
- * the format.  the dn is normalized in place as well as returned.
- */
-
-PUBLIC char * dn_normalize_case( dn )
-char *dn;
-{
-
-       /* normalize format */
-       dn_normalize( dn );
-
-       /* normalize case */
-        str_toupper( dn );
-
-       return( dn );
-}
-/* end of function: dn_normalize_case */
-
-/*
- * dn_issuffix - tells whether suffix is a suffix of dn.  both dn
- * and suffix must be normalized.
- */
-
-PUBLIC int dn_issuffix( dn, suffix )
-char   *dn;
-char   *suffix;
-{
-       int     dnlen, suffixlen;
-
-       if ( dn == NULL ) {
-               return( 0 );
-       }
-
-       suffixlen = strlen( suffix );
-       dnlen = strlen( dn );
-
-       if ( suffixlen > dnlen ) {
-               return( 0 );
-       }
-
-       return( strcasecmp( dn + dnlen - suffixlen, suffix ) == 0 );
-}
-/* end of function: dn_issuffix */
-
diff --git a/contrib/tweb/dn.h b/contrib/tweb/dn.h
deleted file mode 100644 (file)
index fa00fa9..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* dn.h.......                                                              *
-*                                                                          *
-* Function:..Header-Datei fuer TWEB-Software                               *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 24 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: dn.h,v 1.6 1999/09/10 15:01:16 zrnsk01 Exp $
- *
- */
-
-#ifndef _DN_
-#define _DN_
-
-#define DNSEPARATOR(c)  (c == ',' || c == ';')
-#define SEPARATOR(c)    (c == ',' || c == ';' || c == '+')
-#define SPACE(c)        (c == ' ' || c == '\n')
-#define NEEDSESCAPE(c)  (c == '\\' || c == '"')
-#define B4TYPE          0
-#define INTYPE          1
-#define B4EQUAL         2
-#define B4VALUE         3
-#define INVALUE         4
-#define INQUOTEDVALUE   5
-#define B4SEPARATOR     6
-
-#include "dn_exp.h"
-
-#endif /* _DN_ */
diff --git a/contrib/tweb/dn_exp.h b/contrib/tweb/dn_exp.h
deleted file mode 100644 (file)
index 8fc9097..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* dn_exp.h...                                                              *
-*                                                                          *
-* Function:..Header-Datei fuer TWEB-Software                               *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 24 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: dn_exp.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#ifndef _DN_EXP_
-#define _DN_EXP_
-
-PUBLIC char * dn_normalize();
-PUBLIC char * dn_normalize_case();
-PUBLIC int dn_issuffix();
-
-#endif /* _DN_EXP_ */
diff --git a/contrib/tweb/doc/Presentation/DANTE-01-99.ps b/contrib/tweb/doc/Presentation/DANTE-01-99.ps
deleted file mode 100644 (file)
index 1c6f931..0000000
+++ /dev/null
@@ -1,7072 +0,0 @@
-%!PS-Adobe-3.0
-%XpPrinter-Model: HP LaserJet 4L (C2003) PostScript Cartridge
-%%Creator: Wind/U Xprinter Version 3.1.0 (linux) (Compile Date: Aug 27 1998 18:14:52) (XpDummyUser)
-%%Title: 
-%%CreationDate:Tue Jan 19 09:07:58 1999
-%%DocumentSuppliedResources: (atend)
-%%Pages: (atend)
-%%LanguageLevel: 1
-%%EndComments
-%%BeginProlog
-/XPrinterDict dup 200 dict def load begin
-/bdf{bind def}bind def
-/ldf{load def}bdf
-/m/rmoveto ldf
-/l2/rlineto ldf
-/gs/gsave ldf
-/gr/grestore ldf
-/np/newpath ldf
-/sv/save ldf
-/rs/restore ldf
-/tl/translate ldf
-/mt/matrix ldf
-/l/length ldf
-/z/dict ldf
-/d/def ldf
-/e/exch ldf
-/a/array ldf
-/ac/arc ldf
-/an/arcn ldf
-/b/begin ldf
-/pi/putinterval ldf
-/t/moveto ldf
-/lo/lineto ldf
-/st/stroke ldf
-/p/add ldf
-/s/sub ldf
-/c/mul ldf
-/v/div ldf
-/cp/closepath ldf
-/sl/scale ldf
-/ff/findfont ldf
-/mf/makefont ldf
-/sf/setfont ldf
-/f/fill ldf
-/sw/setlinewidth ldf
-/sc/setlinecap ldf
-/sj/setlinejoin ldf
-/sg/setgray ldf
-/ski/ISOLatin1Encoding where{pop true}{false}ifelse d
-/fcd{ff dup l z b{1 index /FID ne{d}{pop pop}ifelse}forall /Encoding ISOLatin1Encoding d currentdict end}bdf
-/fdf{e definefont pop}bdf
-/sdt 22 z d
-sdt b
-/tpm mt d
-/tpt mt d
-/tps mt d
-/cps
-{/pr2 e cvlit d
-/pr1 e cvlit d
-/npc pr1 l pr2 l p a d
-npc 0 pr1 pi
-npc pr1 l pr2 pi
-npc cvx
-}bdf
-/rmx mt d
-/frs
-{72 0 rmx defaultmatrix dtransform
-/yres e d /xres e d
-xres dup c yres dup c p sqrt
-}bdf
-end
-/sus 
-{sdt b
-/spf e d
-/sag e d 
-/ces e d
-300 ces v sag /spf load
-setscreen
-end
-}bdf
-/spt 18 z d
-spt b
-/bts
-{/ybit e d /xbit e d
-/byv bstr ybit bwd c xbit 8 idiv
-p get d
-/mask 1 7 xbit 8 mod s bitshift d
-byv mask and 0 ne
-}bdf
-end
-/bsf
-{spt b
-/y e d /x e d
-/xix x 1 p 2 v bpx c cvi d
-/yix y 1 p 2 v bpy c cvi d
-xix yix bts
-{/onb onb 1 p d 1}
-{/ofb ofb 1 p d 0}
-ifelse
-end
-}bdf
-/setpattern
-{spt b
-/csz e d
-/agl e d
-/bwd e d
-/bpy e d
-/bpx e d
-/bstr e d
-/onb 0 d /ofb 0 d
-csz agl /bsf load
-sus
-{ }settransfer
-ofb ofb onb p v setgray
-end
-}bdf
-/picstr 500 string d
-/inch{72 c}bdf
-/DP{gs np 0 360 ac cp f gr}bdf
-/DL{gs np t lo st gr}bdf
-/RGB{setrgbcolor}bdf
-/C{gs t show gr}bdf
-
-/ren 12 z d
-/REn
-{ren b
-/nwc e d
-/nwf e d
-/bft e d
-/bfd bft ff d
-/nf bfd maxlength z d
-bfd
-{e dup /FID ne 
-{dup /Encoding eq
-{e dup l a copy
-nf 3 1 roll put}
-{e nf 3 1 roll put}
-ifelse
-}
-{pop pop}
-ifelse
-}forall
-nf /FontName nwf put
-nwc aload pop
-nwc l 2 idiv
-{nf /Encoding get 3 1 roll put}
-repeat
-nwf nf definefont pop
-end
-}d
-/rots{gs t rotate show gr}bdf
-
-%%EndProlog
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<20> 420.24 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 182.64 t 107.04 397.92 lo 741.84 397.92 lo 741.84 182.64 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<446174612d44726976656e205765622d582e3530302d47617465776179204f7065726174696f6e> 138.96 209.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 182.64 t 107.04 397.92 lo 741.84 397.92 lo 741.84 182.64 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<2d20476174657761792d537769746368696e6720616e642044796e616d69632052652d436f6e66696775726174696f6e202d> 126.72 253.44 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 182.64 t 107.04 397.92 lo 741.84 397.92 lo 741.84 182.64 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-Oblique fcd /Helvetica-Oblique-ISO8859-1 fdf}if
-/Helvetica-Oblique-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4b757274205370616e6965722c205a656e7472756d2066fc7220446174656e766572617262656974756e672c20556e69766572736974e4742054fc62696e67656e> 156.96 362.88 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 182.64 t 107.04 397.92 lo 741.84 397.92 lo 741.84 182.64 lo
-cp clip np
-0.000 0.000 1.000 RGB
-/Helvetica-Oblique-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<4b7572742e7370616e696572407a64762e756e692d74756562696e67656e2e6465> 313.68 393.60 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 83.04 482.64 t 402.48 482.64 lo 402.48 525.36 lo 83.04 525.36 lo 83.04 482.64 lo 83.04 482.64 lo eofill st gr
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 2 2
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<32> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<54574542202d20486967686c6967687473> 298.32 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 144.00 t 107.04 429.84 lo 741.84 429.84 lo 741.84 144.00 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 168.24 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<4261736564206f6e207765623530306777206279204672616e6b20526963687465722c204368656d6e69747a> 146.88 167.28 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 211.20 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<457874656e7369766520636f6e66696775726174696f6e206f7074696f6e73> 146.88 210.24 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 253.92 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<41636365737320636f6e74726f6c20616e642073656375726974792066756e6374696f6e73> 146.88 252.96 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 296.64 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<4d756c7469706c652d6c616e677561676520737570706f7274> 146.88 295.68 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 339.60 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<436f72706f72617465204964656e74697479> 146.88 338.64 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 382.32 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<53746174696320616e642064796e616d696320676174657761792d737769746368696e67> 146.88 381.36 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 425.04 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<44796e616d69632072652d636f6e66696775726174696f6e206f6620646973706c617920706172616d6574657273> 146.88 424.08 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 3 3
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<33> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<5457454220476174657761792d537769746368696e6720696e205072696e6369706c652049> 159.12 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 273.36 293.76 t 273.36 296.64 lo 721.20 295.92 lo 721.20 293.04 lo 273.36 293.76 lo 273.36 293.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 110.88 255.60 t 110.88 277.92 lo 158.40 277.92 lo 158.40 255.60 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672041> 110.88 273.60 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 112.32 318.24 t 112.32 340.56 lo 159.84 340.56 lo 159.84 318.24 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672042> 112.32 336.24 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 437.28 187.92 t 518.40 187.92 lo 518.40 235.44 lo 437.28 235.44 lo 437.28 187.92 lo 437.28 187.92 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 435.84 186.48 t 438.72 189.36 lo 516.96 189.36 lo 519.84 186.48 lo 435.84 186.48 lo 435.84 186.48 lo eofill st gr
-gs np 519.84 186.48 t 516.96 189.36 lo 516.96 234.00 lo 519.84 236.88 lo 519.84 186.48 lo 519.84 186.48 lo eofill st gr
-gs np 519.84 236.88 t 516.96 234.00 lo 438.72 234.00 lo 435.84 236.88 lo 519.84 236.88 lo 519.84 236.88 lo eofill st gr
-gs np 435.84 236.88 t 438.72 234.00 lo 438.72 189.36 lo 435.84 186.48 lo 435.84 236.88 lo 435.84 236.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 447.84 200.88 t 447.84 222.96 lo 508.32 222.96 lo 508.32 200.88 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 447.84 218.88 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 439.44 368.88 t 520.56 368.88 lo 520.56 416.40 lo 439.44 416.40 lo 439.44 368.88 lo 439.44 368.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 438.00 367.44 t 440.88 370.32 lo 519.12 370.32 lo 522.00 367.44 lo 438.00 367.44 lo 438.00 367.44 lo eofill st gr
-gs np 522.00 367.44 t 519.12 370.32 lo 519.12 414.96 lo 522.00 417.84 lo 522.00 367.44 lo 522.00 367.44 lo eofill st gr
-gs np 522.00 417.84 t 519.12 414.96 lo 440.88 414.96 lo 438.00 417.84 lo 522.00 417.84 lo 522.00 417.84 lo eofill st gr
-gs np 438.00 417.84 t 440.88 414.96 lo 440.88 370.32 lo 438.00 367.44 lo 438.00 417.84 lo 438.00 417.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 450.00 381.84 t 450.00 403.92 lo 510.48 403.92 lo 510.48 381.84 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 450.00 399.84 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 256.32 t 644.16 256.08 lo 637.44 255.36 lo 630.96 254.16 lo 624.96 252.72 lo 618.96 250.56 lo 613.68 248.16 lo 608.64 245.52 lo 604.08 242.40 lo 600.00 239.04 lo 596.40 235.44 lo 593.28 231.36 lo 590.88 227.28 lo 589.20 222.96 lo 588.00 218.64 lo 587.76 213.84 lo 588.00 209.28 lo 589.20 204.72 lo 590.88 200.40 lo 593.28 196.32 lo 596.40 192.48 lo 600.00 188.88 lo 604.08 185.52 lo 608.64 182.40 lo 613.68 179.76 lo 618.96 177.36 lo 624.96 175.20 lo 630.96 173.52 lo 637.44 172.32 lo 644.16 171.60 lo 651.12 171.36 lo 657.84 171.60 lo 664.56 172.32 lo 671.04 173.52 lo 677.28 175.20 lo 683.04 177.36 lo 688.32 179.76 lo 693.36 182.40 lo 697.92 185.52 lo 702.24 188.88 lo 705.60 192.48 lo 708.72 196.32 lo 711.12 200.40 lo 712.80 204.72 lo 714.00 209.28 lo 714.48 213.84 lo 714.00 218.64 lo 712.80 222.96 lo 711.12 227.28 lo 708.72 231.36 lo 705.60 235.44 lo 702.24 239.04 lo 697.92 242.40 lo 693.36 245.52 lo 688.32 248.16 lo 683.04 250.56 lo 677.28 252.72 lo 671.04 254.16 lo 664.56 255.36 lo 657.84 256.08 lo 651.12 256.32 lo 651.12 256.32 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 257.76 t 651.12 254.88 lo 644.16 254.64 lo 643.92 257.52 lo 651.12 257.76 lo 651.12 257.76 lo eofill st gr
-gs np 643.92 257.52 t 644.16 254.64 lo 637.68 253.92 lo 637.20 256.80 lo 643.92 257.52 lo 643.92 257.52 lo eofill st gr
-gs np 637.20 256.80 t 637.68 253.92 lo 631.44 252.72 lo 630.72 255.60 lo 637.20 256.80 lo 637.20 256.80 lo eofill st gr
-gs np 630.72 255.60 t 631.44 252.72 lo 625.20 251.28 lo 624.48 253.92 lo 630.72 255.60 lo 630.72 255.60 lo eofill st gr
-gs np 624.48 253.92 t 625.20 251.28 lo 619.68 249.36 lo 618.48 252.00 lo 624.48 253.92 lo 624.48 253.92 lo eofill st gr
-gs np 618.48 252.00 t 619.68 249.36 lo 614.40 246.96 lo 612.96 249.36 lo 618.48 252.00 lo 618.48 252.00 lo eofill st gr
-gs np 612.96 249.36 t 614.40 246.96 lo 609.36 244.32 lo 607.92 246.72 lo 612.96 249.36 lo 612.96 249.36 lo eofill st gr
-gs np 607.92 246.72 t 609.36 244.32 lo 604.80 241.20 lo 603.12 243.60 lo 607.92 246.72 lo 607.92 246.72 lo eofill st gr
-gs np 603.12 243.60 t 604.80 241.20 lo 600.96 237.84 lo 599.04 240.00 lo 603.12 243.60 lo 603.12 243.60 lo eofill st gr
-gs np 599.04 240.00 t 600.96 237.84 lo 597.36 234.48 lo 595.20 236.40 lo 599.04 240.00 lo 599.04 240.00 lo eofill st gr
-gs np 595.20 236.40 t 597.36 234.48 lo 594.48 230.64 lo 592.08 232.32 lo 595.20 236.40 lo 595.20 236.40 lo eofill st gr
-gs np 592.08 232.32 t 594.48 230.64 lo 592.08 226.56 lo 589.68 228.00 lo 592.08 232.32 lo 592.08 232.32 lo eofill st gr
-gs np 589.68 228.00 t 592.08 226.56 lo 590.40 222.72 lo 587.76 223.44 lo 589.68 228.00 lo 589.68 228.00 lo eofill st gr
-gs np 587.76 223.44 t 590.40 222.72 lo 589.44 218.40 lo 586.56 218.64 lo 587.76 223.44 lo 587.76 223.44 lo eofill st gr
-gs np 586.56 218.64 t 589.44 218.40 lo 589.20 213.84 lo 586.32 213.84 lo 586.56 218.64 lo 586.56 218.64 lo eofill st gr
-gs np 586.32 213.84 t 589.20 213.84 lo 589.44 209.52 lo 586.56 209.04 lo 586.32 213.84 lo 586.32 213.84 lo eofill st gr
-gs np 586.56 209.04 t 589.44 209.52 lo 590.40 205.20 lo 587.76 204.48 lo 586.56 209.04 lo 586.56 209.04 lo eofill st gr
-gs np 587.76 204.48 t 590.40 205.20 lo 592.32 201.12 lo 589.68 199.92 lo 587.76 204.48 lo 587.76 204.48 lo eofill st gr
-gs np 589.68 199.92 t 592.32 201.12 lo 594.48 197.28 lo 592.08 195.60 lo 589.68 199.92 lo 589.68 199.92 lo eofill st gr
-gs np 592.08 195.60 t 594.48 197.28 lo 597.36 193.44 lo 595.20 191.52 lo 592.08 195.60 lo 592.08 195.60 lo eofill st gr
-gs np 595.20 191.52 t 597.36 193.44 lo 600.96 189.84 lo 599.04 187.68 lo 595.20 191.52 lo 595.20 191.52 lo eofill st gr
-gs np 599.04 187.68 t 600.96 189.84 lo 604.80 186.72 lo 603.12 184.32 lo 599.04 187.68 lo 599.04 187.68 lo eofill st gr
-gs np 603.12 184.32 t 604.80 186.72 lo 609.36 183.60 lo 607.92 181.20 lo 603.12 184.32 lo 603.12 184.32 lo eofill st gr
-gs np 607.92 181.20 t 609.36 183.60 lo 614.16 180.96 lo 612.96 178.32 lo 607.92 181.20 lo 607.92 181.20 lo eofill st gr
-gs np 612.96 178.32 t 614.16 180.96 lo 619.68 178.56 lo 618.48 175.92 lo 612.96 178.32 lo 612.96 178.32 lo eofill st gr
-gs np 618.48 175.92 t 619.68 178.56 lo 625.20 176.64 lo 624.48 173.76 lo 618.48 175.92 lo 618.48 175.92 lo eofill st gr
-gs np 624.48 173.76 t 625.20 176.64 lo 631.44 174.96 lo 630.72 172.32 lo 624.48 173.76 lo 624.48 173.76 lo eofill st gr
-gs np 630.72 172.32 t 631.44 174.96 lo 637.68 173.76 lo 637.20 171.12 lo 630.72 172.32 lo 630.72 172.32 lo eofill st gr
-gs np 637.20 171.12 t 637.68 173.76 lo 644.16 173.04 lo 644.16 170.40 lo 637.20 171.12 lo 637.20 171.12 lo eofill st gr
-gs np 644.16 170.40 t 644.16 173.04 lo 651.12 172.80 lo 651.12 170.16 lo 644.16 170.40 lo 644.16 170.40 lo eofill st gr
-gs np 651.12 170.16 t 651.12 172.80 lo 657.84 173.04 lo 658.08 170.16 lo 651.12 170.16 lo 651.12 170.16 lo eofill st gr
-gs np 658.08 170.16 t 657.84 173.04 lo 664.32 173.76 lo 664.80 171.12 lo 658.08 170.16 lo 658.08 170.16 lo eofill st gr
-gs np 664.80 171.12 t 664.32 173.76 lo 670.80 174.96 lo 671.28 172.32 lo 664.80 171.12 lo 664.80 171.12 lo eofill st gr
-gs np 671.28 172.32 t 670.80 174.96 lo 676.80 176.64 lo 677.52 174.00 lo 671.28 172.32 lo 671.28 172.32 lo eofill st gr
-gs np 677.52 174.00 t 676.80 176.64 lo 682.56 178.56 lo 683.52 175.92 lo 677.52 174.00 lo 677.52 174.00 lo eofill st gr
-gs np 683.52 175.92 t 682.56 178.56 lo 687.84 180.96 lo 689.04 178.32 lo 683.52 175.92 lo 683.52 175.92 lo eofill st gr
-gs np 689.04 178.32 t 687.84 180.96 lo 692.64 183.60 lo 694.08 181.20 lo 689.04 178.32 lo 689.04 178.32 lo eofill st gr
-gs np 694.08 181.20 t 692.64 183.60 lo 697.20 186.72 lo 698.88 184.32 lo 694.08 181.20 lo 694.08 181.20 lo eofill st gr
-gs np 698.88 184.32 t 697.20 186.72 lo 701.28 189.84 lo 703.20 187.92 lo 698.88 184.32 lo 698.88 184.32 lo eofill st gr
-gs np 703.20 187.92 t 701.28 189.84 lo 704.64 193.44 lo 706.80 191.52 lo 703.20 187.92 lo 703.20 187.92 lo eofill st gr
-gs np 706.80 191.52 t 704.64 193.44 lo 707.52 197.28 lo 709.92 195.60 lo 706.80 191.52 lo 706.80 191.52 lo eofill st gr
-gs np 709.92 195.60 t 707.52 197.28 lo 709.92 201.12 lo 712.32 199.92 lo 709.92 195.60 lo 709.92 195.60 lo eofill st gr
-gs np 712.32 199.92 t 709.92 201.12 lo 711.60 205.20 lo 714.24 204.48 lo 712.32 199.92 lo 712.32 199.92 lo eofill st gr
-gs np 714.24 204.48 t 711.60 205.20 lo 712.56 209.52 lo 715.44 209.04 lo 714.24 204.48 lo 714.24 204.48 lo eofill st gr
-gs np 715.44 209.04 t 712.56 209.52 lo 713.04 213.84 lo 715.92 214.08 lo 715.44 209.04 lo 715.44 209.04 lo eofill st gr
-gs np 715.92 214.08 t 713.04 213.84 lo 712.56 218.40 lo 715.44 218.88 lo 715.92 214.08 lo 715.92 214.08 lo eofill st gr
-gs np 715.44 218.88 t 712.56 218.40 lo 711.60 222.48 lo 714.24 223.44 lo 715.44 218.88 lo 715.44 218.88 lo eofill st gr
-gs np 714.24 223.44 t 711.60 222.48 lo 709.92 226.80 lo 712.32 228.00 lo 714.24 223.44 lo 714.24 223.44 lo eofill st gr
-gs np 712.32 228.00 t 709.92 226.80 lo 707.52 230.64 lo 709.92 232.32 lo 712.32 228.00 lo 712.32 228.00 lo eofill st gr
-gs np 709.92 232.32 t 707.52 230.64 lo 704.64 234.48 lo 706.80 236.16 lo 709.92 232.32 lo 709.92 232.32 lo eofill st gr
-gs np 706.80 236.16 t 704.64 234.48 lo 701.28 237.84 lo 703.20 240.00 lo 706.80 236.16 lo 706.80 236.16 lo eofill st gr
-gs np 703.20 240.00 t 701.28 237.84 lo 697.20 241.20 lo 698.88 243.60 lo 703.20 240.00 lo 703.20 240.00 lo eofill st gr
-gs np 698.88 243.60 t 697.20 241.20 lo 692.64 244.32 lo 694.08 246.72 lo 698.88 243.60 lo 698.88 243.60 lo eofill st gr
-gs np 694.08 246.72 t 692.64 244.32 lo 687.84 246.96 lo 689.04 249.36 lo 694.08 246.72 lo 694.08 246.72 lo eofill st gr
-gs np 689.04 249.36 t 687.84 246.96 lo 682.56 249.36 lo 683.52 252.00 lo 689.04 249.36 lo 689.04 249.36 lo eofill st gr
-gs np 683.52 252.00 t 682.56 249.36 lo 676.80 251.28 lo 677.52 253.92 lo 683.52 252.00 lo 683.52 252.00 lo eofill st gr
-gs np 677.52 253.92 t 676.80 251.28 lo 670.80 252.72 lo 671.28 255.60 lo 677.52 253.92 lo 677.52 253.92 lo eofill st gr
-gs np 671.28 255.60 t 670.80 252.72 lo 664.32 253.92 lo 664.80 256.80 lo 671.28 255.60 lo 671.28 255.60 lo eofill st gr
-gs np 664.80 256.80 t 664.32 253.92 lo 657.84 254.64 lo 658.08 257.52 lo 664.80 256.80 lo 664.80 256.80 lo eofill st gr
-gs np 658.08 257.52 t 657.84 254.64 lo 651.12 254.88 lo 651.12 257.76 lo 658.08 257.52 lo 658.08 257.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 203.04 t 624.96 225.36 lo 677.52 225.36 lo 677.52 203.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412031> 624.96 221.04 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 650.88 434.40 t 644.16 434.16 lo 637.44 433.44 lo 630.96 432.24 lo 624.72 430.56 lo 618.96 428.64 lo 613.68 426.24 lo 608.64 423.36 lo 604.08 420.24 lo 599.76 416.88 lo 596.40 413.28 lo 593.28 409.44 lo 590.88 405.36 lo 589.20 401.04 lo 588.00 396.48 lo 587.76 391.92 lo 588.00 387.36 lo 589.20 382.80 lo 590.88 378.48 lo 593.28 374.40 lo 596.40 370.56 lo 599.76 366.72 lo 604.08 363.36 lo 608.64 360.48 lo 613.68 357.60 lo 618.96 355.20 lo 624.72 353.28 lo 630.96 351.60 lo 637.44 350.40 lo 644.16 349.68 lo 650.88 349.44 lo 657.84 349.68 lo 664.56 350.40 lo 671.04 351.60 lo 677.04 353.28 lo 683.04 355.20 lo 688.32 357.60 lo 693.36 360.48 lo 697.92 363.36 lo 702.00 366.72 lo 705.60 370.56 lo 708.72 374.40 lo 711.12 378.48 lo 712.80 382.80 lo 714.00 387.36 lo 714.24 391.92 lo 714.00 396.48 lo 712.80 401.04 lo 711.12 405.36 lo 708.72 409.44 lo 705.60 413.28 lo 702.00 416.88 lo 697.92 420.24 lo 693.36 423.36 lo 688.32 426.24 lo 683.04 428.64 lo 677.04 430.56 lo 671.04 432.24 lo 664.56 433.44 lo 657.84 434.16 lo 650.88 434.40 lo 650.88 434.40 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 650.88 435.84 t 650.88 432.96 lo 644.16 432.72 lo 643.92 435.60 lo 650.88 435.84 lo 650.88 435.84 lo eofill st gr
-gs np 643.92 435.60 t 644.16 432.72 lo 637.68 432.00 lo 637.20 434.88 lo 643.92 435.60 lo 643.92 435.60 lo eofill st gr
-gs np 637.20 434.88 t 637.68 432.00 lo 631.20 430.80 lo 630.72 433.68 lo 637.20 434.88 lo 637.20 434.88 lo eofill st gr
-gs np 630.72 433.68 t 631.20 430.80 lo 625.20 429.12 lo 624.48 432.00 lo 630.72 433.68 lo 630.72 433.68 lo eofill st gr
-gs np 624.48 432.00 t 625.20 429.12 lo 619.44 427.20 lo 618.48 429.84 lo 624.48 432.00 lo 624.48 432.00 lo eofill st gr
-gs np 618.48 429.84 t 619.44 427.20 lo 614.16 424.80 lo 612.96 427.44 lo 618.48 429.84 lo 618.48 429.84 lo eofill st gr
-gs np 612.96 427.44 t 614.16 424.80 lo 609.36 422.16 lo 607.92 424.56 lo 612.96 427.44 lo 612.96 427.44 lo eofill st gr
-gs np 607.92 424.56 t 609.36 422.16 lo 604.80 419.28 lo 603.12 421.44 lo 607.92 424.56 lo 607.92 424.56 lo eofill st gr
-gs np 603.12 421.44 t 604.80 419.28 lo 600.72 415.92 lo 598.80 418.08 lo 603.12 421.44 lo 603.12 421.44 lo eofill st gr
-gs np 598.80 418.08 t 600.72 415.92 lo 597.36 412.32 lo 595.20 414.24 lo 598.80 418.08 lo 598.80 418.08 lo eofill st gr
-gs np 595.20 414.24 t 597.36 412.32 lo 594.48 408.72 lo 592.08 410.16 lo 595.20 414.24 lo 595.20 414.24 lo eofill st gr
-gs np 592.08 410.16 t 594.48 408.72 lo 592.08 404.64 lo 589.68 405.84 lo 592.08 410.16 lo 592.08 410.16 lo eofill st gr
-gs np 589.68 405.84 t 592.08 404.64 lo 590.40 400.56 lo 587.76 401.52 lo 589.68 405.84 lo 589.68 405.84 lo eofill st gr
-gs np 587.76 401.52 t 590.40 400.56 lo 589.44 396.24 lo 586.56 396.72 lo 587.76 401.52 lo 587.76 401.52 lo eofill st gr
-gs np 586.56 396.72 t 589.44 396.24 lo 588.96 391.92 lo 586.32 391.92 lo 586.56 396.72 lo 586.56 396.72 lo eofill st gr
-gs np 586.32 391.92 t 588.96 391.92 lo 589.44 387.60 lo 586.56 387.12 lo 586.32 391.92 lo 586.32 391.92 lo eofill st gr
-gs np 586.56 387.12 t 589.44 387.60 lo 590.40 383.28 lo 587.76 382.32 lo 586.56 387.12 lo 586.56 387.12 lo eofill st gr
-gs np 587.76 382.32 t 590.40 383.28 lo 592.08 379.20 lo 589.68 377.76 lo 587.76 382.32 lo 587.76 382.32 lo eofill st gr
-gs np 589.68 377.76 t 592.08 379.20 lo 594.48 375.12 lo 592.08 373.68 lo 589.68 377.76 lo 589.68 377.76 lo eofill st gr
-gs np 592.08 373.68 t 594.48 375.12 lo 597.36 371.52 lo 595.20 369.60 lo 592.08 373.68 lo 592.08 373.68 lo eofill st gr
-gs np 595.20 369.60 t 597.36 371.52 lo 600.72 367.92 lo 598.80 365.76 lo 595.20 369.60 lo 595.20 369.60 lo eofill st gr
-gs np 598.80 365.76 t 600.72 367.92 lo 604.80 364.56 lo 603.12 362.40 lo 598.80 365.76 lo 598.80 365.76 lo eofill st gr
-gs np 603.12 362.40 t 604.80 364.56 lo 609.36 361.68 lo 607.92 359.28 lo 603.12 362.40 lo 603.12 362.40 lo eofill st gr
-gs np 607.92 359.28 t 609.36 361.68 lo 614.16 359.04 lo 612.96 356.40 lo 607.92 359.28 lo 607.92 359.28 lo eofill st gr
-gs np 612.96 356.40 t 614.16 359.04 lo 619.44 356.64 lo 618.48 354.00 lo 612.96 356.40 lo 612.96 356.40 lo eofill st gr
-gs np 618.48 354.00 t 619.44 356.64 lo 625.20 354.48 lo 624.48 351.84 lo 618.48 354.00 lo 618.48 354.00 lo eofill st gr
-gs np 624.48 351.84 t 625.20 354.48 lo 631.20 353.04 lo 630.72 350.16 lo 624.48 351.84 lo 624.48 351.84 lo eofill st gr
-gs np 630.72 350.16 t 631.20 353.04 lo 637.68 351.84 lo 637.20 348.96 lo 630.72 350.16 lo 630.72 350.16 lo eofill st gr
-gs np 637.20 348.96 t 637.68 351.84 lo 644.16 351.12 lo 643.92 348.24 lo 637.20 348.96 lo 637.20 348.96 lo eofill st gr
-gs np 643.92 348.24 t 644.16 351.12 lo 650.88 350.88 lo 651.12 348.00 lo 643.92 348.24 lo 643.92 348.24 lo eofill st gr
-gs np 651.12 348.00 t 650.88 350.88 lo 657.84 351.12 lo 657.84 348.24 lo 651.12 348.00 lo 651.12 348.00 lo eofill st gr
-gs np 657.84 348.24 t 657.84 351.12 lo 664.32 351.84 lo 664.80 348.96 lo 657.84 348.24 lo 657.84 348.24 lo eofill st gr
-gs np 664.80 348.96 t 664.32 351.84 lo 670.56 353.04 lo 671.28 350.16 lo 664.80 348.96 lo 664.80 348.96 lo eofill st gr
-gs np 671.28 350.16 t 670.56 353.04 lo 676.80 354.48 lo 677.52 351.84 lo 671.28 350.16 lo 671.28 350.16 lo eofill st gr
-gs np 677.52 351.84 t 676.80 354.48 lo 682.32 356.64 lo 683.52 354.00 lo 677.52 351.84 lo 677.52 351.84 lo eofill st gr
-gs np 683.52 354.00 t 682.32 356.64 lo 687.60 359.04 lo 689.04 356.40 lo 683.52 354.00 lo 683.52 354.00 lo eofill st gr
-gs np 689.04 356.40 t 687.60 359.04 lo 692.64 361.68 lo 694.08 359.04 lo 689.04 356.40 lo 689.04 356.40 lo eofill st gr
-gs np 694.08 359.04 t 692.64 361.68 lo 697.20 364.56 lo 698.88 362.40 lo 694.08 359.04 lo 694.08 359.04 lo eofill st gr
-gs np 698.88 362.40 t 697.20 364.56 lo 701.04 367.92 lo 702.96 365.76 lo 698.88 362.40 lo 698.88 362.40 lo eofill st gr
-gs np 702.96 365.76 t 701.04 367.92 lo 704.64 371.52 lo 706.80 369.60 lo 702.96 365.76 lo 702.96 365.76 lo eofill st gr
-gs np 706.80 369.60 t 704.64 371.52 lo 707.52 375.12 lo 709.92 373.68 lo 706.80 369.60 lo 706.80 369.60 lo eofill st gr
-gs np 709.92 373.68 t 707.52 375.12 lo 709.92 379.20 lo 712.32 377.76 lo 709.92 373.68 lo 709.92 373.68 lo eofill st gr
-gs np 712.32 377.76 t 709.92 379.20 lo 711.36 383.28 lo 714.24 382.32 lo 712.32 377.76 lo 712.32 377.76 lo eofill st gr
-gs np 714.24 382.32 t 711.36 383.28 lo 712.56 387.60 lo 715.20 387.12 lo 714.24 382.32 lo 714.24 382.32 lo eofill st gr
-gs np 715.20 387.12 t 712.56 387.60 lo 712.80 391.92 lo 715.68 391.92 lo 715.20 387.12 lo 715.20 387.12 lo eofill st gr
-gs np 715.68 391.92 t 712.80 391.92 lo 712.56 396.24 lo 715.44 396.72 lo 715.68 391.92 lo 715.68 391.92 lo eofill st gr
-gs np 715.44 396.72 t 712.56 396.24 lo 711.36 400.56 lo 714.24 401.52 lo 715.44 396.72 lo 715.44 396.72 lo eofill st gr
-gs np 714.24 401.52 t 711.36 400.56 lo 709.68 404.64 lo 712.32 405.84 lo 714.24 401.52 lo 714.24 401.52 lo eofill st gr
-gs np 712.32 405.84 t 709.68 404.64 lo 707.52 408.72 lo 709.92 410.16 lo 712.32 405.84 lo 712.32 405.84 lo eofill st gr
-gs np 709.92 410.16 t 707.52 408.72 lo 704.64 412.32 lo 706.80 414.24 lo 709.92 410.16 lo 709.92 410.16 lo eofill st gr
-gs np 706.80 414.24 t 704.64 412.32 lo 701.04 415.92 lo 702.96 418.08 lo 706.80 414.24 lo 706.80 414.24 lo eofill st gr
-gs np 702.96 418.08 t 701.04 415.92 lo 697.20 419.28 lo 698.88 421.44 lo 702.96 418.08 lo 702.96 418.08 lo eofill st gr
-gs np 698.88 421.44 t 697.20 419.28 lo 692.64 422.16 lo 694.08 424.56 lo 698.88 421.44 lo 698.88 421.44 lo eofill st gr
-gs np 694.08 424.56 t 692.64 422.16 lo 687.84 424.80 lo 689.04 427.44 lo 694.08 424.56 lo 694.08 424.56 lo eofill st gr
-gs np 689.04 427.44 t 687.84 424.80 lo 682.32 427.20 lo 683.52 429.84 lo 689.04 427.44 lo 689.04 427.44 lo eofill st gr
-gs np 683.52 429.84 t 682.32 427.20 lo 676.80 429.12 lo 677.52 432.00 lo 683.52 429.84 lo 683.52 429.84 lo eofill st gr
-gs np 677.52 432.00 t 676.80 429.12 lo 670.56 430.80 lo 671.28 433.44 lo 677.52 432.00 lo 677.52 432.00 lo eofill st gr
-gs np 671.28 433.44 t 670.56 430.80 lo 664.32 432.00 lo 664.80 434.88 lo 671.28 433.44 lo 671.28 433.44 lo eofill st gr
-gs np 664.80 434.88 t 664.32 432.00 lo 657.84 432.72 lo 657.84 435.60 lo 664.80 434.88 lo 664.80 434.88 lo eofill st gr
-gs np 657.84 435.60 t 657.84 432.72 lo 650.88 432.96 lo 650.88 435.84 lo 657.84 435.60 lo 657.84 435.60 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 381.12 t 624.96 403.20 lo 677.52 403.20 lo 677.52 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412032> 624.96 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 280.08 185.52 t 363.36 185.52 lo 363.36 236.40 lo 280.08 236.40 lo 280.08 185.52 lo 280.08 185.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 278.64 184.32 t 281.52 186.96 lo 362.16 186.96 lo 364.80 184.32 lo 278.64 184.32 lo 278.64 184.32 lo eofill st gr
-gs np 364.80 184.32 t 362.16 186.96 lo 362.16 234.96 lo 364.80 237.60 lo 364.80 184.32 lo 364.80 184.32 lo eofill st gr
-gs np 364.80 237.60 t 362.16 234.96 lo 281.52 234.96 lo 278.64 237.60 lo 364.80 237.60 lo 364.80 237.60 lo eofill st gr
-gs np 278.64 237.60 t 281.52 234.96 lo 281.52 186.96 lo 278.64 184.32 lo 278.64 237.60 lo 278.64 237.60 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 287.28 200.16 t 287.28 222.24 lo 356.64 222.24 lo 356.64 200.16 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422041> 287.28 218.16 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 540.24 210.24 t 540.24 213.12 lo 569.76 213.12 lo 569.76 210.24 lo 540.24 210.24 lo 540.24 210.24 lo eofill st gr
-gs np 529.68 211.68 t 542.40 216.00 lo 542.40 207.36 lo 529.68 211.68 lo eofill st gr
-gs np 580.32 211.68 t 567.60 207.36 lo 567.60 216.00 lo 580.32 211.68 lo eofill st gr
-gs np 384.00 208.56 t 384.00 211.20 lo 413.76 211.20 lo 413.76 208.56 lo 384.00 208.56 lo 384.00 208.56 lo eofill st gr
-gs np 373.44 209.76 t 386.40 214.08 lo 386.40 205.68 lo 373.44 209.76 lo eofill st gr
-gs np 424.32 209.76 t 411.36 205.68 lo 411.36 214.08 lo 424.32 209.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 112.32 365.04 t 198.72 365.04 lo 198.72 418.80 lo 112.32 418.80 lo 112.32 365.04 lo 112.32 365.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 110.88 363.84 t 113.76 366.48 lo 197.52 366.48 lo 200.16 363.84 lo 110.88 363.84 lo 110.88 363.84 lo eofill st gr
-gs np 200.16 363.84 t 197.52 366.48 lo 197.52 417.36 lo 200.16 420.24 lo 200.16 363.84 lo 200.16 363.84 lo eofill st gr
-gs np 200.16 420.24 t 197.52 417.36 lo 113.76 417.36 lo 110.88 420.24 lo 200.16 420.24 lo 200.16 420.24 lo eofill st gr
-gs np 110.88 420.24 t 113.76 417.36 lo 113.76 366.48 lo 110.88 363.84 lo 110.88 420.24 lo 110.88 420.24 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 122.40 381.12 t 122.40 403.44 lo 189.12 403.44 lo 189.12 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<42726f77736572> 122.40 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 276.96 366.72 t 360.48 366.72 lo 360.48 417.36 lo 276.96 417.36 lo 276.96 366.72 lo 276.96 366.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 275.52 365.28 t 278.40 368.16 lo 359.04 368.16 lo 361.92 365.28 lo 275.52 365.28 lo 275.52 365.28 lo eofill st gr
-gs np 361.92 365.28 t 359.04 368.16 lo 359.04 415.92 lo 361.92 418.80 lo 361.92 365.28 lo 361.92 365.28 lo eofill st gr
-gs np 361.92 418.80 t 359.04 415.92 lo 278.40 415.92 lo 275.52 418.80 lo 361.92 418.80 lo 361.92 418.80 lo eofill st gr
-gs np 275.52 418.80 t 278.40 415.92 lo 278.40 368.16 lo 275.52 365.28 lo 275.52 418.80 lo 275.52 418.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 284.16 381.12 t 284.16 403.20 lo 353.76 403.20 lo 353.76 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422042> 284.16 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 215.52 339.12 t 217.92 340.80 lo 269.28 264.48 lo 266.88 262.80 lo 215.52 339.12 lo 215.52 339.12 lo eofill st gr
-gs np 210.72 348.72 t 221.52 340.56 lo 214.32 335.76 lo 210.72 348.72 lo eofill st gr
-gs np 274.08 254.88 t 263.28 263.04 lo 270.48 267.84 lo 274.08 254.88 lo eofill st gr
-gs np 129.84 292.56 t 129.84 295.44 lo 226.32 295.92 lo 226.32 293.04 lo 129.84 292.56 lo 129.84 292.56 lo eofill st gr
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 4 4
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<34> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<5457454220476174657761792d537769746368696e6720696e205072696e6369706c65204949> 155.28 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 660.72 293.76 t 660.72 296.64 lo 721.20 295.92 lo 721.20 293.04 lo 660.72 293.76 lo 660.72 293.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 110.88 255.60 t 110.88 277.92 lo 158.40 277.92 lo 158.40 255.60 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672041> 110.88 273.60 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 112.32 318.24 t 112.32 340.56 lo 159.84 340.56 lo 159.84 318.24 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672042> 112.32 336.24 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 437.28 187.92 t 518.40 187.92 lo 518.40 235.44 lo 437.28 235.44 lo 437.28 187.92 lo 437.28 187.92 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 435.84 186.48 t 438.72 189.36 lo 516.96 189.36 lo 519.84 186.48 lo 435.84 186.48 lo 435.84 186.48 lo eofill st gr
-gs np 519.84 186.48 t 516.96 189.36 lo 516.96 234.00 lo 519.84 236.88 lo 519.84 186.48 lo 519.84 186.48 lo eofill st gr
-gs np 519.84 236.88 t 516.96 234.00 lo 438.72 234.00 lo 435.84 236.88 lo 519.84 236.88 lo 519.84 236.88 lo eofill st gr
-gs np 435.84 236.88 t 438.72 234.00 lo 438.72 189.36 lo 435.84 186.48 lo 435.84 236.88 lo 435.84 236.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 447.84 200.88 t 447.84 222.96 lo 508.32 222.96 lo 508.32 200.88 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 447.84 218.88 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 439.44 368.88 t 520.56 368.88 lo 520.56 416.40 lo 439.44 416.40 lo 439.44 368.88 lo 439.44 368.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 438.00 367.44 t 440.88 370.32 lo 519.12 370.32 lo 522.00 367.44 lo 438.00 367.44 lo 438.00 367.44 lo eofill st gr
-gs np 522.00 367.44 t 519.12 370.32 lo 519.12 414.96 lo 522.00 417.84 lo 522.00 367.44 lo 522.00 367.44 lo eofill st gr
-gs np 522.00 417.84 t 519.12 414.96 lo 440.88 414.96 lo 438.00 417.84 lo 522.00 417.84 lo 522.00 417.84 lo eofill st gr
-gs np 438.00 417.84 t 440.88 414.96 lo 440.88 370.32 lo 438.00 367.44 lo 438.00 417.84 lo 438.00 417.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 450.00 381.84 t 450.00 403.92 lo 510.48 403.92 lo 510.48 381.84 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 450.00 399.84 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 256.32 t 644.16 256.08 lo 637.44 255.36 lo 630.96 254.16 lo 624.96 252.72 lo 618.96 250.56 lo 613.68 248.16 lo 608.64 245.52 lo 604.08 242.40 lo 600.00 239.04 lo 596.40 235.44 lo 593.28 231.36 lo 590.88 227.28 lo 589.20 222.96 lo 588.00 218.64 lo 587.76 213.84 lo 588.00 209.28 lo 589.20 204.72 lo 590.88 200.40 lo 593.28 196.32 lo 596.40 192.48 lo 600.00 188.88 lo 604.08 185.52 lo 608.64 182.40 lo 613.68 179.76 lo 618.96 177.36 lo 624.96 175.20 lo 630.96 173.52 lo 637.44 172.32 lo 644.16 171.60 lo 651.12 171.36 lo 657.84 171.60 lo 664.56 172.32 lo 671.04 173.52 lo 677.28 175.20 lo 683.04 177.36 lo 688.32 179.76 lo 693.36 182.40 lo 697.92 185.52 lo 702.24 188.88 lo 705.60 192.48 lo 708.72 196.32 lo 711.12 200.40 lo 712.80 204.72 lo 714.00 209.28 lo 714.48 213.84 lo 714.00 218.64 lo 712.80 222.96 lo 711.12 227.28 lo 708.72 231.36 lo 705.60 235.44 lo 702.24 239.04 lo 697.92 242.40 lo 693.36 245.52 lo 688.32 248.16 lo 683.04 250.56 lo 677.28 252.72 lo 671.04 254.16 lo 664.56 255.36 lo 657.84 256.08 lo 651.12 256.32 lo 651.12 256.32 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 257.76 t 651.12 254.88 lo 644.16 254.64 lo 643.92 257.52 lo 651.12 257.76 lo 651.12 257.76 lo eofill st gr
-gs np 643.92 257.52 t 644.16 254.64 lo 637.68 253.92 lo 637.20 256.80 lo 643.92 257.52 lo 643.92 257.52 lo eofill st gr
-gs np 637.20 256.80 t 637.68 253.92 lo 631.44 252.72 lo 630.72 255.60 lo 637.20 256.80 lo 637.20 256.80 lo eofill st gr
-gs np 630.72 255.60 t 631.44 252.72 lo 625.20 251.28 lo 624.48 253.92 lo 630.72 255.60 lo 630.72 255.60 lo eofill st gr
-gs np 624.48 253.92 t 625.20 251.28 lo 619.68 249.36 lo 618.48 252.00 lo 624.48 253.92 lo 624.48 253.92 lo eofill st gr
-gs np 618.48 252.00 t 619.68 249.36 lo 614.40 246.96 lo 612.96 249.36 lo 618.48 252.00 lo 618.48 252.00 lo eofill st gr
-gs np 612.96 249.36 t 614.40 246.96 lo 609.36 244.32 lo 607.92 246.72 lo 612.96 249.36 lo 612.96 249.36 lo eofill st gr
-gs np 607.92 246.72 t 609.36 244.32 lo 604.80 241.20 lo 603.12 243.60 lo 607.92 246.72 lo 607.92 246.72 lo eofill st gr
-gs np 603.12 243.60 t 604.80 241.20 lo 600.96 237.84 lo 599.04 240.00 lo 603.12 243.60 lo 603.12 243.60 lo eofill st gr
-gs np 599.04 240.00 t 600.96 237.84 lo 597.36 234.48 lo 595.20 236.40 lo 599.04 240.00 lo 599.04 240.00 lo eofill st gr
-gs np 595.20 236.40 t 597.36 234.48 lo 594.48 230.64 lo 592.08 232.32 lo 595.20 236.40 lo 595.20 236.40 lo eofill st gr
-gs np 592.08 232.32 t 594.48 230.64 lo 592.08 226.56 lo 589.68 228.00 lo 592.08 232.32 lo 592.08 232.32 lo eofill st gr
-gs np 589.68 228.00 t 592.08 226.56 lo 590.40 222.72 lo 587.76 223.44 lo 589.68 228.00 lo 589.68 228.00 lo eofill st gr
-gs np 587.76 223.44 t 590.40 222.72 lo 589.44 218.40 lo 586.56 218.64 lo 587.76 223.44 lo 587.76 223.44 lo eofill st gr
-gs np 586.56 218.64 t 589.44 218.40 lo 589.20 213.84 lo 586.32 213.84 lo 586.56 218.64 lo 586.56 218.64 lo eofill st gr
-gs np 586.32 213.84 t 589.20 213.84 lo 589.44 209.52 lo 586.56 209.04 lo 586.32 213.84 lo 586.32 213.84 lo eofill st gr
-gs np 586.56 209.04 t 589.44 209.52 lo 590.40 205.20 lo 587.76 204.48 lo 586.56 209.04 lo 586.56 209.04 lo eofill st gr
-gs np 587.76 204.48 t 590.40 205.20 lo 592.32 201.12 lo 589.68 199.92 lo 587.76 204.48 lo 587.76 204.48 lo eofill st gr
-gs np 589.68 199.92 t 592.32 201.12 lo 594.48 197.28 lo 592.08 195.60 lo 589.68 199.92 lo 589.68 199.92 lo eofill st gr
-gs np 592.08 195.60 t 594.48 197.28 lo 597.36 193.44 lo 595.20 191.52 lo 592.08 195.60 lo 592.08 195.60 lo eofill st gr
-gs np 595.20 191.52 t 597.36 193.44 lo 600.96 189.84 lo 599.04 187.68 lo 595.20 191.52 lo 595.20 191.52 lo eofill st gr
-gs np 599.04 187.68 t 600.96 189.84 lo 604.80 186.72 lo 603.12 184.32 lo 599.04 187.68 lo 599.04 187.68 lo eofill st gr
-gs np 603.12 184.32 t 604.80 186.72 lo 609.36 183.60 lo 607.92 181.20 lo 603.12 184.32 lo 603.12 184.32 lo eofill st gr
-gs np 607.92 181.20 t 609.36 183.60 lo 614.16 180.96 lo 612.96 178.32 lo 607.92 181.20 lo 607.92 181.20 lo eofill st gr
-gs np 612.96 178.32 t 614.16 180.96 lo 619.68 178.56 lo 618.48 175.92 lo 612.96 178.32 lo 612.96 178.32 lo eofill st gr
-gs np 618.48 175.92 t 619.68 178.56 lo 625.20 176.64 lo 624.48 173.76 lo 618.48 175.92 lo 618.48 175.92 lo eofill st gr
-gs np 624.48 173.76 t 625.20 176.64 lo 631.44 174.96 lo 630.72 172.32 lo 624.48 173.76 lo 624.48 173.76 lo eofill st gr
-gs np 630.72 172.32 t 631.44 174.96 lo 637.68 173.76 lo 637.20 171.12 lo 630.72 172.32 lo 630.72 172.32 lo eofill st gr
-gs np 637.20 171.12 t 637.68 173.76 lo 644.16 173.04 lo 644.16 170.40 lo 637.20 171.12 lo 637.20 171.12 lo eofill st gr
-gs np 644.16 170.40 t 644.16 173.04 lo 651.12 172.80 lo 651.12 170.16 lo 644.16 170.40 lo 644.16 170.40 lo eofill st gr
-gs np 651.12 170.16 t 651.12 172.80 lo 657.84 173.04 lo 658.08 170.16 lo 651.12 170.16 lo 651.12 170.16 lo eofill st gr
-gs np 658.08 170.16 t 657.84 173.04 lo 664.32 173.76 lo 664.80 171.12 lo 658.08 170.16 lo 658.08 170.16 lo eofill st gr
-gs np 664.80 171.12 t 664.32 173.76 lo 670.80 174.96 lo 671.28 172.32 lo 664.80 171.12 lo 664.80 171.12 lo eofill st gr
-gs np 671.28 172.32 t 670.80 174.96 lo 676.80 176.64 lo 677.52 174.00 lo 671.28 172.32 lo 671.28 172.32 lo eofill st gr
-gs np 677.52 174.00 t 676.80 176.64 lo 682.56 178.56 lo 683.52 175.92 lo 677.52 174.00 lo 677.52 174.00 lo eofill st gr
-gs np 683.52 175.92 t 682.56 178.56 lo 687.84 180.96 lo 689.04 178.32 lo 683.52 175.92 lo 683.52 175.92 lo eofill st gr
-gs np 689.04 178.32 t 687.84 180.96 lo 692.64 183.60 lo 694.08 181.20 lo 689.04 178.32 lo 689.04 178.32 lo eofill st gr
-gs np 694.08 181.20 t 692.64 183.60 lo 697.20 186.72 lo 698.88 184.32 lo 694.08 181.20 lo 694.08 181.20 lo eofill st gr
-gs np 698.88 184.32 t 697.20 186.72 lo 701.28 189.84 lo 703.20 187.92 lo 698.88 184.32 lo 698.88 184.32 lo eofill st gr
-gs np 703.20 187.92 t 701.28 189.84 lo 704.64 193.44 lo 706.80 191.52 lo 703.20 187.92 lo 703.20 187.92 lo eofill st gr
-gs np 706.80 191.52 t 704.64 193.44 lo 707.52 197.28 lo 709.92 195.60 lo 706.80 191.52 lo 706.80 191.52 lo eofill st gr
-gs np 709.92 195.60 t 707.52 197.28 lo 709.92 201.12 lo 712.32 199.92 lo 709.92 195.60 lo 709.92 195.60 lo eofill st gr
-gs np 712.32 199.92 t 709.92 201.12 lo 711.60 205.20 lo 714.24 204.48 lo 712.32 199.92 lo 712.32 199.92 lo eofill st gr
-gs np 714.24 204.48 t 711.60 205.20 lo 712.56 209.52 lo 715.44 209.04 lo 714.24 204.48 lo 714.24 204.48 lo eofill st gr
-gs np 715.44 209.04 t 712.56 209.52 lo 713.04 213.84 lo 715.92 214.08 lo 715.44 209.04 lo 715.44 209.04 lo eofill st gr
-gs np 715.92 214.08 t 713.04 213.84 lo 712.56 218.40 lo 715.44 218.88 lo 715.92 214.08 lo 715.92 214.08 lo eofill st gr
-gs np 715.44 218.88 t 712.56 218.40 lo 711.60 222.48 lo 714.24 223.44 lo 715.44 218.88 lo 715.44 218.88 lo eofill st gr
-gs np 714.24 223.44 t 711.60 222.48 lo 709.92 226.80 lo 712.32 228.00 lo 714.24 223.44 lo 714.24 223.44 lo eofill st gr
-gs np 712.32 228.00 t 709.92 226.80 lo 707.52 230.64 lo 709.92 232.32 lo 712.32 228.00 lo 712.32 228.00 lo eofill st gr
-gs np 709.92 232.32 t 707.52 230.64 lo 704.64 234.48 lo 706.80 236.16 lo 709.92 232.32 lo 709.92 232.32 lo eofill st gr
-gs np 706.80 236.16 t 704.64 234.48 lo 701.28 237.84 lo 703.20 240.00 lo 706.80 236.16 lo 706.80 236.16 lo eofill st gr
-gs np 703.20 240.00 t 701.28 237.84 lo 697.20 241.20 lo 698.88 243.60 lo 703.20 240.00 lo 703.20 240.00 lo eofill st gr
-gs np 698.88 243.60 t 697.20 241.20 lo 692.64 244.32 lo 694.08 246.72 lo 698.88 243.60 lo 698.88 243.60 lo eofill st gr
-gs np 694.08 246.72 t 692.64 244.32 lo 687.84 246.96 lo 689.04 249.36 lo 694.08 246.72 lo 694.08 246.72 lo eofill st gr
-gs np 689.04 249.36 t 687.84 246.96 lo 682.56 249.36 lo 683.52 252.00 lo 689.04 249.36 lo 689.04 249.36 lo eofill st gr
-gs np 683.52 252.00 t 682.56 249.36 lo 676.80 251.28 lo 677.52 253.92 lo 683.52 252.00 lo 683.52 252.00 lo eofill st gr
-gs np 677.52 253.92 t 676.80 251.28 lo 670.80 252.72 lo 671.28 255.60 lo 677.52 253.92 lo 677.52 253.92 lo eofill st gr
-gs np 671.28 255.60 t 670.80 252.72 lo 664.32 253.92 lo 664.80 256.80 lo 671.28 255.60 lo 671.28 255.60 lo eofill st gr
-gs np 664.80 256.80 t 664.32 253.92 lo 657.84 254.64 lo 658.08 257.52 lo 664.80 256.80 lo 664.80 256.80 lo eofill st gr
-gs np 658.08 257.52 t 657.84 254.64 lo 651.12 254.88 lo 651.12 257.76 lo 658.08 257.52 lo 658.08 257.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 203.04 t 624.96 225.36 lo 677.52 225.36 lo 677.52 203.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412031> 624.96 221.04 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 435.84 t 644.16 435.60 lo 637.44 434.88 lo 630.96 433.68 lo 624.96 432.00 lo 618.96 430.08 lo 613.68 427.68 lo 608.64 424.80 lo 604.08 421.92 lo 599.76 418.56 lo 596.40 414.72 lo 593.28 410.88 lo 590.88 406.80 lo 589.20 402.48 lo 588.00 397.92 lo 587.76 393.36 lo 588.00 388.80 lo 589.20 384.24 lo 590.88 379.92 lo 593.28 375.84 lo 596.40 372.00 lo 599.76 368.40 lo 604.08 365.04 lo 608.64 361.92 lo 613.68 359.04 lo 618.96 356.64 lo 624.96 354.72 lo 630.96 353.04 lo 637.44 351.84 lo 644.16 351.12 lo 651.12 350.88 lo 657.84 351.12 lo 664.56 351.84 lo 671.04 353.04 lo 677.04 354.72 lo 683.04 356.64 lo 688.32 359.04 lo 693.36 361.92 lo 697.92 365.04 lo 702.24 368.40 lo 705.60 372.00 lo 708.72 375.84 lo 711.12 379.92 lo 712.80 384.24 lo 714.00 388.80 lo 714.24 393.36 lo 714.00 397.92 lo 712.80 402.48 lo 711.12 406.80 lo 708.72 410.88 lo 705.60 414.72 lo 702.24 418.56 lo 697.92 421.92 lo 693.36 424.80 lo 688.32 427.68 lo 683.04 430.08 lo 677.04 432.00 lo 671.04 433.68 lo 664.56 434.88 lo 657.84 435.60 lo 651.12 435.84 lo 651.12 435.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 437.28 t 651.12 434.40 lo 644.16 434.16 lo 643.92 437.04 lo 651.12 437.28 lo 651.12 437.28 lo eofill st gr
-gs np 643.92 437.04 t 644.16 434.16 lo 637.68 433.44 lo 637.20 436.32 lo 643.92 437.04 lo 643.92 437.04 lo eofill st gr
-gs np 637.20 436.32 t 637.68 433.44 lo 631.20 432.24 lo 630.72 435.12 lo 637.20 436.32 lo 637.20 436.32 lo eofill st gr
-gs np 630.72 435.12 t 631.20 432.24 lo 625.20 430.80 lo 624.48 433.44 lo 630.72 435.12 lo 630.72 435.12 lo eofill st gr
-gs np 624.48 433.44 t 625.20 430.80 lo 619.68 428.64 lo 618.48 431.28 lo 624.48 433.44 lo 624.48 433.44 lo eofill st gr
-gs np 618.48 431.28 t 619.68 428.64 lo 614.16 426.24 lo 612.96 428.88 lo 618.48 431.28 lo 618.48 431.28 lo eofill st gr
-gs np 612.96 428.88 t 614.16 426.24 lo 609.36 423.60 lo 607.92 426.24 lo 612.96 428.88 lo 612.96 428.88 lo eofill st gr
-gs np 607.92 426.24 t 609.36 423.60 lo 604.80 420.72 lo 603.12 422.88 lo 607.92 426.24 lo 607.92 426.24 lo eofill st gr
-gs np 603.12 422.88 t 604.80 420.72 lo 600.96 417.36 lo 599.04 419.52 lo 603.12 422.88 lo 603.12 422.88 lo eofill st gr
-gs np 599.04 419.52 t 600.96 417.36 lo 597.36 413.76 lo 595.20 415.68 lo 599.04 419.52 lo 599.04 419.52 lo eofill st gr
-gs np 595.20 415.68 t 597.36 413.76 lo 594.48 410.16 lo 592.08 411.60 lo 595.20 415.68 lo 595.20 415.68 lo eofill st gr
-gs np 592.08 411.60 t 594.48 410.16 lo 592.08 406.08 lo 589.68 407.52 lo 592.08 411.60 lo 592.08 411.60 lo eofill st gr
-gs np 589.68 407.52 t 592.08 406.08 lo 590.40 402.00 lo 587.76 402.96 lo 589.68 407.52 lo 589.68 407.52 lo eofill st gr
-gs np 587.76 402.96 t 590.40 402.00 lo 589.44 397.68 lo 586.56 398.16 lo 587.76 402.96 lo 587.76 402.96 lo eofill st gr
-gs np 586.56 398.16 t 589.44 397.68 lo 589.20 393.36 lo 586.32 393.36 lo 586.56 398.16 lo 586.56 398.16 lo eofill st gr
-gs np 586.32 393.36 t 589.20 393.36 lo 589.44 389.04 lo 586.56 388.56 lo 586.32 393.36 lo 586.32 393.36 lo eofill st gr
-gs np 586.56 388.56 t 589.44 389.04 lo 590.40 384.72 lo 587.76 383.76 lo 586.56 388.56 lo 586.56 388.56 lo eofill st gr
-gs np 587.76 383.76 t 590.40 384.72 lo 592.08 380.64 lo 589.68 379.44 lo 587.76 383.76 lo 587.76 383.76 lo eofill st gr
-gs np 589.68 379.44 t 592.08 380.64 lo 594.48 376.56 lo 592.08 375.12 lo 589.68 379.44 lo 589.68 379.44 lo eofill st gr
-gs np 592.08 375.12 t 594.48 376.56 lo 597.36 372.96 lo 595.20 371.04 lo 592.08 375.12 lo 592.08 375.12 lo eofill st gr
-gs np 595.20 371.04 t 597.36 372.96 lo 600.96 369.36 lo 598.80 367.20 lo 595.20 371.04 lo 595.20 371.04 lo eofill st gr
-gs np 598.80 367.20 t 600.96 369.36 lo 604.80 366.00 lo 603.12 363.84 lo 598.80 367.20 lo 598.80 367.20 lo eofill st gr
-gs np 603.12 363.84 t 604.80 366.00 lo 609.36 363.12 lo 607.92 360.72 lo 603.12 363.84 lo 603.12 363.84 lo eofill st gr
-gs np 607.92 360.72 t 609.36 363.12 lo 614.16 360.48 lo 612.96 357.84 lo 607.92 360.72 lo 607.92 360.72 lo eofill st gr
-gs np 612.96 357.84 t 614.16 360.48 lo 619.68 358.08 lo 618.48 355.44 lo 612.96 357.84 lo 612.96 357.84 lo eofill st gr
-gs np 618.48 355.44 t 619.68 358.08 lo 625.20 356.16 lo 624.48 353.28 lo 618.48 355.44 lo 618.48 355.44 lo eofill st gr
-gs np 624.48 353.28 t 625.20 356.16 lo 631.20 354.48 lo 630.72 351.84 lo 624.48 353.28 lo 624.48 353.28 lo eofill st gr
-gs np 630.72 351.84 t 631.20 354.48 lo 637.68 353.28 lo 637.20 350.40 lo 630.72 351.84 lo 630.72 351.84 lo eofill st gr
-gs np 637.20 350.40 t 637.68 353.28 lo 644.16 352.56 lo 643.92 349.68 lo 637.20 350.40 lo 637.20 350.40 lo eofill st gr
-gs np 643.92 349.68 t 644.16 352.56 lo 651.12 352.32 lo 651.12 349.44 lo 643.92 349.68 lo 643.92 349.68 lo eofill st gr
-gs np 651.12 349.44 t 651.12 352.32 lo 657.84 352.56 lo 658.08 349.68 lo 651.12 349.44 lo 651.12 349.44 lo eofill st gr
-gs np 658.08 349.68 t 657.84 352.56 lo 664.32 353.28 lo 664.80 350.40 lo 658.08 349.68 lo 658.08 349.68 lo eofill st gr
-gs np 664.80 350.40 t 664.32 353.28 lo 670.80 354.48 lo 671.28 351.60 lo 664.80 350.40 lo 664.80 350.40 lo eofill st gr
-gs np 671.28 351.60 t 670.80 354.48 lo 676.80 356.16 lo 677.52 353.28 lo 671.28 351.60 lo 671.28 351.60 lo eofill st gr
-gs np 677.52 353.28 t 676.80 356.16 lo 682.32 358.08 lo 683.52 355.44 lo 677.52 353.28 lo 677.52 353.28 lo eofill st gr
-gs np 683.52 355.44 t 682.32 358.08 lo 687.84 360.48 lo 689.04 357.84 lo 683.52 355.44 lo 683.52 355.44 lo eofill st gr
-gs np 689.04 357.84 t 687.84 360.48 lo 692.64 363.12 lo 694.08 360.72 lo 689.04 357.84 lo 689.04 357.84 lo eofill st gr
-gs np 694.08 360.72 t 692.64 363.12 lo 697.20 366.00 lo 698.88 363.84 lo 694.08 360.72 lo 694.08 360.72 lo eofill st gr
-gs np 698.88 363.84 t 697.20 366.00 lo 701.04 369.36 lo 702.96 367.20 lo 698.88 363.84 lo 698.88 363.84 lo eofill st gr
-gs np 702.96 367.20 t 701.04 369.36 lo 704.64 372.96 lo 706.80 371.04 lo 702.96 367.20 lo 702.96 367.20 lo eofill st gr
-gs np 706.80 371.04 t 704.64 372.96 lo 707.52 376.56 lo 709.92 375.12 lo 706.80 371.04 lo 706.80 371.04 lo eofill st gr
-gs np 709.92 375.12 t 707.52 376.56 lo 709.92 380.64 lo 712.32 379.44 lo 709.92 375.12 lo 709.92 375.12 lo eofill st gr
-gs np 712.32 379.44 t 709.92 380.64 lo 711.60 384.72 lo 714.24 383.76 lo 712.32 379.44 lo 712.32 379.44 lo eofill st gr
-gs np 714.24 383.76 t 711.60 384.72 lo 712.56 389.04 lo 715.44 388.56 lo 714.24 383.76 lo 714.24 383.76 lo eofill st gr
-gs np 715.44 388.56 t 712.56 389.04 lo 713.04 393.36 lo 715.68 393.36 lo 715.44 388.56 lo 715.44 388.56 lo eofill st gr
-gs np 715.68 393.36 t 713.04 393.36 lo 712.56 397.68 lo 715.44 398.16 lo 715.68 393.36 lo 715.68 393.36 lo eofill st gr
-gs np 715.44 398.16 t 712.56 397.68 lo 711.60 402.00 lo 714.24 402.96 lo 715.44 398.16 lo 715.44 398.16 lo eofill st gr
-gs np 714.24 402.96 t 711.60 402.00 lo 709.92 406.08 lo 712.32 407.52 lo 714.24 402.96 lo 714.24 402.96 lo eofill st gr
-gs np 712.32 407.52 t 709.92 406.08 lo 707.52 410.16 lo 709.92 411.60 lo 712.32 407.52 lo 712.32 407.52 lo eofill st gr
-gs np 709.92 411.60 t 707.52 410.16 lo 704.64 413.76 lo 706.80 415.68 lo 709.92 411.60 lo 709.92 411.60 lo eofill st gr
-gs np 706.80 415.68 t 704.64 413.76 lo 701.04 417.36 lo 703.20 419.52 lo 706.80 415.68 lo 706.80 415.68 lo eofill st gr
-gs np 703.20 419.52 t 701.04 417.36 lo 697.20 420.72 lo 698.88 422.88 lo 703.20 419.52 lo 703.20 419.52 lo eofill st gr
-gs np 698.88 422.88 t 697.20 420.72 lo 692.64 423.60 lo 694.08 426.00 lo 698.88 422.88 lo 698.88 422.88 lo eofill st gr
-gs np 694.08 426.00 t 692.64 423.60 lo 687.84 426.24 lo 689.04 428.88 lo 694.08 426.00 lo 694.08 426.00 lo eofill st gr
-gs np 689.04 428.88 t 687.84 426.24 lo 682.32 428.64 lo 683.52 431.28 lo 689.04 428.88 lo 689.04 428.88 lo eofill st gr
-gs np 683.52 431.28 t 682.32 428.64 lo 676.80 430.80 lo 677.52 433.44 lo 683.52 431.28 lo 683.52 431.28 lo eofill st gr
-gs np 677.52 433.44 t 676.80 430.80 lo 670.80 432.24 lo 671.28 435.12 lo 677.52 433.44 lo 677.52 433.44 lo eofill st gr
-gs np 671.28 435.12 t 670.80 432.24 lo 664.32 433.44 lo 664.80 436.32 lo 671.28 435.12 lo 671.28 435.12 lo eofill st gr
-gs np 664.80 436.32 t 664.32 433.44 lo 657.84 434.16 lo 658.08 437.04 lo 664.80 436.32 lo 664.80 436.32 lo eofill st gr
-gs np 658.08 437.04 t 657.84 434.16 lo 651.12 434.40 lo 651.12 437.28 lo 658.08 437.04 lo 658.08 437.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 382.56 t 624.96 404.88 lo 677.52 404.88 lo 677.52 382.56 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412032> 624.96 400.56 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 280.08 185.52 t 363.36 185.52 lo 363.36 236.40 lo 280.08 236.40 lo 280.08 185.52 lo 280.08 185.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 278.64 184.32 t 281.52 186.96 lo 362.16 186.96 lo 364.80 184.32 lo 278.64 184.32 lo 278.64 184.32 lo eofill st gr
-gs np 364.80 184.32 t 362.16 186.96 lo 362.16 234.96 lo 364.80 237.60 lo 364.80 184.32 lo 364.80 184.32 lo eofill st gr
-gs np 364.80 237.60 t 362.16 234.96 lo 281.52 234.96 lo 278.64 237.60 lo 364.80 237.60 lo 364.80 237.60 lo eofill st gr
-gs np 278.64 237.60 t 281.52 234.96 lo 281.52 186.96 lo 278.64 184.32 lo 278.64 237.60 lo 278.64 237.60 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 287.28 200.16 t 287.28 222.24 lo 356.64 222.24 lo 356.64 200.16 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422041> 287.28 218.16 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 540.24 210.24 t 540.24 213.12 lo 569.76 213.12 lo 569.76 210.24 lo 540.24 210.24 lo 540.24 210.24 lo eofill st gr
-gs np 529.68 211.68 t 542.40 216.00 lo 542.40 207.36 lo 529.68 211.68 lo eofill st gr
-gs np 580.32 211.68 t 567.60 207.36 lo 567.60 216.00 lo 580.32 211.68 lo eofill st gr
-gs np 384.00 208.56 t 384.00 211.20 lo 413.76 211.20 lo 413.76 208.56 lo 384.00 208.56 lo 384.00 208.56 lo eofill st gr
-gs np 373.44 209.76 t 386.40 214.08 lo 386.40 205.68 lo 373.44 209.76 lo eofill st gr
-gs np 424.32 209.76 t 411.36 205.68 lo 411.36 214.08 lo 424.32 209.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 112.32 365.04 t 198.72 365.04 lo 198.72 418.80 lo 112.32 418.80 lo 112.32 365.04 lo 112.32 365.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 110.88 363.84 t 113.76 366.48 lo 197.52 366.48 lo 200.16 363.84 lo 110.88 363.84 lo 110.88 363.84 lo eofill st gr
-gs np 200.16 363.84 t 197.52 366.48 lo 197.52 417.36 lo 200.16 420.24 lo 200.16 363.84 lo 200.16 363.84 lo eofill st gr
-gs np 200.16 420.24 t 197.52 417.36 lo 113.76 417.36 lo 110.88 420.24 lo 200.16 420.24 lo 200.16 420.24 lo eofill st gr
-gs np 110.88 420.24 t 113.76 417.36 lo 113.76 366.48 lo 110.88 363.84 lo 110.88 420.24 lo 110.88 420.24 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 122.40 381.12 t 122.40 403.44 lo 189.12 403.44 lo 189.12 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<42726f77736572> 122.40 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 276.96 366.72 t 360.48 366.72 lo 360.48 417.36 lo 276.96 417.36 lo 276.96 366.72 lo 276.96 366.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 275.52 365.28 t 278.40 368.16 lo 359.04 368.16 lo 361.92 365.28 lo 275.52 365.28 lo 275.52 365.28 lo eofill st gr
-gs np 361.92 365.28 t 359.04 368.16 lo 359.04 415.92 lo 361.92 418.80 lo 361.92 365.28 lo 361.92 365.28 lo eofill st gr
-gs np 361.92 418.80 t 359.04 415.92 lo 278.40 415.92 lo 275.52 418.80 lo 361.92 418.80 lo 361.92 418.80 lo eofill st gr
-gs np 275.52 418.80 t 278.40 415.92 lo 278.40 368.16 lo 275.52 365.28 lo 275.52 418.80 lo 275.52 418.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 284.16 381.12 t 284.16 403.20 lo 353.76 403.20 lo 353.76 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422042> 284.16 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 215.52 339.12 t 217.92 340.80 lo 269.28 264.48 lo 266.88 262.80 lo 215.52 339.12 lo 215.52 339.12 lo eofill st gr
-gs np 210.72 348.72 t 221.52 340.56 lo 214.32 335.76 lo 210.72 348.72 lo eofill st gr
-gs np 274.08 254.88 t 263.28 263.04 lo 270.48 267.84 lo 274.08 254.88 lo eofill st gr
-gs np 129.84 292.56 t 129.84 295.44 lo 226.32 295.92 lo 226.32 293.04 lo 129.84 292.56 lo 129.84 292.56 lo eofill st gr
-gs np 652.56 278.16 t 649.68 278.16 lo 649.68 330.72 lo 652.56 330.72 lo 652.56 278.16 lo 652.56 278.16 lo eofill st gr
-gs np 651.12 267.60 t 646.80 280.32 lo 655.20 280.32 lo 651.12 267.60 lo eofill st gr
-gs np 651.12 337.68 t 646.80 329.04 lo 655.20 329.04 lo 651.12 337.68 lo 651.12 337.68 lo eofill st gr
-gs np 274.56 293.28 t 274.56 296.16 lo 637.68 295.92 lo 637.68 293.04 lo 274.56 293.28 lo 274.56 293.28 lo eofill st gr
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 5 5
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<35> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<5457454220476174657761792d537769746368696e6720696e205072696e6369706c6520494949> 151.20 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 660.72 293.76 t 660.72 296.64 lo 721.20 295.92 lo 721.20 293.04 lo 660.72 293.76 lo 660.72 293.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 110.88 255.60 t 110.88 277.92 lo 158.40 277.92 lo 158.40 255.60 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672041> 110.88 273.60 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 112.32 318.24 t 112.32 340.56 lo 159.84 340.56 lo 159.84 318.24 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4f72672042> 112.32 336.24 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 437.28 187.92 t 518.40 187.92 lo 518.40 235.44 lo 437.28 235.44 lo 437.28 187.92 lo 437.28 187.92 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 435.84 186.48 t 438.72 189.36 lo 516.96 189.36 lo 519.84 186.48 lo 435.84 186.48 lo 435.84 186.48 lo eofill st gr
-gs np 519.84 186.48 t 516.96 189.36 lo 516.96 234.00 lo 519.84 236.88 lo 519.84 186.48 lo 519.84 186.48 lo eofill st gr
-gs np 519.84 236.88 t 516.96 234.00 lo 438.72 234.00 lo 435.84 236.88 lo 519.84 236.88 lo 519.84 236.88 lo eofill st gr
-gs np 435.84 236.88 t 438.72 234.00 lo 438.72 189.36 lo 435.84 186.48 lo 435.84 236.88 lo 435.84 236.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 447.84 200.88 t 447.84 222.96 lo 508.32 222.96 lo 508.32 200.88 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 447.84 218.88 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 439.44 368.88 t 520.56 368.88 lo 520.56 416.40 lo 439.44 416.40 lo 439.44 368.88 lo 439.44 368.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 438.00 367.44 t 440.88 370.32 lo 519.12 370.32 lo 522.00 367.44 lo 438.00 367.44 lo 438.00 367.44 lo eofill st gr
-gs np 522.00 367.44 t 519.12 370.32 lo 519.12 414.96 lo 522.00 417.84 lo 522.00 367.44 lo 522.00 367.44 lo eofill st gr
-gs np 522.00 417.84 t 519.12 414.96 lo 440.88 414.96 lo 438.00 417.84 lo 522.00 417.84 lo 522.00 417.84 lo eofill st gr
-gs np 438.00 417.84 t 440.88 414.96 lo 440.88 370.32 lo 438.00 367.44 lo 438.00 417.84 lo 438.00 417.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 450.00 381.84 t 450.00 403.92 lo 510.48 403.92 lo 510.48 381.84 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4c44415044> 450.00 399.84 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 256.32 t 644.16 256.08 lo 637.44 255.36 lo 630.96 254.16 lo 624.96 252.72 lo 618.96 250.56 lo 613.68 248.16 lo 608.64 245.52 lo 604.08 242.40 lo 600.00 239.04 lo 596.40 235.44 lo 593.28 231.36 lo 590.88 227.28 lo 589.20 222.96 lo 588.00 218.64 lo 587.76 213.84 lo 588.00 209.28 lo 589.20 204.72 lo 590.88 200.40 lo 593.28 196.32 lo 596.40 192.48 lo 600.00 188.88 lo 604.08 185.52 lo 608.64 182.40 lo 613.68 179.76 lo 618.96 177.36 lo 624.96 175.20 lo 630.96 173.52 lo 637.44 172.32 lo 644.16 171.60 lo 651.12 171.36 lo 657.84 171.60 lo 664.56 172.32 lo 671.04 173.52 lo 677.28 175.20 lo 683.04 177.36 lo 688.32 179.76 lo 693.36 182.40 lo 697.92 185.52 lo 702.24 188.88 lo 705.60 192.48 lo 708.72 196.32 lo 711.12 200.40 lo 712.80 204.72 lo 714.00 209.28 lo 714.48 213.84 lo 714.00 218.64 lo 712.80 222.96 lo 711.12 227.28 lo 708.72 231.36 lo 705.60 235.44 lo 702.24 239.04 lo 697.92 242.40 lo 693.36 245.52 lo 688.32 248.16 lo 683.04 250.56 lo 677.28 252.72 lo 671.04 254.16 lo 664.56 255.36 lo 657.84 256.08 lo 651.12 256.32 lo 651.12 256.32 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 651.12 257.76 t 651.12 254.88 lo 644.16 254.64 lo 643.92 257.52 lo 651.12 257.76 lo 651.12 257.76 lo eofill st gr
-gs np 643.92 257.52 t 644.16 254.64 lo 637.68 253.92 lo 637.20 256.80 lo 643.92 257.52 lo 643.92 257.52 lo eofill st gr
-gs np 637.20 256.80 t 637.68 253.92 lo 631.44 252.72 lo 630.72 255.60 lo 637.20 256.80 lo 637.20 256.80 lo eofill st gr
-gs np 630.72 255.60 t 631.44 252.72 lo 625.20 251.28 lo 624.48 253.92 lo 630.72 255.60 lo 630.72 255.60 lo eofill st gr
-gs np 624.48 253.92 t 625.20 251.28 lo 619.68 249.36 lo 618.48 252.00 lo 624.48 253.92 lo 624.48 253.92 lo eofill st gr
-gs np 618.48 252.00 t 619.68 249.36 lo 614.40 246.96 lo 612.96 249.36 lo 618.48 252.00 lo 618.48 252.00 lo eofill st gr
-gs np 612.96 249.36 t 614.40 246.96 lo 609.36 244.32 lo 607.92 246.72 lo 612.96 249.36 lo 612.96 249.36 lo eofill st gr
-gs np 607.92 246.72 t 609.36 244.32 lo 604.80 241.20 lo 603.12 243.60 lo 607.92 246.72 lo 607.92 246.72 lo eofill st gr
-gs np 603.12 243.60 t 604.80 241.20 lo 600.96 237.84 lo 599.04 240.00 lo 603.12 243.60 lo 603.12 243.60 lo eofill st gr
-gs np 599.04 240.00 t 600.96 237.84 lo 597.36 234.48 lo 595.20 236.40 lo 599.04 240.00 lo 599.04 240.00 lo eofill st gr
-gs np 595.20 236.40 t 597.36 234.48 lo 594.48 230.64 lo 592.08 232.32 lo 595.20 236.40 lo 595.20 236.40 lo eofill st gr
-gs np 592.08 232.32 t 594.48 230.64 lo 592.08 226.56 lo 589.68 228.00 lo 592.08 232.32 lo 592.08 232.32 lo eofill st gr
-gs np 589.68 228.00 t 592.08 226.56 lo 590.40 222.72 lo 587.76 223.44 lo 589.68 228.00 lo 589.68 228.00 lo eofill st gr
-gs np 587.76 223.44 t 590.40 222.72 lo 589.44 218.40 lo 586.56 218.64 lo 587.76 223.44 lo 587.76 223.44 lo eofill st gr
-gs np 586.56 218.64 t 589.44 218.40 lo 589.20 213.84 lo 586.32 213.84 lo 586.56 218.64 lo 586.56 218.64 lo eofill st gr
-gs np 586.32 213.84 t 589.20 213.84 lo 589.44 209.52 lo 586.56 209.04 lo 586.32 213.84 lo 586.32 213.84 lo eofill st gr
-gs np 586.56 209.04 t 589.44 209.52 lo 590.40 205.20 lo 587.76 204.48 lo 586.56 209.04 lo 586.56 209.04 lo eofill st gr
-gs np 587.76 204.48 t 590.40 205.20 lo 592.32 201.12 lo 589.68 199.92 lo 587.76 204.48 lo 587.76 204.48 lo eofill st gr
-gs np 589.68 199.92 t 592.32 201.12 lo 594.48 197.28 lo 592.08 195.60 lo 589.68 199.92 lo 589.68 199.92 lo eofill st gr
-gs np 592.08 195.60 t 594.48 197.28 lo 597.36 193.44 lo 595.20 191.52 lo 592.08 195.60 lo 592.08 195.60 lo eofill st gr
-gs np 595.20 191.52 t 597.36 193.44 lo 600.96 189.84 lo 599.04 187.68 lo 595.20 191.52 lo 595.20 191.52 lo eofill st gr
-gs np 599.04 187.68 t 600.96 189.84 lo 604.80 186.72 lo 603.12 184.32 lo 599.04 187.68 lo 599.04 187.68 lo eofill st gr
-gs np 603.12 184.32 t 604.80 186.72 lo 609.36 183.60 lo 607.92 181.20 lo 603.12 184.32 lo 603.12 184.32 lo eofill st gr
-gs np 607.92 181.20 t 609.36 183.60 lo 614.16 180.96 lo 612.96 178.32 lo 607.92 181.20 lo 607.92 181.20 lo eofill st gr
-gs np 612.96 178.32 t 614.16 180.96 lo 619.68 178.56 lo 618.48 175.92 lo 612.96 178.32 lo 612.96 178.32 lo eofill st gr
-gs np 618.48 175.92 t 619.68 178.56 lo 625.20 176.64 lo 624.48 173.76 lo 618.48 175.92 lo 618.48 175.92 lo eofill st gr
-gs np 624.48 173.76 t 625.20 176.64 lo 631.44 174.96 lo 630.72 172.32 lo 624.48 173.76 lo 624.48 173.76 lo eofill st gr
-gs np 630.72 172.32 t 631.44 174.96 lo 637.68 173.76 lo 637.20 171.12 lo 630.72 172.32 lo 630.72 172.32 lo eofill st gr
-gs np 637.20 171.12 t 637.68 173.76 lo 644.16 173.04 lo 644.16 170.40 lo 637.20 171.12 lo 637.20 171.12 lo eofill st gr
-gs np 644.16 170.40 t 644.16 173.04 lo 651.12 172.80 lo 651.12 170.16 lo 644.16 170.40 lo 644.16 170.40 lo eofill st gr
-gs np 651.12 170.16 t 651.12 172.80 lo 657.84 173.04 lo 658.08 170.16 lo 651.12 170.16 lo 651.12 170.16 lo eofill st gr
-gs np 658.08 170.16 t 657.84 173.04 lo 664.32 173.76 lo 664.80 171.12 lo 658.08 170.16 lo 658.08 170.16 lo eofill st gr
-gs np 664.80 171.12 t 664.32 173.76 lo 670.80 174.96 lo 671.28 172.32 lo 664.80 171.12 lo 664.80 171.12 lo eofill st gr
-gs np 671.28 172.32 t 670.80 174.96 lo 676.80 176.64 lo 677.52 174.00 lo 671.28 172.32 lo 671.28 172.32 lo eofill st gr
-gs np 677.52 174.00 t 676.80 176.64 lo 682.56 178.56 lo 683.52 175.92 lo 677.52 174.00 lo 677.52 174.00 lo eofill st gr
-gs np 683.52 175.92 t 682.56 178.56 lo 687.84 180.96 lo 689.04 178.32 lo 683.52 175.92 lo 683.52 175.92 lo eofill st gr
-gs np 689.04 178.32 t 687.84 180.96 lo 692.64 183.60 lo 694.08 181.20 lo 689.04 178.32 lo 689.04 178.32 lo eofill st gr
-gs np 694.08 181.20 t 692.64 183.60 lo 697.20 186.72 lo 698.88 184.32 lo 694.08 181.20 lo 694.08 181.20 lo eofill st gr
-gs np 698.88 184.32 t 697.20 186.72 lo 701.28 189.84 lo 703.20 187.92 lo 698.88 184.32 lo 698.88 184.32 lo eofill st gr
-gs np 703.20 187.92 t 701.28 189.84 lo 704.64 193.44 lo 706.80 191.52 lo 703.20 187.92 lo 703.20 187.92 lo eofill st gr
-gs np 706.80 191.52 t 704.64 193.44 lo 707.52 197.28 lo 709.92 195.60 lo 706.80 191.52 lo 706.80 191.52 lo eofill st gr
-gs np 709.92 195.60 t 707.52 197.28 lo 709.92 201.12 lo 712.32 199.92 lo 709.92 195.60 lo 709.92 195.60 lo eofill st gr
-gs np 712.32 199.92 t 709.92 201.12 lo 711.60 205.20 lo 714.24 204.48 lo 712.32 199.92 lo 712.32 199.92 lo eofill st gr
-gs np 714.24 204.48 t 711.60 205.20 lo 712.56 209.52 lo 715.44 209.04 lo 714.24 204.48 lo 714.24 204.48 lo eofill st gr
-gs np 715.44 209.04 t 712.56 209.52 lo 713.04 213.84 lo 715.92 214.08 lo 715.44 209.04 lo 715.44 209.04 lo eofill st gr
-gs np 715.92 214.08 t 713.04 213.84 lo 712.56 218.40 lo 715.44 218.88 lo 715.92 214.08 lo 715.92 214.08 lo eofill st gr
-gs np 715.44 218.88 t 712.56 218.40 lo 711.60 222.48 lo 714.24 223.44 lo 715.44 218.88 lo 715.44 218.88 lo eofill st gr
-gs np 714.24 223.44 t 711.60 222.48 lo 709.92 226.80 lo 712.32 228.00 lo 714.24 223.44 lo 714.24 223.44 lo eofill st gr
-gs np 712.32 228.00 t 709.92 226.80 lo 707.52 230.64 lo 709.92 232.32 lo 712.32 228.00 lo 712.32 228.00 lo eofill st gr
-gs np 709.92 232.32 t 707.52 230.64 lo 704.64 234.48 lo 706.80 236.16 lo 709.92 232.32 lo 709.92 232.32 lo eofill st gr
-gs np 706.80 236.16 t 704.64 234.48 lo 701.28 237.84 lo 703.20 240.00 lo 706.80 236.16 lo 706.80 236.16 lo eofill st gr
-gs np 703.20 240.00 t 701.28 237.84 lo 697.20 241.20 lo 698.88 243.60 lo 703.20 240.00 lo 703.20 240.00 lo eofill st gr
-gs np 698.88 243.60 t 697.20 241.20 lo 692.64 244.32 lo 694.08 246.72 lo 698.88 243.60 lo 698.88 243.60 lo eofill st gr
-gs np 694.08 246.72 t 692.64 244.32 lo 687.84 246.96 lo 689.04 249.36 lo 694.08 246.72 lo 694.08 246.72 lo eofill st gr
-gs np 689.04 249.36 t 687.84 246.96 lo 682.56 249.36 lo 683.52 252.00 lo 689.04 249.36 lo 689.04 249.36 lo eofill st gr
-gs np 683.52 252.00 t 682.56 249.36 lo 676.80 251.28 lo 677.52 253.92 lo 683.52 252.00 lo 683.52 252.00 lo eofill st gr
-gs np 677.52 253.92 t 676.80 251.28 lo 670.80 252.72 lo 671.28 255.60 lo 677.52 253.92 lo 677.52 253.92 lo eofill st gr
-gs np 671.28 255.60 t 670.80 252.72 lo 664.32 253.92 lo 664.80 256.80 lo 671.28 255.60 lo 671.28 255.60 lo eofill st gr
-gs np 664.80 256.80 t 664.32 253.92 lo 657.84 254.64 lo 658.08 257.52 lo 664.80 256.80 lo 664.80 256.80 lo eofill st gr
-gs np 658.08 257.52 t 657.84 254.64 lo 651.12 254.88 lo 651.12 257.76 lo 658.08 257.52 lo 658.08 257.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 203.04 t 624.96 225.36 lo 677.52 225.36 lo 677.52 203.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412031> 624.96 221.04 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 650.88 435.12 t 644.16 434.88 lo 637.44 434.16 lo 630.96 432.96 lo 624.72 431.28 lo 618.96 429.36 lo 613.68 426.96 lo 608.64 424.08 lo 604.08 421.20 lo 599.76 417.60 lo 596.40 414.00 lo 593.28 410.16 lo 590.88 406.08 lo 589.20 401.76 lo 588.00 397.20 lo 587.76 392.64 lo 588.00 388.08 lo 589.20 383.52 lo 590.88 379.20 lo 593.28 375.12 lo 596.40 371.28 lo 599.76 367.68 lo 604.08 364.08 lo 608.64 361.20 lo 613.68 358.32 lo 618.96 355.92 lo 624.72 354.00 lo 630.96 352.32 lo 637.44 351.12 lo 644.16 350.40 lo 650.88 350.16 lo 657.84 350.40 lo 664.56 351.12 lo 671.04 352.32 lo 677.04 354.00 lo 683.04 355.92 lo 688.32 358.32 lo 693.36 361.20 lo 697.92 364.08 lo 702.00 367.68 lo 705.60 371.28 lo 708.72 375.12 lo 711.12 379.20 lo 712.80 383.52 lo 714.00 388.08 lo 714.24 392.64 lo 714.00 397.20 lo 712.80 401.76 lo 711.12 406.08 lo 708.72 410.16 lo 705.60 414.00 lo 702.00 417.60 lo 697.92 421.20 lo 693.36 424.08 lo 688.32 426.96 lo 683.04 429.36 lo 677.04 431.28 lo 671.04 432.96 lo 664.56 434.16 lo 657.84 434.88 lo 650.88 435.12 lo 650.88 435.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 650.88 436.56 t 650.88 433.68 lo 644.16 433.44 lo 643.92 436.32 lo 650.88 436.56 lo 650.88 436.56 lo eofill st gr
-gs np 643.92 436.32 t 644.16 433.44 lo 637.68 432.72 lo 637.20 435.60 lo 643.92 436.32 lo 643.92 436.32 lo eofill st gr
-gs np 637.20 435.60 t 637.68 432.72 lo 631.20 431.52 lo 630.72 434.40 lo 637.20 435.60 lo 637.20 435.60 lo eofill st gr
-gs np 630.72 434.40 t 631.20 431.52 lo 625.20 430.08 lo 624.48 432.72 lo 630.72 434.40 lo 630.72 434.40 lo eofill st gr
-gs np 624.48 432.72 t 625.20 430.08 lo 619.44 427.92 lo 618.48 430.56 lo 624.48 432.72 lo 624.48 432.72 lo eofill st gr
-gs np 618.48 430.56 t 619.44 427.92 lo 614.16 425.52 lo 612.96 428.16 lo 618.48 430.56 lo 618.48 430.56 lo eofill st gr
-gs np 612.96 428.16 t 614.16 425.52 lo 609.36 422.88 lo 607.92 425.28 lo 612.96 428.16 lo 612.96 428.16 lo eofill st gr
-gs np 607.92 425.28 t 609.36 422.88 lo 604.80 420.00 lo 603.12 422.16 lo 607.92 425.28 lo 607.92 425.28 lo eofill st gr
-gs np 603.12 422.16 t 604.80 420.00 lo 600.72 416.64 lo 598.80 418.80 lo 603.12 422.16 lo 603.12 422.16 lo eofill st gr
-gs np 598.80 418.80 t 600.72 416.64 lo 597.36 413.04 lo 595.20 414.96 lo 598.80 418.80 lo 598.80 418.80 lo eofill st gr
-gs np 595.20 414.96 t 597.36 413.04 lo 594.48 409.44 lo 592.08 410.88 lo 595.20 414.96 lo 595.20 414.96 lo eofill st gr
-gs np 592.08 410.88 t 594.48 409.44 lo 592.08 405.36 lo 589.68 406.56 lo 592.08 410.88 lo 592.08 410.88 lo eofill st gr
-gs np 589.68 406.56 t 592.08 405.36 lo 590.40 401.28 lo 587.76 402.24 lo 589.68 406.56 lo 589.68 406.56 lo eofill st gr
-gs np 587.76 402.24 t 590.40 401.28 lo 589.44 396.96 lo 586.56 397.44 lo 587.76 402.24 lo 587.76 402.24 lo eofill st gr
-gs np 586.56 397.44 t 589.44 396.96 lo 588.96 392.64 lo 586.32 392.64 lo 586.56 397.44 lo 586.56 397.44 lo eofill st gr
-gs np 586.32 392.64 t 588.96 392.64 lo 589.44 388.32 lo 586.56 387.84 lo 586.32 392.64 lo 586.32 392.64 lo eofill st gr
-gs np 586.56 387.84 t 589.44 388.32 lo 590.40 384.00 lo 587.76 383.04 lo 586.56 387.84 lo 586.56 387.84 lo eofill st gr
-gs np 587.76 383.04 t 590.40 384.00 lo 592.08 379.92 lo 589.68 378.72 lo 587.76 383.04 lo 587.76 383.04 lo eofill st gr
-gs np 589.68 378.72 t 592.08 379.92 lo 594.48 375.84 lo 592.08 374.40 lo 589.68 378.72 lo 589.68 378.72 lo eofill st gr
-gs np 592.08 374.40 t 594.48 375.84 lo 597.36 372.24 lo 595.20 370.32 lo 592.08 374.40 lo 592.08 374.40 lo eofill st gr
-gs np 595.20 370.32 t 597.36 372.24 lo 600.72 368.64 lo 598.80 366.48 lo 595.20 370.32 lo 595.20 370.32 lo eofill st gr
-gs np 598.80 366.48 t 600.72 368.64 lo 604.80 365.28 lo 603.12 363.12 lo 598.80 366.48 lo 598.80 366.48 lo eofill st gr
-gs np 603.12 363.12 t 604.80 365.28 lo 609.36 362.40 lo 607.92 360.00 lo 603.12 363.12 lo 603.12 363.12 lo eofill st gr
-gs np 607.92 360.00 t 609.36 362.40 lo 614.16 359.76 lo 612.96 357.12 lo 607.92 360.00 lo 607.92 360.00 lo eofill st gr
-gs np 612.96 357.12 t 614.16 359.76 lo 619.44 357.36 lo 618.48 354.72 lo 612.96 357.12 lo 612.96 357.12 lo eofill st gr
-gs np 618.48 354.72 t 619.44 357.36 lo 625.20 355.20 lo 624.48 352.56 lo 618.48 354.72 lo 618.48 354.72 lo eofill st gr
-gs np 624.48 352.56 t 625.20 355.20 lo 631.20 353.76 lo 630.72 350.88 lo 624.48 352.56 lo 624.48 352.56 lo eofill st gr
-gs np 630.72 350.88 t 631.20 353.76 lo 637.68 352.56 lo 637.20 349.68 lo 630.72 350.88 lo 630.72 350.88 lo eofill st gr
-gs np 637.20 349.68 t 637.68 352.56 lo 644.16 351.84 lo 643.92 348.96 lo 637.20 349.68 lo 637.20 349.68 lo eofill st gr
-gs np 643.92 348.96 t 644.16 351.84 lo 650.88 351.60 lo 651.12 348.72 lo 643.92 348.96 lo 643.92 348.96 lo eofill st gr
-gs np 651.12 348.72 t 650.88 351.60 lo 657.84 351.84 lo 657.84 348.96 lo 651.12 348.72 lo 651.12 348.72 lo eofill st gr
-gs np 657.84 348.96 t 657.84 351.84 lo 664.32 352.56 lo 664.80 349.68 lo 657.84 348.96 lo 657.84 348.96 lo eofill st gr
-gs np 664.80 349.68 t 664.32 352.56 lo 670.56 353.76 lo 671.28 350.88 lo 664.80 349.68 lo 664.80 349.68 lo eofill st gr
-gs np 671.28 350.88 t 670.56 353.76 lo 676.80 355.20 lo 677.52 352.56 lo 671.28 350.88 lo 671.28 350.88 lo eofill st gr
-gs np 677.52 352.56 t 676.80 355.20 lo 682.32 357.36 lo 683.52 354.72 lo 677.52 352.56 lo 677.52 352.56 lo eofill st gr
-gs np 683.52 354.72 t 682.32 357.36 lo 687.60 359.76 lo 689.04 357.12 lo 683.52 354.72 lo 683.52 354.72 lo eofill st gr
-gs np 689.04 357.12 t 687.60 359.76 lo 692.64 362.40 lo 694.08 360.00 lo 689.04 357.12 lo 689.04 357.12 lo eofill st gr
-gs np 694.08 360.00 t 692.64 362.40 lo 697.20 365.28 lo 698.88 363.12 lo 694.08 360.00 lo 694.08 360.00 lo eofill st gr
-gs np 698.88 363.12 t 697.20 365.28 lo 701.04 368.64 lo 702.96 366.48 lo 698.88 363.12 lo 698.88 363.12 lo eofill st gr
-gs np 702.96 366.48 t 701.04 368.64 lo 704.64 372.24 lo 706.80 370.32 lo 702.96 366.48 lo 702.96 366.48 lo eofill st gr
-gs np 706.80 370.32 t 704.64 372.24 lo 707.52 375.84 lo 709.92 374.40 lo 706.80 370.32 lo 706.80 370.32 lo eofill st gr
-gs np 709.92 374.40 t 707.52 375.84 lo 709.92 379.92 lo 712.32 378.72 lo 709.92 374.40 lo 709.92 374.40 lo eofill st gr
-gs np 712.32 378.72 t 709.92 379.92 lo 711.36 384.00 lo 714.24 383.04 lo 712.32 378.72 lo 712.32 378.72 lo eofill st gr
-gs np 714.24 383.04 t 711.36 384.00 lo 712.56 388.32 lo 715.20 387.84 lo 714.24 383.04 lo 714.24 383.04 lo eofill st gr
-gs np 715.20 387.84 t 712.56 388.32 lo 712.80 392.64 lo 715.68 392.64 lo 715.20 387.84 lo 715.20 387.84 lo eofill st gr
-gs np 715.68 392.64 t 712.80 392.64 lo 712.56 396.96 lo 715.44 397.44 lo 715.68 392.64 lo 715.68 392.64 lo eofill st gr
-gs np 715.44 397.44 t 712.56 396.96 lo 711.36 401.28 lo 714.24 402.24 lo 715.44 397.44 lo 715.44 397.44 lo eofill st gr
-gs np 714.24 402.24 t 711.36 401.28 lo 709.68 405.36 lo 712.32 406.56 lo 714.24 402.24 lo 714.24 402.24 lo eofill st gr
-gs np 712.32 406.56 t 709.68 405.36 lo 707.52 409.44 lo 709.92 410.88 lo 712.32 406.56 lo 712.32 406.56 lo eofill st gr
-gs np 709.92 410.88 t 707.52 409.44 lo 704.64 413.04 lo 706.80 414.96 lo 709.92 410.88 lo 709.92 410.88 lo eofill st gr
-gs np 706.80 414.96 t 704.64 413.04 lo 701.04 416.64 lo 702.96 418.80 lo 706.80 414.96 lo 706.80 414.96 lo eofill st gr
-gs np 702.96 418.80 t 701.04 416.64 lo 697.20 420.00 lo 698.88 422.16 lo 702.96 418.80 lo 702.96 418.80 lo eofill st gr
-gs np 698.88 422.16 t 697.20 420.00 lo 692.64 422.88 lo 694.08 425.28 lo 698.88 422.16 lo 698.88 422.16 lo eofill st gr
-gs np 694.08 425.28 t 692.64 422.88 lo 687.84 425.52 lo 689.04 428.16 lo 694.08 425.28 lo 694.08 425.28 lo eofill st gr
-gs np 689.04 428.16 t 687.84 425.52 lo 682.32 427.92 lo 683.52 430.56 lo 689.04 428.16 lo 689.04 428.16 lo eofill st gr
-gs np 683.52 430.56 t 682.32 427.92 lo 676.80 430.08 lo 677.52 432.72 lo 683.52 430.56 lo 683.52 430.56 lo eofill st gr
-gs np 677.52 432.72 t 676.80 430.08 lo 670.56 431.52 lo 671.28 434.40 lo 677.52 432.72 lo 677.52 432.72 lo eofill st gr
-gs np 671.28 434.40 t 670.56 431.52 lo 664.32 432.72 lo 664.80 435.60 lo 671.28 434.40 lo 671.28 434.40 lo eofill st gr
-gs np 664.80 435.60 t 664.32 432.72 lo 657.84 433.44 lo 657.84 436.32 lo 664.80 435.60 lo 664.80 435.60 lo eofill st gr
-gs np 657.84 436.32 t 657.84 433.44 lo 650.88 433.68 lo 650.88 436.56 lo 657.84 436.32 lo 657.84 436.32 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 624.96 381.84 t 624.96 403.92 lo 677.52 403.92 lo 677.52 381.84 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<4453412032> 624.96 399.84 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 280.08 185.52 t 363.36 185.52 lo 363.36 236.40 lo 280.08 236.40 lo 280.08 185.52 lo 280.08 185.52 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 278.64 184.32 t 281.52 186.96 lo 362.16 186.96 lo 364.80 184.32 lo 278.64 184.32 lo 278.64 184.32 lo eofill st gr
-gs np 364.80 184.32 t 362.16 186.96 lo 362.16 234.96 lo 364.80 237.60 lo 364.80 184.32 lo 364.80 184.32 lo eofill st gr
-gs np 364.80 237.60 t 362.16 234.96 lo 281.52 234.96 lo 278.64 237.60 lo 364.80 237.60 lo 364.80 237.60 lo eofill st gr
-gs np 278.64 237.60 t 281.52 234.96 lo 281.52 186.96 lo 278.64 184.32 lo 278.64 237.60 lo 278.64 237.60 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 287.28 200.16 t 287.28 222.24 lo 356.64 222.24 lo 356.64 200.16 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422041> 287.28 218.16 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 540.24 210.24 t 540.24 213.12 lo 541.68 213.12 lo 541.68 210.24 lo 540.24 210.24 lo 540.24 210.24 lo eofill st gr
-gs np 542.88 210.24 t 542.88 213.12 lo 544.32 213.12 lo 544.32 210.24 lo 542.88 210.24 lo 542.88 210.24 lo eofill st gr
-gs np 545.76 210.24 t 545.76 213.12 lo 547.20 213.12 lo 547.20 210.24 lo 545.76 210.24 lo 545.76 210.24 lo eofill st gr
-gs np 548.64 210.24 t 548.64 213.12 lo 550.08 213.12 lo 550.08 210.24 lo 548.64 210.24 lo 548.64 210.24 lo eofill st gr
-gs np 551.52 210.24 t 551.52 213.12 lo 552.96 213.12 lo 552.96 210.24 lo 551.52 210.24 lo 551.52 210.24 lo eofill st gr
-gs np 554.40 210.24 t 554.40 213.12 lo 555.84 213.12 lo 555.84 210.24 lo 554.40 210.24 lo 554.40 210.24 lo eofill st gr
-gs np 557.28 210.24 t 557.28 213.12 lo 558.72 213.12 lo 558.72 210.24 lo 557.28 210.24 lo 557.28 210.24 lo eofill st gr
-gs np 560.16 210.24 t 560.16 213.12 lo 561.60 213.12 lo 561.60 210.24 lo 560.16 210.24 lo 560.16 210.24 lo eofill st gr
-gs np 562.80 210.24 t 562.80 213.12 lo 564.24 213.12 lo 564.24 210.24 lo 562.80 210.24 lo 562.80 210.24 lo eofill st gr
-gs np 565.68 210.24 t 565.68 213.12 lo 567.12 213.12 lo 567.12 210.24 lo 565.68 210.24 lo 565.68 210.24 lo eofill st gr
-gs np 568.56 210.24 t 568.56 213.12 lo 569.76 213.12 lo 569.76 210.24 lo 568.56 210.24 lo 568.56 210.24 lo eofill st gr
-gs np 529.68 211.68 t 542.40 216.00 lo 542.40 207.36 lo 529.68 211.68 lo eofill st gr
-gs np 580.32 211.68 t 567.60 207.36 lo 567.60 216.00 lo 580.32 211.68 lo eofill st gr
-gs np 384.00 208.56 t 384.00 211.20 lo 385.44 211.20 lo 385.44 208.56 lo 384.00 208.56 lo 384.00 208.56 lo eofill st gr
-gs np 386.88 208.56 t 386.88 211.20 lo 388.32 211.20 lo 388.32 208.56 lo 386.88 208.56 lo 386.88 208.56 lo eofill st gr
-gs np 389.76 208.56 t 389.76 211.20 lo 391.20 211.20 lo 391.20 208.56 lo 389.76 208.56 lo 389.76 208.56 lo eofill st gr
-gs np 392.64 208.56 t 392.64 211.20 lo 394.08 211.20 lo 394.08 208.56 lo 392.64 208.56 lo 392.64 208.56 lo eofill st gr
-gs np 395.52 208.56 t 395.52 211.20 lo 396.96 211.20 lo 396.96 208.56 lo 395.52 208.56 lo 395.52 208.56 lo eofill st gr
-gs np 398.40 208.56 t 398.40 211.20 lo 399.84 211.20 lo 399.84 208.56 lo 398.40 208.56 lo 398.40 208.56 lo eofill st gr
-gs np 401.04 208.56 t 401.04 211.20 lo 402.48 211.20 lo 402.48 208.56 lo 401.04 208.56 lo 401.04 208.56 lo eofill st gr
-gs np 403.92 208.56 t 403.92 211.20 lo 405.36 211.20 lo 405.36 208.56 lo 403.92 208.56 lo 403.92 208.56 lo eofill st gr
-gs np 406.80 208.56 t 406.80 211.20 lo 408.24 211.20 lo 408.24 208.56 lo 406.80 208.56 lo 406.80 208.56 lo eofill st gr
-gs np 409.68 208.56 t 409.68 211.20 lo 411.12 211.20 lo 411.12 208.56 lo 409.68 208.56 lo 409.68 208.56 lo eofill st gr
-gs np 412.56 208.56 t 412.56 211.20 lo 413.76 211.20 lo 413.76 208.56 lo 412.56 208.56 lo 412.56 208.56 lo eofill st gr
-gs np 373.44 209.76 t 386.40 214.08 lo 386.40 205.68 lo 373.44 209.76 lo eofill st gr
-gs np 424.32 209.76 t 411.36 205.68 lo 411.36 214.08 lo 424.32 209.76 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 112.32 365.04 t 198.72 365.04 lo 198.72 418.80 lo 112.32 418.80 lo 112.32 365.04 lo 112.32 365.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 110.88 363.84 t 113.76 366.48 lo 197.52 366.48 lo 200.16 363.84 lo 110.88 363.84 lo 110.88 363.84 lo eofill st gr
-gs np 200.16 363.84 t 197.52 366.48 lo 197.52 417.36 lo 200.16 420.24 lo 200.16 363.84 lo 200.16 363.84 lo eofill st gr
-gs np 200.16 420.24 t 197.52 417.36 lo 113.76 417.36 lo 110.88 420.24 lo 200.16 420.24 lo 200.16 420.24 lo eofill st gr
-gs np 110.88 420.24 t 113.76 417.36 lo 113.76 366.48 lo 110.88 363.84 lo 110.88 420.24 lo 110.88 420.24 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 122.40 381.12 t 122.40 403.44 lo 189.12 403.44 lo 189.12 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<42726f77736572> 122.40 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-1.000 1.000 1.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 276.96 366.72 t 360.48 366.72 lo 360.48 417.36 lo 276.96 417.36 lo 276.96 366.72 lo 276.96 366.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 275.52 365.28 t 278.40 368.16 lo 359.04 368.16 lo 361.92 365.28 lo 275.52 365.28 lo 275.52 365.28 lo eofill st gr
-gs np 361.92 365.28 t 359.04 368.16 lo 359.04 415.92 lo 361.92 418.80 lo 361.92 365.28 lo 361.92 365.28 lo eofill st gr
-gs np 361.92 418.80 t 359.04 415.92 lo 278.40 415.92 lo 275.52 418.80 lo 361.92 418.80 lo 361.92 418.80 lo eofill st gr
-gs np 275.52 418.80 t 278.40 415.92 lo 278.40 368.16 lo 275.52 365.28 lo 275.52 418.80 lo 275.52 418.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 284.16 381.12 t 284.16 403.20 lo 353.76 403.20 lo 353.76 381.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<545745422042> 284.16 399.12 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 215.52 339.12 t 217.92 340.80 lo 218.64 339.60 lo 216.24 338.16 lo 215.52 339.12 lo 215.52 339.12 lo eofill st gr
-gs np 216.96 336.96 t 219.36 338.40 lo 220.08 337.20 lo 217.92 335.76 lo 216.96 336.96 lo 216.96 336.96 lo eofill st gr
-gs np 218.64 334.56 t 221.04 336.00 lo 221.76 335.04 lo 219.36 333.36 lo 218.64 334.56 lo 218.64 334.56 lo eofill st gr
-gs np 220.32 332.16 t 222.48 333.84 lo 223.44 332.64 lo 221.04 330.96 lo 220.32 332.16 lo 220.32 332.16 lo eofill st gr
-gs np 221.76 329.76 t 224.16 331.44 lo 224.88 330.24 lo 222.72 328.56 lo 221.76 329.76 lo 221.76 329.76 lo eofill st gr
-gs np 223.44 327.36 t 225.84 329.04 lo 226.56 327.84 lo 224.16 326.16 lo 223.44 327.36 lo 223.44 327.36 lo eofill st gr
-gs np 224.88 325.20 t 227.28 326.64 lo 228.24 325.44 lo 225.84 324.00 lo 224.88 325.20 lo 224.88 325.20 lo eofill st gr
-gs np 226.56 322.80 t 228.96 324.24 lo 229.68 323.04 lo 227.28 321.60 lo 226.56 322.80 lo 226.56 322.80 lo eofill st gr
-gs np 228.24 320.40 t 230.64 321.84 lo 231.36 320.88 lo 228.96 319.20 lo 228.24 320.40 lo 228.24 320.40 lo eofill st gr
-gs np 229.68 318.00 t 232.08 319.68 lo 233.04 318.48 lo 230.64 316.80 lo 229.68 318.00 lo 229.68 318.00 lo eofill st gr
-gs np 231.36 315.60 t 233.76 317.28 lo 234.48 316.08 lo 232.08 314.40 lo 231.36 315.60 lo 231.36 315.60 lo eofill st gr
-gs np 233.04 313.20 t 235.44 314.88 lo 236.16 313.68 lo 233.76 312.00 lo 233.04 313.20 lo 233.04 313.20 lo eofill st gr
-gs np 234.48 311.04 t 236.88 312.48 lo 237.60 311.28 lo 235.44 309.84 lo 234.48 311.04 lo 234.48 311.04 lo eofill st gr
-gs np 236.16 308.64 t 238.56 310.08 lo 239.28 308.88 lo 236.88 307.44 lo 236.16 308.64 lo 236.16 308.64 lo eofill st gr
-gs np 237.60 306.24 t 240.00 307.92 lo 240.96 306.72 lo 238.56 305.04 lo 237.60 306.24 lo 237.60 306.24 lo eofill st gr
-gs np 239.28 303.84 t 241.68 305.52 lo 242.40 304.32 lo 240.00 302.64 lo 239.28 303.84 lo 239.28 303.84 lo eofill st gr
-gs np 240.96 301.44 t 243.36 303.12 lo 244.08 301.92 lo 241.68 300.24 lo 240.96 301.44 lo 240.96 301.44 lo eofill st gr
-gs np 242.40 299.04 t 244.80 300.72 lo 245.76 299.52 lo 243.36 298.08 lo 242.40 299.04 lo 242.40 299.04 lo eofill st gr
-gs np 244.08 296.88 t 246.48 298.32 lo 247.20 297.12 lo 244.80 295.68 lo 244.08 296.88 lo 244.08 296.88 lo eofill st gr
-gs np 245.76 294.48 t 247.92 295.92 lo 248.88 294.96 lo 246.48 293.28 lo 245.76 294.48 lo 245.76 294.48 lo eofill st gr
-gs np 247.20 292.08 t 249.60 293.76 lo 250.32 292.56 lo 248.16 290.88 lo 247.20 292.08 lo 247.20 292.08 lo eofill st gr
-gs np 248.88 289.68 t 251.28 291.36 lo 252.00 290.16 lo 249.60 288.48 lo 248.88 289.68 lo 248.88 289.68 lo eofill st gr
-gs np 250.56 287.28 t 252.72 288.96 lo 253.68 287.76 lo 251.28 286.08 lo 250.56 287.28 lo 250.56 287.28 lo eofill st gr
-gs np 252.00 285.12 t 254.40 286.56 lo 255.12 285.36 lo 252.96 283.92 lo 252.00 285.12 lo 252.00 285.12 lo eofill st gr
-gs np 253.68 282.72 t 256.08 284.16 lo 256.80 282.96 lo 254.40 281.52 lo 253.68 282.72 lo 253.68 282.72 lo eofill st gr
-gs np 255.12 280.32 t 257.52 281.76 lo 258.24 280.80 lo 256.08 279.12 lo 255.12 280.32 lo 255.12 280.32 lo eofill st gr
-gs np 256.80 277.92 t 259.20 279.60 lo 259.92 278.40 lo 257.52 276.72 lo 256.80 277.92 lo 256.80 277.92 lo eofill st gr
-gs np 258.48 275.52 t 260.64 277.20 lo 261.60 276.00 lo 259.20 274.32 lo 258.48 275.52 lo 258.48 275.52 lo eofill st gr
-gs np 259.92 273.12 t 262.32 274.80 lo 263.04 273.60 lo 260.88 271.92 lo 259.92 273.12 lo 259.92 273.12 lo eofill st gr
-gs np 261.60 270.96 t 264.00 272.40 lo 264.72 271.20 lo 262.32 269.76 lo 261.60 270.96 lo 261.60 270.96 lo eofill st gr
-gs np 263.28 268.56 t 265.44 270.00 lo 266.40 268.80 lo 264.00 267.36 lo 263.28 268.56 lo 263.28 268.56 lo eofill st gr
-gs np 264.72 266.16 t 267.12 267.60 lo 267.84 266.64 lo 265.44 264.96 lo 264.72 266.16 lo 264.72 266.16 lo eofill st gr
-gs np 266.40 263.76 t 268.80 265.44 lo 269.28 264.48 lo 266.88 262.80 lo 266.40 263.76 lo 266.40 263.76 lo eofill st gr
-gs np 210.72 348.72 t 221.52 340.56 lo 214.32 335.76 lo 210.72 348.72 lo eofill st gr
-gs np 274.08 254.88 t 263.28 263.04 lo 270.48 267.84 lo 274.08 254.88 lo eofill st gr
-gs np 129.84 292.56 t 129.84 295.44 lo 226.32 295.92 lo 226.32 293.04 lo 129.84 292.56 lo 129.84 292.56 lo eofill st gr
-gs np 652.56 278.16 t 649.68 278.16 lo 649.68 279.60 lo 652.56 279.60 lo 652.56 278.16 lo 652.56 278.16 lo eofill st gr
-gs np 652.56 281.04 t 649.68 281.04 lo 649.68 282.48 lo 652.56 282.48 lo 652.56 281.04 lo 652.56 281.04 lo eofill st gr
-gs np 652.56 283.92 t 649.68 283.92 lo 649.68 285.36 lo 652.56 285.36 lo 652.56 283.92 lo 652.56 283.92 lo eofill st gr
-gs np 652.56 286.80 t 649.68 286.80 lo 649.68 288.00 lo 652.56 288.00 lo 652.56 286.80 lo 652.56 286.80 lo eofill st gr
-gs np 652.56 289.44 t 649.68 289.44 lo 649.68 290.88 lo 652.56 290.88 lo 652.56 289.44 lo 652.56 289.44 lo eofill st gr
-gs np 652.56 292.32 t 649.68 292.32 lo 649.68 293.76 lo 652.56 293.76 lo 652.56 292.32 lo 652.56 292.32 lo eofill st gr
-gs np 652.56 295.20 t 649.68 295.20 lo 649.68 296.64 lo 652.56 296.64 lo 652.56 295.20 lo 652.56 295.20 lo eofill st gr
-gs np 652.56 298.08 t 649.68 298.08 lo 649.68 299.52 lo 652.56 299.52 lo 652.56 298.08 lo 652.56 298.08 lo eofill st gr
-gs np 652.56 300.96 t 649.68 300.96 lo 649.68 302.40 lo 652.56 302.40 lo 652.56 300.96 lo 652.56 300.96 lo eofill st gr
-gs np 652.56 303.84 t 649.68 303.84 lo 649.68 305.28 lo 652.56 305.28 lo 652.56 303.84 lo 652.56 303.84 lo eofill st gr
-gs np 652.56 306.48 t 649.68 306.48 lo 649.68 307.92 lo 652.56 307.92 lo 652.56 306.48 lo 652.56 306.48 lo eofill st gr
-gs np 652.56 309.36 t 649.68 309.36 lo 649.68 310.80 lo 652.56 310.80 lo 652.56 309.36 lo 652.56 309.36 lo eofill st gr
-gs np 652.56 312.24 t 649.68 312.24 lo 649.68 313.68 lo 652.56 313.68 lo 652.56 312.24 lo 652.56 312.24 lo eofill st gr
-gs np 652.56 315.12 t 649.68 315.12 lo 649.68 316.56 lo 652.56 316.56 lo 652.56 315.12 lo 652.56 315.12 lo eofill st gr
-gs np 652.56 318.00 t 649.68 318.00 lo 649.68 319.44 lo 652.56 319.44 lo 652.56 318.00 lo 652.56 318.00 lo eofill st gr
-gs np 652.56 320.88 t 649.68 320.88 lo 649.68 322.32 lo 652.56 322.32 lo 652.56 320.88 lo 652.56 320.88 lo eofill st gr
-gs np 652.56 323.76 t 649.68 323.76 lo 649.68 325.20 lo 652.56 325.20 lo 652.56 323.76 lo 652.56 323.76 lo eofill st gr
-gs np 652.56 326.40 t 649.68 326.40 lo 649.68 327.84 lo 652.56 327.84 lo 652.56 326.40 lo 652.56 326.40 lo eofill st gr
-gs np 652.56 329.28 t 649.68 329.28 lo 649.68 330.72 lo 652.56 330.72 lo 652.56 329.28 lo 652.56 329.28 lo eofill st gr
-gs np 651.12 267.60 t 646.80 280.32 lo 655.20 280.32 lo 651.12 267.60 lo eofill st gr
-gs np 651.12 337.68 t 646.80 329.04 lo 655.20 329.04 lo 651.12 337.68 lo 651.12 337.68 lo eofill st gr
-gs np 274.56 293.28 t 274.56 296.16 lo 637.68 295.92 lo 637.68 293.04 lo 274.56 293.28 lo 274.56 293.28 lo eofill st gr
-gs np 538.32 390.96 t 538.32 393.84 lo 567.84 393.84 lo 567.84 390.96 lo 538.32 390.96 lo 538.32 390.96 lo eofill st gr
-gs np 527.76 392.40 t 540.72 396.72 lo 540.72 388.08 lo 527.76 392.40 lo eofill st gr
-gs np 578.40 392.40 t 565.68 388.08 lo 565.68 396.72 lo 578.40 392.40 lo eofill st gr
-gs np 382.32 389.28 t 382.32 391.92 lo 411.84 391.92 lo 411.84 389.28 lo 382.32 389.28 lo 382.32 389.28 lo eofill st gr
-gs np 371.76 390.72 t 384.48 394.80 lo 384.48 386.40 lo 371.76 390.72 lo eofill st gr
-gs np 422.40 390.72 t 409.68 386.40 lo 409.68 394.80 lo 422.40 390.72 lo eofill st gr
-gs np 221.76 388.80 t 221.76 391.68 lo 251.28 391.68 lo 251.28 388.80 lo 221.76 388.80 lo 221.76 388.80 lo eofill st gr
-gs np 211.20 390.24 t 224.16 394.56 lo 224.16 385.92 lo 211.20 390.24 lo eofill st gr
-gs np 262.08 390.24 t 249.12 385.92 lo 249.12 394.56 lo 262.08 390.24 lo eofill st gr
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 6 6
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<36> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<53746174696320476174657761792d537769746368696e67> 249.84 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 178.80 t 107.04 384.48 lo 741.84 384.48 lo 741.84 178.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 203.04 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<53746174696320676174657761792d737769746368696e67206261736564206f6e20636f6e66696775726174696f6e2066696c6573> 146.88 202.08 C
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<47572d535749544348202020bb524f4f54ab202020> 158.16 282.48 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 178.80 t 107.04 384.48 lo 741.84 384.48 lo 741.84 178.80 lo
-cp clip np
-0.000 0.000 1.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<687474703a2f2f783530302d72656c61792e756e692d74756562696e67656e2e64653a383930312f> 372.96 282.48 C
-0.000 0.000 0.000 RGB
-<4d> 702.72 282.48 C
-<20202020202020202020202020202020202020202020202020bb633d4445ab2020202020> 158.16 312.72 C
-0.000 0.000 1.000 RGB
-<687474703a2f2f783530302d72656c61792e756e692d74756562696e67656e2e64653a383931312f> 374.16 312.72 C
-0.000 0.000 0.000 RGB
-<20202020202020202020202020202020202020202020202020bb6c3d44464e2c20633d4445ab2020> 158.16 343.20 C
-0.000 0.000 1.000 RGB
-<687474703a2f2f616d6269782e6469726563746f72792e64666e2e64653a383838392f> 420.72 343.20 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 7 7
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<37> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<44796e616d696320476174657761792d537769746368696e67> 229.68 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 188.64 t 107.04 354.24 lo 741.84 354.24 lo 741.84 188.64 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 212.88 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<44796e616d696320676174657761792d737769746368696e67206261736564206f6e20582e3530302064617461> 146.88 211.92 C
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<582e35303020656e74727920bb6c> 158.16 292.32 C
-ski{/Helvetica-Oblique fcd /Helvetica-Oblique-ISO8859-1 fdf}if
-/Helvetica-Oblique-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<3d44464e2c20633d4445ab> 270.00 292.32 C
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<3a> 382.32 292.32 C
-<6c6162656c65645552493d20> 180.96 322.56 C
-0.000 0.000 1.000 RGB
-<687474703a2f2f616d6269782e6469726563746f72792e64666e2e64653a383838392f> 286.08 322.56 C
-0.000 0.000 0.000 RGB
-<20414d424958202867772d646529> 560.16 322.56 C
-<6c6162656c65645552493d20> 180.96 350.16 C
-0.000 0.000 1.000 RGB
-<687474703a2f2f616d6269782e6469726563746f72792e64666e2e64653a383839302f> 286.08 350.16 C
-0.000 0.000 0.000 RGB
-<20414d424958202867772d656e29> 560.16 350.16 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 8 8
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<38> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<416476616e7461676573206f6620476174657761792d537769746368696e67> 191.52 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 175.20 t 107.04 418.32 lo 741.84 418.32 lo 741.84 175.20 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 199.44 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<526564756374696f6e206f66206e6574776f726b2074726166666963> 146.88 198.48 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 242.40 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<46617374657220726573706f6e73652074696d6573> 146.88 241.44 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 285.12 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<4c6f61642062616c616e63696e67> 146.88 284.16 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 327.84 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<52656c65617365206f6620726573736f757263657320626f756e6420746f2065787465726e616c2064617461206c6f6f6b7570> 146.88 326.88 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 370.80 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<4f7267616e697a6174696f6e2d73706563696669632061636365737320706f6c6963696573> 146.88 369.84 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 413.52 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<436f72706f72617465204964656e74697479> 146.88 412.56 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 9 9
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 659.52 497.04 t 659.52 513.12 lo 666.96 513.12 lo 666.96 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<39> 659.52 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<536f7274696e6720616e6420446973706c6179696e6720456e7472696573> 219.84 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 131.28 t 107.04 417.12 lo 741.84 417.12 lo 741.84 131.28 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 155.52 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<54574542277320534f525420636f6e66696775726174696f6e20706172616d6574657220646566696e657320> 146.88 154.56 C
-<636c617373696669636174696f6e206f6620656e747269657320616e6420646973706c6179207479706573> 146.88 183.12 C
-<534f52542020746f635f666163756c747920466163756c747920202020202020202020352020202020206f7267207461745f736f7274> 158.16 226.08 C
-<202020202020202020202020746f635f63656e7420202020bb43656e7472616c20666163696c697479ab2032206f7267207461745f736f7274> 158.16 263.04 C
-<2020202020202020202020206f7267616e697a6174696f6e616c556e69742020556e69742031352020202020206f7267> 158.16 300.24 C
-<2020202020202020202020202e2e2e> 158.16 337.44 C
-<202020202020202020202020746f635f70726f6673202050726f666573736f727320202020203239202020202070657273> 158.16 374.40 C
-<202020202020202020202020706572736f6e20202020202053746166662020202020202020202020202020203330202020202070657273> 158.16 411.60 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 10 10
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 656.16 497.04 t 656.16 513.12 lo 670.32 513.12 lo 670.32 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<3130> 656.16 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 87.12 46.80 t 87.12 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<44796e616d6963205265636f6e66696775726174696f6e206f6620446973706c617920506172616d6574657273> 92.88 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 215.52 t 107.04 344.40 lo 741.84 344.40 lo 741.84 215.52 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 239.76 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<534f52542063616e2062652072652d636f6e666967757265642064796e616d6963616c6c7920627920> 146.88 238.80 C
-<747765625f736f7274696e6720582e35303020656e7472696573> 146.88 267.36 C
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 311.28 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<446973706c6179206f6620656e74726965732063616e2062652072652d636f6e666967757265642064796e616d6963616c6c7920627920> 146.88 310.32 C
-<747765625f646973706c61795f3c545950453e20582e35303020656e7472696573> 146.88 338.88 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%BeginSetup
-%%BeginFeature: *PageRegion A4
-  a4
-%%EndFeature
-%%EndSetup
-%%Page: 11 11
-%%BeginPageSetup
-/#copies 1 def
-sv
-90 rotate
-1.00 -1.00 sl
-18.96 18.00 tl
-%%EndPageSetup
-%%BoundingBox: (atend)
-gs
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.72 537.84 t 66.72 25.20 lo 66.72 25.20 lo 66.72 537.84 lo 66.72 537.84 lo eofill st gr
-gs np 66.72 537.84 t 66.72 25.20 lo 68.64 25.20 lo 68.64 537.84 lo 66.72 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.122 0.122 0.122 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 68.64 537.84 t 68.64 25.20 lo 70.80 25.20 lo 70.80 537.84 lo 68.64 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.247 0.247 0.247 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 70.80 537.84 t 70.80 25.20 lo 72.96 25.20 lo 72.96 537.84 lo 70.80 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.373 0.373 0.373 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 72.96 537.84 t 72.96 25.20 lo 75.12 25.20 lo 75.12 537.84 lo 72.96 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.498 0.498 0.498 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 75.12 537.84 t 75.12 25.20 lo 77.28 25.20 lo 77.28 537.84 lo 75.12 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.624 0.624 0.624 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 77.28 537.84 t 77.28 25.20 lo 79.44 25.20 lo 79.44 537.84 lo 77.28 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 25.68 t 67.20 537.84 lo 80.88 537.84 lo 80.88 25.68 lo
-cp clip np
-0.749 0.749 0.749 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 79.44 537.84 t 79.44 25.20 lo 81.60 25.20 lo 81.60 537.84 lo 79.44 537.84 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.000 0.000 0.000 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 98.88 lo 66.96 98.88 lo 66.96 98.88 lo eofill st gr
-gs np 66.96 98.88 t 741.60 98.88 lo 741.60 100.80 lo 66.96 100.80 lo 66.96 98.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.110 0.110 0.110 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 100.80 t 741.60 100.80 lo 741.60 102.72 lo 66.96 102.72 lo 66.96 100.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.220 0.220 0.220 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 102.72 t 741.60 102.72 lo 741.60 104.88 lo 66.96 104.88 lo 66.96 102.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.333 0.333 0.333 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 104.88 t 741.60 104.88 lo 741.60 106.80 lo 66.96 106.80 lo 66.96 104.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.443 0.443 0.443 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 106.80 t 741.60 106.80 lo 741.60 108.72 lo 66.96 108.72 lo 66.96 106.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.553 0.553 0.553 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 108.72 t 741.60 108.72 lo 741.60 110.88 lo 66.96 110.88 lo 66.96 108.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.667 0.667 0.667 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 110.88 t 741.60 110.88 lo 741.60 112.80 lo 66.96 112.80 lo 66.96 110.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 67.20 99.12 t 67.20 114.72 lo 741.60 114.72 lo 741.60 99.12 lo
-cp clip np
-0.776 0.776 0.776 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 66.96 112.80 t 741.60 112.80 lo 741.60 114.96 lo 66.96 114.96 lo 66.96 112.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 494.64 lo 94.08 494.64 lo 94.08 494.64 lo eofill st gr
-gs np 94.08 494.64 t 395.52 494.64 lo 395.52 496.56 lo 94.08 496.56 lo 94.08 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 496.56 t 395.52 496.56 lo 395.52 498.72 lo 94.08 498.72 lo 94.08 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 498.72 t 395.52 498.72 lo 395.52 500.64 lo 94.08 500.64 lo 94.08 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 500.64 t 395.52 500.64 lo 395.52 502.80 lo 94.08 502.80 lo 94.08 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 502.80 t 395.52 502.80 lo 395.52 504.72 lo 94.08 504.72 lo 94.08 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 504.72 t 395.52 504.72 lo 395.52 506.88 lo 94.08 506.88 lo 94.08 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 506.88 t 395.52 506.88 lo 395.52 509.04 lo 94.08 509.04 lo 94.08 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 509.04 t 395.52 509.04 lo 395.52 510.96 lo 94.08 510.96 lo 94.08 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 510.96 t 395.52 510.96 lo 395.52 513.12 lo 94.08 513.12 lo 94.08 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 94.32 494.88 t 94.32 515.04 lo 395.52 515.04 lo 395.52 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 94.08 513.12 t 395.52 513.12 lo 395.52 515.04 lo 94.08 515.04 lo 94.08 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 130.08 497.04 t 130.08 513.12 lo 360.00 513.12 lo 360.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if
-/Times-Roman-ISO8859-1 ff [13.68 0 0 -13.68 0 0] mf sf
-<4b757274205370616e6965722c205a44562c20556e69766572736974e4742054fc62696e67656e> 130.08 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 494.64 lo 411.60 494.64 lo 411.60 494.64 lo eofill st gr
-gs np 411.60 494.64 t 571.92 494.64 lo 571.92 496.56 lo 411.60 496.56 lo 411.60 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 496.56 t 571.92 496.56 lo 571.92 498.72 lo 411.60 498.72 lo 411.60 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 498.72 t 571.92 498.72 lo 571.92 500.64 lo 411.60 500.64 lo 411.60 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 500.64 t 571.92 500.64 lo 571.92 502.80 lo 411.60 502.80 lo 411.60 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 502.80 t 571.92 502.80 lo 571.92 504.72 lo 411.60 504.72 lo 411.60 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 504.72 t 571.92 504.72 lo 571.92 506.88 lo 411.60 506.88 lo 411.60 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 506.88 t 571.92 506.88 lo 571.92 509.04 lo 411.60 509.04 lo 411.60 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 509.04 t 571.92 509.04 lo 571.92 510.96 lo 411.60 510.96 lo 411.60 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 510.96 t 571.92 510.96 lo 571.92 513.12 lo 411.60 513.12 lo 411.60 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 411.84 494.88 t 411.84 515.04 lo 571.92 515.04 lo 571.92 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 411.60 513.12 t 571.92 513.12 lo 571.92 515.04 lo 411.60 515.04 lo 411.60 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 456.00 497.04 t 456.00 513.12 lo 528.00 513.12 lo 528.00 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<31382d30312d31393939> 456.00 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.702 0.702 0.702 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 494.64 lo 585.84 494.64 lo 585.84 494.64 lo eofill st gr
-gs np 585.84 494.64 t 740.16 494.64 lo 740.16 496.56 lo 585.84 496.56 lo 585.84 494.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.718 0.718 0.718 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 496.56 t 740.16 496.56 lo 740.16 498.72 lo 585.84 498.72 lo 585.84 496.56 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.737 0.737 0.737 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 498.72 t 740.16 498.72 lo 740.16 500.64 lo 585.84 500.64 lo 585.84 498.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.753 0.753 0.753 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 500.64 t 740.16 500.64 lo 740.16 502.80 lo 585.84 502.80 lo 585.84 500.64 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.773 0.773 0.773 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 502.80 t 740.16 502.80 lo 740.16 504.72 lo 585.84 504.72 lo 585.84 502.80 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.792 0.792 0.792 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 504.72 t 740.16 504.72 lo 740.16 506.88 lo 585.84 506.88 lo 585.84 504.72 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.808 0.808 0.808 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 506.88 t 740.16 506.88 lo 740.16 509.04 lo 585.84 509.04 lo 585.84 506.88 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.827 0.827 0.827 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 509.04 t 740.16 509.04 lo 740.16 510.96 lo 585.84 510.96 lo 585.84 509.04 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.847 0.847 0.847 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 510.96 t 740.16 510.96 lo 740.16 513.12 lo 585.84 513.12 lo 585.84 510.96 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 586.08 494.88 t 586.08 515.04 lo 740.16 515.04 lo 740.16 494.88 lo
-cp clip np
-0.863 0.863 0.863 RGB
-0.240 sw
-[] 0 setdash
-0 sc
-0 sj
-gs np 585.84 513.12 t 740.16 513.12 lo 740.16 515.04 lo 585.84 515.04 lo 585.84 513.12 lo eofill st gr
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 656.16 497.04 t 656.16 513.12 lo 670.32 513.12 lo 670.32 497.04 lo
-cp clip np
-0.000 0.000 0.000 RGB
-/Times-Roman-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf
-<3131> 656.16 509.76 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 46.80 t 107.04 80.88 lo 741.84 80.88 lo 741.84 46.80 lo
-cp clip np
-0.000 0.000 0.000 RGB
-ski{/Helvetica-BoldOblique fcd /Helvetica-BoldOblique-ISO8859-1 fdf}if
-/Helvetica-BoldOblique-ISO8859-1 ff [28.08 0 0 -28.08 0 0] mf sf
-<5457454220446973747269627574696f6e> 300.24 73.92 C
-gr gs
-0 0 t 0 559.92 lo 804.96 559.92 lo 804.96 0 lo cp clip np
- 107.04 198.96 t 107.04 397.92 lo 741.84 397.92 lo 741.84 198.96 lo
-cp clip np
-0.000 0.000 0.000 RGB
-%%BeginResource: font StarBats
-%!PS-AdobeFont-1.0: StarBats 001.000\r%%CreationDate: 09.09.98 at 15:50 \r%%VMusage: 1024 36745  \r% Generated by Fontographer 4.1\r% \(c\) Copyright 1998 Star Division GmbH\r% ADL: 917 200 0\r%%EndComments\rFontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup\r/UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse\r{save true}{false}ifelse}{false}ifelse\r20 dict begin\r/FontInfo 16 dict dup begin\r  /version (001.000) readonly def\r  /FullName (StarBats) readonly def\r  /FamilyName (StarBats) readonly def\r  /Weight (Medium) readonly def\r  /ItalicAngle 0 def\r  /isFixedPitch false def\r  /UnderlinePosition -133 def\r  /UnderlineThickness 20 def\r  /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def\r  /em 1000 def\r  /ascent 917 def\r  /descent 200 def\rend readonly def\r/FontName /StarBats def\r/Encoding 256 array\rdup 0/.notdef put\rdup 1/.notdef put\rdup 2/.notdef put\rdup 3/glyph140 put\rdup 4/glyph141 put\rdup 5/ch5 put\rdup 6/ch6 put\rdup 7/.notdef put\rdup 8/.notdef put\rdup 9/.notdef put\rdup 10/.notdef put\rdup 11/.notdef put\rdup 12/.notdef put\rdup 13/.notdef put\rdup 14/.notdef put\rdup 15/.notdef put\rdup 16/.notdef put\rdup 17/.notdef put\rdup 18/.notdef put\rdup 19/.notdef put\rdup 20/.notdef put\rdup 21/.notdef put\rdup 22/.notdef put\rdup 23/.notdef put\rdup 24/.notdef put\rdup 25/.notdef put\rdup 26/.notdef put\rdup 27/.notdef put\rdup 28/.notdef put\rdup 29/.notdef put\rdup 30/.notdef put\rdup 31/.notdef put\rdup 32/space put\rdup 33/exclam put\rdup 34/quotedbl put\rdup 35/numbersign put\rdup 36/dollar put\rdup 37/percent put\rdup 38/ampersand put\rdup 39/quotesingle put\rdup 40/parenleft put\rdup 41/parenright put\rdup 42/asterisk put\rdup 43/plus put\rdup 44/comma put\rdup 45/hyphen put\rdup 46/period put\rdup 47/slash put\rdup 48/zero put\rdup 49/one put\rdup 50/two put\rdup 51/three put\rdup 52/four put\rdup 53/five put\rdup 54/six put\rdup 55/seven put\rdup 56/eight put\rdup 57/nine put\rdup 58/colon put\rdup 59/semicolon put\rdup 60/less put\rdup 61/equal put\rdup 62/greater put\rdup 63/question put\rdup 64/at put\rdup 65/A put\rdup 66/B put\rdup 67/C put\rdup 68/D put\rdup 69/E put\rdup 70/F put\rdup 71/G put\rdup 72/H put\rdup 73/I put\rdup 74/J put\rdup 75/K put\rdup 76/L put\rdup 77/M put\rdup 78/N put\rdup 79/O put\rdup 80/P put\rdup 81/Q put\rdup 82/R put\rdup 83/S put\rdup 84/T put\rdup 85/U put\rdup 86/V put\rdup 87/W put\rdup 88/X put\rdup 89/Y put\rdup 90/Z put\rdup 91/bracketleft put\rdup 92/backslash put\rdup 93/bracketright put\rdup 94/asciicircum put\rdup 95/underscore put\rdup 96/grave put\rdup 97/a put\rdup 98/b put\rdup 99/c put\rdup 100/d put\rdup 101/e put\rdup 102/f put\rdup 103/g put\rdup 104/h put\rdup 105/i put\rdup 106/j put\rdup 107/k put\rdup 108/l put\rdup 109/m put\rdup 110/n put\rdup 111/o put\rdup 112/p put\rdup 113/q put\rdup 114/r put\rdup 115/s put\rdup 116/t put\rdup 117/u put\rdup 118/v put\rdup 119/w put\rdup 120/x put\rdup 121/y put\rdup 122/z put\rdup 123/braceleft put\rdup 124/bar put\rdup 125/braceright put\rdup 126/asciitilde put\rdup 127/.notdef put\rdup 128/Euro put\rdup 129/.notdef put\rdup 130/quotesinglbase put\rdup 131/florin put\rdup 132/quotedblbase put\rdup 133/ellipsis put\rdup 134/.notdef put\rdup 135/daggerdbl put\rdup 136/circumflex put\rdup 137/perthousand put\rdup 138/Scaron put\rdup 139/guilsinglleft put\rdup 140/OE put\rdup 141/.notdef put\rdup 142/.notdef put\rdup 143/.notdef put\rdup 144/.notdef put\rdup 145/quoteleft put\rdup 146/quoteright put\rdup 147/quotedblleft put\rdup 148/quotedblright put\rdup 149/bullet put\rdup 150/endash put\rdup 151/emdash put\rdup 152/.notdef put\rdup 153/trademark put\rdup 154/scaron put\rdup 155/guilsinglright put\rdup 156/oe put\rdup 157/.notdef put\rdup 158/.notdef put\rdup 159/.notdef put\rdup 160/.notdef put\rdup 161/exclamdown put\rdup 162/cent put\rdup 163/sterling put\rdup 164/currency put\rdup 165/yen put\rdup 166/brokenbar put\rdup 167/section put\rdup 168/dieresis put\rdup 169/copyright put\rdup 170/ordfeminine put\rdup 171/guillemotleft put\rdup 172/Tom put\rdup 173/Pete put\rdup 174/registered put\rdup 175/macron put\rdup 176/degree put\rdup 177/plusminus put\rdup 178/twosuperior put\rdup 179/threesuperior put\rdup 180/acute put\rdup 181/mu1 put\rdup 182/paragraph put\rdup 183/middot put\rdup 184/cedilla put\rdup 185/onesuperior put\rdup 186/ordmasculine put\rdup 187/guillemotright put\rdup 188/onequarter put\rdup 189/onehalf put\rdup 190/threequarters put\rdup 191/questiondown put\rdup 192/Agrave put\rdup 193/Aacute put\rdup 194/Acircumflex put\rdup 195/Atilde put\rdup 196/Adieresis put\rdup 197/Aring put\rdup 198/AE put\rdup 199/Ccedilla put\rdup 200/STARling put\rdup 201/Idee put\rdup 202/nbspace put\rdup 203/Edieresis put\rdup 204/Igrave put\rdup 205/Iacute put\rdup 206/Icircumflex put\rdup 207/Idieresis put\rdup 208/Eth put\rdup 209/Ntilde put\rdup 210/Ograve put\rdup 211/Oacute put\rdup 212/Ocircumflex put\rdup 213/Otilde put\rdup 214/Odieresis put\rdup 215/multiply put\rdup 216/Oslash put\rdup 217/Ugrave put\rdup 218/Uacute put\rdup 219/Ucircumflex put\rdup 220/Udieresis put\rdup 221/Yacute put\rdup 222/Thorn put\rdup 223/germandbls put\rdup 224/agrave put\rdup 225/aacute put\rdup 226/acircumflex put\rdup 227/atilde put\rdup 228/adieresis put\rdup 229/aring put\rdup 230/ae put\rdup 231/ccedilla put\rdup 232/egrave put\rdup 233/eacute put\rdup 234/ecircumflex put\rdup 235/edieresis put\rdup 236/igrave put\rdup 237/iacute put\rdup 238/icircumflex put\rdup 239/idieresis put\rdup 240/eth put\rdup 241/ntilde put\rdup 242/ograve put\rdup 243/oacute put\rdup 244/ocircumflex put\rdup 245/otilde put\rdup 246/odieresis put\rdup 247/divide put\rdup 248/oslash put\rdup 249/ugrave put\rdup 250/uacute put\rdup 251/ucircumflex put\rdup 252/udieresis put\rdup 253/yacute put\rdup 254/thorn put\rdup 255/uni20AC put\r readonly def\r/PaintType 0 def\r/FontType 1 def\r/StrokeWidth 0 def\r/FontMatrix[0.001 0 0 0.001 0 0]readonly def\r/UniqueID 4092170 def\r/FontBBox{-12 -210 1083 917}readonly def\rcurrentdict end\rcurrentfile eexec\r
-d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1
-\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\r0000000000000000000000000000000000000000000000000000000000000000\rcleartomark{restore}if\r
-%%EndResource
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 223.20 C
-ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<545745422076696120465450> 146.88 222.24 C
-0.000 0.000 1.000 RGB
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<6674703a2f2f667470> 158.16 259.92 C
-0.000 0.000 0.000 RGB
-<2d783530302e756e692d74756562696e67656e2e64652f747765622f747765622e7461722e5a> 213.60 259.92 C
-0.000 0.000 1.000 RGB
-<6674703a2f2f6674702d783530302e756e692d74756562696e67656e2e64652f747765622f747765622e74677a> 158.16 290.16 C
-0.000 0.000 0.000 RGB
-/StarBats ff [24.00 0 0 -24.00 0 0] mf sf
-<22> 112.80 357.12 C
-/Helvetica-ISO8859-1 ff [24.00 0 0 -24.00 0 0] mf sf
-<537570706f7274206d61696c696e67206c697374> 146.88 356.16 C
-/Helvetica-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf
-<747765622d737570706f7274406d61696c3530302e756e692d74756562696e67656e2e6465> 158.16 393.60 C
-gr
-%%PageTrailer
-rs
-%%BoundingBox: 18 18 555 759
-showpage
-%%Trailer
-%%Pages: 11
-end
-%%DocumentSuppliedResources: font StarBats StarBats StarBats StarBats StarBats StarBats StarBats 
-%%EOF
diff --git a/contrib/tweb/doc/Presentation/README b/contrib/tweb/doc/Presentation/README
deleted file mode 100644 (file)
index c91988b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-doc/Presentation/README
-=======================
-
-This directory contains documentation concerning TWEB that was presented 
-at different occasions.
-
-- DANTE-01-99.ps
-
-  Presentation of the dynamic features of TWEB (i.e., gateway-switching
-  and dynamic re-configuration) at the DANTE NameFlow meeting, January,
-  18th, 1999, in Utrecht, NL.
-
diff --git a/contrib/tweb/html.c b/contrib/tweb/html.c
deleted file mode 100644 (file)
index abaa35d..0000000
+++ /dev/null
@@ -1,939 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* html.c.....                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - HTML-Procedures                  *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 28 1999                ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: html.c,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "html.h"
-#include "init_exp.h"
-#include "support_exp.h"
-
-#ifdef TUETEL
-#include "tueTel_exp.h"
-#endif
-
-PUBLIC void print_attr(ld, fp, dn, label, tattr, e, flag, doNotShow, glob)
-LDAP *ld;
-FILE *fp;
-char *dn;
-char *label;
-char *tattr;
-LDAPMessage *e;
-int  flag;
-char *doNotShow;
-GLOB_STRUCT *glob;
-{
-    char    **val;
-    int    i, gotone = 0, firstline = TRUE, valid_label = FALSE;
-    static char *nlabel;
-    char    imageChar = 'J';
-    char strbuf[BUFSIZ];
-    int first_of_same = TRUE;
-
-    nlabel = ldap_friendly_name(glob->friendlyfile, label, &fm); 
-
-    if ( (val = ldap_get_values( ld, e, tattr )) == NULL )
-        return;
-
-        /* check if only 1 value and this one is in "doNotShow"
-        if((doNotShow) && (val[1] == NULL) && (strcmp(val[0],doNotShow) == 0))
-            return;
-        */
-
-    for ( i = 0; val[i]; i++ ) {
-
-        sprintf(strbuf, "(%s)", glob->la[0]);
-        if(!strncasecmp(val[i], strbuf, 4)) {
-            strcpy(val[i], val[i]+4);
-        }
-        else if(val[i][0] == '(' && val[i][3] == ')' ) {
-            val[i][0] = '\0';
-            continue;
-        }
-
-        if (!doNotShow || strncasecmp (val[i], doNotShow, strlen (val[i])))
-            valid_label = TRUE;
-        else
-            val[i][0] = '\0';
-    }
-
-    if(!valid_label) {
-
-        ldap_value_free (val);
-        return;
-
-    }
-
-    fprintf( fp, "\n<DT><B>%s</B><DD>", nlabel );
-
-        /* handle photo-requests */
-        if((flag == BMP) || (flag == JPEG2GIF) || (flag == JPEG)) {
-            photof(fp, flag, imageChar, dn, tattr);
-            return;
-        }
-
-    for ( i = 0; val[i] != NULL; i++ ) {
-
-        char *vali;
-
-        if(!*label ) first_of_same = FALSE;
-
-        if(!*val[i]) continue;
-
-        vali = char2html(val[i]);
-
-        if (flag == URL) {
-            urlf(fp, vali);
-
-#ifdef TUE_TEL
-        } else if (flag == TFUNCPERS) {
-            tfuncpersf(fp, vali, ld, glob);
-#endif
-
-        } else if (flag == DYNAMICDN) {
-            dynamicdnf(fp, vali, glob);
-
-        } else if (flag == INDEXURL) {
-            indexurlf(fp, vali, dn, glob);
-
-        } else if (flag == URI) {
-            urif(fp, vali, glob);
-
-        } else if (flag == PGPKEY) {
-            pgpkeyf(fp, vali, &firstline);
-
-        } else if ( ( flag == MULTILINE ) || (strchr(vali, '$') && 
-                                    strncmp(vali, "{T.61}", 6) != 0 )) {
-            multilinef(fp, vali, &first_of_same, &firstline, &gotone, nlabel);
-
-        } else if (flag == BOOLEAN) {
-            booleanf(fp, val[i], glob);
-
-        } else if (flag == DATE) {
-            datef(fp, val[i]);
-
-        } else if (flag == MAILTO) {
-            mailtof(fp, val[i], vali);
-
-        } else if (flag == HREF) {
-            hreff(fp, val[i], vali, glob);
-
-        } else if (flag == MOVETO) {
-            movetof(fp, val[i], vali, glob);
-
-        } else if (flag == PRE) {
-            pref(fp, vali, glob);
-
-        } else if (flag == HEADER) {
-            headerf(fp, vali, glob);
-
-        } else if (flag == REFERRAL) {
-            referralf(fp, vali, glob);
-
-#ifdef TUE_TEL
-        } else if(flag == FAXTABLE) {
-            faxtablef(fp, val, &firstline);
-#endif
-
-        } else
-            defaultf(fp, vali, &firstline);
-    }
-    ldap_value_free( val );
-}
-/* end of function: print_attr */
-
-PUBLIC void form_attr(ld, fp, label, tattr, e, multiline, add_empty, glob)
-LDAP *ld;
-FILE *fp;
-char *label;
-char *tattr;
-LDAPMessage *e;
-int  multiline;
-int  add_empty;
-GLOB_STRUCT *glob;
-{
-        char    **val, *s;
-        char    buffer[1024];
-        int     i, gotone = 0, line = 0;
-        static char *nlabel;
-        nlabel = ldap_friendly_name(glob->friendlyfile, label, &fm);
-        if ( (val = ldap_get_values( ld, e, tattr )) == NULL ) {
-        if (add_empty > 0)
-            if(multiline)
-                fprintf( fp, "<DT><B>%s</B><DD><TEXTAREA NAME=\"%s=\" ROWS=4 COLS=30></TEXTAREA><BR>\n", 
-                                           nlabel, tattr);
-            else
-                        fprintf( fp, "<DT><B>%s</B><DD><INPUT NAME=\"%s=\" SIZE=30 ><BR>\n", 
-                                           nlabel, tattr);
-                return;
-    }
-        fprintf( fp, "\n<DT><B>%s</B><DD>", nlabel );
-    buffer[0] ='\0';
-        for ( i = 0; val[i] != NULL; i++ ) {
-                if ( multiline ) {
-                        char    *s, *p;
-                    buffer[0] ='\0';
-                        if ( gotone )
-                                fprintf( fp, "<DT><B>%s</B><DD>", nlabel);
-                        p = s = val[i];
-                        while ( ( s = strchr( s, '$' )) ) {
-                                *s++ = '\0';
-                                while ( isspace( *s ) )
-                                        s++;
-                                if ( line == 0 ) {
-                                        sprintf(buffer, "%s", p);
-                                        line++;
-                                } else {
-                                        sprintf(buffer, "%s\n%s", buffer, p);
-                    line++;
-                                }
-                                p = s;
-                        }
-            if (line++ == 0) {
-                sprintf(buffer, "%s", p);
-            } else {
-                sprintf(buffer, "%s\n%s", buffer, p);
-            }
-            s = form_encode(buffer);
-                fprintf( fp, 
-                "<TEXTAREA NAME=\"%s=%s\" ROWS=%d COLS=30>%s</TEXTAREA><BR>\n", 
-                                 tattr, s, line + 1, s);
-                        /* fprintf( fp, "<INPUT NAME=\"%s=%s\" SIZE=30,%d VALUE=\"%s\"> <BR>\n", tattr, s, line + 1, s); */
-                        gotone = 1;
-                        line = 0;
-                } else {
-            s = form_encode(val[i]);
-                        fprintf( fp, "<INPUT NAME=\"%s=%s\" SIZE=\"%d\" VALUE=\"%s\"><BR>\n", tattr, s, 
-             strlen(val[i]) > 30 ? strlen(val[i]) + 3 : 30, s);
-                }
-        }
-    if (add_empty > i)
-        fprintf( fp, "<INPUT NAME=\"%s=\" SIZE=30 ><BR>\n", tattr);
-        ldap_value_free( val );
-}
-/* end of function: form_attr */
-
-PUBLIC void do_pict(ld, fp, dn, type, glob)
-LDAP *ld;
-FILE *fp;
-char *dn;
-int type;
-GLOB_STRUCT *glob;
-{
-    int        rc, i;
-    struct berval    **val;
-    char            cmd[128], buffer[1024];
-    char        *s;
-    FILE        *op, *tp;
-    LDAPMessage    *res, *e;
-    struct stat    st;
-        char            *cPtr, *ptype;
-    char            *tattr;
-
-    if ( (rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, NULL,
-        NULL, 0, &res )) != LDAP_SUCCESS ) {
-        do_error(fp, rc, NOT_FOUND, glob);
-        return;
-    }
-
-    if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-        do_error(fp, -2, SERVER_ERROR, glob);
-        return;
-    }
-
-        /*
-         *  old behaviour: use "photo" or "jpegPhoto" attribute
-         *  as indicated by type-argument.
-         */
-        tattr = (type == 0 ? "photo" : "jpegPhoto");
-
-        /* NEW: if attr is added to URL via "+" use that attribute */
-        if( ( cPtr = strQuoteChr(dn,'+')) )
-             tattr = ++cPtr;
-
-    if ( (val = ldap_get_values_len( ld, e, tattr)) == NULL )
-        return;
-
-    s  = tmpnam( NULL );
-    tp = fopen( s, "w+");
-
-    if (type == 0) {  /* g3fax photo -> xbm */
-        sprintf(cmd, "%s > %s", G3TOXBM, s);
-        if (debug) fprintf(stderr, "%ld bytes FAX!! %s\n", 
-                                     val[0]->bv_len, cmd);
-                ptype = "x-xbitmap";
-    } else if (type == 1) {    /* jpeg -> gif */
-        sprintf(cmd, "%s > %s", JPEGTOGIF, s);
-        if (debug) fprintf(stderr, "%ld bytes JPEG!! %s\n", 
-                                     val[0]->bv_len, cmd);
-                ptype = "gif";
-    } else {              /* jpeg direct */
-        sprintf(cmd, "cat > %s", s);
-        if (debug) fprintf(stderr, "%ld bytes JPEG!! %s\n", 
-                                     val[0]->bv_len, cmd);
-                ptype = "jpeg";
-           }
-
-        
-        
-    if (http == 1) {
-        fprintf(fp, "HTTP/1.0 %d OK<br>MIME-Version: 1.0<br>", 
-                            DOCUMENT_FOLLOWS );
-        fprintf(fp, "Content-type: image/%s<br>", ptype );
-    }
-        if (request == HEAD) {                
-        fflush(fp);
-        exit_tweb (1);                                   
-        }                          
-    if ((op = popen(cmd, "w")) == NULL ) 
-         return;
-    fwrite(val[0]->bv_val, val[0]->bv_len, 1, op);
-    pclose(op);
-    if (stat(s, &st) == 0 && http == 1) {
-        fprintf(fp, "Content-length: %lu<br>", st.st_size);
-        if (debug) fprintf(stderr, "Image size: %lu\n", st.st_size);
-    }
-    fprintf(fp, "<br>\n\n");
-
-    while (( i = fread(buffer, 1, 1024, tp))) fwrite(buffer, 1, i, fp);
-    fclose(tp);
-    if (unlink(s) == -1) {
-        if (debug) perror("Couldn't unlink temp image file");
-    }
-    fflush(fp);
-}
-/* end of function: do_pict */
-
-
-
-PUBLIC void do_audio(ld, fp, dn, type, glob)
-LDAP *ld;
-FILE *fp;
-char *dn;
-int type;
-GLOB_STRUCT *glob;
-{
-    int        rc;
-    struct berval    **val;
-    LDAPMessage    *res, *e;
-    struct timeval    timeout;
-
-    timeout.tv_sec = glob->timeout;
-    timeout.tv_usec = 0;
-    if ( (rc = ldap_search_st( ld, dn, LDAP_SCOPE_BASE, NULL,
-        NULL, 0, &timeout, &res )) != LDAP_SUCCESS ) {
-        do_error(fp, rc, NOT_FOUND, glob);
-        return;
-    }
-
-    if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-        do_error(fp, -2, SERVER_ERROR, glob);
-        return;
-    }
-    if ( (val = ldap_get_values_len( ld, e, "audio" )) == NULL )
-        return;
-    if (http == 1) {
-        fprintf(fp, "HTTP/1.0 %d OK\nMIME-Version: 1.0\nServer: %s\n", 
-                  DOCUMENT_FOLLOWS, version);
-        fprintf(fp, "Content-type:  audio/basic<P>Content-length: %ld\n\n", 
-                  val[0]->bv_len);
-    }
-        if (request == HEAD) {                
-        fflush(fp);
-        exit_tweb (1);                                   
-        }                          
-    fwrite(val[0]->bv_val, val[0]->bv_len, 1, fp);
-    fflush(fp);
-}
-/* end of function: do_audio */
-
-PUBLIC void do_sizelimit(fp, type, glob)
-FILE *fp;
-int type;
-GLOB_STRUCT *glob;
-
-{
-    fprintf(fp, type ? glob->la[21] : glob->la[20]);
-}
-/* end of function: do_sizelimit */
-
-PUBLIC void do_error(fp, code, status, glob)
-FILE *fp;
-int code;
-int status;
-GLOB_STRUCT *glob;
-{
-    char *s = "";
-
-           if (http == 1) {
-        switch (status) {
-              case BAD_REQUEST:      s = "Bad request"; break;
-            case AUTH_REQUIRED:      s = "Authorization required"; break;
-            case FORBIDDEN:      s = "Forbidden"; break;
-            case NOT_FOUND:      s = "Not found"; break;
-            case SERVER_ERROR:      s = "Server error"; break;
-            case NOT_IMPLEMENTED: s = "Not implemented"; break;
-            default:          s = "Unknown error";
-        }
-
-        fprintf(fp, "HTTP/1.0 %03d %s\nMIME-Version: 1.0\nContent-Type: text/html\n\n", status, s);
-            }
-
-        if (request == HEAD) {
-        fflush(fp);
-                   exit_tweb (1);
-        }
-
-        fprintf( fp, HTML_HEAD_TITLE, glob->la[22], glob->la[100]);
-        fprintf( fp, "\n<H2>%s %s</H2>\n%s <P>%s <EM> %d: %s.</EM><P>%s<br></BODY></HTML>", glob->la[23], s, glob->la[24], glob->la[25], code, ldap_err2string( code ), glob->la[26] );
-}
-/* end of function: do_error */
-
-PUBLIC void explain_error (fp, error, status, glob )
-FILE *fp;
-char *error;
-int status;
-GLOB_STRUCT *glob;
-
-{
-        char *s = "Unknown error";
-        if (http == 1) {    
-                switch (status) {
-                case BAD_REQUEST:       s = "Bad request"; break;
-                case AUTH_REQUIRED:     s = "Authorization required"; break;
-                case FORBIDDEN:         s = "Forbidden"; break;   
-                case NOT_FOUND:         s = "Not found"; break;
-                case SERVER_ERROR:      s = "Server error"; break;              
-                case NOT_IMPLEMENTED:   s = "Not implemented"; break;
-                default:                s = "Unknown error";                  
-                }                                                    
-        fprintf(fp, "HTTP/1.0 %03d %s\n",status, s);
-                fprintf(fp, "MIME-Version: 1.0\n");
-                fprintf(fp, "Content-Type: text/html\n\n");
-        }                                           
-        if (request == HEAD) {                   
-        fflush(fp);
-                exit_tweb (1);               
-        }
-        fprintf( fp, HTML_HEAD_TITLE, glob->la[22], glob->la[100]);
-    fprintf( fp, "<H2>%s: %s</H2>\n", glob->la[22], s);
-    fprintf( fp, "%s</BODY>\n</HTML>", error);
-}    
-/* end of function: explain_error */
-
-/* Make "Move upwards" Header */
-PUBLIC void make_header (fp, dn, action, glob)
-FILE *fp;
- char *dn;
-int action;
-GLOB_STRUCT *glob;
-{
-    char **s, **t, hrdn[1024];
-    int  cnt, i, j;
-    pGW_SWITCH_LINE gw_ptr;
-    char url[BUFSIZ];
-
-    if(glob->pull_down_menus) {
-        make_header_pull_down(fp, dn, action, glob);
-        return;
-    }
-
-    hrdn[0] = '\0';
-    if ( strlen(dn) == 0)        /* the root */
-        return;
-    s = ldap_explode_dn( dn, 1 );
-    t = ldap_explode_dn( dn, 0 );
-
-    strcpy(url, "M");
-    for(gw_ptr = glob->gw_switch->list; gw_ptr; gw_ptr = gw_ptr->next)
-        if (!strcasecmp(gw_ptr->dn, "ROOT"))
-            strcpy(url, gw_ptr->url);
-
-    fprintf( fp, "<strong>%s </strong><MENU>\n<LI> <A HREF=\"%s\">%s</A>\n",
-        glob->la[27], url, glob->la[77]);
-
-
-    for (cnt=0; t[cnt]; cnt++);
-    for (i = cnt - 1; i > 0 && s[i]; i--) {
-        strcpy(hrdn, hex_encode(t[i]));
-        for (j = i + 1; j < cnt ; j++) {
-            strcat(hrdn, hex_encode(", "));
-            strcat(hrdn,hex_encode(t[j]));
-        }
-        
-        strcpy(url, "/");
-        for(gw_ptr = glob->gw_switch->list; gw_ptr; gw_ptr = gw_ptr->next)
-            if (!dn_cmp(hex_encode (gw_ptr->dn), hrdn))
-                strcpy(url, url_complete(gw_ptr->url, hrdn, "M"));
-        if(strcmp(url, "/"))
-            fprintf( fp, "<LI> <A HREF=\"%s\">%s</A>\n",
-                         url, i == cnt - 1 ? 
-                         ldap_friendly_name( glob->friendlyfile, s[i], &fm ) : 
-                         s[i]);
-        else
-            fprintf( fp, "<LI> <A HREF=\"%sM%s\">%s</A>\n",
-                         url, hrdn, i == cnt - 1 ?
-                         ldap_friendly_name( glob->friendlyfile, s[i], &fm ) :
-                         s[i]);
-            hrdn[0] = '\0';
-    }
-    fprintf( fp, "</MENU>\n");
-    ldap_value_free(s);
-    ldap_value_free(t);
-}
-/* end of function: make_header */
-
-/* Make "Move upwards" Header with pull-down-menus*/
-PUBLIC void make_header_pull_down (fp, dn, action, glob)
-FILE *fp;
- char *dn;
-int action;
-GLOB_STRUCT *glob;
-{
-    char **s, **t, hrdn[1024];
-    int  cnt, i, j;
-    pGW_SWITCH_LINE gw_ptr;
-    char url[BUFSIZ];
-
-    hrdn[0] = '\0';
-    if ( strlen(dn) == 0)        /* the root */
-        return;
-    s = ldap_explode_dn( dn, 1 );
-    t = ldap_explode_dn( dn, 0 );
-
-    strcpy(url, "M");
-    for(gw_ptr = glob->gw_switch->list; gw_ptr; gw_ptr = gw_ptr->next)
-        if (!strcasecmp(gw_ptr->dn, "ROOT"))
-            strcpy(url, gw_ptr->url);
-
-    fprintf( fp, "<FORM ACTION=\"/D\">\n");
-    fprintf( fp, 
-       "<INPUT TYPE=submit VALUE=\"%s\"> -&gt; <SELECT NAME=\"H\">\n",
-                                   glob->la[27]);
-    fprintf( fp, "<OPTION VALUE=\"%s\">%s\n", url, glob->la[77]);
-
-    for (cnt=0; t[cnt]; cnt++);
-    for (i = cnt - 1; i > 0 && s[i]; i--) {
-        strcpy(hrdn, hex_encode(t[i]));
-        for (j = i + 1; j < cnt ; j++) {
-            strcat(hrdn, hex_encode(", "));
-            strcat(hrdn,hex_encode(t[j]));
-        }
-        
-        strcpy(url, "/");
-        for(gw_ptr = glob->gw_switch->list; gw_ptr; gw_ptr = gw_ptr->next)
-            if (!dn_cmp(hex_encode (gw_ptr->dn), hrdn))
-                strcpy(url, url_complete(gw_ptr->url, hrdn, "M"));
-        if(strcmp(url, "/"))
-            fprintf( fp, "<OPTION VALUE=\"%s\" %s>%s\n", url,
-                                i==1 ? "SELECTED" : "", i == cnt - 1 ?
-                     ldap_friendly_name( glob->friendlyfile, s[i], &fm ) :s[i]);
-        else
-            fprintf( fp, "<OPTION VALUE=\"%sM%s\" %s>%s\n",
-                     url, hrdn, i==1 ? "SELECTED" : "", i == cnt - 1 ? 
-                     ldap_friendly_name( glob->friendlyfile, s[i], &fm ) :s[i]);
-            hrdn[0] = '\0';
-    }
-    fprintf( fp, "</SELECT></FORM>\n");
-
-    ldap_value_free(s);
-    ldap_value_free(t);
-}
-/* end of function: make_header_pull_down */
-
-PUBLIC char * url_complete (gwp_url, rdn, separator)
-char *gwp_url, *rdn, *separator;
-{
-    static char url[BUFSIZ];
-    char *strptr;
-
-    strcpy(url, gwp_url);
-
-    if(!strchr (gwp_url, '=')) {
-
-        if (!strncasecmp (url, "http://", 7)) {
-
-            if ( ( strptr = strchr (url+7, '/')) ) *(++strptr) = '\0';
-            else strcat (url, "/");
-
-        } else *url = '\0';
-
-        sprintf (url, "%s%s%s", url, separator, rdn);
-
-    }
-
-    return(url);
-
-}
-/* end of function: url_complete */
-
-PRIVATE void photof(fp, flag, imageChar, dn, tattr)
-FILE *fp;
-int  flag;
-char    imageChar;
-char *dn;
-char *tattr;
-{
-    switch(flag) {
-        case BMP     : imageChar = 'G'; break;
-        case JPEG2GIF: imageChar = 'I'; break;
-        case JPEG    : imageChar = 'J'; break;
-    }
-    fprintf( fp, "<IMG ALT=\"Photo\" SRC=\"%c%s\"+%s>\n",
-               imageChar, hex_encode(dn), tattr);
-}
-/* end of function: photof */
-
-PRIVATE void urlf(fp, vali)
-FILE *fp;
-char *vali;
-{
-    char *cp;
-
-    if ((cp = strchr(vali, '$')) != NULL) {
-        *cp++ = '\0';
-        fprintf( fp, "%s%c\n", vali,
-           (vali[0] ? ':' : ' '));
-        fprintf(fp," <A HREF=\"%s\"> %s</A><BR>\n",
-             cp, cp);
-    } else
-        fprintf( fp, "%s<BR>\n", vali);
-}
-/* end of function: urlf */
-
-PRIVATE void dynamicdnf(fp, vali, glob)
-FILE *fp;
-char *vali;
-GLOB_STRUCT *glob;
-{
-    fprintf(fp," <A HREF=\"%s/M%s\"> %s</A><BR>\n",
-
-#ifdef TUE_TEL
-               dn2server(vali, glob),
-#else
-               "",
-#endif
-
-               vali, vali);
-}
-/* end of function: dynamicdnf */
-
-/* Allow href dn-lable flexible configuration via INDEXURL */
-PRIVATE void indexurlf(fp, vali, entrydn, glob)
-FILE *fp;
-char *vali;
-char *entrydn;
-GLOB_STRUCT *glob;
-{
-    char *cp;
-    char dnbuf[BUFSIZ], *strptr, **dn;
-    char rulebuf[BUFSIZ], *disp_item;
-    int arrsize, first;
-    char entrydnbuf[BUFSIZ], dit_dnbuf[BUFSIZ];
-    int index;
-
-    if (((cp = strchr(vali, ' ')) != NULL) && glob->index_url) {
-
-        *cp++ = '\0';
-        index = atoi(cp);
-
-        if ( index < 0 || index >= INDEX_RULE_SIZE )
-            return;
-        if (!glob->index_url->rarr[index].rule) {
-            return;
-        }
-
-        /* case entrydn out of range */
-        strcpy(entrydnbuf, entrydn);
-        strcpy(dit_dnbuf, glob->index_url->rarr[index].dit_dn);
-        dn_normalize(entrydnbuf);
-        dn_normalize(dit_dnbuf);
-        if(!dn_issuffix(entrydnbuf, dit_dnbuf)){
-            fprintf(fp," <A HREF=\"%s\"> %s</A><BR>\n", vali, cp);
-            return;
-        }
-
-        /* return if url doesn't contain cn= ( no dn ) */
-        if(!(strptr = strstr(vali, "cn=")))
-            return;
-        strcpy(dnbuf, strptr);
-        hex_decode(dnbuf);
-        dn = ldap_explode_dn(dnbuf, 1);
-
-        for(arrsize=0; dn[arrsize]; arrsize++)
-            ;
-
-        if(arrsize && glob->strip_pin)
-            trimright(dn[0], " 1234567890");
-
-        fprintf(fp," <A HREF=\"%s\">", vali);
-        strcpy(rulebuf, glob->index_url->rarr[index].rule);
-        first = 1;
-
-        for(disp_item = strtok(rulebuf, ","); disp_item;
-                                              disp_item = strtok(NULL, ",")) {
-            if(abs(atoi(disp_item)) >= arrsize) continue;
-
-            if(*disp_item == '-') {
-                fprintf(fp,"%s%s", !first ? ", " : "",
-                                   dn[arrsize + atoi(disp_item) - 1]);
-            } else {
-                fprintf(fp,"%s%s", !first ? ", " : "", dn[atoi(disp_item)]);
-            }
-            first = 0;
-        }
-
-        fprintf(fp,"</A><BR>\n");
-    } else
-        fprintf( fp, "%s<BR>\n", vali);
-}
-/* end of function: indexurlf */
-
-PRIVATE void urif(fp, vali, glob)
-FILE *fp;
-char *vali;
-GLOB_STRUCT *glob;
-{
-    char *cp;
-
-    if(glob->gw_switch->dynamic && strstr(vali, "(gw"))
-        return;
-    if ((cp = strchr(vali, ' ')) != NULL) {
-        *cp++ = '\0';
-        fprintf(fp," <A HREF=\"%s\"> %s</A><BR>\n", vali, cp);
-    } else
-        fprintf( fp, "%s<BR>\n", vali);
-}
-/* end of function: urif */
-
-/* function for ldap-referrals etc. */
-PRIVATE void referralf(fp, vali, glob)
-FILE *fp;
-char *vali;
-GLOB_STRUCT *glob;
-{
-    char *cp;
-
-    if(glob->gw_switch->dynamic && strstr(vali, "(gw"))
-        return;
-    if ((cp = strchr(vali, ' ')) != NULL) {
-        *cp++ = '\0';
-        fprintf(fp," <A HREF=\"http://%s:%d/W%s\"> %s</A><BR>\n",
-                glob->hostname, glob->webport, vali, cp);
-    } else
-        fprintf(fp," <A HREF=\"http://%s:%d/W%s\"> %s</A><BR>\n",
-                glob->hostname, glob->webport, vali, vali);
-}
-/* end of function: referralf */
-
-PRIVATE void pgpkeyf(fp, vali, firstline)
-FILE *fp;
-char *vali;
-int *firstline;
-{
-    char    *s, *p;
-
-    fprintf( fp, "<TT>\n");
-    p = s = vali;
-    while ( ( s = strstr( s, " $" )) ) {
-        *s++ = '\0';   /*  delete BLANK  */
-        *s++ = '\0';   /*  delete DOLLAR */
-        while ( isspace( *s ) )
-            s++;
-        if ( *firstline == TRUE ) {
-            fprintf( fp, "<DT>%s<BR>\n", p );
-            *firstline = FALSE;
-        } else if (!strncasecmp(p, "Version", 7)) {
-            fprintf( fp, "%s<BR><BR>\n", p );
-        } else {
-            fprintf( fp, "%s<BR>\n", p );
-        }
-        p = s;
-    }
-    if ( *firstline == TRUE ) {
-        fprintf( fp,"<DT>%s<BR>", p );
-        *firstline = FALSE;
-    } else {
-        fprintf( fp, "%s\n", p );
-    }
-    fprintf( fp, "</TT>\n");
-}
-/* end of function: pgpkeyf */
-
-PRIVATE void multilinef(fp, vali, first_of_same, firstline, gotone, nlabel)
-FILE *fp;
-char *vali;
-int *first_of_same;
-int *firstline;
-int *gotone;
-char *nlabel;
-{
-    char    *s, *p;
-
-    if ( !*first_of_same && *gotone)
-        fprintf( fp, "<BR>");
-    if ( *gotone && *first_of_same)
-        fprintf( fp, "<DT><B>%s</B><DD>", nlabel);
-    else if (!*first_of_same)
-        fprintf( fp, "<BR>");
-    p = s = vali;
-
-    /*  PATCH to process MULTILINE correctly:
-        replace  strstr() instead of strchr(), in order not to missinterpret 
-        DOLLAR in Text ; /KSp, 95/06/28
-    */
-
-    /*
-    while ( s = strchr( s, '$' ) ) {
-    */
-    while ( ( s = strstr( s, " $" )) ) {
-        *s++ = '\0';   /*  delete BLANK  */
-        *s++ = '\0';   /*  delete DOLLAR */
-        while ( isspace( *s ) )
-            s++;
-
-        /*
-        if (dosyslog)
-            syslog (LOG_INFO, "multiLineAttr: %s", p);
-        */
-
-        fprintf( fp, "%s<BR>\n", p );
-        if ( *firstline == TRUE )
-            *firstline = FALSE;
-        p = s;
-    }
-    if ( *firstline ) {
-        fprintf( fp, "%s<BR>\n", p );
-    } else {
-        fprintf( fp, "%s", p );
-    }
-    *gotone = 1;
-    *firstline = FALSE;
-    *first_of_same = FALSE;
-}
-/* end of function: multilinef */
-
-PRIVATE void booleanf(fp, val_i, glob)
-FILE *fp;
-char *val_i;
-GLOB_STRUCT *glob;
-{
-    if (!strcmp(val_i, "TRUE")) fprintf( fp, "%s<BR>\n", glob->la[78]);
-    else fprintf( fp, "%s<BR>\n", glob->la[79]);
-}
-/* end of function: booleanf */
-
-PRIVATE void datef(fp, val_i)
-FILE *fp;
-char **val_i;
-{
-    fprintf( fp, "%s<BR>\n", format_date(&val_i, "%A, %d-%h-%y %T GMT"));
-}
-/* end of function: datef */
-
-PRIVATE void mailtof(fp, val_i, vali)
-FILE *fp;
-char *val_i;
-char *vali;
-{
-   fprintf (fp, "<A HREF=\"mailto:%s\">%s</A><BR>\n", val_i, vali);
-}
-/* end of function: mailtof */
-
-PRIVATE void hreff(fp, val_i, vali, glob)
-FILE *fp;
-char *val_i;
-char *vali;
-GLOB_STRUCT *glob;
-{
-    char    *ufn;
-    char    op = 'R';
-
-    ufn = friendly_dn( val_i, glob );
-    fprintf( fp, "<A HREF=\"/%c%s\">%s</A><BR>\n", op,
-        hex_encode(val_i), ufn ? ufn : vali);
-    if ( ufn ) {
-        free( ufn );
-    }
-}
-/* end of function: hreff */
-
-PRIVATE void movetof(fp, val_i, vali, glob)
-FILE *fp;
-char *val_i;
-char *vali;
-GLOB_STRUCT *glob;
-{
-    char    *ufn;
-    char     op = 'M';
-
-    ufn = friendly_dn( val_i, glob );
-    fprintf( fp, "<A HREF=\"/%c%s\">%s</A><BR>\n", op,
-        hex_encode(val_i), ufn ? ufn : vali);
-    if ( ufn ) {
-        free( ufn );
-    }
-}
-/* end of function: movetof */
-
-
-PRIVATE void headerf(fp, vali, firstline)
-FILE *fp;
-char *vali;
-int *firstline;
-{
-    fprintf( fp, "<DT>");
-    fprintf( fp, "<H1>");
-    fprintf( fp,"%s", vali );
-    fprintf( fp, "</H1>\n");
-}
-/* end of function: headerf */
-
-PRIVATE void pref(fp, vali, firstline)
-FILE *fp;
-char *vali;
-int *firstline;
-{
-    fprintf( fp, "<DT>");
-    fprintf( fp, "<PRE>");
-    fprintf( fp,"%s", vali );
-    fprintf( fp, "</PRE>\n");
-}
-/* end of function: pref */
-
-PRIVATE void defaultf(fp, vali, firstline)
-FILE *fp;
-char *vali;
-int *firstline;
-{
-    if ( *firstline == TRUE ) {
-        fprintf( fp,"%s", vali );
-        *firstline = FALSE;
-    } else {
-        fprintf( fp, "<BR>\n%s", vali );
-    }
-}
-/* end of function: defaultf */
-
diff --git a/contrib/tweb/html.h b/contrib/tweb/html.h
deleted file mode 100644 (file)
index a749e4f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* html.h.....                                                              *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            April 19 1996                Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 14 1999                ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: html.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#ifndef _HTML_
-#define _HTML_
-
-#include "html_exp.h"
-#include "dn_exp.h"
-
-PRIVATE void photof();
-PRIVATE void urlf();
-PRIVATE void urif();
-PRIVATE void referralf();
-PRIVATE void dynamicdnf();
-PRIVATE void indexurlf();
-PRIVATE void pgpkeyf();
-PRIVATE void multilinef();
-PRIVATE void booleanf();
-PRIVATE void datef();
-PRIVATE void mailtof();
-PRIVATE void hreff();
-PRIVATE void movetof();
-PRIVATE void pref();
-PRIVATE void headerf();
-PRIVATE void defaultf();
-PRIVATE void make_header_pull_down();
-
-#endif /* _HTML_ */
diff --git a/contrib/tweb/html_exp.h b/contrib/tweb/html_exp.h
deleted file mode 100644 (file)
index 815c423..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* html_exp.h.                                                              *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: html_exp.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#ifndef _HTML_EXP_
-#define _HTML_EXP_
-
-PUBLIC void print_attr(/*ld, fp, dn, label, tattr, e, flag, doNotShow, glob*/);
-PUBLIC void form_attr(/*ld, fp, label, tattr, e, multiline, add_empty, glob*/);
-PUBLIC void do_pict(/*ld, fp, dn, type, glob*/);
-PUBLIC void do_audio(/*ld, fp, dn, type, glob*/);
-PUBLIC void do_sizelimit(/*fp, type, glob*/);
-PUBLIC void do_error(/*fp, code, status, glob*/);
-PUBLIC void explain_error (/*fp, error, status, glob */);
-PUBLIC void make_header (/*fp, dn, action, glob*/);
-PUBLIC char * url_complete (/*gwp_url, rdn, separator*/);
-
-
-
-#endif /* _HTML_EXP_ */
diff --git a/contrib/tweb/init.c b/contrib/tweb/init.c
deleted file mode 100644 (file)
index 667114f..0000000
+++ /dev/null
@@ -1,1858 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* init.c.....                                                              *
-*                                                                          *
-* Function:..Initialisation-Routine for TWEB                               *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            July 21 1995                 Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 11 1999                ZZZZZ  DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: init.c,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "init.h"
-
-
-PUBLIC void getopts (argc, argv, glob)
-int argc;
-char **argv;
-GLOB_STRUCT *glob;
-{
-    int            i;
-    extern char        *optarg;
-    char hname[BUFSIZ];
-    struct hostent *hstruct;
-
-    while ( (i = getopt( argc, argv, "P:ad:f:l:p:x:b:L:" )) != EOF ) {
-        switch( i ) {
-        case 'a':
-            searchaliases = 0;
-            break;
-        case 'b':
-            if(glob->basedn && glob->basedn->dn)
-                free(glob->basedn->dn);
-            glob->basedn->dn = strdup( optarg );
-            break;
-        case 'd':
-            debug = atoi( optarg );
-#ifdef LDAP_DEBUG
-            ldap_debug = debug;
-#else
-            fprintf( stderr, 
-                             "warning: ldap debugging requires LDAP_DEBUG\n" );
-#endif
-            break;
-
-        case 'f':
-            glob->filterfile = strdup( optarg );
-            break;
-
-        case 'l':
-            dosyslog = cnvt_str2int( optarg, syslog_types, LOG_LOCAL3 );
-            break;
-
-        case 'p':
-            glob->webport = atoi( optarg );
-            break;
-
-        case 'P':
-            glob->ldapport = atoi( optarg );
-            break;
-
-        case 'x':
-            if(glob->ldapd)
-                free(glob->ldapd);
-            glob->ldapd = str_tolower( strdup( optarg ));
-            break;
-        case 'L':
-            break;
-        default:
-            usage(argv[0]);
-        }
-    }
-    if ( (glob->myname = strrchr( argv[0], '/' )) == NULL )
-        glob->myname = argv[0];
-    else
-        glob->myname++;
-
-    if(!glob->hostname) {
-        gethostname(hname, BUFSIZ);
-        hstruct = gethostbyname(hname);
-        glob->hostname = str_tolower( strdup( hstruct->h_name ));
-    }
-
-}
-/* end of function: getopts */
-
-PRIVATE void usage(name)
-char    *name;
-{
-        fprintf(stderr, USAGE, name);
-        exit( 1 );
-}
-/* end of function: usage */
-
-PUBLIC void check (glob)
-GLOB_STRUCT *glob;
-{
-    if(!glob->webport || !glob->ldapd || !glob->ldapport ||
-                        !glob->basedn || !glob->sort) {
-        fprintf(stderr,
-"\nMissing must-attribute: webport || ldapd || ldapport || basedn->dn || sort\n!\n\n");
-        exit(1);
-    }
-
-    if(glob->grant){
-        trim(glob->grant, "|");
-        glob->comp_grant = tweb_regcomp(glob->grant);
-    }
-
-    if(glob->refuse){
-        trim(glob->refuse, "|");
-        glob->comp_refuse = tweb_regcomp(glob->refuse);
-    }
-
-    if(glob->allow_string){
-        trim(glob->allow_string, "|");
-        glob->comp_allow = tweb_regcomp(glob->allow_string);
-    }
-
-    if(glob->deny_string){
-        trim(glob->deny_string, "|");
-        glob->comp_deny = tweb_regcomp(glob->deny_string);
-    }
-
-    if(!glob->webdn){
-        glob->webdn   = "c=DE";
-        if(glob->webpw) free(glob->webpw);
-        glob->webpw   = NULL;
-    }
-    if(!glob->webdn2){
-        glob->webdn2   = "c=BR";
-        if(glob->webpw2) free(glob->webpw2);
-        glob->webpw2   = NULL;
-    }
-
-    if(!glob->timeout)
-        glob->timeout = DEFAULT_TIMEOUT;
-    if(!glob->maxcount)
-        glob->maxcount = DEFAULT_MAXCOUNT;
-
-    if(!glob->subtree_search)
-        glob->subtree_search =
-                str2charray( "organization:organizationalUnit", ":");
-
-    glob->cache_expire = glob->cache_expire % MAX_EXPIRE;
-
-    f_test(glob);
-    if(glob->sort) {
-        pSORT_LINE s_ptr;
-        pDISPLAY d_ptr;
-
-        for(s_ptr = glob->sort; s_ptr; s_ptr = s_ptr->next)
-            for(d_ptr = glob->display; d_ptr; d_ptr = d_ptr->next) {
-                if(!strcmp(d_ptr->ocs, s_ptr->display_class)) {
-                    s_ptr->display_class_ptr = d_ptr;
-                    break;
-                }
-                if(!strcmp(d_ptr->ocs, "default"))
-                    s_ptr->display_class_ptr = d_ptr;
-            }
-    }
-
-    if( glob->ldapd && !strcmp(glob->ldapd, "x500-relay.uni-tuebingen.de") 
-            && !strcmp(glob->lang, "0")) {
-       fprintf( stderr,
-            "\n\n\tYou missed to set LDAP-HOST and LDAP-PORT to\n\
-             a machine of your own.\n\n\tPlease change as soon as \
-             possible to avoid\n\
-             overload of host x500-relay.uni-tuebingen.de !\n\n");
-    }
-
-}
-/* end of function: check */
-
-PUBLIC void init(argv, lang, glob)
-char **argv;
-char *lang;
-GLOB_STRUCT *glob;
-{
-FILE *fp;
-static char file[BUFSIZ];
-
-    glob->argv0 = strdup(argv[0]);
-    glob->gw_switch = (pGW_SWITCH) ch_calloc(1, sizeof(GW_SWITCH));
-    glob->basedn = (BASEDN_LINE *) ch_calloc(1, sizeof(BASEDN_LINE));
-    glob->basedn->dn = strdup("");
-    glob->menu_filter = strdup("(& (objectClass=top)(!(objectClass=dSA)) )");
-
-#ifdef RCINIT
-    strcpy(file, RCINIT);
-#else
-    sprintf( file, "%s.rc", argv[0] );
-#endif
-    glob->acfilename = file;
-    if(!(fp = fopen(file, "r"))) {
-        fprintf(stderr, "\n\nATTENTION!!!\n\nCould not open file %s !\n", file);
-        exit(1);
-    }
-    main_loop(fp, glob);
-    fclose(fp);
-
-#ifdef CONFINIT
-    strcpy(file, CONFINIT);
-#else
-    sprintf( file, "%s.conf.%s", argv[0], glob->lang );
-#endif
-    glob->acfilename = file;
-    if(!(fp = fopen(file, "r"))) {
-        fprintf(stderr, "\n\nATTENTION!!!\n\nCould not open file %s !\n", file);
-        exit(1);
-    }
-    main_loop(fp, glob);
-    fclose(fp);
-    return;
-}
-/* end of function: init */
-
-#define  STRINGP(x)   ((x) ? (x) : "(NULL)")
-
-PUBLIC void output(fp, glob, html_flag)
-FILE *fp;
-GLOB_STRUCT *glob;
-int html_flag;
-{
-    pDISPLAY d_ptr;
-    pSEARCH_ONLY_LINE so_ptr;
-    pGW_SWITCH_LINE gw_ptr;
-    pSORT_LINE s_ptr;
-    pDISPLAY_LINE dis_ptr;
-    pMODIFY_LINE mod_ptr;
-    pMODIF m_ptr;
-    pCACHING_TERMS_LINE ca_ptr;
-    pIND_ATTRS i_ptr;
-    IND_ATTR_ARR *idx;
-    pTABLE_DISPLAY ta_ptr;
-    pFORM_BUTTON fo_ptr;
-    int i;
-    char hb[BUFSIZ], he[BUFSIZ], li[BUFSIZ], lb[BUFSIZ], le[BUFSIZ];
-
-    strcpy(lb, html_flag ? "<UL>" : "");
-    strcpy(le, html_flag ? "</UL>" : "");
-    strcpy(li, html_flag ? "<LI>" : "");
-    strcpy(hb, html_flag ? "</UL><B>" : "");
-    strcpy(he, html_flag ? "</B><UL>" : "");
-
-/*for(i=0; glob->sort_attribs[i]; i++)
-    fprintf(fp,"%s<p>\n", glob->sort_attribs[i]);
-*/
-
-    fprintf(fp,
-        "%s\n\n\n###############CONFIGURATION-DISPLAY###############\n\n%s",
-        html_flag ? "<B>" : "", he);
-    fprintf(fp, "\n%s\n\n%s", version, html_flag ? "<p>" : "");
-/*    fprintf(fp, "%s\n%s\n\n%s", html_flag ? "<B>" : "", version, he);
-*/
-
-    fprintf(fp, "%sWEBDN%s%s %s\n", hb, he, li, STRINGP( glob->webdn ));
-    fprintf(fp, "%sWEBDN2%s%s %s\n", hb, he, li, STRINGP( glob->webdn2 ));
-    if(!html_flag){
-        fprintf(fp, "WEBPW: %s\n", STRINGP( glob->webpw ));
-        fprintf(fp, "WEBPW2: %s\n", STRINGP( glob->webpw2 ));
-    }
-    fprintf(fp, "%sTWEBHOST%s%s %s:%d\n", hb, he, li, STRINGP( glob->hostname ),
-            glob->virtualport ? glob->virtualport : glob->webport);
-    fprintf(fp, "%sWEBPORT%s%s %d\n", hb, he, li, glob->webport);
-    fprintf(fp, "%sTIMEOUT%s%s %d\n", hb, he, li, glob->timeout);
-    fprintf(fp, "%sLDAPD%s%s %s\n", hb, he, li, STRINGP( glob->ldapd ));
-    fprintf(fp, "%sLDAPPORT%s%s %d\n\n", hb, he, li, glob->ldapport);
-    fprintf(fp, "%sETCDIR%s%s %s\n", hb, he, li, STRINGP( glob->etcdir ));
-    fprintf(fp, "%sHELPFILE%s%s %s\n", hb, he, li, STRINGP( glob->helpfile ));
-    fprintf(fp, "%sFILTERFILE%s%s %s\n", hb, he, li,
-        STRINGP( glob->filterfile ));
-    fprintf(fp, "%sFRIENDLYFILE%s%s %s\n", hb, he, li,
-        STRINGP( glob->friendlyfile ));
-    fprintf(fp, "%sHEADER%s%s %s\n", hb, he, li, STRINGP( glob->header ));
-    fprintf(fp, "%sFOOTER%s%s %s\n", hb, he, li, STRINGP( glob->footer ));
-    fprintf(fp, "%sGRANT%s%s %s\n", hb, he, li, STRINGP( glob->grant ));
-    fprintf(fp, "%sREFUSE%s%s %s\n", hb, he, li, STRINGP( glob->refuse ));
-
-    fprintf(fp, "%s\nPULL-DOWN-MENUS%s%s %s\n",
-        hb, he, li, glob->pull_down_menus?"YES":"NO");
-    fprintf(fp, "%s\nDISP-SEA-RDN%s%s %s\n",
-         hb, he, li, glob->disp_sea_rdn?"YES":"NO");
-    fprintf(fp, "%s\nNO-PROXY%s%s %s\n", hb, he, li, glob->no_proxy?"YES":"NO");
-    fprintf(fp, "%s\nALLOW-PROXY%s\n%s", hb, he, li);
-    for(i = 0; glob->allow_proxy && glob->allow_proxy[i]; i++) 
-        fprintf(fp, "%s:", glob->allow_proxy[i]);
-
-    fprintf(fp, "%sALLOW-STRING%s%s %s\n", hb, he, li,
-        STRINGP( glob->allow_string ));
-    fprintf(fp, "%sDENY-STRING%s%s %s\n", hb, he, li,
-        STRINGP( glob->deny_string ));
-    fprintf(fp, "%sALLOW-MSG%s%s %s\n", hb, he, li, STRINGP( glob->allow_msg ));
-    fprintf(fp, "%s\nBASEDN%s%s \t%s\t%s\t%s\n", hb, he, li,
-         STRINGP( glob->basedn->dn ), STRINGP( glob->basedn->head ),
-        STRINGP( glob->basedn->foot ));
-/*    fprintf(fp, "%s\nBASEDNARRAY%s%s \t%s\t%s\n", hb, he, li, glob->basedn->dnarray[0], glob->basedn->dnarray[1]); */
-    fprintf(fp, "%s\nMAXCOUNT%s%s %d\n", hb, he, li, glob->maxcount);
-    if (glob->comrefuse)
-        fprintf(fp, "%s\nCOMREFUSE%s%s %d\t%d\t%d\t%d\t%lu\t%s\n",
-                    hb, he, li, glob->comrefuse->tmin, glob->comrefuse->tdiff,
-                    glob->comrefuse->maxAccept, glob->comrefuse->suspendCycle,
-                    glob->comrefuse->statCycle,
-                    STRINGP( glob->comrefuse->statFile ));
-    fprintf(fp, "%s\nMAX-PERSON%s%s %d\t%s\t%s\n", hb, he, li,
-         glob->max_person, glob->strict?"STRICT":"",
-         glob->no_browse?"NO-BROWSE":"");
-    fprintf(fp, "%s\nLEGAL%s%s %s %s\n", hb, he, li, glob->legal?"YES":"NO",
-                 glob->legal_top ? "ON-TOP" : "");
-/*    fprintf(fp, "%s\nSHOW-DEFOC%s%s %s\n", hb, he, li, glob->show_defoc?"YES":"NO");
-*/
-
-#ifdef AMBIXGW
-    fprintf(fp, "%s\nSELBSTEINTRAG%s\n", hb, he);
-    for(i = 0; i<9; i++) 
-        if (glob->selbsteintrag[i])
-            fprintf(fp, "%s\t%s\n", li, glob->selbsteintrag[i]);
-#endif
-
-    fprintf(fp, "%s\nSTRIP-PIN%s%s %s\n", hb, he, li,
-        STRINGP( glob->strip_pin ));
-    fprintf(fp, "%s\nPREFER-REF-URIS%s%s %s\n", hb, he, li,
-         glob->prefer_ref_uris?"YES":"NO");
-    fprintf(fp, "%s\nSTRICT-BASEDN%s%s %s\n", hb, he, li,
-         glob->strict_basedn?"YES":"NO");
-    fprintf(fp, "%s\nNO-SHOW-RDN%s%s %s\n\n", hb, he, li,
-        STRINGP( glob->no_show_rdn ));
-    fprintf(fp, "%s\nNO-MODIFY%s%s %s\n\n", hb, he, li,
-        STRINGP( glob->no_modify ));
-
-#ifdef TUE_TEL
-    fprintf(fp, "%sPHONEWORLD%s%s %s\n", hb, he, li,
-        STRINGP( glob->phoneworld ));
-#endif
-
-    fprintf(fp, "%s\nLANGUAGE%s\n", hb, he);
-    for(i = 0; glob->language[i]; i++) 
-        fprintf(fp, "%s\t%s\n", li, glob->language[i]);
-
-    fprintf(fp, "%s\nCACHE-EXPIRE-DEFAULT%s%s %d\n", hb, he, li,
-         glob->cache_expire);
-    fprintf(fp, "%s\nCACHING-TERMS%s\n", hb, he);
-    for(ca_ptr = glob->caching_terms; ca_ptr; ca_ptr = ca_ptr->next) {
-        fprintf(fp, "%s\t%d\t%s\t%s\t%s\n", li, ca_ptr->time,
-         STRINGP( ca_ptr->access_type ), ca_ptr->rdn_oc ? "RDN" : "OC",
-        STRINGP( ca_ptr->pattern ));
-    }
-
-#ifdef TUE_TEL
-    if(glob->ton_urls) {
-        fprintf(fp, "%s\nTON-URLS%s\n", hb, he);
-        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",li,
-       STRINGP( glob->ton_urls->attribute ),
-                 STRINGP( glob->ton_urls->rdn_attr ),
-        STRINGP( glob->ton_urls->redirect ),
-                 STRINGP( glob->ton_urls->x_disp ),
-        STRINGP( glob->ton_urls->base ),
-                 glob->ton_urls->admin?"ADMIN":
-                       glob->ton_urls->pass_oc? glob->ton_urls->pass_oc : "");
-    }
-#endif
-    if(glob->ip_refuse) {
-        fprintf(fp, "%s\nIP-REFUSE%s\n", hb, he);
-        fprintf(fp, "%s\t%s\t%d\n",li,
-       STRINGP( glob->ip_refuse->dat_file ), glob->ip_refuse->rereadcycle);
-    }
-
-    fprintf(fp, "%s\nSEARCH-ONLY%s\n", hb, he);
-    for(so_ptr = glob->search_only; so_ptr; so_ptr = so_ptr->next) {
-        fprintf(fp, "%s\t%s\t%s\t%s\n", li, STRINGP( so_ptr->dn ),
-         STRINGP( so_ptr->head ), STRINGP( so_ptr->foot ));
-    }
-
-    fprintf(fp, "%s\nSUBTREE-SEARCH%s\n%s", hb, he, li);
-    for(i = 0; glob->subtree_search && glob->subtree_search[i]; i++) 
-        fprintf(fp, "%s:", glob->subtree_search[i]);
-
-    if(glob->index_url) {
-        fprintf(fp, "%s\nINDEX-URL%s\n", hb, he);
-        fprintf(fp, "%s\t%s\t%d\n", li, STRINGP( glob->index_url->dat_file ),
-                glob->index_url->rereadcycle );
-    }
-
-#ifdef TUE_TEL
-    if(glob->dit_config) {
-        fprintf(fp, "%s\nDIT-CONFIG%s\n", hb, he);
-        fprintf(fp, "%s\t%s\t%s\t%s\n", li, STRINGP( glob->dit_config->attr ),
-                STRINGP( glob->dit_config->fetch_dn ),
-                glob->dit_config->not_browse ? "NOT-BROWSE" : "");
-    }
-#endif
-
-    fprintf(fp, "%s\nDYNAMIC-GW%s%s %s\n", hb, he, li,
-         glob->gw_switch->dynamic?"YES":"NO");
-    fprintf(fp, "%s\nGW-SWITCH%s\n", hb, he);
-    for(gw_ptr = glob->gw_switch->list; gw_ptr; gw_ptr = gw_ptr->next) {
-        fprintf(fp, "%s\t%s\t%s\n", li, STRINGP( gw_ptr->dn ),
-        STRINGP( gw_ptr->url ));
-    }
-
-    fprintf(fp, "%s\nSORT%s\n", hb, he);
-    for(s_ptr = glob->sort; s_ptr; s_ptr = s_ptr->next) {
-        fprintf(fp, "%s\t%s\t%s\t%d\t%s\t%s\n", li,
-        STRINGP( s_ptr->object_class ),
-         STRINGP( s_ptr->label ), s_ptr->priority,
-        STRINGP( s_ptr->display_class ), STRINGP( s_ptr->sort_attr ));
-    }
-
-    fprintf(fp, "%s\nTABLES%s\n", hb, he);
-    for(ta_ptr = glob->tables; ta_ptr; ta_ptr = ta_ptr->next) {
-        fprintf(fp, "%s\t%s\t%s\t%s\t%s\n", li, ta_ptr->allow ? "ALLOW" : "ALL",
-         STRINGP( ta_ptr->select_oc ), STRINGP( ta_ptr->button_label ),
-        STRINGP( ta_ptr->dn_extension ));
-    }
-
-    fprintf(fp, "%s\nFORM-BUTTON%s\n", hb, he);
-    for(fo_ptr = glob->form_button; fo_ptr; fo_ptr = fo_ptr->next) {
-        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", li,
-            fo_ptr->read_menu ? "READ" : "MENU",
-            STRINGP( fo_ptr->object_class ), STRINGP( fo_ptr->method ),
-            STRINGP( fo_ptr->script_url ), STRINGP( fo_ptr->text ),
-            STRINGP( fo_ptr->dn_name ), STRINGP( fo_ptr->form_name ),
-            STRINGP( fo_ptr->button_label ));
-    }
-
-    fprintf(fp, "%s\nINDIRECT-ATTRS%s", hb, he);
-    for(i_ptr = glob->ind_attrs; i_ptr; i_ptr = i_ptr->next) {
-        fprintf(fp, "%s %s\n%s", li, STRINGP( i_ptr->ref_attr ), lb );
-        for(idx = i_ptr->ia_arr, i=0; idx[i].key; i++)
-            fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%d\t%s\n", li, idx[i].key,
-             idx[i].replace == 2 ? "FUNCTION" : idx[i].replace ? "REPLACE" :
-             "APPEND", STRINGP( idx[i].attr ), STRINGP( idx[i].host ),
-        idx[i].port, STRINGP( idx[i].base ));
-        fprintf(fp, le);
-    }
-    fprintf(fp, le);
-
-    fprintf(fp, "%s\nMODIFY%s", hb, he);
-    for(m_ptr = glob->modify; m_ptr; m_ptr = m_ptr->next) {
-        fprintf(fp, "%s %s\n%s", li, STRINGP( m_ptr->ocs ), lb );
-        for(mod_ptr = m_ptr->modattr; mod_ptr; mod_ptr = mod_ptr->next)
-            fprintf(fp, "%s\t%s\t%s\t%d\n", li, STRINGP( mod_ptr->attribute ),
-         STRINGP( mod_ptr->label ), mod_ptr->count);
-    }
-    fprintf(fp, le);
-
-    fprintf(fp, "%s\nDISPLAY-OBJECT%s", hb, he);
-    for(d_ptr = glob->display; d_ptr; d_ptr = d_ptr->next) {
-        fprintf(fp, "%s\n\n %s\n%s", li, STRINGP( d_ptr->ocs) , lb );
-        fprintf(fp, "%sFIRST-PAGE:\n%s", li, lb);
-        for(dis_ptr = d_ptr->first_page; dis_ptr; dis_ptr = dis_ptr->next)
-            fprintf(fp, "%s\t%s\t%s\t%s\n", li, STRINGP( dis_ptr->attribute ),
-         STRINGP( dis_ptr->label ), STRINGP( dis_ptr->type ));
-        fprintf(fp, "%s%sSECOND-PAGE:\n%s", le, li, lb);
-        for(dis_ptr = d_ptr->second_page; dis_ptr; dis_ptr = dis_ptr->next)
-            fprintf(fp, "%s\t%s\t%s\t%s\n", li, STRINGP( dis_ptr->attribute ),
-         STRINGP( dis_ptr->label ), STRINGP( dis_ptr->type ));
-        fprintf(fp, "%s%s", le, le);
-    }
-    fprintf(fp, le);
-}
-/* end of function: output */
-
-PRIVATE void main_loop(fp,glob)
-FILE *fp;
-GLOB_STRUCT *glob;
-{
-FILELINE inLine;
-extern PARSE_ENTRY parse_table[];
-
-    while(do_readf(&inLine, fp)){
-        parse(&inLine, parse_table, glob, 0);
-    }
-}
-/* end of function: main_loop */
-
-PUBLIC int do_readf(inLine, fp)
-FILE *fp;
-FILELINE *inLine;
-{
-static FILE *fo;
-static int lineCount = 0;
-
-    if(fp)
-        fo = fp;
-
-    do {
-        char *comment;
-
-        if(!fgets(inLine->value, BUFSIZ-1, fo)){
-            lineCount = 0;
-            return(0);
-        }
-        lineCount++;
-        if( (comment = strchr(inLine->value, '#')) )
-            *comment = '\0';
-        trim(inLine->value, " \t\n");
-    } while(!*inLine->value);
-
-    inLine->count = lineCount;
-/*    printf("%d: %s\n", inLine->count, inLine->value);
-*/
-    return (inLine->count);
-}
-/* end of function: do_readf */
-
-PRIVATE int parse(inLine, p_table, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *p_table;
-GLOB_STRUCT *glob;
-int level;
-{
-int lineCount = inLine->count;
-
-    while(1){
-        switch(parse2(inLine, p_table, glob, level)){
-            case NOTOK:
-                printf("Error in init-file line %d:\n%s\n ", inLine->count, inLine->value);
-                exit(1);
-            case DONE:
-                if(lineCount == inLine->count)
-                    return (DONE);
-                else
-                    lineCount = inLine->count;
-                break;
-            default:
-                return (OK);
-        }
-    }
-}
-/* end of function: parse */
-
-PRIVATE int parse2(inLine, p_table, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *p_table;
-GLOB_STRUCT *glob;
-int level;
-{
-PARSE_ENTRY *disp;
-char keyWord[BUFSIZ];
-
-    sscanf(inLine->value, "%s", keyWord);
-    str_toupper( keyWord );
-    for(disp=p_table; disp->keyWord; disp++) {
-        if(!strcmp(keyWord, disp->keyWord)){
-            return ((*disp->keyFunc)(inLine, disp, glob, level));
-        }
-    }
-    return (level?DONE:NOTOK);
-}
-/* end of function: parse2 */
-
-PUBLIC int get_str_param(inLine, str, glob, lower)
-FILELINE *inLine;
-char **str;
-GLOB_STRUCT *glob;
-int          lower;
-{
-char tmp[4*BUFSIZ];
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    }else
-        if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    do {
-        if(*str) {
-            *str = realloc(*str, strlen(*str) + strlen(tmp) +1 );
-            strcat(*str, lower ? str_tolower( tmp ) : tmp );
-        } else {
-            *str = strdup( lower ? str_tolower( tmp ) : tmp );
-        }
-            
-        if(!do_readf(inLine, NULL))
-            return (OK);
-
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        }else
-            if (sscanf(inLine->value, "%s", tmp) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-     } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-
-    return (DONE);
-}
-/* end of function: get_str_param */
-
-PRIVATE int get_int_param(inLine, integer, glob)
-FILELINE *inLine;
-int *integer;
-GLOB_STRUCT *glob;
-{
-char tmp[BUFSIZ];
-
-    if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    *integer = atoi(tmp);
-    return (OK);
-}
-/* end of function: get_int_param */
-
-
-PRIVATE int webdn(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->webdn, glob, 0));
-}
-/* end of function: webdn */
-
-PRIVATE int webpw(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->webpw, glob, 0));
-}
-/* end of function: webpw */
-
-PRIVATE int webdn2(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->webdn2, glob, 0));
-}
-/* end of function: webdn2 */
-
-PRIVATE int webpw2(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->webpw2, glob, 0));
-}
-/* end of function: webpw2 */
-
-
-PRIVATE int webport(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_int_param(inLine, &glob->webport, glob));
-}
-/* end of function: webport */
-
-PRIVATE int timeout(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_int_param(inLine, &glob->timeout, glob));
-}
-/* end of function: timeout */
-
-PRIVATE int hostname(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char hostname[BUFSIZ];
-char *virtualport;
-
-    if (sscanf(inLine->value, "%*s%s", hostname) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    if( ( virtualport = strchr(hostname, ':')) ) {
-        *virtualport++ = '\0';
-        glob->virtualport = atoi( virtualport );
-    }
-    glob->hostname = strdup( hostname );
-    return (OK);
-}
-/* end of function: hostname */
-
-PRIVATE int ldapd(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->ldapd, glob, 1));
-}
-/* end of function: ldapd */
-
-PRIVATE int ldapportf(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_int_param(inLine, &glob->ldapport, glob));
-}
-/* end of function: ldapportf */
-
-PRIVATE int etcdir(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->etcdir, glob, 0));
-}
-/* end of function: etcdir */
-
-PRIVATE int filterfilef(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->filterfile, glob, 0));
-}
-/* end of function: filterfile */
-
-PRIVATE int helpfilef(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->helpfile, glob, 0));
-}
-/* end of function: helpfile */
-
-PRIVATE int friendlyfilef(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->friendlyfile, glob, 0));
-}
-/* end of function: friendlyfile */
-
-PRIVATE int index_url(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char dat_file[BUFSIZ];
-    char rereadcycle[BUFSIZ];
-
-    if (sscanf(inLine->value, "%*s%s%s", dat_file, rereadcycle) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n",
-                glob->acfilename, inLine->count, inLine->value);
-
-    glob->index_url  = (INDEX_URL *) ch_calloc(1, sizeof(INDEX_URL));
-    glob->index_url->dat_file = strdup( dat_file );
-    glob->index_url->rereadcycle = atoi(rereadcycle);
-
-    get_index_url_rules(glob);
-
-    return (OK);
-}  /*  index_url  */
-
-PUBLIC void get_index_url_rules(glob)
-GLOB_STRUCT *glob;
-{
-char index[BUFSIZ];
-char rule[BUFSIZ];
-char dit_dn[BUFSIZ];
-FILE *dfp;
-char  inLine[BUFSIZ];
-int idx;
-
-    if ( !glob->index_url || !glob->index_url->dat_file )
-        return;
-    if(!(dfp = fopen(glob->index_url->dat_file, "r")))
-        return;
-
-    for ( idx = 0; idx < INDEX_RULE_SIZE; idx++ ) {
-        free( glob->index_url->rarr[idx].rule );
-        free( glob->index_url->rarr[idx].dit_dn );
-    }
-
-    while(fgets(inLine, BUFSIZ-1, dfp)) {
-
-        if(strchr(inLine, '"')) {
-            if (sscanf(inLine, "%s%s%*[^\"]\"%[^\"]\"",
-                                    index, rule, dit_dn) < 1)
-                syslog (LOG_INFO, "Error in index_url-file");
-        } else {
-            if (sscanf(inLine, "%s%s%s",
-                                   index, rule, dit_dn) < 1)
-                syslog (LOG_INFO, "Error in index_url-file");
-        }
-        idx = atoi(index);
-        if ( idx < 0 || idx >= INDEX_RULE_SIZE )
-            continue;
-        glob->index_url->rarr[idx].rule = str_tolower( strdup( rule ));
-        glob->index_url->rarr[idx].dit_dn = strdup( dit_dn );
-    }
-    fclose( dfp );
-}
-/* end of function: get_index_url_rules */
-
-PUBLIC void re_read_index_url_rules( glob )
-GLOB_STRUCT   *glob;
-{
-       static int index_url_rules_reload = 0;
-
-       if ( glob->index_url && glob->index_url->rereadcycle && !( ++index_url_rules_reload % glob->index_url->rereadcycle )) {
-               get_index_url_rules( glob );
-       }
-
-}  /*  re_read_index_url_rules  */
-
-
-PRIVATE int allow_proxy(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    }else
-        if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    glob->allow_proxy = str2charray( str_tolower(tmp), ":");
-    return (OK);
-}
-/* end of function: allow_proxy */
-
-PRIVATE int subtree_search(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    }else
-        if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    glob->subtree_search = str2charray( tmp, ":");
-    return (OK);
-}
-/* end of function: subtree_search */
-
-PRIVATE int grant(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->grant, glob, 1));
-}
-/* end of function: grant */
-
-PRIVATE int refuse(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->refuse, glob, 1));
-}
-/* end of function: refuse */
-
-PRIVATE int allow_string(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->allow_string, glob, 1));
-}
-/* end of function: allow_string */
-
-PRIVATE int deny_string(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->deny_string, glob, 1));
-}
-/* end of function: deny_string */
-
-
-PRIVATE int show_defoc(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->show_defoc = 1;
-    return (OK);
-}
-/* end of function: show_defoc */
-
-PRIVATE int max_person(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-char tmp2[BUFSIZ];
-char tmp3[BUFSIZ];
-
-    if (sscanf(inLine->value, "%*s%s%s%s", tmp, tmp2, tmp3) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    glob->max_person = atoi(tmp);
-    glob->strict = (!strcasecmp (tmp2, "strict") || !strcasecmp (tmp3, "strict")) ? TRUE : FALSE;
-    glob->no_browse = (!strcasecmp (tmp2, "no-browse") || !strcasecmp (tmp3, "no-browse")) ? TRUE : FALSE;
-
-    return (OK);
-}
-/* end of function: max_person */
-
-PRIVATE int comrefuse(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char tmp[BUFSIZ];
-    char tmp2[BUFSIZ];
-    char tmp3[BUFSIZ];
-    char tmp4[BUFSIZ];
-    char tmp5[BUFSIZ];
-    char tmp6[BUFSIZ];
-
-    if (sscanf(inLine->value, "%*s%s%s%s%s%s%s",
-                      tmp, tmp2, tmp3, tmp4, tmp5, tmp6) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    comRefuseP = glob->comrefuse = 
-                           (COMREFUSE *) ch_calloc(1, sizeof(COMREFUSE));
-    glob->comrefuse->tmin = atoi(tmp);
-    glob->comrefuse->tdiff = atoi(tmp2) - glob->comrefuse->tmin;
-    glob->comrefuse->maxAccept = atoi(tmp3);
-    glob->comrefuse->suspendCycle = -1 * atoi(tmp4);
-    glob->comrefuse->statCycle = (time_t) atol (tmp5);
-    sprintf (tmp6, "%s.%s-%d", tmp6, glob->lang, (int) getpid());
-    glob->comrefuse->statFile = strdup (tmp6);
-
-    return (OK);
-}
-/* end of function: comrefuse */
-
-PRIVATE int display(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-pDISPLAY *d_ptr;
-
-    for(d_ptr = &glob->display; *d_ptr; d_ptr = &(*d_ptr)->next)
-        ;
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    *d_ptr = (pDISPLAY) ch_calloc(1, sizeof(DISPLAY));
-    (*d_ptr)->ocs = str_tolower( strdup( tmp ));
-    if(strcmp(tmp, "default"))
-        glob->default_display_type = *d_ptr;
-    if(!do_readf(inLine, NULL))
-                        return (OK);
-    return (parse(inLine,disp->subTable, glob, ++level));
-}
-/* end of function: display */
-
-PRIVATE int basednf(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char dn[BUFSIZ];
-char head[BUFSIZ];
-char foot[BUFSIZ];
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]\"%s%s", dn, head, foot) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-     } else
-        if (sscanf(inLine->value, "%*s%s%s%s", dn, head, foot) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-       if ( !strcasecmp( dn, "ROOT" )) *dn = '\0';
-    glob->basedn->dn = strdup( dn );
-    glob->basedn->dnarray = dn2charray( dn );
-    glob->basedn->head = strdup(head);
-    glob->basedn->foot = strdup(foot);
-    return (OK);
-}
-/* end of function: basednf */
-
-PRIVATE int search_only(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char dn[BUFSIZ];
-char head[BUFSIZ];
-char foot[BUFSIZ];
-pSEARCH_ONLY_LINE *so_ptr;
-
-    so_ptr = &glob->search_only;
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]\"%s%s", dn, head, foot) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s", dn, head, foot) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    do {
-        *so_ptr = (pSEARCH_ONLY_LINE) ch_calloc(1, sizeof(SEARCH_ONLY_LINE));
-        (*so_ptr)->dn = str_tolower( strdup( dn ));
-        (*so_ptr)->head = strdup(head);
-        (*so_ptr)->foot = strdup(foot);
-        so_ptr = &(*so_ptr)->next;
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%*[^\"]\"%[^\"]\"%s%s", dn, head, foot) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s", dn, head, foot) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-    return (DONE);
-}
-/* end of function: search_only */
-
-PRIVATE int dynamic_gw(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->gw_switch->dynamic = 1;
-    return (OK);
-}
-/* end of function: dynamic_gw */
-
-PRIVATE int caching_terms(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char time[BUFSIZ];
-char access_type[BUFSIZ];
-char rdn_oc[BUFSIZ];
-char pattern[BUFSIZ];
-pCACHING_TERMS_LINE *ca_ptr;
-
-    ca_ptr = &glob->caching_terms;
-
-    if (sscanf(inLine->value, "%*s%s%s%s%s", 
-               time, access_type, rdn_oc, pattern) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", 
-                glob->acfilename, inLine->count, inLine->value);
-    do {
-        *ca_ptr = (pCACHING_TERMS_LINE) ch_calloc(1, sizeof(CACHING_TERMS_LINE));
-        (*ca_ptr)->time = atoi(time);
-        (*ca_ptr)->access_type = str_toupper(strdup(trim (access_type,WSPACE)));
-        (*ca_ptr)->rdn_oc = !strncasecmp(rdn_oc, "RDN", 3) ? 1 : 0;
-        (*ca_ptr)->pattern = str_tolower(strdup(trim (pattern, WSPACE)));
-        ca_ptr = &(*ca_ptr)->next;
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if (sscanf(inLine->value, "%s%s%s%s", 
-                   time, access_type, rdn_oc, pattern) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n",
-                    glob->acfilename, inLine->count, inLine->value);
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-    return (DONE);
-}
-/* end of function: caching_terms */
-
-PRIVATE int gw_switch(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char dn[BUFSIZ];
-char url[BUFSIZ];
-pGW_SWITCH_LINE *gw_ptr;
-
-        for(gw_ptr = &glob->gw_switch->list; *gw_ptr; gw_ptr = &(*gw_ptr)->next)
-                ;
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]\"%[\40-\177]", dn, url) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%[\40-\177]", dn, url) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    do {
-        *gw_ptr = (pGW_SWITCH_LINE) ch_calloc(1, sizeof(GW_SWITCH_LINE));
-        (*gw_ptr)->dn = str_tolower( strdup( dn ));
-        (*gw_ptr)->url = strdup(trim (url, WSPACE));
-        gw_ptr = &(*gw_ptr)->next;
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%*[^\"]\"%[^\"]\"%[\40-\177]", dn, url) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%[\40-\177]", dn, url) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-    return (DONE);
-}
-/* end of function: gw_switch */
-
-PRIVATE int table_disp(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char allow[BUFSIZ];
-    char select_oc[BUFSIZ];
-    char button_label[BUFSIZ];
-    char dn_extension[BUFSIZ];
-    pTABLE_DISPLAY *ta_ptr;
-
-        for(ta_ptr = &glob->tables; *ta_ptr; ta_ptr = &(*ta_ptr)->next)
-                ;
-        if (sscanf(inLine->value, "%*s%s%s%s%s", allow, select_oc, button_label, dn_extension) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    do {
-        *ta_ptr = (pTABLE_DISPLAY) ch_calloc(1, sizeof(TABLE_DISPLAY));
-        (*ta_ptr)->allow = !strcasecmp(allow, "ALLOW") ? 1 : 0;
-        (*ta_ptr)->select_oc = str_tolower( strdup( select_oc ));
-        (*ta_ptr)->button_label = strdup( button_label );
-        (*ta_ptr)->dn_extension = str_tolower( strdup( dn_extension ));
-        ta_ptr = &(*ta_ptr)->next;
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if (sscanf(inLine->value, "%s%s%s%s", allow, select_oc, button_label, dn_extension) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-    return (DONE);
-}
-/* end of function: table_disp */
-
-PRIVATE int modify(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char tmp[BUFSIZ];
-    pMODIF *m_ptr;
-
-    sprintf (tmp, "|");
-    for(m_ptr = &glob->modify; *m_ptr; m_ptr = &(*m_ptr)->next)
-                ;
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*[^\"]\"%[^\"]", tmp+1) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s", tmp+1) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    *m_ptr = (pMODIF) ch_calloc(1, sizeof(MODIF));
-    strcat (tmp, "|");
-    (*m_ptr)->ocs = str_tolower (tr1 (strdup(tmp), ' ', '|'));
-
-    if(!do_readf(inLine, NULL)) return (NOTOK);
-    return (parse(inLine,disp->subTable, glob, ++level));
-}
-/* end of function: modify */
-
-PRIVATE int ind_attrs(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char tmp[BUFSIZ];
-    pIND_ATTRS *i_ptr;
-
-    for(i_ptr = &glob->ind_attrs; *i_ptr; i_ptr = &(*i_ptr)->next)
-                ;
-    if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    *i_ptr = (pIND_ATTRS) ch_calloc(1, sizeof(IND_ATTRS));
-    (*i_ptr)->ref_attr = str_tolower(strdup(tmp));
-
-    if(!do_readf(inLine, NULL)) return (NOTOK);
-    return (parse(inLine,disp->subTable, glob, ++level));
-}
-/* end of function: ind_attrs */
-
-PRIVATE int cache_expire(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_int_param(inLine, &glob->cache_expire, glob));
-}
-/* end of function: cache_expire */
-
-PRIVATE int maxcount(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_int_param(inLine, &glob->maxcount, glob));
-}
-/* end of function: maxcount */
-
-PRIVATE int language(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-int slots = 2, i = 0;
-
-    glob->language = (char **) ch_calloc(slots+1, sizeof(char **));
-    if (sscanf(inLine->value, "%*s%s", tmp) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    do {
-        if(i == slots){
-            slots *= 2;
-            glob->language =  (char **) ch_realloc((char *)glob->language, (slots+1)*sizeof(char **));
-        }
-        glob->language[i++] = strdup(tmp);
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if (sscanf(inLine->value, "%s", tmp) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-    return (DONE);
-}
-/* end of function: language */
-
-PRIVATE int strict_basedn(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->strict_basedn = 1;
-    return (OK);
-}
-/* end of function: strict_basedn */
-
-PRIVATE int pull_down_menus(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->pull_down_menus = 1;
-    return (OK);
-}
-/* end of function: pull_down_menus */
-
-PRIVATE int no_proxy(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->no_proxy = 1;
-    return (OK);
-}
-/* end of function: no_proxy */
-
-PRIVATE int disp_sea_rdn(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->disp_sea_rdn = 1;
-    return (OK);
-}
-/* end of function: disp_sea_rdn */
-
-PRIVATE int prefer_ref_uris(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    glob->prefer_ref_uris = 1;
-    return (OK);
-}
-/* end of function: prefer_ref_uris */
-
-PRIVATE int strip_pin(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-
-    return(get_str_param(inLine, &glob->strip_pin, glob, 1));
-}
-/* end of function: strip_pin */
-
-PRIVATE int legal(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char tmp[BUFSIZ];
-
-    sscanf(inLine->value, "%*s%s", tmp);
-    glob->legal = 1;
-    glob->legal_top = tmp && !strcasecmp(tmp, "ON-TOP");
-    return (OK);
-}
-/* end of function: legal */
-
-PRIVATE int no_modify(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->no_modify, glob, 1));
-}
-/* end of function: no_modify */
-
-PRIVATE int no_show_rdn(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->no_show_rdn, glob, 1));
-}
-/* end of function: no_show_rdn */
-
-PRIVATE int sort(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char object_class[BUFSIZ];
-    char label[BUFSIZ];
-    char priority[BUFSIZ];
-    char display_class[BUFSIZ];
-    char sort_attr[BUFSIZ];
-    pSORT_LINE *s_ptr;
-
-    s_ptr = &glob->sort;
-    strcpy(sort_attr, "sn");
-    strcpy( display_class, "default" );
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%*[^\"]\"%[^\"]\"%s%s%s", object_class, label, priority, display_class, sort_attr) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s%s%s", object_class, label, priority, display_class, sort_attr) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    do {
-        char tmpBuf[BUFSIZ];
-
-        *s_ptr = (pSORT_LINE) ch_calloc(1, sizeof(SORT_LINE));
-        sprintf (tmpBuf, "|%s|", object_class);
-        (*s_ptr)->object_class = str_tolower (strdup(tmpBuf));
-        (*s_ptr)->label = strdup(label);
-        (*s_ptr)->priority = atoi(priority);
-        (*s_ptr)->display_class = str_tolower( strdup( display_class ));
-        (*s_ptr)->sort_attr = strdup( str_tolower( sort_attr ));
-        s_ptr = &(*s_ptr)->next;
-
-        if(!charray_inlist(glob->sort_attribs, sort_attr))
-            charray_add(&glob->sort_attribs, sort_attr );
-
-        if(!do_readf(inLine, NULL))
-            return (OK);
-
-        strcpy(sort_attr, "sn");
-        strcpy( display_class, "default" );
-
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%*[^\"]\"%[^\"]\"%s%s%s", object_class, label, priority, display_class, sort_attr) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s%s%s", object_class, label, priority, display_class, sort_attr) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-
-    return (DONE);
-}
-/* end of function: sort */
-
-PRIVATE int form_button(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char read_menu[BUFSIZ];
-    char object_class[BUFSIZ];
-    char method[BUFSIZ];
-    char script_url[BUFSIZ];
-    char text[BUFSIZ];
-    char dn_name[BUFSIZ];
-    char form_name[BUFSIZ];
-    char button_label[BUFSIZ];
-    pFORM_BUTTON *f_ptr;
-
-    f_ptr = &glob->form_button;
-/*    for(f_ptr = &glob->form_button; (*f_ptr)->next; f_ptr = &(*f_ptr)->next)
-            ;
-*/
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%s%s%s%*[^\"]\"%[^\"]\"%s%s%s", read_menu, object_class, method, script_url, text, dn_name, form_name, button_label) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s%s%s%s%s%s", read_menu, object_class, method, script_url, text, dn_name, form_name, button_label) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    do {
-
-        *f_ptr = (pFORM_BUTTON) ch_calloc(1, sizeof(FORM_BUTTON));
-        (*f_ptr)->read_menu = strcasecmp(read_menu, "READ") ? 0 : 1;
-        (*f_ptr)->object_class = strdup(object_class);
-        (*f_ptr)->method = strdup(method);
-        (*f_ptr)->script_url = strdup(script_url);
-        (*f_ptr)->text = strdup(text);
-        (*f_ptr)->dn_name = strdup(dn_name);
-        (*f_ptr)->form_name = strdup(form_name);
-        (*f_ptr)->button_label = strdup(button_label);
-        f_ptr = &(*f_ptr)->next;
-
-        if(!do_readf(inLine, NULL))
-            return (OK);
-
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%s%s%s%*[^\"]\"%[^\"]\"%s%s%s", read_menu, object_class, method, script_url, text, dn_name, form_name, button_label) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s%s%s%s%s%s", read_menu, object_class, method, script_url, text, dn_name, form_name, button_label) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-
-    return (DONE);
-}
-/* end of function: form_button */
-
-PRIVATE int firstPage(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char attribute[BUFSIZ];
-char label[BUFSIZ];
-char type[BUFSIZ];
-pDISPLAY_LINE *dis_ptr;
-pDISPLAY d_ptr;
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%*[^\"]\"%[^\"]\"%s", attribute, label, type) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s", attribute, label, type) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    for(d_ptr = glob->display; d_ptr->next; d_ptr = d_ptr->next)
-        ;
-    dis_ptr = &d_ptr->first_page;
-    do {
-        *dis_ptr = (pDISPLAY_LINE) ch_calloc(1, sizeof(DISPLAY_LINE));
-        (*dis_ptr)->attribute = str_tolower( strdup( attribute ));
-        (*dis_ptr)->label = strdup(label);
-        (*dis_ptr)->type = strdup( str_toupper( type ));
-        (*dis_ptr)->ty = cnvt_str2int (type, disp_types, "DEFAULT");
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%*[^\"]\"%[^\"]\"%s", attribute, label, type) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s", attribute, label, type) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        dis_ptr = &(*dis_ptr)->next;
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-
-    return (parse(inLine,disp->subTable, glob, ++level));
-}
-/* end of function: firstPage */
-
-PRIVATE int secondPage(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char attribute[BUFSIZ];
-char label[BUFSIZ];
-char type[BUFSIZ];
-pDISPLAY_LINE *dis_ptr;
-pDISPLAY d_ptr;
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%*[^\"]\"%[^\"]\"%s", attribute, label, type) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s", attribute, label, type) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    for(d_ptr = glob->display; d_ptr->next; d_ptr = d_ptr->next)
-        ;
-    dis_ptr = &d_ptr->second_page;
-    do {
-        *dis_ptr = (pDISPLAY_LINE) ch_calloc(1, sizeof(DISPLAY_LINE));
-        (*dis_ptr)->attribute = str_tolower( strdup( attribute ));
-        (*dis_ptr)->label = strdup(label);
-        (*dis_ptr)->type = strdup( str_toupper( type ));
-        (*dis_ptr)->ty = cnvt_str2int (type, disp_types, "DEFAULT");
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%*[^\"]\"%[^\"]\"%s", attribute, label, type) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s", attribute, label, type) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        dis_ptr = &(*dis_ptr)->next;
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-/*puts("leaving secondpage!");
-*/
-
-    return (DONE);
-}
-/* end of function: secondPage */
-
-PRIVATE int modattr(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char attribute[BUFSIZ];
-char label[BUFSIZ];
-char count[BUFSIZ];
-pMODIFY_LINE *mod_ptr;
-pMODIF m_ptr;
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%*[^\"]\"%[^\"]\"%s", attribute, label, count) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s", attribute, label, count) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-        for(m_ptr = glob->modify; m_ptr->next; m_ptr = m_ptr->next)
-                ;
-    mod_ptr = &m_ptr->modattr;
-    do {
-        *mod_ptr = (pMODIFY_LINE) ch_calloc(1, sizeof(MODIFY_LINE));
-        (*mod_ptr)->attribute = str_tolower( strdup( attribute ));
-        (*mod_ptr)->label = strdup(label);
-        (*mod_ptr)->count = atoi(count);
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%*[^\"]\"%[^\"]\"%s", attribute, label, count) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s", attribute, label, count) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        mod_ptr = &(*mod_ptr)->next;
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-/*puts("leaving secondpage!");
-*/
-
-    return (DONE);
-}
-/* end of function: modattr */
-
-PRIVATE int ind_attribute(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-char key[BUFSIZ];
-char replace[BUFSIZ];
-char attribute[BUFSIZ];
-char host[BUFSIZ];
-char port[BUFSIZ];
-char base[BUFSIZ];
-pIND_ATTRS i_ptr;
-IND_ATTR_ARR **idx;
-int i;
-
-    if(strchr(inLine->value, '"')) {
-        if (sscanf(inLine->value, "%*s%s%s%s%s%s%*[^\"]\"%[^\"]\"", key,
-                              replace, attribute, host, port, base) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-    } else
-        if (sscanf(inLine->value, "%*s%s%s%s%s%s%s", key, replace, attribute,
-                                   host, port, base) < 1)
-            fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    for(i_ptr = glob->ind_attrs; i_ptr->next; i_ptr = i_ptr->next)
-        ;
-    
-    idx = &i_ptr->ia_arr;
-
-    *idx = (IND_ATTR_ARR *) ch_malloc( 100 * sizeof(IND_ATTR_ARR) );
-    i = 0;
-
-    do {
-        (*idx)[i].key = strdup(key);
-        (*idx)[i].replace = !strcasecmp(replace, "function") ? 2 :
-                            !strcasecmp(replace, "replace") ? 1 : 0;
-        (*idx)[i].attr = strdup(attribute);
-        (*idx)[i].host = strdup(host);
-        (*idx)[i].port = atoi(port);
-        (*idx)[i].base = strdup(base);
-        (*idx)[++i].key = NULL;
-        
-        if(!do_readf(inLine, NULL))
-                        return (OK);
-        if(strchr(inLine->value, '"')) {
-            if (sscanf(inLine->value, "%s%s%s%s%s%*[^\"]\"%[^\"]\"", key, replace, attribute, host, port, base) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-        } else
-            if (sscanf(inLine->value, "%s%s%s%s%s%s", key, replace, attribute, host, port, base) < 1)
-                fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n", glob->acfilename, inLine->count, inLine->value);
-
-    } while(inLine->value[0] == ' ' || inLine->value[0] == '\t');
-
-    return (DONE);
-}
-/* end of function: ind_attribute */
-
-
-PUBLIC void langinit(glob)
-GLOB_STRUCT *glob;
-{
-    FILE *fp;
-    char inLine[BUFSIZ], lCountS[BUFSIZ], phrase[BUFSIZ], file[BUFSIZ];
-
-    sprintf( file, "%s.lang.%s", glob->argv0, glob->lang );
-    if(!(fp = fopen(file, "r"))) {
-        fprintf(stderr, "\n\nATTENTION!!!\n\nCould not open file %s !\n", file);
-        exit(0);
-    }
-    while(fgets(inLine, BUFSIZ-1, fp)) {
-
-        /* Comment-sign is accepted in the first column only */
-        if(*inLine == '#')
-            *inLine = '\0';
-        if(*inLine == '\t') {
-            strcat(strcat(glob->la[atoi(lCountS)], " "), trim(inLine, " \t\n"));
-            continue;
-        }
-        if(!*(trim(inLine, " \t\n"))) continue;
-        sscanf(trim(inLine, " \t\n"), "%s %[^\n]", lCountS, phrase);
-        if(*glob->la[atoi(lCountS)])
-            fprintf(stderr, "\nWarning: glob->la[%s] existed already with value <%s> and was overwritten with value <%s> !\n\n", lCountS, glob->la[atoi(lCountS)], phrase );
-        strcpy(glob->la[atoi(lCountS)], phrase);
-    }
-
-}
-/* end of function: langinit */
-
-PUBLIC void langoutput(fp, glob, html_flag)
-FILE *fp;
-GLOB_STRUCT *glob;
-int html_flag;
-{
-    int i;
-
-    fprintf(fp, "%s\n\n\nLanguage Settings\n\n%s",html_flag ? "<H2>" : "", html_flag ? "</H2>" : "\n");
-    for(i=0 ; i<LANG_ARR_SIZE; i++)
-        if(*glob->la[i]) fprintf(fp, "%s%d%s\t%s%s", html_flag ? "<H2>" : "", i, html_flag ? "</H2>" : "", glob->la[i], html_flag ? "<br>" : "\n");
-}
-/* end of function: langoutput */
-
-PUBLIC void get_lang(argc, argv, lang)
-int argc;
-char **argv;
-char *lang;
-{
-    int    i;
-
-    for(i=1;i<argc;i++)
-        if (strstr(argv[i] , "-L")){
-            strcpy(lang, argv[i]+2);
-        }
-    if(!*lang){
-        usage(argv[0]);
-        exit(0);
-    }
-}
-/* end of function: get_lang */
-
-PRIVATE int header(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->header, glob, 0));
-}
-/* end of function: header */
-
-PRIVATE int footer(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->footer, glob, 0));
-}
-/* end of function: footer */
-
-PRIVATE int allow_msg(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    return(get_str_param(inLine, &glob->allow_msg, glob, 0));
-}
-/* end of function: allow_msg */
-
-PRIVATE int ip_refuse(inLine, disp, glob, level)
-FILELINE *inLine;
-PARSE_ENTRY *disp;
-GLOB_STRUCT *glob;
-int level;
-{
-    char dat_file[BUFSIZ];
-    char rereadcycle[BUFSIZ];
-
-    if (sscanf(inLine->value, "%*s%s%s", dat_file, rereadcycle) < 1)
-        fprintf(stderr, "\nWarning: Error in init-file %s, line %d:\n%s\n",
-                glob->acfilename, inLine->count, inLine->value);
-
-    glob->ip_refuse  = (IP_REFUSE *) ch_calloc(1, sizeof(IP_REFUSE));
-    glob->ip_refuse->dat_file = strdup( dat_file );
-    glob->ip_refuse->rereadcycle = atoi(rereadcycle);
-
-    return (OK);
-}  /*  ip_refuse  */
-
-PUBLIC void file_test(filename, etcdir)
-char **filename;
-char *etcdir;
-{
-    FILE *fp;
-    char newfname[BUFSIZ];
-
-    if(*filename){
-        if(!(fp = fopen(*filename, "r"))) {
-            sprintf(newfname, "%s%s", etcdir, *filename);
-            if(!(fp = fopen(newfname, "r"))) {
-                sprintf(newfname, "%s.%s", newfname, globP->lang);
-                fp = fopen(newfname, "r");
-            }
-        }
-        if(fp) {
-            free(*filename);
-            *filename = strdup(newfname);
-            fclose(fp);
-        } else {
-            fprintf(stderr, "\n\nCould not open file %s !\n\n",
-                            *filename);
-        }
-    }
-}
-/* end of function: file_test */
-
-PRIVATE void f_test(glob)
-GLOB_STRUCT *glob;
-{
-    pSEARCH_ONLY_LINE so_ptr;
-
-    file_test(&glob->helpfile, glob->etcdir);
-    file_test(&glob->filterfile, glob->etcdir);
-    file_test(&glob->friendlyfile, glob->etcdir);
-    file_test(&glob->header, glob->etcdir);
-    file_test(&glob->footer, glob->etcdir);
-    file_test(&glob->allow_msg, glob->etcdir);
-    if(glob->basedn) {
-        file_test(&glob->basedn->head, glob->etcdir);
-        file_test(&glob->basedn->foot, glob->etcdir);
-    }
-    for(so_ptr = glob->search_only; so_ptr; so_ptr = so_ptr->next) {
-        file_test(&so_ptr->head, glob->etcdir);
-        file_test(&so_ptr->foot, glob->etcdir);
-    }
-}
-/* end of function: f_test */
-
-
diff --git a/contrib/tweb/init.h b/contrib/tweb/init.h
deleted file mode 100644 (file)
index 8de4f42..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* init.h.....                                                              *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            July 21 1995                 Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 14 1999                ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: init.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-#ifndef _INIT_
-#define _INIT_
-
-#include <getopt.h>
-#include "strng_exp.h"
-#include "init_exp.h"
-#include "charray_exp.h"
-#include "ch_malloc_exp.h"
-#include "support_exp.h"
-
-#ifdef TUE_TEL
-#  include "tueTel_exp.h"
-#endif
-
-#ifdef AMBIXGW
-#  include "ambix_exp.h"
-#endif
-
-
-/* Usage-Text */
-#define USAGE "\nUSAGE: %s -Lx[yz..] [-p webport] [-x ldaphost]\
-         \n\t\t[-P ldapport] [-b basedn] [-f filterfile] [-l logger] [-d]\n\
-    \n\
-    A short description of TWEB WWW2X.500-Gateway: \n\n\
-    (does not compensate reading the README files\n\
-    and the correct configuration)\n\
-    \n\
-    Options:\n\n\
-    -L:\ttells TWEB the numbers of the languages that have to be started,\n\
-    \twherewith are also created the language-buttons\n\
-    \tExample: tweb -L01 starts TWEB in german und english\n\
-    -p:\tnames the port on which the gateway is to be reached\n\
-    -x:\tnames the LDAP-Hosts\n\
-    -P:\tnames the port of the LDAP-Server\n\
-    -b:\tnames the DN where the gateway shall start by default\n\
-    -f:\tnames the ldapfilter-file\n\
-    -l:\tswitches on logging for example LOCAL3\n\
-    -d:\tswitches on debugging (no sub-processes!)\n\
-    \n"
-
-
-/* Funktions in the init-module */
-PRIVATE int webdn();
-PRIVATE int webpw();
-PRIVATE int webdn2();
-PRIVATE int webpw2();
-PRIVATE int webport();
-PRIVATE int timeout();
-PRIVATE int ldapd();
-PRIVATE int ldapportf();
-PRIVATE int hostname();
-PRIVATE int header();
-PRIVATE int footer();
-PRIVATE int index_url();
-PRIVATE int allow_msg();
-PRIVATE int helpfilef();
-PRIVATE int filterfilef();
-PRIVATE int etcdir();
-PRIVATE int friendlyfilef();
-PRIVATE int grant();
-PRIVATE int refuse();
-PRIVATE int allow_string();
-PRIVATE int allow_proxy();
-PRIVATE int subtree_search();
-PRIVATE int deny_string();
-PRIVATE int show_defoc();
-PRIVATE int display();
-PRIVATE int basednf();
-PRIVATE int search_only();
-PRIVATE int gw_switch();
-PRIVATE int modify();
-PRIVATE int ind_attrs();
-PRIVATE int ind_attribute();
-PRIVATE int maxcount();
-PRIVATE int cache_expire();
-PRIVATE int max_person();
-PRIVATE int caching_terms();
-PRIVATE int comrefuse();
-PRIVATE int language();
-PRIVATE void f_test();
-PRIVATE void main_loop();
-PRIVATE int strip_pin();
-PRIVATE int prefer_ref_uris();
-PRIVATE int pull_down_menus();
-PRIVATE int no_proxy();
-PRIVATE int disp_sea_rdn();
-PRIVATE int strict_basedn();
-PRIVATE int dynamic_gw();
-PRIVATE int legal();
-PRIVATE int no_show_rdn();
-PRIVATE int no_modify();
-PRIVATE int sort();
-PRIVATE int firstPage();
-PRIVATE int secondPage();
-PRIVATE int modattr();
-PRIVATE void usage();
-PRIVATE int parse();
-PRIVATE int parse2();
-PRIVATE int table_disp();
-PRIVATE int form_button();
-PRIVATE int ip_refuse();
-
-
-/* Sub-tables to analyse the DISPLAY-Keys */
-static PARSE_ENTRY first_table[] = {
-    {"SECOND-PAGE",        secondPage,        NULL},
-    { NULL, NULL, NULL }
-};
-
-static PARSE_ENTRY display_table[] = {
-    {"FIRST-PAGE",         firstPage,        first_table},
-    { NULL, NULL, NULL }
-};
-
-
-/* Sub-tables to analyse the MODIFY-Keys */
-static PARSE_ENTRY modify_table[] = {
-    {"MODATTR",            modattr,          NULL},
-    { NULL, NULL, NULL }
-};
-
-/* Sub-tables to analyse the IND_ATTRS-Keys */
-static PARSE_ENTRY ind_attrs_table[] = {
-    {"IND_ATTRS",            ind_attribute,          NULL},
-    { NULL, NULL, NULL }
-};
-
-
-/* The main-table for key-word-parsing */
-static PARSE_ENTRY parse_table[] = {
-    {"WEBDN",              webdn,            NULL},
-    {"WEBPW",              webpw,            NULL},
-    {"WEBDN2",             webdn2,           NULL},
-    {"WEBPW2",             webpw2,           NULL},
-    {"WEBPORT",            webport,          NULL},
-    {"TIMEOUT",            timeout,          NULL},
-    {"TWEBHOST",           hostname,         NULL},
-    {"LDAPD",              ldapd,            NULL},
-    {"LDAPPORT",           ldapportf,        NULL},
-    {"HEADER",             header,           NULL},
-    {"FOOTER",             footer,           NULL},
-    {"INDEX-URL",          index_url,        NULL},
-    {"ALLOW-MSG",          allow_msg,        NULL},
-    {"HELPFILE",           helpfilef,        NULL},
-    {"FILTERFILE",         filterfilef,      NULL},
-    {"ETCDIR",             etcdir,           NULL},
-    {"FRIENDLYFILE",       friendlyfilef,    NULL},
-    {"GRANT",              grant,            NULL},
-    {"REFUSE",             refuse,           NULL},
-    {"ALLOW-STRING",       allow_string,     NULL},
-    {"ALLOW-PROXY",        allow_proxy,      NULL},
-    {"SUBTREE-SEARCH",     subtree_search,   NULL},
-    {"DENY-STRING",        deny_string,      NULL},
-    {"SHOW-DEFAULT-OC",    show_defoc,       NULL},
-    {"DISPLAY-OBJECT" ,    display,          display_table},
-    {"BASEDN",             basednf,          NULL},
-    {"SEARCH-ONLY",        search_only,      NULL},
-    {"GW-SWITCH",          gw_switch,        NULL},
-    {"MODIFY",             modify,           modify_table},
-    {"INDIRECT-ATTRS",     ind_attrs,        ind_attrs_table},
-    {"MAXCOUNT",           maxcount,         NULL},
-    {"CACHE-EXPIRE-DEFAULT", cache_expire,   NULL},
-    {"MAX-PERSON",         max_person,       NULL},
-    {"CACHING-TERMS",      caching_terms,    NULL},
-    {"COMREFUSE",          comrefuse,        NULL},
-    {"LANGUAGE",           language,         NULL},
-    {"STRIP-PIN",          strip_pin,        NULL},
-    {"PREFER-REF-URIS",    prefer_ref_uris,  NULL},
-    {"PULL-DOWN-MENUS",    pull_down_menus,  NULL},
-    {"NO-PROXY",           no_proxy,         NULL},
-    {"DISP-SEA-RDN",       disp_sea_rdn,     NULL},
-    {"STRICT-BASEDN",      strict_basedn,    NULL},
-    {"DYNAMIC-GW",         dynamic_gw,       NULL},
-    {"LEGAL",              legal,            NULL},
-    {"NO-SHOW-RDN",        no_show_rdn,      NULL},
-    {"NO-MODIFY",          no_modify,        NULL},
-    {"SORT",               sort,             NULL},
-    {"TABLES",             table_disp,       NULL},
-    {"FORM-BUTTON",        form_button,      NULL},
-
-#ifdef AMBIXGW
-    {"SELBSTEINTRAG",      selbsteintrag,    NULL},
-#endif
-
-#ifdef TUE_TEL
-    {"DIT-CONFIG",         dit_config,       NULL},
-    {"PHONEWORLD",         phoneworld,       NULL},
-    {"TON-URLS",           ton_urls,         NULL},
-#endif
-    {"IP-REFUSE",          ip_refuse,        NULL},
-
-    { NULL, NULL, NULL }
-};
-
-
-/* tables to compute DISPLAY-types to integer */
-STRDISP  disp_types[] = {
-
-    { "DEFAULT",         3, 0 },
-    { "MAILTO",          4, 6 },
-    { "MULTILINE",       5, 1 },
-    { "JPEG",            4, 9 },
-    { "JPEG2GIF",        8, 10 },
-    { "BMP",             3, 8 },
-    { "HREF",            4, 2 },
-    { "URL",             3, 5 },
-    { "FINGER",          6, 3 },
-    { "DATE",            4, 4 },
-    { "MOVETO",          4, 7 },
-    { "BOOLEAN",         9, 11 },
-    { "URI",             3, 12 },
-    { "PGPKEY",          6, 13 },
-    { "INDEXURL",        8, 14 },
-    { "DYNAMICDN",       9, 15 },
-    { "REFERRAL",        8, 20 },
-    { "PRE",             3, 21 },
-    { "HEADER",          6, 22 },
-
-#ifdef TUE_TEL
-    { "PHONREFSHORT",   12, 16 },
-    { "PHONREFLONG",    11, 17 },
-    { "TFUNCPERS",       9, 18 },
-    { "FAXTABLE",        8, 19 },
-#endif
-
-    { NULL, 0, 0 }
-
-};
-
-/* tables to compute syslog-options to integer */
-static STRDISP  syslog_types[] = {
-
-    { "LOCAL0",         6, LOG_LOCAL0 },
-    { "LOCAL1",         6, LOG_LOCAL1 },
-    { "LOCAL2",         6, LOG_LOCAL2 },
-    { "LOCAL3",         6, LOG_LOCAL3 },
-    { "LOCAL4",         6, LOG_LOCAL4 },
-    { "LOCAL5",         6, LOG_LOCAL5 },
-    { "LOCAL6",         6, LOG_LOCAL6 },
-    { "LOCAL7",         6, LOG_LOCAL7 },
-    { NULL, 0, 0 }
-
-};
-
-
-/* Defaults */
-#define  DEFAULT_TIMEOUT   120
-#define  DEFAULT_MAXCOUNT  200
-#define  MAX_EXPIRE        604800
-
-
-/*  Variable for the Anti-Hack-Code */
-extern COMREFUSE  *comRefuseP;
-
-struct timeval timestore[5];    /* Time assigned to events:
-                                    0 -> after accept, 1-> after dns,
-                                    2 -> after check4access,
-                                    3 -> before list_output/print_attr */
-
-int items_displayed = 0;         /* number of items showed on
-                                    do_menu/do_search*/
-
-#endif /* _INIT_ */
-
diff --git a/contrib/tweb/init_exp.h b/contrib/tweb/init_exp.h
deleted file mode 100644 (file)
index 5ef68fa..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* init_exp.h.                                                              *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            July 21 1995                 Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 11 1999                ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-/*
- * $Id: init_exp.h,v 1.6 1999/09/10 15:01:17 zrnsk01 Exp $
- *
- */
-
-
-#ifndef _INIT_EXP_
-#define _INIT_EXP_
-
-#ifdef TUE_TEL
-#  include  "tueTel_exp.h"
-#endif
-
-#include "regular_exp.h"
-
-PUBLIC int  get_str_param(/* FILELINE *inLine, char **str,
-                             GLOB_STRUCT *glob, int lower */);
-
-PUBLIC void getopts ();
-PUBLIC void check ();
-PUBLIC void init();
-PUBLIC void output();
-PUBLIC void langinit();
-PUBLIC void langoutput();
-PUBLIC void get_lang();
-PUBLIC void file_test();
-PUBLIC int  do_readf();
-PUBLIC void get_index_url_rules();
-PUBLIC void re_read_index_url_rules();
-
-extern  STRDISP  disp_types[];
-
-
-/* A pointer to an integer-function */
-typedef int (*IFP)();
-
-
-/* One line in the config-file, with line-counter */
-typedef struct _fileline {
-    char value[BUFSIZ];
-    int count;
-} FILELINE;
-
-
-/* Table-structure to parse the key-words in the config- und rc-files */
-typedef struct _parse_keys {
-    char *keyWord;
-    IFP   keyFunc;
-    struct _parse_keys *subTable;
-} PARSE_ENTRY;
-
-
-/* Maximum number of sub-lists in order to display result-lists */
-#define MAX_OCS 128
-
-/* List of attributes which will be displayed (on 1./2. page) */
-typedef struct _display_line {
-    char *attribute;              /* the X.500-Attribute */
-    char *label;                  /* the Label of the Web-Page */
-    char *type;                   /* the Format-Type as String (C-Option) */
-    int ty;                       /* the Format-Type as Int (print-Funkt.) */
-    struct _display_line *next;   /* the next Attribute */
-} DISPLAY_LINE, *pDISPLAY_LINE;
-
-
-/* List of Object-Classes which shall be displayed */
-typedef struct _display {
-    char *ocs;                    /* the X.500-Object-Class(es) */
-    DISPLAY_LINE *first_page;     /* Attribute on the first page */
-    DISPLAY_LINE *second_page;    /* Attribute on the second page */
-    struct _display *next;        /* the next Objekt-Class(es) */
-} DISPLAY, *pDISPLAY;
-
-
-/* List of attributes which may be modified */
-typedef struct _modify_line {
-    char *attribute;              /* the X.500-attribute */
-    char *label;                  /* the Label in the modification-formulare */
-    int   count;                  /* the maximmum number of attribute-values */
-    struct _modify_line *next;    /* the next attribute */
-} MODIFY_LINE, *pMODIFY_LINE;
-
-/* List of Object-Class(es) which may be modified */
-typedef struct _modify {
-    char *ocs;                    /* the X.500-Object-Class(es) */
-    MODIFY_LINE *modattr;         /* the modifyable attributes */
-    struct _modify *next;         /* the next Object-Class(es) */
-} MODIF, *pMODIF;
-
-/*attributes which are read from another entry */
-typedef struct _ind_attr_arr {
-    char *key;                    /* pers for person etc. */
-    int replace;                  /* 2 -> function, 1 -> replace, 0 -> append */
-    char *attr;                   /* functionname / referenced attribute */
-    char *host;                   /* on which host to look */
-    int port;                     /* on which port to look */
-    char *base;                   /* where to look for ref-entry */
-    LDAPMessage **e;              /* Pointer to the result */
-    LDAP *ld;                     /* Pointer to the matching LDAP-Struct */
-} IND_ATTR_ARR;
-
-typedef struct _ind_attrs {
-    char *ref_attr;               /* name of the reference-attribute */
-    IND_ATTR_ARR *valid_nodes;    /* valid nodes array (only in 1st element) */
-    IND_ATTR_ARR *ia_arr;         /* supported keys, attrs and bases */
-    struct _ind_attrs *next;      /* the next ind_attr */
-} IND_ATTRS, *pIND_ATTRS;
-
-
-/* Support-structure to sort the result-lists */
-typedef struct _dncompare {
-    char *string;                 /* Sort-String */
-    char *href;                   /* Hyper-Link for the sorted entry */
-    char *raw;                    /* Raw data:                                                                         -> <name>[<attr>=<value>&..%..$.. */
-} DNLIST, *pDNLIST;
-
-
-/* Structure to sort the result-lists object-class/attribute-related */
-typedef struct _sort_line {
-    char *object_class;           /* Object-class by which is sorted */
-    char *label;                  /* Label to display sub-lists */
-    int   priority;               /* Sequence for list-output */
-    char *display_class;          /* dedicated display-class */
-    DISPLAY *display_class_ptr;   /* Pointer therefor */
-    char *sort_attr;              /* Attribut by which sorting is done */
-    pDNLIST *dnList;              /* Entries in the sub-list */
-    int  dnLast;                  /* Amount of entries in the sub-list */
-    int restricted;               /* 1 -> sub-list was restricted : 0 -> not*/
-    struct _sort_line *next;      /* the next Object-Class */
-} SORT_LINE, *pSORT_LINE;
-
-/* Structure to handle caching */
-
-typedef struct _caching_terms_line {
-    int time;                     /* time to cache */
-    char *access_type;            /* type of access */
-    int rdn_oc;                   /* 1 -> rdn, 0 -> oc -lookup */
-    char *pattern;                /* mach-pattern: oc/rdn */
-    struct _caching_terms_line *next; /* the next line */
-} CACHING_TERMS_LINE, *pCACHING_TERMS_LINE;
-
-
-/* DN of the TWEB-Homepage, including header and footer thereof */
-typedef struct _basedn_line {
-    char *dn;
-    char **dnarray;
-    char *head;
-    char *foot;
-} BASEDN_LINE;
-
-/* List of rules for table-button and table display */
-typedef struct _table_display {
-    int allow;            /* 1 -> tables only if allowed, 0 -> in any case */
-    char *select_oc;      /* table-button only if
-                             objectclass contains select_oc */
-    char *button_label;   /* label for table-request-button */
-    char *dn_extension;   /* extension behind button Xdn?MENU */
-    struct _table_display *next;
-} TABLE_DISPLAY, *pTABLE_DISPLAY;
-
-/* List of organisational units where only searching is permitted,
-   including header and footer thereof */
-typedef struct _search_only_line {
-    char *dn;
-    char *head;
-    char *foot;
-    struct _search_only_line *next;
-} SEARCH_ONLY_LINE, *pSEARCH_ONLY_LINE;
-
-/* Anti-Hack Structure */
-typedef struct _comrefuse {
-    int      tmin;
-    int      tdiff;
-    int      maxAccept;
-    int      suspendCycle;
-    time_t   statCycle;
-    char    *statFile;
-} COMREFUSE;
-    
-
-/* static list of Gateway-Switches */
-typedef struct _gw_switch_line {
-    char *dn;                     /* the DN of the organization(al unit) */
-    char *url;                    /* the URL of the gateway to be called */
-    struct _gw_switch_line *next; /* the next Gateway-Switch */
-} GW_SWITCH_LINE, *pGW_SWITCH_LINE;
-
-/* the head of the Gateway-Switch-list */
-typedef struct _gw_switch {
-    int dynamic;                  /* is dynamic switching allowed */
-    char *lagws;                  /* language dependant recognition of
-                                     GW-Switch-entries in X.500
-                                     (language independant recognition is
-                                      implemented by macro) */
-    GW_SWITCH_LINE *list;         /* the static list of switches */
-} GW_SWITCH, *pGW_SWITCH;
-
-/* static list of already available ldap-connections */
-typedef struct _ld_list {
-    LDAP *ld;                     /* pointer to the ldap-structure */
-    char *host;                   /* The corresponding host */
-    int port;                     /* The corresponding port */
-    struct _ld_list *next;        /* the next */
-} LD_LIST, *pLD_LIST;
-
-typedef struct _index_url_rule {
-    char *rule;                   /* Atribute providing data */
-    char *dit_dn;               /* DN supporting config */
-} INDEX_URL_RULE;
-
-typedef struct _index_url {
-    char *dat_file;             /* File providing data */
-#define INDEX_RULE_SIZE     20
-    INDEX_URL_RULE rarr[INDEX_RULE_SIZE];  /* array with rules */
-    int rereadcycle;            /* frequency to reread */
-} INDEX_URL;
-
-/* Structure to hold config of buttons leading to form-scripts */
-typedef struct _form_button {
-    int   read_menu;              /* 1-> button in do_read; 0-> in do_menu */
-    char *object_class;           /* display the button on presence of this
-                                     object-class*/
-    char *method;                 /* cgi method: GET ..  */
-    char *script_url;             /* URL of CGI-Script */
-    char *text;                   /* text in front of button */
-    char *dn_name;                /* name of dn in hidden form  */
-    char *form_name;              /* name of form (submit-button) */
-    char *button_label;           /* label of submit-button  */
-    struct _form_button *next;    /* the next FORM_BUTTON definition */
-} FORM_BUTTON, *pFORM_BUTTON;
-
-typedef struct _ip_refuse {
-    char *dat_file;             /* File providing data */
-    char *refu_str;             /* String of refused clients */
-#define REFU_BUFSIZ     256
-#define REFU_STRDELIM   "&"
-
-    int rereadcycle;            /* frequency to reread */
-} IP_REFUSE;
-
-/* the central structure of TWEB with the configuration of the gateway */
-typedef struct _glob_struct {
-    char *webdn;                 /* GW-DN in case of authorisded access */
-    char *webpw;                 /* GW-PW in case of authorisded access */
-    char *webdn2;                /* GW-DN in case of non-authorisded access */
-    char *webpw2;                /* GW-PW in case of non-authorisded access */
-    int  webport;                /* the Port the GW is listening on */
-    int  timeout;                /* how long does the gateway wait for the DSA*/
-    time_t stat_slice;           /* Time for the anti-Hack + Statistic */
-    char *ldapd;                 /* the computer LDAPD is running on */
-    int  ldapport;               /* the Port thereof */
-    char *grant;                 /* ':'-separated list of domains with access */
-    char *refuse;                /* ':'-separated list of domains
-                                    without access */
-    char *allow_string;          /* ':'-separated list of domains
-                                    supported with authorised access */
-    char *deny_string;           /* ':'-separated list of domains
-                                    supported with restricted access */
-    regexp *comp_grant;          /* compiled regular expressions for GRANT */
-    regexp *comp_refuse;          /* compiled regular expressions for REFUSE */
-    regexp *comp_allow;          /* compiled regular expressions for ALLOW_ST */
-    regexp *comp_deny;           /* compiled regular expressions for DENY_ST. */
-    char **allow_proxy;          /* ':'-separated list of proxy-servers
-                                    supported with authorised access */
-    char **subtree_search;       /* ':'-separated list of objectclasses
-                                     where to make subtree_search instead of
-                                     single_level_search */
-    DISPLAY *display;            /* presentation of Objects */
-       DISPLAY *default_display_type; /* pointer to the default display descript */
-    BASEDN_LINE *basedn;         /* the entry-page of TWEB */
-    SEARCH_ONLY_LINE *search_only; /* where only searching is supported */
-    GW_SWITCH *gw_switch;        /* the Gateway-Switching */
-    MODIF *modify;               /* what may be modified within TWEB */
-    IND_ATTRS *ind_attrs;        /*attributes which are read from 
-                                   another entry */
-    int cache_expire;            /* caching-time for proxies in seconds */
-    CACHING_TERMS_LINE *caching_terms; /* cache-control-rules */
-    int maxcount;                /* maximum amount of result-lists */
-    int max_person;              /* maximum amount of persons displayed */
-    COMREFUSE *comrefuse;        /* Anti-Hack Structure */
-    TABLE_DISPLAY *tables;       /* listings also as tables by button-request */
-    INDEX_URL *index_url;        /* how to display search-results of index
-                                    -> display-type INDEX-URL */
-    FORM_BUTTON *form_button;    /* display buttons leading to forms */
-    char *tables_marker;         /* flag for menu with tables += their config */
-    char **language;             /* the language links on a html-page */
-    char lang[2];                /* the number of the "own" language */
-    char *olang;                 /* the other languages */
-    char *no_show_rdn;           /* String with "unvisible" DN parts */
-    char *no_modify;             /* Objectclasses without MODIFY-button */
-    SORT_LINE *sort;             /* how shall the results be sorted */
-    SORT_LINE *sorty[MAX_OCS];   /* Array with the sorted lists */
-    char **sort_attribs;         /* Array with the sort-attributes */
-    char *myname;                /* the programname */
-    char *argv0;                 /* ARGV[0] */
-    char *hostname;              /* the name of the computer TWEB 
-                                    is running on*/
-    int virtualport;             /* port if defined is set in every link
-                                    instead of webport (may always
-                                    lead requests over www4ward) */
-    char *header;                /* the header for the standardpage */
-    char *footer;                /* the footer for the standardpage */
-    char *allow_msg;             /* file containing allow-message */
-    char *helpfile;              /* the helpfile */
-    char *filterfile;            /* the filterfile for LDAP-search */
-    char *etcdir;                /* the directory containing the supportfiles */
-    char *friendlyfile;          /* the file for "more friendly" DNs */
-    char *acfilename;            /* the name of the actual config-file */
-    time_t nowtime;              /* actual time in tics */
-    time_t expiretime;           /* time for cache to expire in tics */
-    char *nowtimestr;            /* actual timestring in GMT */
-    char *strip_pin;             /* truncation of PINs at named sort_ocs */
-    char *expiretimestr;         /* timestring for cache to expire in GMT */
-    char *server_connection_msg; /* TCP Connection-message */
-    char *user_agent_msg;        /* User-Agent message */
-    char *menu_filter;           /* menu_filter */
-#define LANG_ARR_SIZE 110
-    char la[LANG_ARR_SIZE][BUFSIZ];  /* language-specific text-fragments */
-    LD_LIST *ld_list;            /* List of open LDAP-Connections */
-    char **raw_attrs;            /* Attributes to be shown with raw_access */
-       size_t  svc_cnt;             /* A counter for the number of requests */
-
-#ifdef TUE_TEL
-    DIT_CONFIG *dit_config;      /* container for relations between DNs and
-                                    responsible host:port */
-    TON_URLS *ton_urls;          /* TONs in addition to DNs */
-    char *phoneworld;            /* visibility of phonebook */
-#endif
-    IP_REFUSE *ip_refuse;        /* refuse certain hosts by ip-addr */
-
-#ifdef AMBIXGW
-    char *selbsteintrag[10];     /* some strings for AMBIX-selfentry */
-#endif
-
-    unsigned show_defoc     : 1, /* respect unknown OCs while sorting */
-             strict         : 1, /* restriction of person-lists also in the
-                                    authorised case */
-             restricted     : 1, /* hard restriction of the extent of the list*/
-             persRestricted : 1, /* restriction of person-lists (legal) */
-             prefer_ref_uris : 1, /* take over labeledURIS from 
-                                    referenced objects */
-             is_proxy       : 1, /* did the request come from a proxy-server */
-             pull_down_menus : 1, /* move upwards with pull-down-menus */
-             no_proxy       : 1, /* no local proxy-servers */
-             strict_basedn  : 1, /* no access outside BASEDN */
-             no_browse      : 1, /* no person-lists while browsing */
-             noauth         : 1, /* dynamic flag for question of authorisation*/
-             caching        : 1, /* shall be cached by proxy-server */
-             legal          : 1, /* display privacy-text */
-             legal_top      : 1, /* display privacy-text on top */
-             unknown_host   : 1, /* connection from unknown */
-             allowed        : 1; /* access allowed for decide_access */
-    unsigned raw_data       : 1, /* provide raw-data instead of html */
-             ldap_referral_mode : 1, /* TWEB displayes foreign ldap-url */
-             disp_sea_rdn   : 1; /* display only rdns as search-result */
-} GLOB_STRUCT, *pGLOB_STRUCT;
-
-
-/* the function the gateway is initialized with */
-void init();
-
-#endif /* _INIT_EXP_ */
-
diff --git a/contrib/tweb/queries.c b/contrib/tweb/queries.c
deleted file mode 100644 (file)
index 5c19448..0000000
+++ /dev/null
@@ -1,734 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
-*                                                                          *
-* queries.c..                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Server-Functions                 *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: queries.c,v 1.8 1999/09/13 13:47:47 zrnsk01 Exp $
- *
- */
-
-#include "queries.h"
-
-
-PUBLIC void do_queries( s, glob , ip_addr, ip_port, hp)
-int            s;
-GLOB_STRUCT   *glob;
-char          *ip_addr;
-unsigned int   ip_port;
-struct hostent *hp;
-{
-    char        buf[100*BUFSIZ], *query, *tail;
-    int        len;
-    FILE        *fp;
-    int        rc, tblsize;
-    struct timeval    timeout;
-    fd_set        readfds;
-    LDAP        *ld;
-    char tstring[100];
-
-#if OL_LDAPV > 0
-       int ldap_opt;
-#endif
-
-    /* get time for performance log */
-    gettimeofday(&timestore[2], NULL);
-
-    /*  open output-port to waiting client */
-    if ( (fp = fdopen( s, "a+")) == NULL ) {
-        perror( "fdopen" );
-        exit_tweb( 1 );
-    }
-
-    tblsize = getdtablesize();
-    timeout.tv_sec = glob->timeout;
-    timeout.tv_usec = 0;
-    FD_ZERO( &readfds );
-    FD_SET( fileno( fp ), &readfds );
-
-    time(&glob->nowtime);
-    time(&glob->expiretime);
-    if(glob->cache_expire) {
-        glob->expiretime += glob->cache_expire;
-        glob->caching =TRUE;
-    }
-    free(glob->nowtimestr);
-    free(glob->expiretimestr);
-
-    strftime(tstring, 99, GMT_FORMAT, gmtime(&glob->nowtime));
-    glob->nowtimestr = strdup(tstring);
-    strftime(tstring, 99, GMT_FORMAT2, gmtime(&glob->expiretime));
-    glob->expiretimestr = strdup(tstring);
-
-    /*  get client-query out from the system */
-    if((rc=select(tblsize,(fd_set *)&readfds,NULL,NULL,&timeout))<=0)
-        exit_tweb( 1 );
-
-    if ( fgets( buf, sizeof(buf), fp ) == NULL )
-        exit_tweb( 1 );
-
-    /* Analyse Web-Client-Type / proxy + log-message */
-    checkwwwclient(fp, ip_addr, ip_port, hp, glob);
-
-    len = strlen( buf );
-    if ( debug ) {
-        fprintf( stderr, "got %d bytes\n", len );
-
-#if OL_LDAPV > 2
-        ber_bprint( buf, len );
-#else
-        lber_bprint( buf, len );
-#endif
-
-    }
-
-    /* strip of white spaces */
-    query = trim (buf, WSPACE);
-
-    rewind (fp);
-
-
-    /*  strip "HTTP" from the end of the request */
-    if ((tail = strstr(query, " HTTP")) != NULL || 
-            (tail = strstr(query, " http")) != NULL) {
-        http = 1;
-        *tail = '\0';
-    }
-
-    /*  recognize GET/HEAD */
-    if (!strncasecmp (query, "get", 3)) {
-
-        request = GET;
-        query += 3;
-
-    } else if (!strncasecmp (query, "head", 4)) {
-
-        request = HEAD;
-        query += 4;
-
-    } else {
-
-        /*  Error because of neither GET- nor HEAD-request */
-        do_error(fp, -2, NOT_IMPLEMENTED, glob);
-        /* fprintf(fp, "HTTP/1.0 501 %s<br>", glob->la[5]); */
-        rewind(fp);
-        exit_tweb( 1 );
-    }
-
-        /* strip off leading white space and '/' */
-    while ( isspace( *query ) || *query == '/') {
-        ++query;
-    }
-
-
-    /*  Now the real request is to be analized and served */
-
-    /* refuse robots if according robots.txt file exists */
-
-    if (!strcasecmp(query, "robots.txt")){
-        if (http == 1) PRINT_PLAIN_HEADER;
-        disp_file(glob, ROBOTS_TXT_FILE, fp);
-        exit_tweb(0);
-    }
-
-#ifdef TUE_TEL
-    if( glob->ton_urls && *query == cTON) {
-        if(!glob->ton_urls->admin)
-            glob->allowed = 0;
-        if(glob->ton_urls->pass_oc) {
-            glob->max_person = 10000;
-            glob->no_browse = FALSE;
-        }
-    }
-#endif
-
-    decide_access(glob);
-
-    /* get time for performance log */
-    gettimeofday(&timestore[3], NULL);
-
-    /* perform handling of pulldown/form retcodes
-                          -> gwswitch-redirect || pass */
-    if(*query == cPULLDOWN) {
-        if(strstr(query, "http")) {
-            /* redirection */
-            query += 4;
-            hex_decode(query);
-            PRINT_REDIRECT_HEADER;
-            PRINT_HTML_FOOTER;
-            exit_tweb(0);
-        } else {
-            /* pass */
-            query += 7;
-            hex_decode(query);
-        }
-    }
-
-    /* perform handling of buttons/form retcodes
-                          -> gwswitch-redirect || pass */
-    if(*query == cBUTTON) {
-        char *strptr;
-
-        query += 2;
-        strptr = strrchr( query, '=' );
-        *strptr = '\0';
-
-        if(strstr(query, "http")) {
-            /* redirection */
-            hex_decode(query);
-            PRINT_REDIRECT_HEADER;
-            PRINT_HTML_FOOTER;
-            exit_tweb(0);
-        } else {
-            /* pass */
-            hex_decode(query);
-        }
-    }
-
-
-    /*  1. requests that may be served without DSA */
-    switch (*query) {
-
-
-        /*  display Help-File */
-        case cHELP:
-            if (dosyslog)
-                syslog (LOG_INFO, "working on query: %c (%s,%u) <%08d>",
-                                  cHELP, ip_addr, ip_port, glob->svc_cnt);
-            if (http == 1) PRINT_HTML_HEADER;
-            fprintf(fp, "<HTML><HEAD>");
-            disp_file(glob, glob->helpfile, fp);
-            PRINT_HTML_FOOTER;
-            rewind(fp);
-            exit_tweb( 0 );
-
-        /*  request error-explanation */
-        case cERROR:
-            if (dosyslog)
-                syslog (LOG_INFO, "working on query: %c (%s,%u) <%08d>",
-                                  cERROR, ip_addr, ip_port, glob->svc_cnt);
-/*            fprintf(fp, HTML_HEAD_TITLE, "Errors", glob->la[100]);
-*/
-            do_error( fp, 0 , 1, glob );
-            rewind(fp);
-            exit_tweb( 0 );
-
-        /*  RCC: remote configuration control */
-        case cCONFIG:
-            if (dosyslog)
-                syslog (LOG_INFO, "working on query: %c (%s,%u) <%08d>",
-                                  cCONFIG, ip_addr, ip_port, glob->svc_cnt);
-            if (http == 1) PRINT_HTML_HEADER;
-            fprintf(fp, HTML_HEAD_TITLE, "Configuration", glob->la[100]);
-            output(fp, glob, TRUE);
-            langoutput(fp, glob, TRUE);
-            PRINT_HTML_FOOTER;
-            rewind(fp);
-            exit_tweb(0);
-
-        /* query access-statistic */
-        case cSTATS:
-            if (dosyslog)
-                syslog (LOG_INFO, "working on query: %c (%s,%u) <%08d>",
-                                  cSTATS, ip_addr, ip_port, glob->svc_cnt);
-            if (http == 1) PRINT_HTML_HEADER;
-            fprintf(fp, HTML_HEAD_TITLE, "Statistics", glob->la[100]);
-            fprintf(fp,
-    "\n<strong>#############STATISTIC-DISPLAY#############</strong><br>\n" );
-            fprintf( fp, "\n%s\n\n<p>\n", version );
-            (void) put_hackStats (fp, 0);
-            PRINT_HTML_FOOTER;
-            rewind (fp);
-            exit_tweb (0);
-
-    /* NOT REACHED */
-    }
-
-    /* with ldap-referral use this host + port + use do_read */
-    /* query looks like this: Wldap://host:port/dn */
-    if ( *query == cREFERRAL ) {
-        char *host, *port, *dn = NULL;
-
-        glob->ldap_referral_mode = 1;
-        if ( ( host = strstr( query, "ldap://" ) ) ) {
-            host += 7;
-            if ( ( port = strchr( host, ':' ) ) ) {
-                *port++ = '\0';
-                 if ( ( dn = strchr( port, '/' ) ) ) {
-                     *dn = '\0';
-                     glob->ldapd = strdup ( host );
-                     glob->ldapport = atoi ( port );
-                     *dn = cREAD;
-                     query = dn;
-                 }
-            }
-        }
-        if ( !dn )
-            exit_tweb( 1 );
-    }
-
-    /*  from here on there is needed a connection to the DSA */
-    if ( (ld = ldap_open( glob->ldapd, glob->ldapport )) == NULL ) {
-        if ( debug ) perror( "ldap_open" );
-        do_error( fp, LDAP_SERVER_DOWN, SERVER_ERROR, glob);
-        rewind(fp);
-        exit_tweb( 1 );
-    }
-
-    if(glob->caching_terms)
-        trade_cache(fp, ld, query, glob);
-
-    /* performance of STRICT-BASEDN (blind out accesses != BASEDN) */
-
-    if(glob->strict_basedn)
-        strict_basednf(fp, ld, query, glob);
-
-
-    /*  2. queries with binding of the owner */
-    switch (*query) {
-
-        /*  request of the modification-formulare */
-        case cGETMOD:
-            /*  log the request without password */
-            hex_decode(query);
-            if (dosyslog) {
-                char qbuf[BUFSIZ], *qbufp;
-
-                strcpy(qbuf, query);
-                if( ( qbufp = strchr(qbuf, '?')) )
-                    *qbufp = '\0';
-                syslog (LOG_INFO, "working on query: %s (%s,%u) <%08d>",
-                                  qbuf, ip_addr, ip_port, glob->svc_cnt);
-            }
-            rewind(fp);
-
-            /*  follow aliases while searching */
-#if OL_LDAPV > 0
-
-                       ldap_opt = LDAP_DEREF_ALWAYS;
-            ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-            ld->ld_deref = LDAP_DEREF_ALWAYS;
-#endif
-
-            if ( !searchaliases )
-#if OL_LDAPV > 0
-
-                       ldap_opt = LDAP_DEREF_FINDING;
-            ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-                     ld->ld_deref = LDAP_DEREF_FINDING;
-#endif
-    
-            /*  send WWW-Formulare with contence of the desired entry
-                to the client */
-            do_form( ld, fp, ++query, glob);
-            ldap_unbind (ld);
-            close_ldap_connections(glob);
-            rewind(fp);
-            exit_tweb (0);
-
-        /*  return of the modification-formulare */
-        case cDOMOD:
-
-            /*  log the request in readable form without password if desired */
-            if (dosyslog) {
-
-                char qbuf[100*BUFSIZ], *qbufp;
-
-                strcpy(qbuf, query);
-                if( ( qbufp = strchr (qbuf, '?')) )
-                    *qbufp = '\0';
-                hex_decode(qbuf+1);
-                syslog (LOG_INFO, "working on query: %s (%s,%u) <%08d>",
-                                  qbuf, ip_addr, ip_port, glob->svc_cnt);
-
-            }
-
-            /*  perform modification with the original request */
-            do_modify( ld, fp, ++query, glob);
-            ldap_unbind (ld);
-            close_ldap_connections(glob);
-            rewind(fp);
-            exit_tweb (0);
-
-    /* NOT REACHED */
-    }
-
-
-    /*  perform all the other requests */
-
-    /*  log the request in readable form first */
-    hex_decode(query);
-    if (dosyslog)
-        syslog (LOG_INFO, "working on query: %s (%s,%u) <%08d>",
-               *query ? trimright(query, WSPACE) : "BASEDN", ip_addr, ip_port,
-                               glob->svc_cnt);
-
-    /*  accesses with resolvation of alias-entries */
-#if OL_LDAPV > 0
-
-                       ldap_opt = LDAP_DEREF_ALWAYS;
-            ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-    ld->ld_deref = LDAP_DEREF_ALWAYS;
-#endif
-
-    if ( !searchaliases )
-#if OL_LDAPV > 0
-
-                       ldap_opt = LDAP_DEREF_FINDING;
-            ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-             ld->ld_deref = LDAP_DEREF_FINDING;
-#endif
-    
-    /*  bind to DSA by order of the user as Web-DN
-        (DN1 or DN2 was decided at check4access) */
-
-#if OL_LDAPV > 0
-
-    /*  a dummy call as long as socket connections are not settled
-     *  with OpenLDAP
-     */
-    if ( dosyslog )
-           syslog( LOG_INFO, "do_queries(): calling ldap_simple_bind_s()...\n" );
-
-#endif
-
-    if ( (rc=ldap_simple_bind_s( ld, glob->webdn, glob->webpw ))
-                                                     != LDAP_SUCCESS ) {
-        if ( debug ) ldap_perror( ld, "ldap_simple_bind_s" );
-        do_error( fp, rc, SERVER_ERROR, glob);
-        rewind(fp);
-        exit_tweb( 1 );
-    }
-
-    /*  3. requests to the GW by order of the user */
-    switch ( *query++ ) {
-
-        /*  read entry */
-        case cREAD:
-            do_read( ld, fp, query, 0, glob );
-            break;
-
-        /*  display second page */
-        case cREADALL:
-            do_read( ld, fp, query, 1, glob);
-            break;
-
-        /*  search entries */
-        case cSEARCH:
-            do_search( ld, fp, query, glob );
-            break;
-
-        /*  list entries (browsing) */
-        case cLIST:
-            do_menu( ld, fp, query, "", glob );
-            break;
-
-#ifdef TUE_TEL
-        /*  list entries (browsing TON instead of DN) */
-        case cTON:
-            if(glob->ton_urls)
-                do_ton( ld, fp, query, glob );
-            break;
-#endif
-
-        /*  request GIF-photo (Photo in X.500 as JPEG) */
-        case cGIF:
-            do_pict( ld, fp, query, 1, glob);
-            break;
-
-        /*  display JPEG-Photo */
-        case cJPEG:
-            do_pict( ld, fp, query, 2, glob);
-            break;
-
-        /*  display X.500-G3FAX-Photo */
-        case cG3FAX:
-            do_pict( ld, fp, query, 0, glob);
-            break;
-
-        /*  play Audio-attribute */
-        case cAUDIO:
-            do_audio( ld, fp, query, 0, glob);
-            break;
-
-        /*  eXtended query format */
-        case cEXTENDED:
-            do_xtend( ld, fp, query, 0, glob);
-            break;
-
-        /*  Default (empty query) is browsing of BASEDN */
-        default:
-            do_menu( ld, fp, glob->basedn->dn, "", glob );
-            break;
-    }
-
-    /*  Job done, terminate connection to the DSA and bye! */
-    ldap_unbind (ld);
-    close_ldap_connections(glob);
-    rewind(fp);
-    exit_tweb( 0 );
-    /* NOT REACHED */
-}
-/* end of function: do_queries */
-
-PUBLIC void timeoutf(sig)
-int sig;
-{
-    /* fprintf(stderr, "timeout!"); */
-    exit_tweb(0);
-}
-/* end of function: timeoutf */
-
-
-PRIVATE void strict_basednf(fp, ld, query, glob)
-FILE *fp;
-LDAP *ld;
-char *query;
-GLOB_STRUCT   *glob;
-{
-    char dnbuf[BUFSIZ], basednbuf[BUFSIZ], *strptr;
-    LDAPMessage *res, *e;
-    int rc, flag = 0, i, j;
-    struct timeval timeout;
-    char *url = NULL, **uri, *urlnola = NULL;
-    pGW_SWITCH_LINE gw_ptr;
-    char  *url_tmp;
-    char **dnarray, **bdnarray;
-
-#ifdef TUE_TEL
-    /* Patch for TONS */
-    if( glob->ton_urls && (*query == cTON))
-        return;
-#endif
-
-    /* Patch for FORMs/PULLDOWNs (cPULLDOWN) */
-    if( glob->pull_down_menus && (*query == cPULLDOWN))
-        return;
-
-    /* Patch for FORMs/BUTTONs (cBUTTONs) */
-    if( glob->pull_down_menus && (*query == cBUTTON))
-        return;
-
-    if(*query)
-        strcpy(dnbuf, query+1);
-    else
-        strcpy(dnbuf, "\0");
-    hex_decode(dnbuf);
-    strcpy(basednbuf, glob->basedn->dn);
-
-    if( ( strptr = strchr(dnbuf, '?')) )
-        *strptr = '\0';
-
-    if( *query && !dn_issuffix( dn_normalize(dnbuf), dn_normalize(basednbuf))) {
-
-        dnarray = dn2charray(dnbuf);
-        bdnarray = glob->basedn->dnarray;
-
-        strcpy(dnbuf, "\0");
-        if (glob->gw_switch) {
-            for(gw_ptr = glob->gw_switch->list;
-                              !flag && gw_ptr; gw_ptr = gw_ptr->next) {
-                if (!dn_cmp ("root", gw_ptr->dn)) {
-                    flag = 1;
-                    url = gw_ptr->url;
-                }
-            }
-        }
-        if(!flag) {
-            fprintf(stderr, "Fehler:strict_basedn w/o root-switch!!!!\n");
-            exit_tweb(0);
-        }
-
-        for(j=0; bdnarray[j] && dnarray[j]; j++) {
-            char *dnbufb;
-
-            flag = 0;
-
-            dnbufb = strdup(dnbuf);
-            sprintf(dnbuf, "%s%s%s", dnarray[j], *dnbuf ? "," : "" , dnbufb);
-
-            if ( glob->gw_switch && glob->gw_switch->dynamic) {
-
-                if ( (rc=ldap_simple_bind_s( ld, glob->webdn, glob->webpw ))
-                                                         != LDAP_SUCCESS ) {
-                    if ( debug ) ldap_perror( ld, "ldap_simple_bind_s" );
-                    do_error( fp, rc, SERVER_ERROR, glob);
-                    rewind(fp);
-                    exit_tweb( 1 );
-                }
-
-                timeout.tv_sec = glob->timeout;
-                timeout.tv_usec = 0;
-
-                if ( (rc = ldap_search_st( ld, dnbuf, LDAP_SCOPE_BASE, "objectClass=*",
-                    NULL, 0, &timeout, &res )) != LDAP_SUCCESS ) {
-/*                    do_error(fp, rc, NOT_FOUND, glob);
-*/
-                    continue;
-                }
-
-
-                if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-                    do_error(fp, -2, SERVER_ERROR, glob);
-                    return;
-                }
-
-
-                uri = ldap_get_values( ld, e, "labeledURI" );
-                for(i=0; uri && uri[i] && *uri[i]; i++) {
-                    char *sp;
-
-                    if( ( sp = strchr(uri[i], ' ')) ) {
-                        *sp++ = '\0';
-                        if(strstr(sp, glob->gw_switch->lagws)) {
-                            flag = 1;
-                            url = uri[i];
-                            break;
-                        } else if(strstr(sp, GWS))
-                            urlnola = uri[i];
-                    }
-                }
-            }
-            if(!flag && urlnola) {
-                url = urlnola;
-                flag = 1;
-            }
-            if (glob->gw_switch) {
-
-                for(gw_ptr = glob->gw_switch->list;
-                                  !flag && gw_ptr; gw_ptr = gw_ptr->next) {
-                    if (!dn_cmp (dnbuf, gw_ptr->dn)) {
-                        flag = 1;
-                        url = gw_ptr->url;
-                    }
-                }
-            }
-            if(strcmp(bdnarray[j], dnarray[j]))
-                break;
-        }
-
-        if (http == 1) PRINT_HTML_HEADER;
-        fprintf( fp, HTML_HEAD_TITLE, "ACCESS DENIED", glob->la[100]);
-        disp_file(glob, glob->header, fp);
-        fprintf( fp, "%s\n", glob->la[96]);
-        url_tmp = strdup(url_complete(url, query, ""));
-        fprintf( fp, "<P><A HREF=\"%s\"><b>%s</b></A>\n",
-           url_tmp, url_tmp);
-        disp_file(glob, glob->footer, fp);
-        PRINT_HTML_FOOTER;
-        ldap_unbind (ld);
-        close_ldap_connections(glob);
-        exit_tweb(0);
-    }
-}
-/* end of function: strict_basednf */
-
-PRIVATE void trade_cache(fp, ld, query, glob)
-FILE *fp;
-LDAP *ld;
-char *query;
-GLOB_STRUCT   *glob;
-{
-    pCACHING_TERMS_LINE ca_ptr;
-    char dnbuf[BUFSIZ], rdn[BUFSIZ], *strptr;
-    char tstring[100];
-    int resflag;
-    int rc;
-    struct timeval timeout;
-    LDAPMessage *res, *e;
-    char **vals = NULL;
-
-    resflag = 0;
-    if(*query)
-        strcpy(dnbuf, query+1);
-    else
-        strcpy(dnbuf, glob->basedn->dn);
-    hex_decode(dnbuf);
-    if( ( strptr = strchr(dnbuf, '?')) )
-        *strptr = '\0';
-    strcpy(rdn, dnbuf);
-    if( ( strptr = strQuoteChr(rdn, ',')) )
-        *strptr = '\0';
-
-    for(ca_ptr = glob->caching_terms; ca_ptr; ca_ptr = ca_ptr->next) {
-        if((toupper(*query) == toupper(*ca_ptr->access_type)) ||
-            ( !*query && (toupper(*ca_ptr->access_type) == 'M'))) {
-            
-            if(ca_ptr->rdn_oc && (strstr(str_tolower(rdn), ca_ptr->pattern) ||
-                                 (*ca_ptr->pattern == '*'))) {
-                time(&glob->expiretime);
-                glob->expiretime += ca_ptr->time;
-                free(glob->expiretimestr);
-                strftime(tstring, 99, GMT_FORMAT2, gmtime(&glob->expiretime));
-                glob->expiretimestr = strdup(tstring);
-                glob->caching = TRUE;
-            }
-            if(!ca_ptr->rdn_oc) {
-                if(!resflag) {
-
-                    if ( (rc=ldap_simple_bind_s( ld, glob->webdn, glob->webpw ))
-                                                         != LDAP_SUCCESS ) {
-                        if ( debug ) ldap_perror( ld, "ldap_simple_bind_s" );
-                            do_error( fp, rc, SERVER_ERROR, glob);
-                        rewind(fp);
-                        exit_tweb( 1 );
-                    }
-
-                    timeout.tv_sec = glob->timeout;
-                    timeout.tv_usec = 0;
-
-                    if ( (rc = ldap_search_st( ld, dnbuf, LDAP_SCOPE_BASE, "objectClass=*",
-                        NULL, 0, &timeout, &res )) != LDAP_SUCCESS ) {
-                        do_error(fp, rc, NOT_FOUND, glob);
-                        return;
-                    }
-
-
-                    if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-                        do_error(fp, -2, SERVER_ERROR, glob);
-                        return;
-                    }
-
-
-                    vals = ldap_get_values( ld, e, "objectClass" );
-                    resflag = 1;
-                }
-                if(charray_inlist( vals, ca_ptr->pattern )) {
-                    time(&glob->expiretime);
-                    glob->expiretime += ca_ptr->time;
-                    free(glob->expiretimestr);
-                    strftime(tstring, 99, GMT_FORMAT2, gmtime(&glob->expiretime));
-                    glob->expiretimestr = strdup(tstring);
-                    glob->caching = TRUE;
-                }
-            }
-
-        }
-    }
-
-}
-/* end of function: trade_cache */
diff --git a/contrib/tweb/queries.h b/contrib/tweb/queries.h
deleted file mode 100644 (file)
index c5adc34..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* queries.h..                                                              *
-*                                                                          *
-* Funktion:..WorldWideWeb-X.500-Gateway - Server-Functions                 *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:    :           Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 10 1999                ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: queries.h,v 1.6 1999/09/10 15:01:18 zrnsk01 Exp $
- *
- */
-
-#ifndef _QUERIES_
-#define _QUERIES_
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "init_exp.h"
-#include "checkclient_exp.h"
-#include "support_exp.h"
-
-#include "queries_exp.h"
-#include "x500_exp.h"
-#include "html_exp.h"
-#include "server_exp.h"
-#include "dn_exp.h"
-#include "charray_exp.h"
-
-#ifdef TUE_TEL
-#include "tueTel_exp.h"
-#endif
-
-
-/*  Macros for request-recognition */
-
-/*  1. without DSA */
-#define cHELP         'H'
-#define cERROR        'E'
-#define cCONFIG       'C'
-#define cSTATS        'K'
-#define cPULLDOWN     'D'
-#define cBUTTON       'B'
-
-/*  2. with user-bind */
-#define cGETMOD       'F'
-#define cDOMOD        'Y'
-
-/*  3. with GW-bind */
-#define cREAD         'R'
-#define cREADALL      'L'
-#define cSEARCH       'S'
-#define cLIST         'M'
-#ifdef TUE_TEL
-#define cTON          'T'
-#endif
-#define cGIF          'I'
-#define cJPEG         'J'
-#define cG3FAX        'G'
-#define cAUDIO        'A'
-#define cREFERRAL     'W'
-#define cEXTENDED     'X'
-
-#define GMT_FORMAT "%a, %d %b %Y %T GMT"
-#define GMT_FORMAT2 "Expires: %a, %d %b %Y %T GMT\n"
-#define ROBOTS_TXT_FILE "robots.txt"
-
-PRIVATE void strict_basednf();
-PRIVATE void trade_cache();
-
-#endif /* _QUERIES_ */
-
diff --git a/contrib/tweb/queries_exp.h b/contrib/tweb/queries_exp.h
deleted file mode 100644 (file)
index 14dd9a1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* queries_exp.h                                                            *
-*                                                                          *
-* Function:..File for TWEB-SOFTWARE                                        *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 21 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: queries_exp.h,v 1.6 1999/09/10 15:01:18 zrnsk01 Exp $
- *
- */
-
-#ifndef _QUERIES_EXP_
-#define _QUERIES_EXP_
-
-PUBLIC void do_queries(/* s, glob , ip_addr, ip_port*/);
-PUBLIC void timeoutf(/*sig*/);
-
-
-#endif /* _QUERIES_EXP_ */
diff --git a/contrib/tweb/regular.c b/contrib/tweb/regular.c
deleted file mode 100644 (file)
index 3c16d2a..0000000
+++ /dev/null
@@ -1,1211 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* regular.c..                                                              *
-*                                                                          *
-* Function:..Routine for TWEB -> regular expressions                       *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            January 20 1998              Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1998           ZZZZZ  DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-/*
- * $Id: regular.c,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "regular_exp.h"
-#include "regular.h"
-#include "support_exp.h"
-
-
-PUBLIC void tweb_regerror(s)
-char *s;
-{
-#ifdef ERRAVAIL
-       error("regexp: %s", s);
-#else
-/*     fprintf(stderr, "regexp(3): %s", s);
-       exit(1);
-*/
-       /* TWEB: error-logging by syslog */
-       if (dosyslog) syslog (LOG_INFO,
-           "ALLOW/DENY/GRANT/REFUSE - regexp-error: %s", s);
-       exit_tweb( 1 );
-#endif
-       /* NOTREACHED */
-}
-/*
- * tweb_regsub
- *
- *     Copyright (c) 1986 by University of Toronto.
- *     Written by Henry Spencer.  Not derived from licensed software.
- *
- *     Permission is granted to anyone to use this software for any
- *     purpose on any computer system, and to redistribute it freely,
- *     subject to the following restrictions:
- *
- *     1. The author is not responsible for the consequences of use of
- *             this software, no matter how awful, even if they arise
- *             from defects in it.
- *
- *     2. The origin of this software must not be misrepresented, either
- *             by explicit claim or by omission.
- *
- *     3. Altered versions must be plainly marked as such, and must not
- *             be misrepresented as being the original software.
- */
-
-#ifndef CHARBITS
-#define        UCHARAT(p)      ((int)*(unsigned char *)(p))
-#else
-#define        UCHARAT(p)      ((int)*(p)&CHARBITS)
-#endif
-
-/*
- - tweb_regsub - perform substitutions after a regexp match
- */
-PUBLIC void tweb_regsub(prog, source, dest)
-regexp *prog;
-char *source;
-char *dest;
-{
-       register char *src;
-       register char *dst;
-       register char c;
-       register int no;
-       register int len;
-       extern char *strncpy();
-
-       if (prog == NULL || source == NULL || dest == NULL) {
-               tweb_regerror("NULL parm to tweb_regsub");
-               return;
-       }
-       if (UCHARAT(prog->program) != MAGIC) {
-               tweb_regerror("damaged regexp fed to tweb_regsub");
-               return;
-       }
-
-       src = source;
-       dst = dest;
-       while ((c = *src++) != '\0') {
-               if (c == '&')
-                       no = 0;
-               else if (c == '\\' && '0' <= *src && *src <= '9')
-                       no = *src++ - '0';
-               else
-                       no = -1;
-
-               if (no < 0) {   /* Ordinary character. */
-                       if (c == '\\' && (*src == '\\' || *src == '&'))
-                               c = *src++;
-                       *dst++ = c;
-               } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
-                       len = prog->endp[no] - prog->startp[no];
-                       (void) strncpy(dst, prog->startp[no], len);
-                       dst += len;
-                       if (len != 0 && *(dst-1) == '\0') {     /* strncpy hit NUL. */
-                               tweb_regerror("damaged match string");
-                               return;
-                       }
-               }
-       }
-       *dst++ = '\0';
-}
-/*
- * tweb_regcomp and tweb_regexec -- tweb_regsub and tweb_regerror are elsewhere
- *
- *     Copyright (c) 1986 by University of Toronto.
- *     Written by Henry Spencer.  Not derived from licensed software.
- *
- *     Permission is granted to anyone to use this software for any
- *     purpose on any computer system, and to redistribute it freely,
- *     subject to the following restrictions:
- *
- *     1. The author is not responsible for the consequences of use of
- *             this software, no matter how awful, even if they arise
- *             from defects in it.
- *
- *     2. The origin of this software must not be misrepresented, either
- *             by explicit claim or by omission.
- *
- *     3. Altered versions must be plainly marked as such, and must not
- *             be misrepresented as being the original software.
- *
- * Beware that some of this code is subtly aware of the way operator
- * precedence is structured in regular expressions.  Serious changes in
- * regular-expression syntax might require a total rethink.
- */
-
-/*
- * The "internal use only" fields in regexp.h are present to pass info from
- * compile to execute that permits the execute phase to run lots faster on
- * simple cases.  They are:
- *
- * regstart    char that must begin a match; '\0' if none obvious
- * reganch     is the match anchored (at beginning-of-line only)?
- * regmust     string (pointer into program) that match must include, or NULL
- * regmlen     length of regmust string
- *
- * Regstart and reganch permit very fast decisions on suitable starting points
- * for a match, cutting down the work a lot.  Regmust permits fast rejection
- * of lines that cannot possibly match.  The regmust tests are costly enough
- * that tweb_regcomp() supplies a regmust only if the r.e. contains something
- * potentially expensive (at present, the only such thing detected is * or +
- * at the start of the r.e., which can involve a lot of backup).  Regmlen is
- * supplied because the test in tweb_regexec() needs it and tweb_regcomp() is computing
- * it anyway.
- */
-
-/*
- * Structure for regexp "program".  This is essentially a linear encoding
- * of a nondeterministic finite-state machine (aka syntax charts or
- * "railroad normal form" in parsing technology).  Each node is an opcode
- * plus a "next" pointer, possibly plus an operand.  "Next" pointers of
- * all nodes except BRANCH implement concatenation; a "next" pointer with
- * a BRANCH on both ends of it is connecting two alternatives.  (Here we
- * have one of the subtle syntax dependencies:  an individual BRANCH (as
- * opposed to a collection of them) is never concatenated with anything
- * because of operator precedence.)  The operand of some types of node is
- * a literal string; for others, it is a node leading into a sub-FSM.  In
- * particular, the operand of a BRANCH node is the first node of the branch.
- * (NB this is *not* a tree structure:  the tail of the branch connects
- * to the thing following the set of BRANCHes.)  The opcodes are:
- */
-/*#include "regular.h"*/
-
-/*
- - tweb_regcomp - compile a regular expression into internal code
-e*
- * We can't allocate space until we know how big the compiled form will be,
- * but we can't compile it (and thus know how big it is) until we've got a
- * place to put the code.  So we cheat:  we compile it twice, once with code
- * generation turned off and size counting turned on, and once "for real".
- * This also means that we don't allocate space until we are sure that the
- * thing really will compile successfully, and we never have to move the
- * code and thus invalidate pointers into it.  (Note that it has to be in
- * one piece because free() must be able to free it all.)
- *
- * Beware that the optimization-preparation code in here knows about some
- * of the structure of the compiled regexp.
- */
-PUBLIC regexp * tweb_regcomp(exp)
-char *exp;
-{
-       register regexp *r;
-       register char *scan;
-       register char *longest;
-       register int len;
-       int flags;
-
-       if (exp == NULL)
-               FAIL("NULL argument");
-
-       /* First pass: determine size, legality. */
-       regparse = exp;
-       regnpar = 1;
-       regsize = 0L;
-       regcode = &regdummy;
-       tweb_regc(MAGIC);
-       if (tweb_reg(0, &flags) == NULL)
-               return(NULL);
-
-       /* Small enough for pointer-storage convention? */
-       if (regsize >= 32767L)          /* Probably could be 65535L. */
-               FAIL("regexp too big");
-
-       /* Allocate space. */
-       r = (regexp *)malloc(sizeof(regexp) + (unsigned)regsize);
-       if (r == NULL)
-               FAIL("out of space");
-
-       /* Second pass: emit code. */
-       regparse = exp;
-       regnpar = 1;
-       regcode = r->program;
-       tweb_regc(MAGIC);
-       if (tweb_reg(0, &flags) == NULL)
-               return(NULL);
-
-       /* Dig out information for optimizations. */
-       r->regstart = '\0';     /* Worst-case defaults. */
-       r->reganch = 0;
-       r->regmust = NULL;
-       r->regmlen = 0;
-       scan = r->program+1;                    /* First BRANCH. */
-       if (OP(tweb_regnext(scan)) == END) {            /* Only one top-level choice. */
-               scan = OPERAND(scan);
-
-               /* Starting-point info. */
-               if (OP(scan) == EXACTLY)
-                       r->regstart = *OPERAND(scan);
-               else if (OP(scan) == BOL)
-                       r->reganch++;
-
-               /*
-                * If there's something expensive in the r.e., find the
-                * longest literal string that must appear and make it the
-                * regmust.  Resolve ties in favor of later strings, since
-                * the regstart check works with the beginning of the r.e.
-                * and avoiding duplication strengthens checking.  Not a
-                * strong reason, but sufficient in the absence of others.
-                */
-               if (flags&SPSTART) {
-                       longest = NULL;
-                       len = 0;
-                       for (; scan != NULL; scan = tweb_regnext(scan))
-                               if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
-                                       longest = OPERAND(scan);
-                                       len = strlen(OPERAND(scan));
-                               }
-                       r->regmust = longest;
-                       r->regmlen = len;
-               }
-       }
-
-       return(r);
-}
-
-/*
- - reg - regular expression, i.e. main body or parenthesized thing
- *
- * Caller must absorb opening parenthesis.
- *
- * Combining parenthesis handling with the base level of regular expression
- * is a trifle forced, but the need to tie the tails of the branches to what
- * follows makes it hard to avoid.
- */
-PRIVATE char * tweb_reg(paren, flagp)
-int paren;                     /* Parenthesized? */
-int *flagp;
-{
-       register char *ret;
-       register char *br;
-       register char *ender;
-       register int parno = 0;
-       int flags;
-
-       *flagp = HASWIDTH;      /* Tentatively. */
-
-       /* Make an OPEN node, if parenthesized. */
-       if (paren) {
-               if (regnpar >= NSUBEXP)
-                       FAIL("too many ()");
-               parno = regnpar;
-               regnpar++;
-               ret = tweb_regnode(OPEN+parno);
-       } else
-               ret = NULL;
-
-       /* Pick up the branches, linking them together. */
-       br = tweb_regbranch(&flags);
-       if (br == NULL)
-               return(NULL);
-       if (ret != NULL)
-               tweb_regtail(ret, br);  /* OPEN -> first. */
-       else
-               ret = br;
-       if (!(flags&HASWIDTH))
-               *flagp &= ~HASWIDTH;
-       *flagp |= flags&SPSTART;
-       while (*regparse == '|') {
-               regparse++;
-               br = tweb_regbranch(&flags);
-               if (br == NULL)
-                       return(NULL);
-               tweb_regtail(ret, br);  /* BRANCH -> BRANCH. */
-               if (!(flags&HASWIDTH))
-                       *flagp &= ~HASWIDTH;
-               *flagp |= flags&SPSTART;
-       }
-
-       /* Make a closing node, and hook it on the end. */
-       ender = tweb_regnode((paren) ? CLOSE+parno : END);      
-       tweb_regtail(ret, ender);
-
-       /* Hook the tails of the branches to the closing node. */
-       for (br = ret; br != NULL; br = tweb_regnext(br))
-               tweb_regoptail(br, ender);
-
-       /* Check for proper termination. */
-       if (paren && *regparse++ != ')') {
-               FAIL("unmatched ()");
-       } else if (!paren && *regparse != '\0') {
-               if (*regparse == ')') {
-                       FAIL("unmatched ()");
-               } else
-                       FAIL("junk on end");    /* "Can't happen". */
-               /* NOTREACHED */
-       }
-
-       return(ret);
-}
-
-/*
- - tweb_regbranch - one alternative of an | operator
- *
- * Implements the concatenation operator.
- */
-PRIVATE char * tweb_regbranch(flagp)
-int *flagp;
-{
-       register char *ret;
-       register char *chain;
-       register char *latest;
-       int flags;
-
-       *flagp = WORST;         /* Tentatively. */
-
-       ret = tweb_regnode(BRANCH);
-       chain = NULL;
-       while (*regparse != '\0' && *regparse != '|' && *regparse != ')') {
-               latest = tweb_regpiece(&flags);
-               if (latest == NULL)
-                       return(NULL);
-               *flagp |= flags&HASWIDTH;
-               if (chain == NULL)      /* First piece. */
-                       *flagp |= flags&SPSTART;
-               else
-                       tweb_regtail(chain, latest);
-               chain = latest;
-       }
-       if (chain == NULL)      /* Loop ran zero times. */
-               (void) tweb_regnode(NOTHING);
-
-       return(ret);
-}
-
-/*
- - tweb_regpiece - something followed by possible [*+?]
- *
- * Note that the branching code sequences used for ? and the general cases
- * of * and + are somewhat optimized:  they use the same NOTHING node as
- * both the endmarker for their branch list and the body of the last branch.
- * It might seem that this node could be dispensed with entirely, but the
- * endmarker role is not redundant.
- */
-PRIVATE char * tweb_regpiece(flagp)
-int *flagp;
-{
-       register char *ret;
-       register char op;
-       register char *next;
-       int flags;
-
-       ret = tweb_regatom(&flags);
-       if (ret == NULL)
-               return(NULL);
-
-       op = *regparse;
-       if (!ISMULT(op)) {
-               *flagp = flags;
-               return(ret);
-       }
-
-       if (!(flags&HASWIDTH) && op != '?')
-               FAIL("*+ operand could be empty");
-       *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH);
-
-       if (op == '*' && (flags&SIMPLE))
-               tweb_reginsert(STAR, ret);
-       else if (op == '*') {
-               /* Emit x* as (x&|), where & means "self". */
-               tweb_reginsert(BRANCH, ret);                    /* Either x */
-               tweb_regoptail(ret, tweb_regnode(BACK));                /* and loop */
-               tweb_regoptail(ret, ret);                       /* back */
-               tweb_regtail(ret, tweb_regnode(BRANCH));                /* or */
-               tweb_regtail(ret, tweb_regnode(NOTHING));               /* null. */
-       } else if (op == '+' && (flags&SIMPLE))
-               tweb_reginsert(PLUS, ret);
-       else if (op == '+') {
-               /* Emit x+ as x(&|), where & means "self". */
-               next = tweb_regnode(BRANCH);                    /* Either */
-               tweb_regtail(ret, next);
-               tweb_regtail(tweb_regnode(BACK), ret);          /* loop back */
-               tweb_regtail(next, tweb_regnode(BRANCH));               /* or */
-               tweb_regtail(ret, tweb_regnode(NOTHING));               /* null. */
-       } else if (op == '?') {
-               /* Emit x? as (x|) */
-               tweb_reginsert(BRANCH, ret);                    /* Either x */
-               tweb_regtail(ret, tweb_regnode(BRANCH));                /* or */
-               next = tweb_regnode(NOTHING);           /* null. */
-               tweb_regtail(ret, next);
-               tweb_regoptail(ret, next);
-       }
-       regparse++;
-       if (ISMULT(*regparse))
-               FAIL("nested *?+");
-
-       return(ret);
-}
-
-/*
- - tweb_regatom - the lowest level
- *
- * Optimization:  gobbles an entire sequence of ordinary characters so that
- * it can turn them into a single node, which is smaller to store and
- * faster to run.  Backslashed characters are exceptions, each becoming a
- * separate node; the code is simpler that way and it's not worth fixing.
- */
-PRIVATE char * tweb_regatom(flagp)
-int *flagp;
-{
-       register char *ret;
-       int flags;
-
-       *flagp = WORST;         /* Tentatively. */
-
-       switch (*regparse++) {
-       case '^':
-               ret = tweb_regnode(BOL);
-               break;
-       case '$':
-               ret = tweb_regnode(EOL);
-               break;
-       case '.':
-               ret = tweb_regnode(ANY);
-               *flagp |= HASWIDTH|SIMPLE;
-               break;
-       case '[': {
-                       register int class;
-                       register int classend;
-
-                       if (*regparse == '^') { /* Complement of range. */
-                               ret = tweb_regnode(ANYBUT);
-                               regparse++;
-                       } else
-                               ret = tweb_regnode(ANYOF);
-                       if (*regparse == ']' || *regparse == '-')
-                               tweb_regc(*regparse++);
-                       while (*regparse != '\0' && *regparse != ']') {
-                               if (*regparse == '-') {
-                                       regparse++;
-                                       if (*regparse == ']' || *regparse == '\0')
-                                               tweb_regc('-');
-                                       else {
-                                               class = UCHARAT(regparse-2)+1;
-                                               classend = UCHARAT(regparse);
-                                               if (class > classend+1)
-                                                       FAIL("invalid [] range");
-                                               for (; class <= classend; class++)
-                                                       tweb_regc(class);
-                                               regparse++;
-                                       }
-                               } else
-                                       tweb_regc(*regparse++);
-                       }
-                       tweb_regc('\0');
-                       if (*regparse != ']')
-                               FAIL("unmatched []");
-                       regparse++;
-                       *flagp |= HASWIDTH|SIMPLE;
-               }
-               break;
-       case '(':
-               ret = tweb_reg(1, &flags);
-               if (ret == NULL)
-                       return(NULL);
-               *flagp |= flags&(HASWIDTH|SPSTART);
-               break;
-       case '\0':
-       case '|':
-       case ')':
-               FAIL("internal urp");   /* Supposed to be caught earlier. */
-               break;
-       case '?':
-       case '+':
-       case '*':
-               FAIL("?+* follows nothing");
-               break;
-       case '\\':
-               if (*regparse == '\0')
-                       FAIL("trailing \\");
-               ret = tweb_regnode(EXACTLY);
-               tweb_regc(*regparse++);
-               tweb_regc('\0');
-               *flagp |= HASWIDTH|SIMPLE;
-               break;
-       default: {
-                       register int len;
-                       register char ender;
-
-                       regparse--;
-                       len = strcspn(regparse, META);
-                       if (len <= 0)
-                               FAIL("internal disaster");
-                       ender = *(regparse+len);
-                       if (len > 1 && ISMULT(ender))
-                               len--;          /* Back off clear of ?+* operand. */
-                       *flagp |= HASWIDTH;
-                       if (len == 1)
-                               *flagp |= SIMPLE;
-                       ret = tweb_regnode(EXACTLY);
-                       while (len > 0) {
-                               tweb_regc(*regparse++);
-                               len--;
-                       }
-                       tweb_regc('\0');
-               }
-               break;
-       }
-
-       return(ret);
-}
-
-/*
- - tweb_regnode - emit a node
- */
-PRIVATE char * tweb_regnode(op)
-char op;
-{
-       register char *ret;
-       register char *ptr;
-
-       ret = regcode;
-       if (ret == &regdummy) {
-               regsize += 3;
-               return(ret);
-       }
-
-       ptr = ret;
-       *ptr++ = op;
-       *ptr++ = '\0';          /* Null "next" pointer. */
-       *ptr++ = '\0';
-       regcode = ptr;
-
-       return(ret);
-}
-
-/*
- - regc - emit (if appropriate) a byte of code
- */
-PRIVATE void tweb_regc(b)
-char b;
-{
-       if (regcode != &regdummy)
-               *regcode++ = b;
-       else
-               regsize++;
-}
-
-/*
- - tweb_reginsert - insert an operator in front of already-emitted operand
- *
- * Means relocating the operand.
- */
-PRIVATE void tweb_reginsert(op, opnd)
-char op;
-char *opnd;
-{
-       register char *src;
-       register char *dst;
-       register char *place;
-
-       if (regcode == &regdummy) {
-               regsize += 3;
-               return;
-       }
-
-       src = regcode;
-       regcode += 3;
-       dst = regcode;
-       while (src > opnd)
-               *--dst = *--src;
-
-       place = opnd;           /* Op node, where operand used to be. */
-       *place++ = op;
-       *place++ = '\0';
-       *place++ = '\0';
-}
-
-/*
- - tweb_regtail - set the next-pointer at the end of a node chain
- */
-PRIVATE void tweb_regtail(p, val)
-char *p;
-char *val;
-{
-       register char *scan;
-       register char *temp;
-       register int offset;
-
-       if (p == &regdummy)
-               return;
-
-       /* Find last node. */
-       scan = p;
-       for (;;) {
-               temp = tweb_regnext(scan);
-               if (temp == NULL)
-                       break;
-               scan = temp;
-       }
-
-       if (OP(scan) == BACK)
-               offset = scan - val;
-       else
-               offset = val - scan;
-       *(scan+1) = (offset>>8)&0377;
-       *(scan+2) = offset&0377;
-}
-
-/*
- - tweb_regoptail - tweb_regtail on operand of first argument; nop if operandless
- */
-PRIVATE void tweb_regoptail(p, val)
-char *p;
-char *val;
-{
-       /* "Operandless" and "op != BRANCH" are synonymous in practice. */
-       if (p == NULL || p == &regdummy || OP(p) != BRANCH)
-               return;
-       tweb_regtail(OPERAND(p), val);
-}
-
-/*
- * tweb_regexec and friends
- */
-
-/*
- * Global work variables for tweb_regexec().
- */
-static char *reginput;         /* String-input pointer. */
-static char *regbol;           /* Beginning of input, for ^ check. */
-static char **regstartp;       /* Pointer to startp array. */
-static char **regendp;         /* Ditto for endp. */
-
-/*
- * Forwards.
- */
-STATIC int tweb_regtry();
-STATIC int tweb_regmatch();
-STATIC int tweb_regrepeat();
-
-#ifdef DEBUG
-int regnarrate = 0;
-void tweb_regdump();
-STATIC char *tweb_regprop();
-#endif
-
-/*
- - tweb_regexec - match a regexp against a string
- */
-int
-PUBLIC tweb_regexec(prog, string)
-register regexp *prog;
-register char *string;
-{
-       register char *s;
-       extern char *strchr();
-
-       /* Be paranoid... */
-       if (prog == NULL || string == NULL) {
-               tweb_regerror("NULL parameter");
-               return(0);
-       }
-
-       /* Check validity of program. */
-       if (UCHARAT(prog->program) != MAGIC) {
-               tweb_regerror("corrupted program");
-               return(0);
-       }
-
-       /* If there is a "must appear" string, look for it. */
-       if (prog->regmust != NULL) {
-               s = string;
-               while ((s = strchr(s, prog->regmust[0])) != NULL) {
-                       if (strncmp(s, prog->regmust, prog->regmlen) == 0)
-                               break;  /* Found it. */
-                       s++;
-               }
-               if (s == NULL)  /* Not present. */
-                       return(0);
-       }
-
-       /* Mark beginning of line for ^ . */
-       regbol = string;
-
-       /* Simplest case:  anchored match need be tried only once. */
-       if (prog->reganch)
-               return(tweb_regtry(prog, string));
-
-       /* Messy cases:  unanchored match. */
-       s = string;
-       if (prog->regstart != '\0')
-               /* We know what char it must start with. */
-               while ((s = strchr(s, prog->regstart)) != NULL) {
-                       if (tweb_regtry(prog, s))
-                               return(1);
-                       s++;
-               }
-       else
-               /* We don't -- general case. */
-               do {
-                       if (tweb_regtry(prog, s))
-                               return(1);
-               } while (*s++ != '\0');
-
-       /* Failure. */
-       return(0);
-}
-
-/*
- - tweb_regtry - try match at specific point
- */
-PRIVATE int tweb_regtry(prog, string)
-regexp *prog;
-char *string;
-{
-       register int i;
-       register char **sp;
-       register char **ep;
-
-       reginput = string;
-       regstartp = prog->startp;
-       regendp = prog->endp;
-
-       sp = prog->startp;
-       ep = prog->endp;
-       for (i = NSUBEXP; i > 0; i--) {
-               *sp++ = NULL;
-               *ep++ = NULL;
-       }
-       if (tweb_regmatch(prog->program + 1)) {
-               prog->startp[0] = string;
-               prog->endp[0] = reginput;
-               return(1);
-       } else
-               return(0);
-}
-
-/*
- - tweb_regmatch - main matching routine
- *
- * Conceptually the strategy is simple:  check to see whether the current
- * node matches, call self recursively to see whether the rest matches,
- * and then act accordingly.  In practice we make some effort to avoid
- * recursion, in particular by going through "ordinary" nodes (that don't
- * need to know whether the rest of the match failed) by a loop instead of
- * by recursion.
- */
-PRIVATE int tweb_regmatch(prog)
-char *prog;
-{
-       register char *scan;    /* Current node. */
-       char *next;             /* Next node. */
-       extern char *strchr();
-
-       scan = prog;
-#ifdef DEBUG
-       if (scan != NULL && regnarrate)
-               fprintf(stderr, "%s(\n", tweb_regprop(scan));
-#endif
-       while (scan != NULL) {
-#ifdef DEBUG
-               if (regnarrate)
-                       fprintf(stderr, "%s...\n", tweb_regprop(scan));
-#endif
-               next = tweb_regnext(scan);
-
-               switch (OP(scan)) {
-               case BOL:
-                       if (reginput != regbol)
-                               return(0);
-                       break;
-               case EOL:
-                       if (*reginput != '\0')
-                               return(0);
-                       break;
-               case ANY:
-                       if (*reginput == '\0')
-                               return(0);
-                       reginput++;
-                       break;
-               case EXACTLY: {
-                               register int len;
-                               register char *opnd;
-
-                               opnd = OPERAND(scan);
-                               /* Inline the first character, for speed. */
-                               if (*opnd != *reginput)
-                                       return(0);
-                               len = strlen(opnd);
-                               if (len > 1 && strncmp(opnd, reginput, len) != 0)
-                                       return(0);
-                               reginput += len;
-                       }
-                       break;
-               case ANYOF:
-                       if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL)
-                               return(0);
-                       reginput++;
-                       break;
-               case ANYBUT:
-                       if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)
-                               return(0);
-                       reginput++;
-                       break;
-               case NOTHING:
-                       break;
-               case BACK:
-                       break;
-               case OPEN+1:
-               case OPEN+2:
-               case OPEN+3:
-               case OPEN+4:
-               case OPEN+5:
-               case OPEN+6:
-               case OPEN+7:
-               case OPEN+8:
-               case OPEN+9: {
-                               register int no;
-                               register char *save;
-
-                               no = OP(scan) - OPEN;
-                               save = reginput;
-
-                               if (tweb_regmatch(next)) {
-                                       /*
-                                        * Don't set startp if some later
-                                        * invocation of the same parentheses
-                                        * already has.
-                                        */
-                                       if (regstartp[no] == NULL)
-                                               regstartp[no] = save;
-                                       return(1);
-                               } else
-                                       return(0);
-                       }
-                       break;
-               case CLOSE+1:
-               case CLOSE+2:
-               case CLOSE+3:
-               case CLOSE+4:
-               case CLOSE+5:
-               case CLOSE+6:
-               case CLOSE+7:
-               case CLOSE+8:
-               case CLOSE+9: {
-                               register int no;
-                               register char *save;
-
-                               no = OP(scan) - CLOSE;
-                               save = reginput;
-
-                               if (tweb_regmatch(next)) {
-                                       /*
-                                        * Don't set endp if some later
-                                        * invocation of the same parentheses
-                                        * already has.
-                                        */
-                                       if (regendp[no] == NULL)
-                                               regendp[no] = save;
-                                       return(1);
-                               } else
-                                       return(0);
-                       }
-                       break;
-               case BRANCH: {
-                               register char *save;
-
-                               if (OP(next) != BRANCH)         /* No choice. */
-                                       next = OPERAND(scan);   /* Avoid recursion. */
-                               else {
-                                       do {
-                                               save = reginput;
-                                               if (tweb_regmatch(OPERAND(scan)))
-                                                       return(1);
-                                               reginput = save;
-                                               scan = tweb_regnext(scan);
-                                       } while (scan != NULL && OP(scan) == BRANCH);
-                                       return(0);
-                                       /* NOTREACHED */
-                               }
-                       }
-                       break;
-               case STAR:
-               case PLUS: {
-                               register char nextch;
-                               register int no;
-                               register char *save;
-                               register int min;
-
-                               /*
-                                * Lookahead to avoid useless match attempts
-                                * when we know what character comes next.
-                                */
-                               nextch = '\0';
-                               if (OP(next) == EXACTLY)
-                                       nextch = *OPERAND(next);
-                               min = (OP(scan) == STAR) ? 0 : 1;
-                               save = reginput;
-                               no = tweb_regrepeat(OPERAND(scan));
-                               while (no >= min) {
-                                       /* If it could work, try it. */
-                                       if (nextch == '\0' || *reginput == nextch)
-                                               if (tweb_regmatch(next))
-                                                       return(1);
-                                       /* Couldn't or didn't -- back up. */
-                                       no--;
-                                       reginput = save + no;
-                               }
-                               return(0);
-                       }
-                       break;
-               case END:
-                       return(1);      /* Success! */
-                       break;
-               default:
-                       tweb_regerror("memory corruption");
-                       return(0);
-                       break;
-               }
-
-               scan = next;
-       }
-
-       /*
-        * We get here only if there's trouble -- normally "case END" is
-        * the terminating point.
-        */
-       tweb_regerror("corrupted pointers");
-       return(0);
-}
-
-/*
- - tweb_regrepeat - repeatedly match something simple, report how many
- */
-PRIVATE int tweb_regrepeat(p)
-char *p;
-{
-       register int count = 0;
-       register char *scan;
-       register char *opnd;
-       extern char *strchr();
-
-       scan = reginput;
-       opnd = OPERAND(p);
-       switch (OP(p)) {
-       case ANY:
-               count = strlen(scan);
-               scan += count;
-               break;
-       case EXACTLY:
-               while (*opnd == *scan) {
-                       count++;
-                       scan++;
-               }
-               break;
-       case ANYOF:
-               while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
-                       count++;
-                       scan++;
-               }
-               break;
-       case ANYBUT:
-               while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
-                       count++;
-                       scan++;
-               }
-               break;
-       default:                /* Oh dear.  Called inappropriately. */
-               tweb_regerror("internal foulup");
-               count = 0;      /* Best compromise. */
-               break;
-       }
-       reginput = scan;
-
-       return(count);
-}
-
-/*
- - tweb_regnext - dig the "next" pointer out of a node
- */
-PRIVATE char * tweb_regnext(p)
-register char *p;
-{
-       register int offset;
-
-       if (p == &regdummy)
-               return(NULL);
-
-       offset = NEXT(p);
-       if (offset == 0)
-               return(NULL);
-
-       if (OP(p) == BACK)
-               return(p-offset);
-       else
-               return(p+offset);
-}
-
-#ifdef DEBUG
-
-PRIVATE char *tweb_regprop();
-
-/*
- - tweb_regdump - dump a regexp onto stdout in vaguely comprehensible form
- */
-PUBLIC void tweb_regdump(r)
-regexp *r;
-{
-       register char *s;
-       register char op = EXACTLY;     /* Arbitrary non-END op. */
-       register char *next;
-       extern char *strchr();
-
-
-       s = r->program + 1;
-       while (op != END) {     /* While that wasn't END last time... */
-               op = OP(s);
-               printf("%2d%s", s-r->program, tweb_regprop(s)); /* Where, what. */
-               next = tweb_regnext(s);
-               if (next == NULL)               /* Next ptr. */
-                       printf("(0)");
-               else 
-                       printf("(%d)", (s-r->program)+(next-s));
-               s += 3;
-               if (op == ANYOF || op == ANYBUT || op == EXACTLY) {
-                       /* Literal string, where present. */
-                       while (*s != '\0') {
-                               putchar(*s);
-                               s++;
-                       }
-                       s++;
-               }
-               putchar('\n');
-       }
-
-       /* Header fields of interest. */
-       if (r->regstart != '\0')
-               printf("start `%c' ", r->regstart);
-       if (r->reganch)
-               printf("anchored ");
-       if (r->regmust != NULL)
-               printf("must have \"%s\"", r->regmust);
-       printf("\n");
-}
-
-/*
- - tweb_regprop - printable representation of opcode
- */
-PRIVATE char * tweb_regprop(op)
-char *op;
-{
-       register char *p;
-       static char buf[50];
-
-       (void) strcpy(buf, ":");
-
-       switch (OP(op)) {
-       case BOL:
-               p = "BOL";
-               break;
-       case EOL:
-               p = "EOL";
-               break;
-       case ANY:
-               p = "ANY";
-               break;
-       case ANYOF:
-               p = "ANYOF";
-               break;
-       case ANYBUT:
-               p = "ANYBUT";
-               break;
-       case BRANCH:
-               p = "BRANCH";
-               break;
-       case EXACTLY:
-               p = "EXACTLY";
-               break;
-       case NOTHING:
-               p = "NOTHING";
-               break;
-       case BACK:
-               p = "BACK";
-               break;
-       case END:
-               p = "END";
-               break;
-       case OPEN+1:
-       case OPEN+2:
-       case OPEN+3:
-       case OPEN+4:
-       case OPEN+5:
-       case OPEN+6:
-       case OPEN+7:
-       case OPEN+8:
-       case OPEN+9:
-               sprintf(buf+strlen(buf), "OPEN%d", OP(op)-OPEN);
-               p = NULL;
-               break;
-       case CLOSE+1:
-       case CLOSE+2:
-       case CLOSE+3:
-       case CLOSE+4:
-       case CLOSE+5:
-       case CLOSE+6:
-       case CLOSE+7:
-       case CLOSE+8:
-       case CLOSE+9:
-               sprintf(buf+strlen(buf), "CLOSE%d", OP(op)-CLOSE);
-               p = NULL;
-               break;
-       case STAR:
-               p = "STAR";
-               break;
-       case PLUS:
-               p = "PLUS";
-               break;
-       default:
-               tweb_regerror("corrupted opcode");
-               break;
-       }
-       if (p != NULL)
-               (void) strcat(buf, p);
-       return(buf);
-}
-#endif
-
-/*
- * The following is provided for those people who do not have strcspn() in
- * their C libraries.  They should get off their butts and do something
- * about it; at least one public-domain implementation of those (highly
- * useful) string routines has been published on Usenet.
- */
-#ifdef strcspn
-/*
- * strcspn - find length of initial segment of s1 consisting entirely
- * of characters not from s2
- */
-
-PRIVATE int strcspn(s1, s2)
-char *s1;
-char *s2;
-{
-       register char *scan1;
-       register char *scan2;
-       register int count;
-
-       count = 0;
-       for (scan1 = s1; *scan1 != '\0'; scan1++) {
-               for (scan2 = s2; *scan2 != '\0';)       /* ++ moved down. */
-                       if (*scan1 == *scan2++)
-                               return(count);
-               count++;
-       }
-       return(count);
-}
-#endif
diff --git a/contrib/tweb/regular.h b/contrib/tweb/regular.h
deleted file mode 100644 (file)
index cce8d1c..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* regular.h..                                                              *
-*                                                                          *
-* Function:..Routine for TWEB                                              *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            January 20 1998              Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1998           ZZZZZ  DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-/*
- * $Id: regular.h,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#ifndef _REGULAR_
-#define _REGULAR_
-
-
-/* definition  number  opnd?   meaning */
-#define        END     0       /* no   End of program. */
-#define        BOL     1       /* no   Match "" at beginning of line. */
-#define        EOL     2       /* no   Match "" at end of line. */
-#define        ANY     3       /* no   Match any one character. */
-#define        ANYOF   4       /* str  Match any character in this string. */
-#define        ANYBUT  5       /* str  Match any character not in this string. */
-#define        BRANCH  6       /* node Match this alternative, or the next... */
-#define        BACK    7       /* no   Match "", "next" ptr points backward. */
-#define        EXACTLY 8       /* str  Match this string. */
-#define        NOTHING 9       /* no   Match empty string. */
-#define        STAR    10      /* node Match this (simple) thing 0 or more times. */
-#define        PLUS    11      /* node Match this (simple) thing 1 or more times. */
-#define        OPEN    20      /* no   Mark this point in input as start of #n. */
-                       /*      OPEN+1 is number 1, etc. */
-#define        CLOSE   ((OPEN)+(NSUBEXP)+1)    /* no   Analogous to OPEN. */
-
-/*
- * Opcode notes:
- *
- * BRANCH      The set of branches constituting a single choice are hooked
- *             together with their "next" pointers, since precedence prevents
- *             anything being concatenated to any individual branch.  The
- *             "next" pointer of the last BRANCH in a choice points to the
- *             thing following the whole choice.  This is also where the
- *             final "next" pointer of each individual branch points; each
- *             branch starts with the operand node of a BRANCH node.
- *
- * BACK                Normal "next" pointers all implicitly point forward; BACK
- *             exists to make loop structures possible.
- *
- * STAR,PLUS   '?', and complex '*' and '+', are implemented as circular
- *             BRANCH structures using BACK.  Simple cases (one character
- *             per match) are implemented with STAR and PLUS for speed
- *             and to minimize recursive plunges.
- *
- * OPEN,CLOSE  ...are numbered at compile time.
- */
-
-/*
- * A node is one char of opcode followed by two chars of "next" pointer.
- * "Next" pointers are stored as two 8-bit pieces, high order first.  The
- * value is a positive offset from the opcode of the node containing it.
- * An operand, if any, simply follows the node.  (Note that much of the
- * code generation knows about this implicit relationship.)
- *
- * Using two bytes for the "next" pointer is vast overkill for most things,
- * but allows patterns to get big without disasters.
- */
-#define        OP(p)   (*(p))
-#define        NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377))
-#define        OPERAND(p)      ((p) + 3)
-
-/*
- * See regmagic.h for one further detail of program structure.
- */
-
-
-/*
- * Utility definitions.
- */
-#ifndef CHARBITS
-#define        UCHARAT(p)      ((int)*(unsigned char *)(p))
-#else
-#define        UCHARAT(p)      ((int)*(p)&CHARBITS)
-#endif
-
-#define        FAIL(m) { tweb_regerror(m); return(NULL); }
-#define        ISMULT(c)       ((c) == '*' || (c) == '+' || (c) == '?')
-#define        META    "^$.[()|?+*\\"
-
-/*
- * Flags to be passed up and down.
- */
-#define        HASWIDTH        01      /* Known never to match null string. */
-#define        SIMPLE          02      /* Simple enough to be STAR/PLUS operand. */
-#define        SPSTART         04      /* Starts with * or +. */
-#define        WORST           0       /* Worst case. */
-
-/*
- * Global work variables for regcomp().
- */
-PRIVATE char *regparse;                /* Input-scan pointer. */
-PRIVATE int regnpar;           /* () count. */
-PRIVATE char regdummy;
-PRIVATE char *regcode;         /* Code-emit pointer; &regdummy = don't. */
-PRIVATE long regsize;          /* Code size. */
-
-/*
- * Forward declarations for regcomp()'s friends.
- */
-#ifndef STATIC
-#define        STATIC  static
-#endif
-PRIVATE char *tweb_reg();
-PRIVATE char *tweb_regbranch();
-PRIVATE char *tweb_regpiece();
-PRIVATE char *tweb_regatom();
-PRIVATE char *tweb_regnode();
-PRIVATE char *tweb_regnext();
-PRIVATE void tweb_regc();
-PRIVATE void tweb_reginsert();
-PRIVATE void tweb_regtail();
-PRIVATE void tweb_regoptail();
-#ifdef STRCSPN
-STATIC int tweb_strcspn();
-#endif
-
-#endif /* _REGULAR_ */
diff --git a/contrib/tweb/regular_exp.h b/contrib/tweb/regular_exp.h
deleted file mode 100644 (file)
index 24bb661..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* regular_exp.h                                                            *
-*                                                                          *
-* Function:..Routine for TWEB                                              *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            January 20 1998              Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            January 20 1998            ZZZZZ  DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-/*
- * $Id: regular_exp.h,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-
-#ifndef _REGULAR_EXP_
-#define _REGULAR_EXP_
-
-/*
- * Definitions etc. for regexp(3) routines.
- *
- * Caveat:  this is V8 regexp(3) [actually, a reimplementation thereof],
- * not the System V one.
- */
-#define NSUBEXP  10
-typedef struct regexp {
-       char *startp[NSUBEXP];
-       char *endp[NSUBEXP];
-       char regstart;          /* Internal use only. */
-       char reganch;           /* Internal use only. */
-       char *regmust;          /* Internal use only. */
-       int regmlen;            /* Internal use only. */
-       char program[1];        /* Unwarranted chumminess with compiler. */
-} regexp;
-
-extern regexp *tweb_regcomp();
-extern int tweb_regexec();
-extern void tweb_regsub();
-extern void tweb_regerror();
-/*
- * The first byte of the regexp internal "program" is actually this magic
- * number; the start node begins in the second byte.
- */
-#define        MAGIC   0234
-
-#endif /* _REGULAR_EXP_ */
diff --git a/contrib/tweb/server.c b/contrib/tweb/server.c
deleted file mode 100644 (file)
index a5ebcf5..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
-*                                                                          *
-* server.c...                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Server-Funktions                 *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            May 6 1999                 ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: server.c,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "init_exp.h"
-#include "checkclient_exp.h"
-#include "server.h"
-#include "charray_exp.h"
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-#include "tueTest_exp.h"
-#endif
-
-
-/**
- **  start_server()
- **
- **    Start the Web-X.500-Server.
- **/
-
-PUBLIC void start_server(glob)
-GLOB_STRUCT *glob;
-{
-
-    int            s, ns, rc;
-    int            tblsize;
-    int            pid = getpid();
-    fd_set            readfds;
-    struct hostent        *hp;
-    struct sockaddr_in    from;
-    int            fromlen;
-    void            wait4child();
-    long int       idx;
-
-    glob->stat_slice = time(&glob->stat_slice);
-    stat_slice = &glob->stat_slice;
-    /* if logging is desired via syslog establish connection to syslogd
-       and write first log-message */
-    if ( dosyslog ) {
-
-        openlog( glob->myname, LOG_PID | LOG_NOWAIT, dosyslog );
-        syslog( LOG_INFO, "initializing" );
-
-    }
-
-    /* set up the socket to listen on */
-        /*  the actual port to listen is composed by the base-port
-            and the language-offset */
-        s = set_socket( glob->webport + atoi(glob->lang) );
-
-        /* arrange to reap children */
-        (void) signal( SIGCHLD, wait4child );
-
-    if ( dosyslog )
-        syslog (LOG_INFO, "socket: %d", s);
-
-    /*  Read LDAP-filter for search-operations */
-    if ( (filtd = ldap_init_getfilter( glob->filterfile )) == NULL ) {
-        fprintf(stderr,"Cannot open filter file (%s)\n", glob->filterfile );
-        exit( 1 );
-    }
-
-/*  ###  Code for the static server ### */
-
-    tblsize = getdtablesize();
-    syslog (LOG_INFO, "listening for calls...");
-
-    /*  Initialisation of the Anti-Hack-code */
-    srand(pid);
-    if (glob->comrefuse) hackTimer();
-    bzero((char *) conArr, CARRSIZE * sizeof(int));
-    bzero((char *) shadowconArr, CARRSIZE * sizeof(long int));
-    bzero((char *) sumconArr, CARRSIZE * sizeof(long int));
-
-#ifdef TUE_TEL
-    /* initialisation of dit_config 1st time  */
-    if(glob->dit_config) {
-        init_dit_config();
-    }
-#endif
-
-    /* initialisation of ip_refuse 1st time  */
-    if(glob->ip_refuse) {
-        get_ip_refuse_clients(glob);
-    }
-
-    /*  the server runs in an infinite loop !!! */
-    for ( ;; ) {
-
-        /*  listen on the server-port for incoming connections */
-        FD_ZERO( &readfds );
-        FD_SET( s, &readfds );
-
-        if ((rc=select(tblsize,(fd_set *)&readfds,NULL,NULL,0))==-1) {
-            if ( debug ) perror( "select" );
-            continue;
-        } else if ( rc == 0 ) {
-            continue;
-        }
-
-        if ( ! FD_ISSET( s, &readfds ) )
-            continue;
-
-
-        /*  got connection for the server: get data */
-        fromlen = sizeof(from);
-
-               /* increment the counter for total connections */
-               glob->svc_cnt++;
-
-        /*  get new file-descriptors for the connection */
-        if ( (ns = accept( s, (struct sockaddr *)  &from, &fromlen )) == -1 ) {
-
-            /*  new fd could not be assigned -> log & bye */
-            if ( debug ) perror( "accept" );
-            if ( dosyslog ) {
-                syslog (LOG_INFO,
-                    "problem with accept, errno=%d, %s <%08d>",
-                    errno, strerror(errno), glob->svc_cnt);
-            }
-            continue;
-        }
-
-        /* get time for performance log */
-        gettimeofday(&timestore[0], NULL);
-
-        /*  get client-address via DNS */
-        hp = gethostbyaddr( (char *) &(from.sin_addr.s_addr),
-            sizeof(from.sin_addr.s_addr), AF_INET );
-
-        /* check ip-address for ip_refuse and bye if matched */
-               if ( check_ip_denial( &from, glob ) == NOTOK ) {
-
-                       if ( dosyslog )
-                               syslog( LOG_INFO, "IP-REFUSE: access denied for %s <%08d>",
-                                                       inet_ntoa( from.sin_addr ), glob->svc_cnt);
-
-            close (ns);
-            continue;
-
-        }
-
-        /* get time for performance log */
-        gettimeofday(&timestore[1], NULL);
-
-        /* Anti-Hack-part */
-
-        /*  divide Host-IP-addresses in index-groups and count connection */
-        idx = IP_HACK(from.sin_addr.s_addr);
-        sumconArr[idx]++;
-
-        /*  count try if already locked and bye */
-        if(conArr[idx] < 0) {
-
-            shadowconArr[idx]++;
-            close (ns);
-            continue;
-
-        }
-
-        /*  if not yet locked and maximum amount of connections is exeeded ->
-            lock & message & bye
-        */
-        if (glob->comrefuse && (++conArr[idx] > glob->comrefuse->maxAccept)){
-
-            if (dosyslog)
-                syslog(LOG_INFO,
-"connection refused for %s (IDX=%d): %d attempts, %d cycles suspended <%08d>",
-                             hp ? hp->h_name : "unknown", idx, conArr[idx],
-                             glob->comrefuse->suspendCycle, glob->svc_cnt);
-
-            /*  lock for x timecycles */
-            conArr[idx] = glob->comrefuse->suspendCycle;
-
-            /*  bye, bye baby */
-            close (ns);
-            continue;
-
-        }
-
-        /* END of Anti-Hack-part */
-
-        /*  Log the connection */
-        if ( dosyslog ) {
-            char msg[BUFSIZ];
-
-            sprintf(msg, "TCP connection from %s (%s,%u)",
-                (hp == NULL) ? "unknown" : hp->h_name,
-                inet_ntoa( from.sin_addr ), from.sin_port );
-            glob->server_connection_msg = strdup(msg);
-        }
-
-        if ( debug ) {
-            fprintf( stderr, "connection from %s (%s)\n",    
-                (hp == NULL) ? "unknown" : hp->h_name,
-                inet_ntoa( from.sin_addr ) );
-        }
-
-        glob->unknown_host = !hp;
-    
-        /*  OK, now fork a sub-process performing the further communication
-            to the client; the father-process is listening for further
-            connections */
-        switch( pid = fork() ) {
-        case 0:        /* child */
-
-            /*  the connection to the client should last at most OUT_TIME
-                thereafter terminate connection */
-            signal(SIGALRM, timeoutf);
-            alarm(OUT_TIME);
-
-            /*  the s-filedescriptor is not needed any more */
-            close( s );
-
-            /*  Serve client-request */
-            do_queries( ns, glob , inet_ntoa( from.sin_addr ), from.sin_port, hp);
-            break;
-
-        case -1:    /* failed */
-            if (dosyslog)
-                               syslog (LOG_INFO, "%s <%08d>",
-                                       glob->server_connection_msg, glob->svc_cnt);
-            perror( "fork" );
-            break;
-
-        default:    /* parent */
-            /*  the father-process continues listening */
-            close( ns );
-            if ( debug )
-                fprintf( stderr, "forked child %d\n", pid );
-            break;
-        }
-    }
-    /* NOT REACHED */
-}
-/* end of function: start_server */
-
-
-/**
- **  set_socket()
- **
- **    Initialise socket to listen on and assign dedicated FD
- **/
-
-PRIVATE int set_socket(port)
-int port;
-{
-    int            s, one;
-    struct sockaddr_in    addr;
-
-    if ( (s = socket( AF_INET, SOCK_STREAM, 0 )) == -1 ) {
-                perror( "socket" );
-                exit( 1 );
-        }
-
-        /* set option so clients can't keep us from coming back up */
-    one = 1;
-        if ( setsockopt( s, SOL_SOCKET, SO_REUSEADDR, (char *) &one,
-        sizeof(one) ) < 0 ) {
-                perror( "setsockopt" );
-                exit( 1 );
-        }
-
-        /* bind to a name */
-        addr.sin_family = AF_INET;
-        addr.sin_addr.s_addr = INADDR_ANY;
-        addr.sin_port = htons( port );
-        if ( bind( s, (struct sockaddr *)  &addr, sizeof(addr) ) ) {
-                perror( "bind" );
-                exit( 1 );
-        }
-
-    /* listen for connections */
-        if ( listen( s, 512 ) == -1 ) {
-                perror( "listen" );
-                exit( 1 );
-        }
-
-        if ( debug )
-        printf( "web500gw listening on port %d\n", port );
-
-    return( s );
-}
-/* end of function: set_socket */
-
-/* If a sub-daemon exists, remove from Process list */
-PRIVATE void wait4child(arg)
-int arg;
-{
-        int     status;
-
-        if ( debug ) printf( "parent: catching child status\n" );
-        while ( wait3( &status, WNOHANG | WUNTRACED, 0 ) > 0 )
-                ;       /* NULL */
-    (void) signal( SIGCHLD, wait4child );
-}
-/* end of function: wait4child */
-
-/* set signal-handler for Anti-Hack */
-PRIVATE void hackTimer()
-{
-    static time_t  timer = (time_t) 0;
-           time_t  now   = time (&now);
-
-    /* re-read IP-REFUSE file if necessary */
-       re_readIPrefuse( globP );
-
-    /* re-read INDEX-URL file if necessary */
-       re_read_index_url_rules( globP );
-
-    if (!timer) {
-
-        timer = now + comRefuseP->statCycle;
-
-    }
-
-    signal(SIGALRM, reset_conMem);
-    alarm((rand() % comRefuseP->tdiff) + comRefuseP->tmin);
-
-    if (now + comRefuseP->tmin > timer) {
-
-        timer = put_hackStats (NULL, now) + comRefuseP->statCycle;
-        *stat_slice  = now;
-
-    }
-
-}
-/* end of function: hackTimer */
-
-
-/* Signal-handler for Anti-Hack-code */
-PRIVATE void reset_conMem()
-{
-    int i;
-
-    hackTimer();
-
-    for(i=0; i< 8192; i++)
-        if(conArr[i] >= 0) conArr[i] = 0;
-        else {
-            if(++conArr[i] == 0){
-                if (dosyslog)
-                    syslog(LOG_INFO, "connection accept resumed for IDX=%d; \
-%u connection attempts during suspension <%08d>", i, shadowconArr[i],
-                                                       globP->svc_cnt);
-                shadowconArr[i] = 0;
-        }
-    }
-
-}
-/* end of function: reset_conMem */
-
-
-/*  regular output of the access-statistic */
-PUBLIC time_t put_hackStats (fp, now)
-FILE   *fp;
-time_t  now;
-{
-    int     i, bereiche;
-    int     is_html = (fp != NULL);
-    char   *eol = is_html ? "<BR>\n" : "\n";
-    unsigned long int gesamt = 0;
-
-    if (!now) now = time (&now);
-
-    if (!fp) fp = fopen (comRefuseP->statFile, "w");
-
-    if (fp) {
-
-        if (is_html) fprintf (fp, "<PRE><BR>\n");
-
-        fprintf (fp, "Access-Statistic TWEB%s", eol);
-        fprintf (fp, "======================%s", eol);
-        if (comRefuseP) fprintf (fp, "FILE : %s%s", comRefuseP->statFile, eol);
-        fprintf (fp, "START: %s%s", format_time (*stat_slice), eol);
-        fprintf (fp, "END  : %s%s%s%s", format_time (now), eol, eol, eol);
-
-        for (i = 0, bereiche = 0; i < CARRSIZE; i++) {
-
-            if(sumconArr[i]) {
-                fprintf (fp, "IP-IDX %5d: %8lu%s", i, sumconArr[i], eol);
-                gesamt += sumconArr[i];
-                bereiche++;
-            }
-
-        }
-    if(bereiche > 1) {
-            fprintf (fp, "----------------------%s", eol);
-            fprintf (fp, "Total:       %8lu  ( from %d IP-Ranges )%s",
-                          gesamt, bereiche, eol);
-        }
-
-        if (is_html) {
-
-            fprintf (fp, "</PRE><BR>\n");
-
-        } else {
-
-            bzero((char *) sumconArr, CARRSIZE * sizeof(long int));
-            fprintf (fp, "\n");
-            fclose (fp);
-
-        }
-    }
-        
-    return (now);
-
-} /* put_hackStats */
diff --git a/contrib/tweb/server.h b/contrib/tweb/server.h
deleted file mode 100644 (file)
index 6e1b3fc..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* server.h...                                                              *
-*                                                                          *
-* Funktion:..WorldWideWeb-X.500-Gateway - Server-Funktions                 *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1998           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: server.h,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#ifndef _SERVER_
-#define _SERVER_
-
-#include "server_exp.h"
-#include "queries_exp.h"
-#include "support_exp.h"
-
-#ifdef TUE_TEL
-#include "tueTel_exp.h"
-#endif
-
-
-#define CARRSIZE 8192
-
-#define MASK_30 0x40000000
-#define MASK_20 0x00100000
-#define MASK_17 0x00020000
-#define MASK_10 0x00000ffc
-
-#define IP_HACK(x)    ((((MASK_30 & (x)) != 0) * 4096) + \
-                       (((MASK_20 & (x)) != 0) * 2048) + \
-                       (((MASK_17 & (x)) != 0) * 1024) + \
-                       ((MASK_10 & (x)) >> 2))
-
-/* three integer-arrays to count connections */
-int conArr[CARRSIZE];
-unsigned long int shadowconArr[CARRSIZE];
-unsigned long int sumconArr[CARRSIZE];
-
-/* the signal-handler */
-PRIVATE void reset_conMem();
-
-/* set the Alarm-Timer */
-PRIVATE void    hackTimer();
-
-PRIVATE int set_socket();
-PRIVATE void wait4child();
-
-/*  A pointer to the Anti-Hack-infos in the Glob-structure */
-COMREFUSE  *comRefuseP = NULL;
-time_t *stat_slice;
-
-
-#endif /* _SERVER_ */
-
-
diff --git a/contrib/tweb/server_exp.h b/contrib/tweb/server_exp.h
deleted file mode 100644 (file)
index d6bc037..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* server_exp.h...                                                          *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Server-Funktions                 *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 2 1996              Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: server_exp.h,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#ifndef _SERVER_EXP_
-#define _SERVER_EXP_
-
-/* Statistic Output */
-extern  time_t  put_hackStats();
-extern  void    start_server();
-
-#endif /* _SERVER_EXP_ */
-
-
diff --git a/contrib/tweb/strng.c b/contrib/tweb/strng.c
deleted file mode 100644 (file)
index d608bd7..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* strng.c....                                                              *
-*                                                                          *
-* Function:..String Handling Functions                                     *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 3 1998            ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: strng.c,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#include "strng_exp.h"
-#include "tgeneral.h"
-
-/*
- *  Convert string to integer by means of a dispatcherlist
- *  if string is not in the dispatcher -> return default
- */
-
-PUBLIC int cnvt_str2int (stringVal, dispatcher, defaultVal)
-STRDISP_P  dispatcher;
-int        defaultVal;
-char      *stringVal;
-{
-       int        retVal = defaultVal;
-       STRDISP_P  disp;
-       
-       for (disp = dispatcher; disp->stringVal; disp++) {
-       
-               if (!strncmp (stringVal, disp->stringVal, disp->abbr)) {
-               
-                       retVal = disp->intVal;
-                       break;
-                       
-               }
-       }
-       
-       return (retVal);
-       
-} /* cnvt_str2int */
-
-
-/*
- *  Truncate characters at the beginning of a string
- */
-
-PUBLIC char * trimleft (s, what)
-char   *s, *what;
-{
-
-        return (s + strspn (s, what));
-
-} /* trimleft */
-
-
-/*
- *  Truncate characters at the end of a string
- */
-
-PUBLIC char * trimright (s, what)
-char   *s, *what;
-{
-       char  *tmp = s + strlen (s) - 1;
-
-       while ((tmp >= s) && strchr (what, *tmp)) *tmp-- = '\0';
-
-       return (s);
-
-} /* trimright */
-
-
-/*
- *  Truncate characters at the beginning and end of a string
- */
-
-PUBLIC char * trim (s, what)
-char   *s, *what;
-{
-       (void) trimright (s, what);
-       return (trimleft (s, what));
-
-} /* trim */
-
-
-/*
- *  Convert a string to lower-case "in place"
- *  uses tolower()
- */
-
-PUBLIC char *str_tolower (source)
-char  *source;
-{
-        char  *target = source;
-
-        for (; *target; target++) *target = tolower (*target);
-        return (source);
-
-} /* str_tolower */
-
-
-/*
- *  Convert a string to upper-case "in place"
- *  uses toupper()
- */
-
-PUBLIC char *str_toupper (source)
-char  *source;
-{
-        char  *target = source;
-
-        for (; *target; target++){
-            *target = toupper (*target);
-
-            /* Patch fuer Umlaute */
-            if(*target == 'ä') *target = 'Ä';
-            else if(*target == 'ö') *target = 'Ö';
-            else if(*target == 'ü') *target = 'Ü';
-        }
-        return (source);
-
-} /* str_toupper */
-
-
-/*
- *  Substitute a character in a string by another
- */
-
-PUBLIC char *tr1 (source, from, to)
-char  *source;
-char   from, to;
-{
-       char *target = source - 1;
-
-       while ( ( target = strchr( ++target, from )) ) *target = to;
-
-       return (source);
-
-} /* tr1 */
-
-
-PUBLIC int chrcnt(string, c)
-char *string;
-char *c;
-{
-       int count=0;
-
-       string--;
-       while( ( string = strpbrk(string+1, c)) )
-               count++;
-       return(count);
-}
-/* end of function: chrcnt */
-
-
-PUBLIC int
-qSortByString( a, b )
-char **a, **b;
-{
-       return strcmp( *a, *b );
-}
-/*  end of function: qSortByString  */
-
-
diff --git a/contrib/tweb/strng_exp.h b/contrib/tweb/strng_exp.h
deleted file mode 100644 (file)
index 7509a7e..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* strng_exp.h                                                              *
-*                                                                          *
-* Function:..String Handling Functions                                     *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            November 3 1998            ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: strng_exp.h,v 1.6 1999/09/10 15:01:19 zrnsk01 Exp $
- *
- */
-
-#ifndef  __STRNG_EXP__
-#define  __STRNG_EXP__
-
-#include <ctype.h> 
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-
-/*
- *  Structures for the offered Funktions
- */
-
-typedef struct _str2intDispatch {
-
-               char    *stringVal;
-               int      abbr,
-                        intVal;
-
-       } STRDISP, *STRDISP_P;
-
-
-/*
- *  The "offered" Funktions
- */
-
-/*  Conversion to upper/lower case in the whole string */
-char  *str_tolower (/* char *string */);
-char  *str_toupper (/* char *string */);
-
-/*  Convert string to integer by means of a dispatcherlist  */
-/*  if string is not in the dispatcher -> return default  */
-int   cnvt_str2int (/* string, dispatcher, default */);
-
-/*  Truncate characters at the beginning and end of a string  */
-char  *trimleft (/* char *s, char *what */);
-char  *trimright (/* char *s, char *what */);
-char  *trim (/* char *s, char *what */);
-
-/*  A special WHAT: whitespaces  */
-#define  WSPACE  "\n\r\t "
-
-/*  Substitute a character in a string to another */
-char  *tr1 (/* char *source, char from, char to */);
-
-/*  Count the named characters of string2 in string1  */
-int chrcnt (/*String1, String2*/);
-
-
-/*  Compare by string values in qsort()  */
-int qSortByString (/* char **StringP1, char **StringP2 */);
-
-#endif
-
diff --git a/contrib/tweb/support.c b/contrib/tweb/support.c
deleted file mode 100644 (file)
index a5866e0..0000000
+++ /dev/null
@@ -1,613 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* support.c..                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Supporting Routines              *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 7 1999           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: support.c,v 1.6 1999/09/10 15:01:20 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "init_exp.h"
-#include "support.h"
-
-/*
- *  Utilities for dealing with HTML junk
- */
-
-char hex[17] = "0123456789abcdef";
-char buffer[1024];
-
-PUBLIC char * hex_decode (in)
-char *in;
-{
-        char b, c;
-        int q = 0;
-        char *out = in;
-
-        while (*in) {
-        if (*in == '?')        /* start search */
-            q = 1;
-                if (*in == '%') {    /* Hex escape */
-                        in++;
-                        if(!(c = *in++)) break;
-                        b = from_hex(c);
-                        if(!(c = *in++)) break;
-                        *out++ = (b<<4) + from_hex(c);
-                } else if (q && *in == '+') {
-            /* '+' is legal in path, in search it's a ' ' */
-            *out++ = ' ';
-            in++;
-        } else {
-                        *out++ = *in++;
-                }
-        }
-        *out = '\0';
-        return (out);
-}
-/* end of function: hex_decode */
-
-/* decode in search (for do_modify) */
-
-PUBLIC char * hex_qdecode (in)
-char *in;
-{
-        char b, c;
-        char *out = in;
-
-        while (*in) {
-                if (*in == '%') {     /* Hex escape */
-                        in++;
-                        if(!(c = *in++)) break;
-                        b = from_hex(c);
-                        if(!(c = *in++)) break;
-                        *out++ = (b<<4) + from_hex(c);
-                } else if (*in == '+') { /* we are in search, so: '+' -> ' ' */
-                        *out++ = ' ';
-                        in++;
-                } else {
-                        *out++ = *in++;
-                }
-        }
-        *out = '\0';
-        return (out);
-}
-/* end of function: hex_qdecode */
-
-PUBLIC char * form_encode (in)
-char *in;
-{
-    char *out = buffer;
-    
-    /* bzero(out, 1024); */
-    while (*in) {
-            if (*in == '"' || *in == '>' ) {
-            *out++ = '\\';
-        }
-                   *out++ = *in++;
-    }
-         *out = '\0';
-
-     /* fprintf( stderr, "returning - esc: %s.\n", buffer); */
-    return (buffer);
-}
-/* end of function: form_encode */
-
-/* gtime(): the inverse of localtime().
-    This routine was supplied by Mike Accetta at CMU many years ago.
- */
-
-int    dmsize[] = {
-    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-#define    dysize(y)    \
-    (((y) % 4) ? 365 : (((y) % 100) ? 366 : (((y) % 400) ? 365 : 366)))
-
-#define    YEAR(y)        ((y) >= 100 ? (y) : (y) + 1900)
-
-PRIVATE time_t gtime (tm)
-struct tm *tm;
-{
-    register int    i,
-                    sec,
-                    mins,
-                    hour,
-                    mday,
-                    mon,
-                    year;
-    register long   result;
-
-    if ((sec = tm -> tm_sec) < 0 || sec > 59
-        || (mins = tm -> tm_min) < 0 || mins > 59
-        || (hour = tm -> tm_hour) < 0 || hour > 24
-        || (mday = tm -> tm_mday) < 1 || mday > 31
-        || (mon = tm -> tm_mon + 1) < 1 || mon > 12)
-    return ((long) -1);
-    if (hour == 24) {
-    hour = 0;
-    mday++;
-    }
-    year = YEAR (tm -> tm_year);
-    result = 0L;
-    for (i = 1970; i < year; i++)
-    result += dysize (i);
-    if (dysize (year) == 366 && mon >= 3)
-    result++;
-    while (--mon)
-    result += dmsize[mon - 1];
-    result += mday - 1;
-    result = 24 * result + hour;
-    result = 60 * result + mins;
-    result = 60 * result + sec;
-    return result;
-}
-/* end of function: gtime */
-
-PUBLIC char * format_date (s, format)
-char **s;
-char *format;
-{
-/*  PATCHED by /KSp, 94/04/29  */
-    static char    date[256];
-/*      ^^^^^^ */
-/*  END PATCH  */
-
-    struct tm       tm, *ntm;
-    time_t        t;
-
-
-    tm.tm_year = 10*((*s)[0] - '0') + ((*s)[1] - '0');
-    tm.tm_mon  = 10*((*s)[2] - '0') + ((*s)[3] - '0') - 1;
-    tm.tm_mday = 10*((*s)[4] - '0') + ((*s)[5] - '0');
-    tm.tm_hour = 10*((*s)[6] - '0') + ((*s)[7] - '0');
-    tm.tm_min  = 10*((*s)[8] - '0') + ((*s)[9] - '0');
-    tm.tm_sec  = 10*((*s)[10] - '0') + ((*s)[11] - '0');
-
-/*  PATCHED for HPUX by /KSp, 94/04/28  */
-
-    tm.tm_isdst = 0;
-
-#if !defined(__hpux) && !defined(__linux__)  && !defined(__sun)
-    tm.tm_gmtoff = 0;
-#endif
-
-/*  END PATCH  */
-
-    t = gtime(&tm);
-    ntm = gmtime(&t);
-    strftime(date, 256, format, ntm);
-    return (date);
-}
-/* end of function: format_date */
-
-PUBLIC char * friendly_dn (dn, glob)
-char *dn;
-GLOB_STRUCT *glob;
-{
-/*  PATCHED BY /KSp, 94/04/29  */
-    /* static char    fufn[1024], **s; */
-/*      ^^^^^^  */
-/*  END PATCH  */
-
-/*  Again patched by /KSp, 97/01/25: dynamic mem-allocation  */
-       char  *fufn;
-
-       if ( ( fufn = calloc( 1, BUFSIZ )) ) {
-
-               if (strlen(dn) == 0) {
-                       strcpy( fufn, glob->la[77] );
-               } else {
-
-                       int    i = 0;
-                       char   **s;
-
-                       s = ldap_explode_dn( dn, 1 );
-                       while (s[i+1]) {
-                               strcat( fufn, s[i++] );
-                               strcat( fufn, ", " );
-                       }
-                       strcat( fufn, ldap_friendly_name( glob->friendlyfile, s[i], &fm ));
-               }
-       }
-
-    return (fufn);
-}
-/* end of function: friendly_dn */
-
-
-PUBLIC char * format_time (whatTime)
-time_t  whatTime;
-{
-           time_t    timer;
-    static char      theTime[_TIMEOUT_LEN+1];
-
-    timer = whatTime ? whatTime : time (&timer);
-    strftime (theTime, (_TIMEOUT_LEN + 1), _LOG_TIME, localtime (&timer));
-
-    return (theTime);
-
-} /* end of function: format_time */
-
-PUBLIC char * strQuoteChr(string, c)
-char *string;
-char c;
-{
-    char *cPtr;
-    int inQuote = FALSE;
-
-    cPtr = string;
-    while(*cPtr) {
-        if( *cPtr == '\"')
-            inQuote = ( (inQuote == TRUE) ? FALSE : TRUE );
-        if( (*cPtr == c) && (inQuote == FALSE) )
-            return(cPtr);
-        cPtr++;
-        }
-
-    return(NULL);
-}
-/* end of function: strQuoteChr */
-
-PUBLIC char * strrQuoteChr(string, c)
-char *string;
-char c;
-{
-    char *cPtr;
-    int inQuote = FALSE;
-
-    cPtr = string + strlen(string) - 1;
-    while(cPtr >= string) {
-        if( *cPtr == '\"')
-            inQuote = ( (inQuote == TRUE) ? FALSE : TRUE );
-        if( (*cPtr == c) && (inQuote == FALSE) )
-            return(cPtr);
-        cPtr--;
-        }
-
-    return(NULL);
-}
-/* end of function: strrQuoteChr */
-
-
-PUBLIC void disp_file(glob, filename, fp)
-GLOB_STRUCT *glob;
-char *filename;
-FILE *fp;
-{
-char buf[4096];
-FILE *fp2;
-    if(filename && (fp2 = fopen(filename, "r" ))) {
-        while ( fgets(buf, 4095, fp2) != NULL )
-            fprintf( fp, "%s",buf);
-        fclose(fp2);
-    }
-
-    /* Copyright-Zeile */
-    if(filename == glob->footer ||
-       (glob->basedn && filename == glob->basedn->foot))
-        fprintf( fp, glob->la[99],glob->la[101], copyright );
-}
-/* end of function: disp_file */
-
-
-PUBLIC int dn_cmp(dn1, dn2)
-char *dn1, *dn2;
-{
-        do {
-                while(*dn1 == ' ' || *dn1 == '"')
-                        dn1++;
-                while(*dn2 == ' ' || *dn2 == '"')
-                        dn2++;
-                if(!*dn1 && !*dn2)
-                        return(FALSE); /* equality */
-        } while(tolower(*dn1++) == tolower(*dn2++));
-        return(TRUE);
-}
-/* end of function: dn_cmp */
-
-
-/*
- *  dn_cmp_parts()
- *
- *    comparison of dns by rdn parts. in case of unmatched the part(s) which
- *    matched can be returned (matched not NULL)
- *
- *  input:
- *
- *    - dn1 (in url format)
- *    - dn2 (     "       )
- *    - matched (pointer to dynamically allocatable string, or NULL)
- *
- *  output:
- *
- *    - DN_EQUAL | DN_LESS | DN_GREATER | DN_UNMATCHED (with matched allocated)
- */
-
-PUBLIC int
-dn_cmp_parts( dn1, dn2, matched )
-char  *dn1;
-char  *dn2;
-char **matched;
-{
-       char   **dn1arr = dn2charray( dn1 );
-       char   **dn2arr = dn2charray( dn2 );
-       int    idx;
-       int    domatch  = TRUE;
-       int    result   = DN_EQUAL;
-
-       for ( idx = 0; dn1arr[idx] && dn2arr[idx]; idx++ ) {
-
-               if ( strcasecmp( dn1arr[idx], dn2arr[idx] )) {
-
-                       domatch = FALSE;
-                       break;
-
-               }
-       }
-
-       /*  what was the result  */
-
-       if ( !domatch ) {
-
-               if ( matched ) {
-                       char buf[BUFSIZ];
-                       char buf2[BUFSIZ];
-                       int  idx2;
-
-                       *buf = '\0';
-
-                       for ( idx2 = 0; idx2 < idx; idx2++ ) {
-
-                               strcpy( buf2, buf );
-                               sprintf( buf, "%s,%s", dn1arr[idx2], buf2 );
-
-                       }
-                       trimright( buf, "," );
-
-                       *matched = strdup( buf );
-
-               }
-
-               result = DN_UNMATCHED;
-
-       } else if ( dn1arr[idx] ) result = DN_GREATER;
-       else if ( dn2arr[idx] ) result = DN_LESS;
-
-       charray_free( dn1arr ); charray_free( dn2arr );
-
-       return( result );
-
-}  /*  dn_cmp_parts  */
-
-
-
-/*
- *  Comparison of substring lists
- */
-
-PUBLIC int strlstcmp (s1, s2, sep)
-char  *s1, *s2;
-char   sep;
-{
-    int   retCode = FALSE;
-    char *target;
-    char *source;
-    char *idx, *idx2;
-    char  tmpChar;
-
-    if ( !s1 || !s2 )
-        return( FALSE );
-
-    target = str_tolower (strdup (s1));
-    source = str_tolower (strdup (s2));
-    idx    = source;
-
-    while (idx && (idx2 = strchr (idx+1, sep))) {
-
-        tmpChar = *(++idx2); *idx2 = '\0';
-        if (strstr (target, idx)) {
-
-            retCode = TRUE;
-            break;
-
-        }
-
-        *(idx2) = tmpChar;
-        idx = --idx2;
-
-    }
-
-    free (source);
-    free (target);
-    return (retCode);
-
-}
-/* end of function: strlstcmp */
-
-PUBLIC char *hex_html_encode(string, flag)
-char *string;
-int flag; /* 0->hex 1->html */
-{
-       static char strbuf[10*BUFSIZ];
-       char *strptr;
-
-       *strbuf = '\0';
-       for(strptr = string; *strptr; strptr++){
-               /* 200 a -> &auml; fuer aouAOU */
-               if((flag==1) && (((int)*strptr&255)==200)) {
-                       if(strchr("aouAOU", *(strptr+1))) {
-                               sprintf(strbuf, "%s&%cuml;", strbuf, *++strptr);
-                               continue;
-                       }
-               }
-
-               /* &#xxx; Handling-Patch */
-               if((flag==1) && (((int)*strptr&255)>=160)) {
-                       sprintf(strbuf, "%s&#%d;", strbuf, ((int)*strptr&255));
-                       continue;
-               }
-               /* end Patch */
-
-               if(!encoding_tbl[(int)*strptr&255][flag]) {
-                       sprintf(strbuf, "%s%c", strbuf, *strptr);
-               } else {
-                       strcat(strbuf, encoding_tbl[(int)*strptr&255][flag]);
-               }
-       }
-       return(strbuf);
-}
-/* end of function: hex_html_encode */
-
-/* Strips basecount+1 characters of type target at the end of an RDN */
-PUBLIC char *dnrcut(rdn, target, basecount) 
-char *rdn;
-char *target;
-int basecount;
-{
-       static char buf[BUFSIZ];
-       char *strptr;
-       int rdncount, morecount;
-
-       rdncount = chrcnt(rdn, target);
-       if( (morecount = (rdncount - basecount)) > 0) {
-               strcpy(buf, rdn);
-               strptr = buf-1;
-               while(morecount--) {
-                       strptr = strpbrk(strptr+1, target);
-               }
-               *strptr = '\0';
-       } else *buf = '\0';
-       return(buf);
-}
-/* end of function: dnrcut */
-
-PUBLIC char **dn2charray(dn)
-char *dn;
-{
-    char *dnbuf, *strptr, **a=NULL;
-
-       if ( !dn || !*dn ) {
-
-               a = (char **) ch_calloc( 1, sizeof( char ** ));
-               return( a );
-
-       }
-
-    dnbuf = strdup(dn);
-    do {
-        strptr = strrQuoteChr(dnbuf, ',');
-        if(strptr) {
-            *strptr++ = '\0';
-/*
-            while(*strptr == ' ') 
-                strptr++;
-*/
-                       strptr = trim( strptr, " " );
-        }
-        charray_add( &a, strptr ? strptr : trim( dnbuf, " " ));
-    } while(strptr);
-    free(dnbuf);
-    return(a);
-}
-/* end of function: dn2charray */
-
-
-/* get the parent DN for a given one */
-PUBLIC char *
-get_parentDN( dn )
-char  *dn;
-{
-       char  **a   = NULL;
-       char    tmp[BUFSIZ];
-
-       a = dn2charray( dn );
-       *tmp = *(tmp + 1) = '\0';
-
-       if ( a ) {
-               char **rdnH;
-
-               /*  we have to re-build the DN beginning at the last array element  */
-               for ( rdnH = a; *rdnH; rdnH++ )
-                       ;
-
-               /*  re-build DN from it's parts  */
-               rdnH--; rdnH--;
-               for ( ; rdnH >= a; rdnH-- ) {
-
-                       sprintf( tmp, "%s,%s", tmp, *rdnH );
-
-               }
-
-               charray_free( a );
-
-       }
-
-       /*  ignore a leading ','  */
-       return( strdup( tmp + 1 ));
-
-}  /* get_parentDN */
-
-
-PUBLIC char *elapsed(firsttime, secondtime)
-struct timeval firsttime;
-struct timeval secondtime;
-{
-    long int elapsedmicrosec, elapsedsec;
-    char elapsed_string[BUFSIZ];
-    
-    elapsedsec = secondtime.tv_sec - firsttime.tv_sec;
-    elapsedmicrosec = secondtime.tv_usec - firsttime.tv_usec;
-    if(elapsedmicrosec < 0) {
-        elapsedmicrosec += 1000000;
-        elapsedsec -= 1;
-    }
-    if(elapsedsec > 1000){
-        elapsedsec = 0;
-        elapsedmicrosec = 0;
-    }
-    sprintf(elapsed_string, "%ld.%.6ld", elapsedsec, elapsedmicrosec);
-    return(strdup(elapsed_string));
-}
-/* end of function: elapsed */
-
-
-/* performance-log on exit */
-PUBLIC int exit_tweb(rc)
-int rc;
-{
-    struct timeval secondtime;
-
-    gettimeofday(&secondtime, NULL);
-    if(!secondtime.tv_sec || !timestore[0].tv_sec) exit(rc);
-
-    if (dosyslog)
-                syslog (LOG_INFO, "performance: %s#%s#%s#%s#%s#%s#%d seconds <%08d>",
-               elapsed(timestore[0], secondtime), elapsed(timestore[0],
-                       timestore[1]), elapsed(timestore[1], timestore[2]),
-               elapsed(timestore[2], timestore[3]),
-               elapsed(timestore[3], items_displayed ? timestore[4] : secondtime),
-               items_displayed ? elapsed(timestore[4], secondtime) : "",
-               items_displayed, globP->svc_cnt);
-    exit(rc);
-}
-/* end of function: exit_tweb */
-
diff --git a/contrib/tweb/support.h b/contrib/tweb/support.h
deleted file mode 100644 (file)
index 7a68fa1..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* support.h..                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Support-Functions                *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 7 1999           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: support.h,v 1.6 1999/09/10 15:01:20 zrnsk01 Exp $
- *
- */
-
-#ifndef _SUPPORT_
-#define _SUPPORT_
-
-#include "support_exp.h"
-#include "charray_exp.h"
-#include "ch_malloc_exp.h"
-
-
-/*  Array for translation */
-/* 0: HEX; 1: uml (not used); 2: flatten */
-
-char *encoding_tbl[257][3] = {
-/*   0  \0 */    { "%00" ,   "",       NULL    },
-/*   1  \ 1 */    { "%01" ,   "\ 1",       NULL  },
-/*   2  \ 2 */    { "%02" ,   "\ 2",       NULL  },
-/*   3  \ 3 */    { "%03" ,   "\ 3",       NULL  },
-/*   4  \ 4 */    { "%04" ,   "\ 4",       NULL  },
-/*   5  \ 5 */    { "%05" ,   "\ 5",       NULL  },
-/*   6  \ 6 */    { "%06" ,   "\ 6",       NULL  },
-/*   7  \a */    { "%07" ,   "\a",       NULL  },
-/*   8  \b */    { "%08" ,   "\b",       NULL  },
-/*   9  \t */    { "%09" ,   "&nbsp;", NULL  },
-/*  10  \n */    { "%0a" ,   "\n",     NULL  },
-/*  11  \v */    { "%0b" ,   "\v",       NULL  },
-/*  12  \f */    { "%0c" ,   "\f",       NULL  },
-/*  13  \r */    { "%0d" ,   "\r",       NULL  },
-/*  14  \ e */    { "%0e" ,   "\ e",       NULL  },
-/*  15  \ f */    { "%0f" ,   "\ f",       NULL  },
-/*  16  \10 */    { "%10" ,   "\10",       NULL  },
-/*  17  \11 */    { "%11" ,   "\11",       NULL  },
-/*  18  \12 */    { "%12" ,   "\12",       NULL  },
-/*  19  \13 */    { "%13" ,   "\13",       NULL  },
-/*  20  \14 */    { "%14" ,   "\14",       NULL  },
-/*  21  \15 */    { "%15" ,   "\15",       NULL  },
-/*  22  \16 */    { "%16" ,   "\16",       NULL  },
-/*  23  \17 */    { "%17" ,   "\17",       NULL  },
-/*  24  \18 */    { "%18" ,   "\18",       NULL  },
-/*  25  \19 */    { "%19" ,   "\19",       NULL  },
-/*  26  \1a */    { "%1a" ,   "\1a",       NULL  },
-/*  27  \e */    { "%1b" ,   "\e",       NULL  },
-/*  28  \1c */    { "%1c" ,   "\1c",       NULL  },
-/*  29  \1d */    { "%1d" ,   "\1d",       NULL  },
-/*  30  \1e */    { "%1e" ,   "\1e",       NULL  },
-/*  31  \1f */    { "%1f" ,   "\1f",       NULL  },
-/*  32     */    { "%20" ,   " ",      NULL  },
-/*  33  !  */    { "%21" ,   "!",      NULL  },
-/*  34  "  */    { "%22" ,   "&quot;", NULL  },
-/*  35  #  */    { "%23" ,   "#",      NULL  },
-/*  36  $  */    {  NULL,    NULL,     NULL  },
-/*  37  %  */    { "%25" ,   "%",      NULL  },
-/*  38  &  */    { "%26" ,   "&amp;",  NULL  },
-/*  39  '  */    { "%27" ,   "'",      NULL  },
-/*  40  (  */    { "%28" ,   "(",      NULL  },
-/*  41  )  */    { "%29" ,   ")",      NULL  },
-/*  42  *  */    { "%2a" ,   "*",      NULL  },
-/*  43  +  */    { "%2b" ,   "+",      NULL  },
-/*  44  ,  */    { "%2c" ,   ",",      NULL  },
-/*  45  -  */    {  NULL,    NULL,     NULL  },
-/*  46  .  */    {  NULL,    NULL,     NULL  },
-/*  47  /  */    { "%2f" ,   "/",      NULL  },
-/*  48  0  */    {  NULL,    NULL,     NULL  },
-/*  49  1  */    {  NULL,    NULL,     NULL  },
-/*  50  2  */    {  NULL,    NULL,     NULL  },
-/*  51  3  */    {  NULL,    NULL,     NULL  },
-/*  52  4  */    {  NULL,    NULL,     NULL  },
-/*  53  5  */    {  NULL,    NULL,     NULL  },
-/*  54  6  */    {  NULL,    NULL,     NULL  },
-/*  55  7  */    {  NULL,    NULL,     NULL  },
-/*  56  8  */    {  NULL,    NULL,     NULL  },
-/*  57  9  */    {  NULL,    NULL,     NULL  },
-/*  58  :  */    { "%3a" ,   ":",      NULL  },
-/*  59  ;  */    { "%3b" ,   ";",      NULL  },
-/*  60  <  */    { "%3c" ,   "&lt;",   NULL  },
-/*  61  =  */    { "%3d" ,   "=",      NULL  },
-/*  62  >  */    { "%3e" ,   "&gt;",   NULL  },
-/*  63  ?  */    { "%3f" ,   "?",      NULL  },
-/*  64  @  */    { "%40" ,   "@",      NULL  },
-/*  65  A  */    {  NULL,    NULL,     NULL  },
-/*  66  B  */    {  NULL,    NULL,     NULL  },
-/*  67  C  */    {  NULL,    NULL,     NULL  },
-/*  68  D  */    {  NULL,    NULL,     NULL  },
-/*  69  E  */    {  NULL,    NULL,     NULL  },
-/*  70  F  */    {  NULL,    NULL,     NULL  },
-/*  71  G  */    {  NULL,    NULL,     NULL  },
-/*  72  H  */    {  NULL,    NULL,     NULL  },
-/*  73  I  */    {  NULL,    NULL,     NULL  },
-/*  74  J  */    {  NULL,    NULL,     NULL  },
-/*  75  K  */    {  NULL,    NULL,     NULL  },
-/*  76  L  */    {  NULL,    NULL,     NULL  },
-/*  77  M  */    {  NULL,    NULL,     NULL  },
-/*  78  N  */    {  NULL,    NULL,     NULL  },
-/*  79  O  */    {  NULL,    NULL,     NULL  },
-/*  80  P  */    {  NULL,    NULL,     NULL  },
-/*  81  Q  */    {  NULL,    NULL,     NULL  },
-/*  82  R  */    {  NULL,    NULL,     NULL  },
-/*  83  S  */    {  NULL,    NULL,     NULL  },
-/*  84  T  */    {  NULL,    NULL,     NULL  },
-/*  85  U  */    {  NULL,    NULL,     NULL  },
-/*  86  V  */    {  NULL,    NULL,     NULL  },
-/*  87  W  */    {  NULL,    NULL,     NULL  },
-/*  88  X  */    {  NULL,    NULL,     NULL  },
-/*  89  Y  */    {  NULL,    NULL,     NULL  },
-/*  90  Z  */    {  NULL,    NULL,     NULL  },
-/*  91  [  */    { "%5b" ,   "[",      NULL  },
-/*  92  \  */    { "%5c" ,   "\\",     NULL  },
-/*  93  ]  */    { "%5d" ,   "]",      NULL  },
-/*  94  ^  */    { "%5e" ,   "^",      NULL  },
-/*  95  _  */    {  NULL,    NULL,     NULL  },
-/*  96  `  */    { "%60" ,   "`",      NULL  },
-/*  97  a  */    {  NULL,    NULL,     NULL  },
-/*  98  b  */    {  NULL,    NULL,     NULL  },
-/*  99  c  */    {  NULL,    NULL,     NULL  },
-/* 100  d  */    {  NULL,    NULL,     NULL  },
-/* 101  e  */    {  NULL,    NULL,     NULL  },
-/* 102  f  */    {  NULL,    NULL,     NULL  },
-/* 103  g  */    {  NULL,    NULL,     NULL  },
-/* 104  h  */    {  NULL,    NULL,     NULL  },
-/* 105  i  */    {  NULL,    NULL,     NULL  },
-/* 106  j  */    {  NULL,    NULL,     NULL  },
-/* 107  k  */    {  NULL,    NULL,     NULL  },
-/* 108  l  */    {  NULL,    NULL,     NULL  },
-/* 109  m  */    {  NULL,    NULL,     NULL  },
-/* 110  n  */    {  NULL,    NULL,     NULL  },
-/* 111  o  */    {  NULL,    NULL,     NULL  },
-/* 112  p  */    {  NULL,    NULL,     NULL  },
-/* 113  q  */    {  NULL,    NULL,     NULL  },
-/* 114  r  */    {  NULL,    NULL,     NULL  },
-/* 115  s  */    {  NULL,    NULL,     NULL  },
-/* 116  t  */    {  NULL,    NULL,     NULL  },
-/* 117  u  */    {  NULL,    NULL,     NULL  },
-/* 118  v  */    {  NULL,    NULL,     NULL  },
-/* 119  w  */    {  NULL,    NULL,     NULL  },
-/* 120  x  */    {  NULL,    NULL,     NULL  },
-/* 121  y  */    {  NULL,    NULL,     NULL  },
-/* 122  z  */    {  NULL,    NULL,     NULL  },
-/* 123  {  */    { "%7b" ,   "{",      NULL  },
-/* 124  |  */    { "%7c" ,   "|",      NULL  },
-/* 125  }  */    { "%7d" ,   "}",      NULL  },
-/* 126  ~  */    { "%7e" ,   "~",      NULL  },
-/* 127  \7f */    { "%7f" ,   "\7f",       NULL  },
-/* 128  \80   */    { "%80" ,   "\80",     NULL  },
-/* 129  \81   */   { "%81" ,   "\81",      NULL  },
-/* 130  \82   */   { "%82" ,   "\82",      NULL  },
-/* 131  \83   */   { "%83" ,   "\83",      NULL  },
-/* 132  \84   */   { "%84" ,   "\84",      NULL  },
-/* 133  \85   */   { "%85" ,   "\85",      NULL  },
-/* 134  \86   */   { "%86" ,   "\86",      NULL  },
-/* 135  \87   */   { "%87" ,   "\87",      NULL  },
-/* 136  \88   */   { "%88" ,   "\88",      NULL  },
-/* 137  \89   */   { "%89" ,   "\89",      NULL  },
-/* 138  \8a   */   { "%8a" ,   "\8a",      NULL  },
-/* 139  \8b   */   { "%8b" ,   "\8b",      NULL  },
-/* 140  \8c   */   { "%8c" ,   "\8c",      NULL  },
-/* 141  \8d   */   { "%8d" ,   "\8d",      NULL  },
-/* 142  \8e   */   { "%8e" ,   "\8e",      NULL  },
-/* 143  \8f   */   { "%8f" ,   "\8f",      NULL  },
-/* 144  \90   */   { "%90" ,   "\90",      NULL  },
-/* 145  \91   */   { "%91" ,   "\91",      NULL  },
-/* 146  \92   */   { "%92" ,   "\92",      NULL  },
-/* 147  \93   */   { "%93" ,   "\93",      NULL  },
-/* 148  \94   */   { "%94" ,   "\94",      NULL  },
-/* 149  \95   */   { "%95" ,   "\95",      NULL  },
-/* 150  \96   */   { "%96" ,   "\96",      NULL  },
-/* 151  \97   */   { "%97" ,   "\97",      NULL  },
-/* 152  \98   */   { "%98" ,   "\98",      NULL  },
-/* 153  \99   */   { "%99" ,   "\99",      NULL  },
-/* 154  \9a   */   { "%9a" ,   "\9a",      NULL  },
-/* 155  \9b   */   { "%9b" ,   "\9b",      NULL  },
-/* 156  \9c   */   { "%9c" ,   "\9c",      NULL  },
-/* 157  \9d   */   { "%9d" ,   "\9d",      NULL  },
-/* 158  \9e   */   { "%9e" ,   "\9e",      NULL  },
-/* 159  \9f   */   { "%9f" ,   "\9f",      NULL  },
-/* 160     */    { "%a0" ,   "",       NULL  },
-/* 161     */    { "%a1" ,   "",       NULL  },
-/* 162     */    { "%a2" ,   "",       NULL  },
-/* 163     */    { "%a3" ,   "",       NULL  },
-/* 164     */    { "%a4" ,   "",       NULL  },
-/* 165     */    { "%a5" ,   "",       NULL  },
-/* 166     */    { "%a6" ,   "",       NULL  },
-/* 167     */    { "%a7" ,   "",       NULL  },
-/* 168     */    { "%a8" ,   "",       NULL  },
-/* 169     */    { "%a9" ,   "",       NULL  },
-/* 170     */    { "%aa" ,   "",       NULL  },
-/* 171     */    { "%ab" ,   "",       NULL  },
-/* 172     */    { "%ac" ,   "",       NULL  },
-/* 173     */    { "%ad" ,   "",       NULL  },
-/* 174     */    { "%ae" ,   "",       NULL  },
-/* 175     */    { "%af" ,   "",       NULL  },
-/* 176     */    { "%b0" ,   "",       NULL  },
-/* 177     */    { "%b1" ,   "",       NULL  },
-/* 178     */    { "%b2" ,   "",       NULL  },
-/* 179     */    { "%b3" ,   "",       NULL  },
-/* 180     */    { "%b4" ,   "",       NULL  },
-/* 181     */    { "%b5" ,   "",       NULL  },
-/* 182     */    { "%b6" ,   "",       NULL  },
-/* 183     */    { "%b7" ,   "",       NULL  },
-/* 184     */    { "%b8" ,   "",       NULL  },
-/* 185     */    { "%b9" ,   "",       NULL  },
-/* 186     */    { "%ba" ,   "",       NULL  },
-/* 187     */    { "%bb" ,   "",       NULL  },
-/* 188     */    { "%bc" ,   "",       NULL  },
-/* 189     */    { "%bd" ,   "",       NULL  },
-/* 190     */    { "%be" ,   "",       NULL  },
-/* 191     */    { "%bf" ,   "",       NULL  },
-/* 192     */    { "%c0" ,   "&Agrave;",    "A"  },
-/* 193     */    { "%c1" ,   "&Aacute;",    "A"  },
-/* 194     */    { "%c2" ,   "&Acirc;",     "A"  },
-/* 195     */    { "%c3" ,   "&Atilde;",    "A"  },
-/* 196     */    { "%c4" ,   "&Auml;",      "Ae"  },
-/* 197     */    { "%c5" ,   "&Aring;",     "A"  },
-/* 198     */    { "%c6" ,   "&AElig;",     "AE"  },
-/* 199     */    { "%c7" ,   "&Ccedil;",    "C"  },
-/* 200     */    { "%c8" ,   "&Egrave;",    "E"  },
-/* 201     */    { "%c9" ,   "&Eacute;",    "E"  },
-/* 202     */    { "%ca" ,   "&Ecirc;",     "E"  },
-/* 203     */    { "%cb" ,   "&Euml;",      "E"  },
-/* 204     */    { "%cc" ,   "&Igrave;",    "I"  },
-/* 205     */    { "%cd" ,   "&Iacute;",    "I"  },
-/* 206     */    { "%ce" ,   "&Icirc;",     "I"  },
-/* 207     */    { "%cf" ,   "&Iuml;",      "I"  },
-/* 208     */    { "%d0" ,   "&ETH;",       "Eth"  },
-/* 209     */    { "%d1" ,   "&Ntilde;",    "N"  },
-/* 210     */    { "%d2" ,   "&Ograve;",    "O"  },
-/* 211     */    { "%d3" ,   "&Oacute;",    "O"  },
-/* 212     */    { "%d4" ,   "&Ocirc;",     "O"  },
-/* 213     */    { "%d5" ,   "&Otilde;",    "O"  },
-/* 214     */    { "%d6" ,   "&Ouml;",      "Oe"  },
-/* 215     */    { "%d7" ,   "x",           "x"  },
-/* 216     */    { "%d8" ,   "&Oslash;",    "O"  },
-/* 217     */    { "%d9" ,   "&Ugrave;",    "U"  },
-/* 218     */    { "%da" ,   "&Uacute;",    "U"  },
-/* 219     */    { "%db" ,   "&Ucirc;",     "U"  },
-/* 220     */    { "%dc" ,   "&Uuml;",      "Ue"  },
-/* 221     */    { "%dd" ,   "&Yacute;",    "Y"  },
-/* 222     */    { "%de" ,   "&THORN;",     NULL  },
-/* 223     */    { "%df" ,   "&szlig;",     "ss"  },
-/* 224     */    { "%e0" ,   "&agrave;",    "a"  },
-/* 225     */    { "%e1" ,   "&aacute;",    "a"  },
-/* 226     */    { "%e2" ,   "&acirc;",     "a"  },
-/* 227     */    { "%e3" ,   "&atilde;",    "a"  },
-/* 228     */    { "%e4" ,   "&auml;",      "ae"  },
-/* 229     */    { "%e5" ,   "&aring;",     "a"  },
-/* 230     */    { "%e6" ,   "&aelig;",     "ae"  },
-/* 231     */    { "%e7" ,   "&ccedil;",    "c"  },
-/* 232     */    { "%e8" ,   "&egrave;",    "e"  },
-/* 233     */    { "%e9" ,   "&eacute;",    "e"  },
-/* 234     */    { "%ea" ,   "&ecirc;",     "e"  },
-/* 235     */    { "%eb" ,   "&euml;",      "e"  },
-/* 236     */    { "%ec" ,   "&igrave;",    "i"  },
-/* 237     */    { "%ed" ,   "&iacute;",    "i"  },
-/* 238     */    { "%ee" ,   "&icirc;",     "i"  },
-/* 239     */    { "%ef" ,   "&iuml;",      "i"  },
-/* 240     */    { "%f0" ,   "&eth;",       "eth"  },
-/* 241     */    { "%f1" ,   "&ntilde;",    "n"  },
-/* 242     */    { "%f2" ,   "&ograve;",    "o"  },
-/* 243     */    { "%f3" ,   "&oacute;",    "o"  },
-/* 244     */    { "%f4" ,   "&ocirc;",     "o"  },
-/* 245     */    { "%f5" ,   "&otilde;",    "o"  },
-/* 246     */    { "%f6" ,   "&ouml;",      "oe"  },
-/* 247     */    { "%f7" ,   "/",           "/"  },
-/* 248     */    { "%f8" ,   "&oslash;",    "o"  },
-/* 249     */    { "%f9" ,   "&ugrave;",    "u"  },
-/* 250     */    { "%fa" ,   "&uacute;",    "u"  },
-/* 251     */    { "%fb" ,   "&ucirc;",     "u"  },
-/* 252     */    { "%fc" ,   "&uuml;",      "ue"  },
-/* 253     */    { "%fd" ,   "&yacute;",    "y"  },
-/* 254     */    { "%fe" ,   "&thorn;",     NULL  },
-/* 255     */    { "%ff" ,   "&yuml;",      "y"  },
-/* 256  EOF*/    {  NULL,    NULL,          NULL  },
-};
-
-#endif /* _SUPPORT_ */
-
-
diff --git a/contrib/tweb/support_exp.h b/contrib/tweb/support_exp.h
deleted file mode 100644 (file)
index 9df9795..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* support_exp.h                                                            *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - Supporting Routines              *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            December 2 1995              Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 7 1999           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: support_exp.h,v 1.6 1999/09/10 15:01:20 zrnsk01 Exp $
- *
- */
-
-#ifndef _SUPPORT_EXP_H_
-#define _SUPPORT_EXP_H_
-
-PUBLIC char * hex_decode ();
-PUBLIC char * hex_qdecode ();
-PUBLIC char * form_encode ();
-
-PUBLIC char * format_date ();
-PUBLIC char * friendly_dn ();
-PUBLIC char * format_time ();
-PUBLIC char * strQuoteChr();
-PUBLIC int    strlstcmp (/* char *s1, char *s2, char sep */);
-PUBLIC void   re_fail ();
-PUBLIC char *dnrcut(/*rdn, target, basecount*/);
-PUBLIC void  disp_file (/* GLOB_STRUCT glob, char *filename, FILE *fp */);
-
-PUBLIC char *elapsed();
-
-PUBLIC char *hex_html_encode();
-
-#define hex_encode(x) hex_html_encode((x), 0)
-#define char2html(x) hex_html_encode((x), 1)
-#define flatten_chars(x) hex_html_encode((x), 2)
-
-PUBLIC char * get_parentDN();
-PUBLIC char **dn2charray();
-PUBLIC char * strrQuoteChr();
-PUBLIC int exit_tweb();
-
-
-/*  dn_cmp and return codes  */
-PUBLIC int dn_cmp( /* dn1, dn2 */ );
-PUBLIC int dn_cmp_parts( /* dn1, dn2, &matched */ );
-#define DN_EQUAL       0       /*  dns are exactly equal            */
-#define DN_LESS       -1       /*  dn1 is part of dn2               */
-#define DN_GREATER     1       /*  dn2 is part of dn1               */
-#define DN_UNMATCHED  -2       /*  dns differ, matched is the same  */
-                               /*    (matched as seen from c down)  */
-
-
-#endif
-
diff --git a/contrib/tweb/tgeneral.h b/contrib/tweb/tgeneral.h
deleted file mode 100644 (file)
index bdaf57b..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* tgeneral.h.                                                              *
-*                                                                          *
-* Function:..General-Headerfile for TWEB                                   *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: tgeneral.h,v 1.8 1999/09/13 13:47:47 zrnsk01 Exp $
- *
- */
-
-
-#ifndef _TGENERAL_
-#define _TGENERAL_
-
-#define PUBLIC
-#define PRIVATE static
-
-/* For changes see file CHANGES */
-#ifdef __hpux
-#define _INCLUDE_POSIX_SOURCE
-#define _INCLUDE_XOPEN_SOURCE
-#define _INCLUDE_HPUX_SOURCE
-#define TIOCNOTTY   _IO('t', 113)
-#define getdtablesize() _NFILE
-#endif
-
-#if defined( __linux__ ) && !defined( _BSD_SOURCE )
-#define  _BSD_SOURCE
-#define  _SVID_SOURCE
-#define  _GNU_SOURCE
-#define  _POSIX_SOURCE
-#endif
-
-#include <string.h>
-#include <strings.h>
-#include <sys/time.h>
-#include <time.h>
-#include "lber.h"
-#include "ldap.h"
-#include <stdio.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <syslog.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-/*  Support of LDAP API versions */
-#if LDAP_API_VERSION >= 2003 && LDAP_API_VERSION <= 2010
-#define OL_LDAPV               3
-#else
-#  if LDAP_API_VERSION >= 2001 && LDAP_API_VERSION <= 2010
-#  define OL_LDAPV             2
-#  else
-#    define OL_LDAPV   0
-#  endif
-#endif
-
-#  define ldap_debug debug
-
-#if OL_LDAPV > 2
-#  include "portable.h"
-#  include "ldap_log.h"
-#endif
-
-extern   int   errno;
-
-
-#include "strng_exp.h"
-
-#ifndef TRUE
-#define TRUE   1
-#endif
-#ifndef FALSE
-#define FALSE  0
-#endif
-#define OK     1
-#define NOTOK  0
-#define DONE -1
-#define  _TIMEOUT_LEN   31
-#define  _LOG_TIME     "%a, %d.%m.%y, %H:%M:%S"
-
-#include "init_exp.h"
-extern GLOB_STRUCT *globP;
-
-/*
- ***************************************************************************
- * If you are not a University of Tuebingen site, 
- * you probably want to tailor the following:
- ***************************************************************************
- */
-
-/* Special code for DFN-Project AMBIX-D */
-#ifdef AMBIXGW
-
-#  define SELBST_CN          glob->selbsteintrag[0]
-#  define SELBST_CN_NAME     glob->selbsteintrag[1]
-#  define SELBST_STUDIE_ATTR glob->selbsteintrag[2]
-#  define SELBST_INSERT_MODE glob->selbsteintrag[3]
-#  define SELBST_INSERT_WHO  glob->selbsteintrag[4]
-#  define SELBST_INSERT_NO   glob->selbsteintrag[5]
-#  define SELBST_INSERT_WORK glob->selbsteintrag[6]
-#  define SELBST_INSERT_ALL  glob->selbsteintrag[7]
-#  define SELBST_INSERT_STUD glob->selbsteintrag[8]
-
-#  define MAXDN_LEN 2048
-
-extern void self_insert();
-
-#endif
-
-
-
-/* Flags for print_attr */
-#define DEFAULT        0
-#define MULTILINE      1
-#define HREF           2
-#define FINGER         3
-#define DATE           4
-#define URL            5
-#define MAILTO         6
-#define MOVETO         7
-#define BMP            8
-#define JPEG           9
-#define JPEG2GIF      10
-#define BOOLEAN       11
-#define URI           12
-#define PGPKEY        13
-#define INDEXURL      14
-#define DYNAMICDN     15
-#define REFERRAL      20
-#define PRE           21
-#define HEADER        22
-
-#ifdef TUE_TEL
-#define PHONREFSHORT  16
-#define PHONREFLONG   17
-#define TFUNCPERS     18
-#define FAXTABLE      19
-#endif
-
-
-/* Patch for hpux from ksp: */
-#ifdef __hpux
-#  define rewind(a) fflush(a)
-#endif
-
-#define G3TOXBM "cat"
-#define JPEGTOGIF "/soft/bin/djpeg -gif"
-
-/*
- *************************************************************************
- * The rest of this stuff probably does not need to be changed
- *************************************************************************
- */
-
-#define TIMEOUT        240
-#define WEB500PORT    8889
-
-#ifndef FD_SET
-#define NFDBITS         32
-#define FD_SETSIZE      32
-#define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
-#define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
-#define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define FD_ZERO(p)      bzero((char *)(p), sizeof(*(p)))
-#endif
-
-#define from_hex(c)    ((c>='0')&&(c<='9') ? c-'0' : (c>='A')&&(c<='F') ?\
-            c-'A'+10 : (c>='a')&&(c<='f') ? c-'a'+10 : 0)
-
-/*
- * HTTP request we are implementing
- */
-
-#define    UNKNOWN    0
-#define    GET        1
-#define    HEAD       2
-
-/*
- * HTTP response status
- */
-#define DOCUMENT_FOLLOWS  200
-#define REDIRECT          302
-#define BAD_REQUEST       400
-#define AUTH_REQUIRED     401
-#define FORBIDDEN         403
-#define NOT_FOUND         404
-#define SERVER_ERROR      500
-#define NOT_IMPLEMENTED   501
-
-#define PRINT_HTML_HEADER     (fprintf(fp, \
-"HTTP/1.0 %d Document follows\n\
-MIME-Version: 1.0\n\
-Server: %s\n\
-Date: %s\n\
-Content-Type: text/html\n\
-Last-Modified: %s\n\
-%s\n",\
-DOCUMENT_FOLLOWS, version, glob->nowtimestr, glob->nowtimestr,\
- glob->caching ? glob->expiretimestr : "Pragma: no-cache\n" ))
-
-#define PRINT_PLAIN_HEADER     (fprintf(fp, \
-"HTTP/1.0 %d Document follows\n\
-MIME-Version: 1.0\n\
-Server: %s\n\
-Date: %s\n\
-Content-Type: text/plain\n\
-Last-Modified: %s\n\
-%s\n",\
-DOCUMENT_FOLLOWS, version, glob->nowtimestr, glob->nowtimestr,\
- glob->caching ? glob->expiretimestr : "Pragma: no-cache\n" ))
-
-#define PRINT_REDIRECT_HEADER     (fprintf(fp, \
-"HTTP/1.0 302 Found\n\
-MIME-Version: 1.0\n\
-Server: %s\n\
-Date: %s\n\
-Location: %s\n\
-Content-Type: text/html\n\
-Last-Modified: %s\n\
-%s\n",\
-version, glob->nowtimestr, query, glob->nowtimestr,\
- glob->caching ? glob->expiretimestr : "Pragma: no-cache\n" ))
-
-#define HTML_HEAD_TITLE "<HTML><HEAD><TITLE>%s</TITLE></HEAD><%s>"
-
-#define PRINT_HTML_FOOTER     (fprintf(fp, "</BODY></HTML>"))
-
-/* Meta-Syntax of Gateway-Switching feature */
-#define GWS        "(gw)"
-#define GWS_FORMAT "(gw-%s)"
-
-
-#define OUT_TIME 900
-
-/* Separator in UFNs */
-#define UFNSEP ","
-
-#endif /* _TGENERAL_ */
-
diff --git a/contrib/tweb/tglobal.h b/contrib/tweb/tglobal.h
deleted file mode 100644 (file)
index 147c320..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* tglobal.h..                                                              *
-*                                                                          *
-* Function:..Global variables for TWEB                                     *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1996               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: tglobal.h,v 1.8 1999/09/13 13:47:47 zrnsk01 Exp $
- *
- */
-
-
-#ifndef _TGLOBAL_
-#define _TGLOBAL_
-
-#include "lber.h"
-#include "ldap.h"
-
-
-extern int     debug;
-extern int     dosyslog;
-extern int  ldap_syslog;
-extern int  ldap_syslog_level;
-
-extern struct timeval timestore[];
-extern int items_displayed;
-
-extern int             searchaliases;
-
-#if OL_LDAPV >= 2
-
-extern LDAPFriendlyMap      *fm;
-
-#else
-
-extern FriendlyMap      *fm;
-
-#endif
-
-extern LDAPFiltDesc    *filtd;
-
-extern char    version[];
-extern char    copyright[];
-
-extern int     http;   /* HTTP-header in request -> also in reply */
-
-extern int     request;
-
-
-#endif /* _TGLOBAL */
-
-
diff --git a/contrib/tweb/tweb.c b/contrib/tweb/tweb.c
deleted file mode 100644 (file)
index fcf454c..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* tweb.c.....                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway  MAIN-Routine                      *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            December 31 1996           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: tweb.c,v 1.6 1999/09/10 15:01:20 zrnsk01 Exp $
- *
- */
-
-
-/*
- * redesign BW 94/08/16 
- * patched for HPUX 9.x by /KSp, 94/04/28
- * patched for AMBIX-D and use at University of Tuebingen by /KSp,
- * patched for always-assume-nonleaf-behaviour-and-reread-on-demand; /KSp
- * patched for restricted listing of Tuebinger students; /KSp
- * patched for mailto HREF in mail attribute; /KSp
- * patched for automatic referral to Chemnitz in case of ROOT access
- *             (AMBIX version only); /KSp
- * patched for correct response in case of not found error; /MCl
- * neg patched: subtree search below locality removed; /KSp
- * patched for automatic referral to AMBIX in case of l=DFN access
- *             (non-AMBIX version only); /KSp
- * patched for lower case compare during access control; /KSp
- * patched for menu-'seeAlso' in AMBIXGW; /KSp
- * patched for pgpPubKey formatting as MULTILINE; /KSP
- * correction of MULTILINE handling; /KSp
- * objectClass deleted from menu list entry in html-code; /KSp
- * patched for "Selbsteintrag" needed by AMBIX-Project /mc
- *             last update: 95/07/07
- *
- * 95/07/17 changed to ANSI-C, deleted lots of compiletime-options. /mc
- *         
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that this notice is preserved and that due credit is given
- * to the University of Tuebingen. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission. This software
- * is provided ``as is'' without express or implied warranty.
- *
- * ----------------------------------------------------------------------
- */
-
-#include "tweb.h"
-
-PUBLIC int main (argc, argv)
-int argc;
-char **argv;
-
-{
-    /* The Glob-structure is NOT a global variable, but is stored here for
-       all other functions !!! */
-    GLOB_STRUCT glob;
-    char lang[BUFSIZ];
-    int pid, i;
-
-    /* make glob global available */
-    globP = &glob;
-
-    /* first of all the language-parameter is scanned from the command-line
-       and is written as first value to the Glob-structure */
-    get_lang(argc, argv, lang);
-    bzero((char *) &glob, sizeof(GLOB_STRUCT));
-    glob.olang = strdup(lang);
-
-    /* Now start a process for each language and terminate the super-process */
-    for(i=0; i<strlen(lang); i++){
-
-        /* memorize the sub-process-language */
-        *glob.lang = lang[i];
-
-        switch( pid = fork() ) {
-
-        /* the Sub-Process */
-        case  0:
-            do_child(argc, argv,lang, &glob);
-            break;
-
-        /* A Sub-Process could not be created !!! */
-        case -1:
-            perror( "fork" );
-            break;
-
-        /* the Parent-Process */
-        default:
-            if ( debug )
-                fprintf( stderr, "forked child %d\n", pid );
-            break;
-        }
-    }
-
-       return( 0 );
-}
-/* end of function: main */
-    
-
-/**
- **  do_child()
- **
- **    Main-Function for the working-processes; until now only the
- **    language is initialized. The rest of the configuration 
- **    must be scanned now.
- **/
-
-PRIVATE void do_child(argc, argv,lang, glob)
-int argc;
-char **argv;
-char *lang;
-GLOB_STRUCT *glob;
-
-{
-    FILE *fp = NULL;
-    char filename[BUFSIZ];
-
-    /*  read language-independent (.rc) and -dependent (.conf) configuration */
-    init(argv, lang, glob);
-
-    /*  read commandline-parameter (they overwrite conf) */
-    getopts (argc, argv, glob);
-
-    /*  If debug-Mode: Configuration Output */
-    if (debug) {
-
-        sprintf(filename, "%s.debug", glob->myname);
-        fp =fopen(filename, "a");
-        fprintf(fp, "\n\n\n#####%s.%s-log Date: %s\n\n",
-                           glob->myname, glob->lang, format_time(NULL));
-        output(fp, glob, FALSE);
-
-    }
-
-    /*  read language-strings (from .lang) and write out if desired */
-    langinit(glob);
-
-    if (debug) {
-
-        langoutput(fp, glob, FALSE);
-        fclose(fp);
-
-    }
-
-    /*  Final Configuration-Test */
-    check(glob);
-
-    /*  If dynamic Gateway-Switching is enabled the language-dependent
-        recognition-string for the meta-Syntax must be fixed
-        (language-independent recognition-string is given in Macro GWS ) */
-    if(glob->gw_switch->dynamic) {
-        char strbuf[BUFSIZ];
-
-        sprintf(strbuf, GWS_FORMAT, glob->la[0]);
-        glob->gw_switch->lagws = strdup(strbuf);
-    }
-
-    /*  and now start the Gateway ... */
-    start_server(glob);
-
-}
-/* end of function: do_child */
-
-
diff --git a/contrib/tweb/tweb.h b/contrib/tweb/tweb.h
deleted file mode 100644 (file)
index 1c6869e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* tweb.h.....                                                              *
-*                                                                          *
-* Function:..Header-File for TWEB-SOFTWARE                                 *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: tweb.h,v 1.8 1999/09/13 13:47:47 zrnsk01 Exp $
- *
- */
-
-
-#ifndef _TWEB_
-#define _TWEB_
-
-
-#include "tgeneral.h"
-#include "init_exp.h"
-#include "server_exp.h"
-#include "support_exp.h"
-
-PRIVATE void do_child();
-int    debug                 = 0;
-int ldap_syslog           = 0;
-int ldap_syslog_level     = 0;
-
-int    dosyslog = 0;
-
-GLOB_STRUCT *globP;
-
-int            searchaliases = 1;
-
-#if OL_LDAPV >= 2
-
-LDAPFriendlyMap     *fm = NULL;
-
-#else
-
-FriendlyMap     *fm = NULL;
-
-#endif
-
-LDAPFiltDesc   *filtd;
-
-extern char    version[];
-
-int    http = 1;       /* HTTP Version ??? */
-
-int    request = UNKNOWN;
-
-
-
-#endif /* _TWEB_ */
-
-
diff --git a/contrib/tweb/x500.c b/contrib/tweb/x500.c
deleted file mode 100644 (file)
index 447060f..0000000
+++ /dev/null
@@ -1,2168 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* x500.c.....                                                              *
-*                                                                          *
-* Function:..WorldWideWeb-X.500-Gateway - X.500-Access-Routines            *
-*            Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
-*            which is based on go500gw by Tim Howes, University of         *
-*            Michigan  - All rights reserved                               *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            August 16 1995               Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            September 13 1999          ZZZZZ  DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: x500.c,v 1.10 1999/09/13 13:47:48 zrnsk01 Exp $
- *
- */
-
-#include "tgeneral.h"
-#include "tglobal.h"
-#include "x500.h"
-#include "init_exp.h"
-#include "support_exp.h"
-#include "html_exp.h"
-
-#ifdef TUE_TEL
-#include "tueTel_exp.h"
-#endif
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-#include "resort_exp.h"
-#endif
-
-
-PRIVATE int compare(a,b)
-DNLIST **a, **b;
-{
-        return strcmp((*a)->string,(*b)->string);
-}
-/* end of function: compare */
-
-
-PRIVATE char * pick_oc(oclist)
-char **oclist;
-{
-    int    i;
-
-    if ( oclist == NULL )
-        return( "unknown" );
-
-    for ( i = 0; oclist[i] != NULL; i++ ) {
-        if ( strcasecmp( oclist[i], "top" ) != 0 &&
-            strcasecmp( oclist[i], "quipuObject" ) != 0 &&
-            strcasecmp( oclist[i], "quipuNonLeafObject" ) != 0 )
-            return( str_tolower (oclist[i]) );
-    }
-
-    return( "unknown" );
-}
-/* end of function: pick_oc */
-
-
-PUBLIC char * make_oc_to_string(oc)
-char **oc;
-{
-    static char oc_res[BUFSIZ];
-    int i;
-
-    if(!oc) return(NULL);
-
-    *oc_res = '|';
-    *(oc_res+1) = '\0';
-    for(i = 0; oc[i] && *oc[i]; i++) {
-        sprintf(oc_res, "%s%s|", oc_res, oc[i]);
-    }
-    return(str_tolower (oc_res));
-}
-/* end of function: make_oc_to_string */
-
-
-PUBLIC void do_xtend(ld, fp, query, filter, glob)
-LDAP *ld;
-FILE *fp;
-char *query;
-char *filter;
-GLOB_STRUCT *glob;
-{
-    char *strptr, dn[BUFSIZ], command[BUFSIZ], extension[BUFSIZ];
-
-    strptr = strchr(query, '?');
-    *strptr++ = '\0';
-    strcpy(dn, query);
-    strcpy(command, strptr);
-    if( ( strptr = strchr(command, '#')) ) {
-        *strptr++ = '\0';
-        strcpy(extension, strptr);
-    }
-    
-    if(!strcasecmp(command, "MENU")){
-        glob->tables_marker = strdup(extension);
-        do_menu(ld, fp, dn, "", glob);
-    }
-    
-#ifdef TUE_TEL
-    if(!strcasecmp(command, "PHONEBOOK")){
-        do_phonebook(ld, fp, strstr(dn, "ou=TELEFONBUCH") ? dn
-                             : NULL, extension, glob, 1);
-    }
-#endif
-
-}
-/* end of function: do_xtend */
-
-PUBLIC void do_menu(ld, fp, dn, filter, glob)
-LDAP *ld;
-FILE *fp;
-char *dn;
-char *filter;
-GLOB_STRUCT *glob;
-{
-    int             rc;
-    LDAPMessage     *pres;
-    struct timeval  timeout;
-    static char     *sattrs[] = { "objectClass", "labeledURI",
-                                     "aliasedObjectName", "mail",
-                                     "cn", "telephonenumber",
-#ifdef TUE_TEL
-                                     "tat_ton", "tat_refphone",
-#endif
-                                     0 };
-    static char **attrs = NULL;
-    int counter = 0;
-    pSEARCH_ONLY_LINE so_ptr;
-    char        la_url[BUFSIZ];
-    int count;
-    char           *ufn;
-
-#if OL_LDAPV > 0
-       int         ldap_opt;
-#endif
-
-    if(!attrs)
-        attrs = (char**) charray_dup(sattrs);
-
-    charray_merge(&attrs, glob->sort_attribs);
-
-    if(glob->raw_data)
-        charray_merge(&attrs, glob->raw_attrs);
-
-    for(so_ptr = glob->search_only; so_ptr; so_ptr = so_ptr->next) {
-        if (dn_cmp(dn, so_ptr->dn) == 0) {
-            break;
-        }
-    }
-
-    if(!so_ptr) {
-
-        timeout.tv_sec = glob->timeout;
-        timeout.tv_usec = 0;
-
-#if OL_LDAPV > 0
-
-               ldap_opt = LDAP_DEREF_FINDING;
-        ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-        ld->ld_deref = LDAP_DEREF_FINDING;
-#endif
-
-        if ( (rc = ldap_search_st( ld, dn, LDAP_SCOPE_ONELEVEL,
-            glob->menu_filter, attrs, 0, &timeout, &pres )) != LDAP_SUCCESS
-            && rc != LDAP_SIZELIMIT_EXCEEDED 
-                && rc != LDAP_INSUFFICIENT_ACCESS ) {
-            do_error(fp, rc, NOT_FOUND, glob);
-            return;
-        }
-
-        if (rc == LDAP_SIZELIMIT_EXCEEDED) glob->persRestricted = TRUE;
-
-#if OL_LDAPV > 0
-
-               ldap_opt = LDAP_DEREF_ALWAYS;
-        ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-        ld->ld_deref = LDAP_DEREF_ALWAYS;
-#endif
-
-        if ((count = (ldap_count_entries(ld, pres) )) < 1) {
-            ldap_msgfree (pres);
-            do_read (ld, fp, dn, 0, glob);
-            return;
-        }
-        items_displayed = count;
-    }
-
-    if (http == 1) {
-        PRINT_HTML_HEADER;
-    }
-    if (request == HEAD) {
-        fflush(fp);
-        exit_tweb (1);
-    }
-    fprintf( fp, HTML_HEAD_TITLE, ufn = friendly_dn(dn, glob), glob->la[100]);
-    if ( ufn ) free( ufn );
-
-    if (dn_cmp(dn, glob->basedn->dn) == 0)
-        disp_file(glob, glob->basedn->head, fp);
-    else if(so_ptr && so_ptr->head)
-        disp_file(glob, so_ptr->head, fp);
-    else
-        disp_file(glob, glob->header, fp);
-
-#ifdef TUE_TEL
-    fprintf (fp, "\n<A NAME=\"phonebook=Telefonbuch\"></A>\n");
-    fprintf (fp, "\n<A NAME=\"phonebook\"></A>\n");
-#endif
-
-    make_la_buttons("M", fp, ld, dn, la_url, glob );
-
-    make_header( fp, dn, 0, glob);
-
-    print_rdn(fp, dn, glob);
-
-    make_search_box(fp, ld, dn, glob);
-
-#ifdef AMBIXGW
-    /* Button leading to cgi-script */
-    if( glob->form_button && !glob->selbsteintrag[0]){
-        char  **oc;
-        LDAPMessage    *res;
-        struct timeval    timeout;
-        static char    *attrs[] = { "objectClass", 0 };
-
-        timeout.tv_sec = glob->timeout;
-        timeout.tv_usec = 0;
-        if ( ldap_search_st( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
-            attrs, 0, &timeout, &res ) != LDAP_SUCCESS ) {
-            exit_tweb( 1 );
-        }
-        oc = ldap_get_values( ld, ldap_first_entry( ld, res ), "objectClass" );
-
-        disp_form_button(0, oc, dn, ld, fp, glob);
-    }
-
-    /* check to see if selfinsert-buttons are appropriate here */
-    if(glob->selbsteintrag[0])
-        self_insert(ld,fp,dn,glob);
-#endif
-
-#ifdef TUE_TEL
-    /* Named link to skip header */
-    fprintf (fp, "\n<A NAME=\"pure-data\"></A>\n");
-#endif
-
-    fprintf(fp, glob->la[101]);
-
-
-    if(!so_ptr) {
-
-        /*  DO_MENU  */
-        counter = sort_result( ld, pres, dn, glob);
-
-        /* get time for performance log */
-        gettimeofday(&timestore[4], NULL);
-
-        list_output(fp, glob);
-
-        if ( ldap_result2error( ld, pres, 1 ) == LDAP_SIZELIMIT_EXCEEDED
-            || glob->restricted )
-            do_sizelimit(fp, 1, glob);
-
-        if(glob->legal && !glob->legal_top)
-            fprintf (fp, "%s\n%s\n", glob->la[101],
-                            glob->is_proxy ? glob->la[104] : glob->la[65]);
-    }
-
-    if (dn_cmp(dn,glob->basedn->dn) == 0)
-        disp_file(glob, glob->basedn->foot, fp);
-    else if(so_ptr && so_ptr->foot)
-        disp_file(glob, so_ptr->foot, fp);
-    else
-        disp_file(glob, glob->footer, fp);
-
-    PRINT_HTML_FOOTER;
-}
-/* end of function: do_menu */
-
-
-PRIVATE int make_scope(ld, dn, glob)
-LDAP *ld;
-char *dn;
-GLOB_STRUCT *glob;
-{
-    int        scope, idx;
-    char        **oc;
-    LDAPMessage    *res;
-    struct timeval    timeout;
-    static char    *attrs[] = { "objectClass", 0 };
-
-    if ( strcmp( dn, "" ) == 0 )
-        return( LDAP_SCOPE_ONELEVEL );
-
-    timeout.tv_sec = glob->timeout;
-    timeout.tv_usec = 0;
-    if ( ldap_search_st( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
-        attrs, 0, &timeout, &res ) != LDAP_SUCCESS ) {
-        return( -1 );
-    }
-
-    oc = ldap_get_values( ld, ldap_first_entry( ld, res ), "objectClass" );
-
-    /* set scope according to configured object-classes */
-    scope = LDAP_SCOPE_ONELEVEL;
-    for(idx = 0; glob->subtree_search && glob->subtree_search[idx]; idx++)
-        if( charray_inlist( oc, glob->subtree_search[idx]))
-            scope = LDAP_SCOPE_SUBTREE;
-
-    ldap_value_free( oc );
-    ldap_msgfree( res );
-
-    return( scope );
-}
-/* end of function: make_scope */
-
-PUBLIC int do_search(ld, fp, query, glob)
-LDAP *ld;
-FILE *fp;
-char *query;
-GLOB_STRUCT *glob;
-{
-    int        scope;
-    char        *base, *filter, *strptr;
-    char        *filtertype;
-    int        count = 0, rc;
-    struct timeval    timeout;
-    LDAPFiltInfo    *fi;
-    LDAPMessage    *e, *res = NULL;
-    static char    *attrs[] = { "objectClass", "cn", "sn", "labeledURI", 
-                                 "aliasedObjectName", 0 };
-    int        counter = 0;
-    char               *ufn;
-    char title[BUFSIZ], title2[BUFSIZ];
-
-#if OL_LDAPV > 0
-       int         ldap_opt;
-#endif
-
-    glob->no_browse = FALSE;
-    
-/* query string: base-DN?[OS]=filter 
- *     search onelevel <--||--> search subtree 
- */
-    if ( (filter = strchr( query, '?' )) == NULL ) {
-        explain_error( fp, glob->la[89], BAD_REQUEST, glob );
-        exit_tweb( 1 );
-    }
-    *filter++ = '\0';
-    if (*filter == '\0' || *(filter+1) != '=') {
-        explain_error( fp, glob->la[90], BAD_REQUEST, glob);
-        exit_tweb( 1 );
-    }
-    if( ( strptr = strchr(filter, '&')) )
-        *strptr = '\0';
-    if( ( strptr = strchr(filter, '*')) )
-        *strptr = '\0';
-    if (*filter == 'S') {
-        scope = LDAP_SCOPE_SUBTREE;
-    } else {
-        scope = LDAP_SCOPE_ONELEVEL;
-    }
-    filter += 2;
-    if (*filter == '\0') {
-        explain_error( fp, glob->la[92], BAD_REQUEST, glob);
-        exit_tweb( 1 );
-    }
-    /* deutsche Umlaute plaetten */
-    filter = flatten_chars(filter);
-
-    base = query;
-
-    filtertype = (scope == LDAP_SCOPE_ONELEVEL ? "web500gw onelevel" :
-        "web500gw subtree");
-
-#if OL_LDAPV > 0
-
-               ldap_opt = ( scope == LDAP_SCOPE_ONELEVEL ? LDAP_DEREF_FINDING :
-                                                LDAP_DEREF_ALWAYS );
-        ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-    ld->ld_deref = (scope == LDAP_SCOPE_ONELEVEL ? LDAP_DEREF_FINDING :
-                                                  LDAP_DEREF_ALWAYS);
-#endif
-
-    timeout.tv_sec = glob->timeout;
-    timeout.tv_usec = 0;
-
-    for (fi=ldap_getfirstfilter( filtd, filtertype, filter ); fi != NULL;
-        fi = ldap_getnextfilter( filtd ) ) {
-        if ( (rc = ldap_search_st( ld, base, scope, fi->lfi_filter,
-            attrs, 0, &timeout, &res )) != LDAP_SUCCESS
-            && rc != LDAP_SIZELIMIT_EXCEEDED ) {
-
-            if (dosyslog) {
-
-#if OL_LDAPV > 0
-
-                int ld_errno;
-
-                ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &ld_errno);
-                syslog (LOG_INFO, "ldap_search_st(): %s",
-                    ldap_err2string ( ld_errno ));
-
-#else
-                syslog (LOG_INFO, "ldap_search_st(): %s",
-                    ldap_err2string (ld->ld_errno));
-#endif
-
-            }
-
-            do_error(fp, rc, NOT_FOUND, glob);
-            return( 1 );
-        }
-
-        if ( res && (count = ldap_count_entries( ld, res )) != 0 ) {
-
-            break;
-        }
-
-    }
-    items_displayed = count;
-
-#if OL_LDAPV > 0
-
-               ldap_opt = LDAP_DEREF_ALWAYS;
-        ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-    ld->ld_deref = LDAP_DEREF_ALWAYS;
-#endif
-
-    if ( count == 0 ) {
-
-        if (http == 1) {
-            fprintf(fp, "HTTP/1.0 404 %s \n", glob->la[6]); 
-                        fprintf(fp, "MIME-Version: 1.0\n");
-                        fprintf(fp, "Content-Type: text/html\n\n");
-        }
-
-        if (request == HEAD) {
-            fflush(fp);
-            exit_tweb (1);
-        }    
-
-        sprintf( title, "%s %s", filter, glob->la[36]);
-        fprintf( fp, HTML_HEAD_TITLE, title, glob->la[100]);
-
-        disp_file(glob, glob->header, fp);
-
-        fprintf( fp,
- "<H2>%s</H2> %s <STRONG>%s</STRONG> in <STRONG>%s</STRONG></BODY></HTML>\n\n",
-                     glob->la[37], glob->la[38], filter, 
-                     (strlen(base) == 0) ? glob->la[77] : ldap_dn2ufn(base));
-                fflush(fp);
-        return( 0 );
-    }
-    else if ( count == 1 ) {
-        e = ldap_first_entry( ld, res );
-        if ( e != NULL ) {
-            char *dn, **oc;
-            oc = ldap_get_values(ld, e, "objectClass");
-            dn = ldap_get_dn(ld, e);
-            if ( dn ) {
-
-                /* GW-Switch if one search-result and dyn-URL by
-                   PRINT_REDIRECT_HEADER */
-        if ( glob->gw_switch->dynamic) {
-                    char **uri, query[10*BUFSIZ];
-                    int j;
-
-                    uri = ldap_get_values( ld, e, "labeledURI" );
-                    for(j=0; uri && uri[j] && *uri[j]; j++) {
-                        char *sp;
-
-                        if( ( sp = strchr(uri[j], ' ')) ) {
-                            *sp++ = '\0';
-                            if(strstr(sp, glob->gw_switch->lagws)) {
-                                /*sprintf(query, "%s/M%s", uri[j], dn);*/
-                                strcpy(query, uri[j]);
-                                hex_decode(query);
-                                PRINT_REDIRECT_HEADER;
-                                PRINT_HTML_FOOTER;
-                                exit_tweb(0);
-                            }
-                        }
-                    }
-                }
-                /* By default on one result: */
-                do_menu(ld, fp, dn, "", glob);
-                return (0);
-            }
-        }
-    }
-
-    if (http == 1)
-        PRINT_HTML_HEADER;
-    if (request == HEAD) {
-        fflush(fp);
-        exit_tweb (1); 
-        }
-
-    sprintf( title2, "%s %s", glob->la[39], filter);
-    fprintf( fp, HTML_HEAD_TITLE, title2, glob->la[100]);
-
-    disp_file(glob, glob->header, fp);
-
-    ufn = friendly_dn(base, glob);
-    fprintf( fp, "%s <STRONG>\"%s\"</STRONG> in <STRONG>\"%s\"</STRONG> ",
-                 glob->la[40], filter, ufn );
-    if ( ufn ) free( ufn );
-
-    if(!glob->noauth)
-        fprintf( fp, "(%d %s)<br>", count, 
-                         count == 1 ? glob->la[70] : glob->la[71]);
-
-      /*  DO_SEARCH  */
-      counter = sort_result( ld, res, base, glob);
-
-      /* get time for performance log */
-      gettimeofday(&timestore[4], NULL);
-
-     list_output(fp, glob);
-
-    if ( ldap_result2error( ld, res, 1 ) == LDAP_SIZELIMIT_EXCEEDED )
-        do_sizelimit(fp, 0, glob);
-
-    if(glob->legal && !glob->legal_top)
-        fprintf (fp, "%s\n%s\n", glob->la[101],
-                            glob->is_proxy ? glob->la[104] : glob->la[65]);
-    
-    disp_file(glob, glob->footer, fp);
-
-    PRINT_HTML_FOOTER;
-
-    return( 0 );
-
-}
-/* end of function: do_search */
-
-
-PRIVATE pDISPLAY
-find_dPtr( displayList, displayType )
-pDISPLAY   displayList;
-char      *displayType;
-{
-    pDISPLAY  dis;
-
-    for ( dis = displayList; dis; dis = dis->next ) {
-
-        if ( !strcasecmp( dis->ocs, displayType )) return( dis );
-
-    }
-
-    return( NULL );
-
-}  /*  find_dPtr  */
-
-
-PUBLIC void do_read(ld, fp, dn, amore, glob)
-LDAP *ld;
-FILE *fp;
-char *dn;
-int amore;
-GLOB_STRUCT *glob;
-{
-    int        rc, j;
-    char        **val, **s;
-    char        *rdn;
-    LDAPMessage    *res, *e;
-    struct timeval    timeout;
-    int        classFound;
-    pDISPLAY    d_ptr = NULL;
-    pDISPLAY_LINE    dis_ptr = NULL;
-    SORT_LINE *s_ptr;
-    char            la_url[BUFSIZ];
-    char      *ufn;
-    char already_displayed[BUFSIZ];
-    int header_attr_mode = 0;
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-       char      *parentDN;
-#endif
-
-
-    *already_displayed = ':';
-    *(already_displayed+1) = '\0';
-
-
-    timeout.tv_sec = glob->timeout;
-    timeout.tv_usec = 0;
-
-
-    if ( (rc = ldap_search_st( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
-        NULL, 0, &timeout, &res )) != LDAP_SUCCESS ) {
-        do_error(fp, rc, NOT_FOUND, glob);
-        return;
-    }
-
-
-    if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-        do_error(fp, -2, SERVER_ERROR, glob);
-        return;
-    }
-
-    val = ldap_get_values( ld, e, "objectClass" );
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-    /* toc_derefalias: read entry, aliasedObjectName is referring to */
-    if(charray_inlist(val, "toc_derefalias")){
-        char **new_dn;
-
-        new_dn = ldap_get_values( ld, e, "aliasedObjectName" );
-        if(new_dn && new_dn[0]) {
-            do_read(ld, fp, new_dn[0], amore, glob);
-            return;
-        }
-    }
-
-    /*  before displaying check for dynamic changes of the sorting parms  */
-       parentDN = get_parentDN( dn );
-    dynamicResort( ld, glob, parentDN );
-#endif
-
-        /* 
-         * check for objectClass via displayLists-Table which List
-         * of attributes we want to use.
-         */
-    classFound = -1;
-    for(s_ptr = glob->sort; s_ptr; s_ptr = s_ptr->next) {
-               char   buf[BUFSIZ];
-
-        d_ptr = s_ptr->display_class_ptr;
-
-        for( j=0; val[j]; j++ ) {
-            sprintf( buf, "|%s|", str_tolower( val[j] ));
-
-            if ( strstr( s_ptr->object_class, buf )) {
-                 classFound = 1;
-                 break;
-            }
-        }
-        if (classFound == 1) break;
-    }
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-    dynamicDisplay( ld, glob, parentDN,
-                            s_ptr ? s_ptr->display_class : "default" );
-#endif
-
-    if((classFound == -1) && (glob->default_display_type)) {
-        d_ptr = glob->default_display_type;
-        classFound = 1;
-    }
-
-    /* if we did not find a fitting objectClass, simply return */
-    if(classFound == -1) {
-
-        fprintf( fp, HTML_HEAD_TITLE, glob->la[22], glob->la[100]);
-        fprintf( fp, "\n%s</BODY></HTML>", glob->la[41]);
-        return;
-    }
-
-    /*  is the display description defined already  */
-    if ( !d_ptr && (( d_ptr = find_dPtr( glob->display,
-                                s_ptr->display_class )) == NULL )) {
-
-        if ( dosyslog )
-            syslog( LOG_INFO,
-                    "do_read(%08d): couldn't find display type <%s> -- FATAL.",
-                    glob->svc_cnt, s_ptr->display_class );
-
-        fprintf( fp, HTML_HEAD_TITLE, glob->la[22], glob->la[100]);
-        fprintf( fp, "\n%s</BODY></HTML>", glob->la[41]);
-        return;
-
-    }
-
-    /*  now we can point to the final display screen  */
-    dis_ptr = ( amore ? d_ptr->second_page : d_ptr->first_page );
-
-    if (http == 1) PRINT_HTML_HEADER;
-    if (request == HEAD) {                
-        fflush(fp);
-        exit_tweb (1);
-    }
-
-    dn = ldap_get_dn( ld, e );
-
-        if ( strcmp( dn, "" ) != 0 ) {  /* Not the root */
-        s = ldap_explode_dn( dn, 1 );
-                if ( s[1] == NULL )   /* toplevel */
-            rdn = ldap_friendly_name( glob->friendlyfile, s[0], &fm );
-        else 
-            rdn = s[0];
-    } else
-        rdn = glob->la[77];
-
-    fprintf( fp, HTML_HEAD_TITLE, ufn = friendly_dn( dn, glob ),
-                                    glob->la[100] );
-    if ( ufn ) free( ufn );
-
-    disp_file(glob, glob->header, fp);
-
-    if ( !glob->ldap_referral_mode ) {
-
-        make_la_buttons("R", fp, ld, dn, la_url, glob);
-        make_header( fp, dn, 0, glob );
-    } else {
-        fprintf( fp, glob->la[105]);
-    }
-    fprintf( fp, "<DL>");
-
-    fprintf( fp, glob->la[101]);
-
-    /* don't display rdn if first attribute is in header-mode */
-    if ( dis_ptr->ty == HEADER )
-        header_attr_mode = 1;
-    if( ( dis_ptr && !header_attr_mode ) || !dis_ptr ) {
-        if(glob->strip_pin && strstr(glob->strip_pin, d_ptr->ocs)) {
-            char rdnstriped[BUFSIZ];
-
-            strcpy( rdnstriped, rdn);
-            trimright (rdnstriped, " 1234567890");
-            fprintf( fp, "<H1>%s</H1>", rdnstriped );
-        } else
-            fprintf( fp, "<H1>%s</H1>", rdn);
-    }
-
-    if(glob->ind_attrs)
-        get_ref_attrs( ld, dn, e, glob );
-
-    /* get time for performance log */
-    items_displayed = 1;
-    gettimeofday(&timestore[4], NULL);
-
-    if ( header_attr_mode )
-        rdn = NULL;
-
-    for( ; dis_ptr; dis_ptr = dis_ptr->next) {
-
-        if(glob->ind_attrs){
-
-            int n, m, iatlabel=0, replace=0;
-            IND_ATTR_ARR *vnodes;
-
-#ifdef TUE_TEL
-            int retcode = 0;
-
-            /* Function Mode */
-            retcode = displayTueRefPhone( ld, fp, dn, dis_ptr,
-                        e, rdn, glob, already_displayed );
-#endif
-            if(strstr(already_displayed, dis_ptr->label)) {
-                continue;
-            }
-
-            vnodes = glob->ind_attrs->valid_nodes;
-
-            for(n=0; vnodes && vnodes[n].key && *(vnodes[n].key) ;  n++) {
-
-                if(!strcasecmp(vnodes[n].attr, dis_ptr->attribute)) {
-
-                    for(m=0; vnodes[n].e[m];  m++)
-                        print_attr( vnodes[n].ld, fp, dn,
-                               m==0 ? dis_ptr->label : "", dis_ptr->attribute,
-                               vnodes[n].e[m], dis_ptr->ty, rdn, glob);
-
-                    iatlabel = 1;
-                    if(vnodes[n].replace)
-                        replace=1;
-
-                }
-
-            }
-            if( iatlabel && !replace)
-                print_attr( ld, fp, dn, "",
-                   dis_ptr->attribute, e, dis_ptr->ty, rdn, glob);
-
-            if(!iatlabel)
-                print_attr( ld, fp, dn, dis_ptr->label,
-                   dis_ptr->attribute, e, dis_ptr->ty, rdn, glob);
-
-        } else {
-            print_attr( ld, fp, dn, dis_ptr->label,
-               dis_ptr->attribute, e, dis_ptr->ty, rdn, glob);
-        }
-    }
-
-
-    if ( !amore && d_ptr && d_ptr->second_page ) {
-
-        fprintf( fp, "</DL><A HREF=\"/L%s\"><B>%s</B></A>\n",
-                     hex_encode(dn), glob->la[42]);
-
-
-    }
-    fprintf( fp, "</DL>\n");
-
-    if (strcasecmp(dn + strlen(dn) - strlen(glob->basedn->dn),
-            glob->basedn->dn) == 0) {
-
-        pMODIF  p_mod;
-        char   *aoc;
-        char  **oc;
-
-        aoc = make_oc_to_string(oc = ldap_get_values( ld, e, "objectClass" ));
-
-        if(!strlstcmp (aoc, glob->no_modify, '|')) {
-          for (p_mod = glob->modify; aoc && p_mod; p_mod = p_mod->next) {
-            if (strlstcmp (aoc, p_mod->ocs, '|')) {
-                fprintf( fp, "%s<TT>%s</TT><P><FORM ACTION=\"F%s\">\n",
-                              glob->la[101], glob->la[43], hex_encode(dn));
-                fprintf (fp, "%s <INPUT TYPE=\"password\" ",
-                              glob->la[44]);
-                fprintf (fp, "NAME=\"userPassword\"><BR>%s  ",
-                              glob->la[45]);
-                fprintf (fp, "<INPUT TYPE=\"submit\" VALUE=\"%s\">",
-                              glob->la[47]);
-                fprintf (fp, " %s. </FORM>\n",
-                              glob->la[48]);
-                break;
-            }
-          }
-        }
-
-        ldap_value_free( oc );
-
-    }
-
-    /* Button leading to cgi-script */
-    if( glob->form_button ){
-        char  **oc;
-
-        oc = ldap_get_values( ld, e, "objectClass" );
-        disp_form_button(1, oc, dn, ld, fp, glob);
-    }
-
-    disp_file(glob, glob->footer, fp);
-
-    PRINT_HTML_FOOTER;
-
-}
-/* end of function: do_read */
-
-PRIVATE void disp_form_button(read_menu, oc, dn, ld, fp, glob)
-int read_menu;
-char  **oc;
-char *dn;
-LDAP *ld;
-FILE *fp;
-GLOB_STRUCT *glob;
-{
-    pFORM_BUTTON fo_ptr;
-    char dn_used[BUFSIZ], button_label[BUFSIZ];
-
-#ifdef AMBIXGW
-    char *who_val;
-    char  **selfInsertWho = NULL;
-    char  **studie = NULL;
-    int selfInsReadFlag = 0;
-#endif
-
-    for(fo_ptr = glob->form_button; fo_ptr; fo_ptr = fo_ptr->next) {
-        if(read_menu != fo_ptr->read_menu ||
-                     ( !charray_inlist(oc, fo_ptr->object_class)
-                       && strncasecmp( "cn=", fo_ptr->object_class, 3 ) ) )
-            continue;
-        strcpy(dn_used, dn);
-        strcpy(button_label, fo_ptr->button_label);
-
-#ifdef AMBIXGW
-        /* new-AMBIX cn=Selbst-Eintrag etc. support */
-        /* object-class field contains here cn=xyz e.g. cn=Selbst-Eintrag */
-        if ( !strncasecmp( "cn=", fo_ptr->object_class, 3 )) {
-            char dn_buf[BUFSIZ];
-            LDAPMessage    *res, *e;
-            struct timeval    timeout;
-            static char    *attrs[] = { "objectClass", "selfInsertWho",
-                                         "studie", 0 };
-
-            /* cn=Selbsteintrag nur einmal lesen */
-            if (!selfInsReadFlag ) {
-                selfInsReadFlag = 1;
-
-                timeout.tv_sec = glob->timeout;
-                timeout.tv_usec = 0;
-
-                sprintf(dn_buf, "%s,%s", fo_ptr->object_class, dn);
-                if (ldap_search_st( ld, dn_buf, LDAP_SCOPE_BASE, "objectClass=*",
-                    attrs, 0, &timeout, &res ) != LDAP_SUCCESS )
-                        continue;
-                if(( e = ldap_first_entry( ld, res )) == NULL )
-                        continue;
-
-                selfInsertWho = ldap_get_values( ld, e, "selfInsertWho" );
-                studie = ldap_get_values( ld, e, "studie" );
-            }
-
-            if ( (who_val = strchr(button_label, '|')))
-                *who_val++ = '\0';
-
-            if ( !who_val )
-                continue;
-
-            if ( !selfInsertWho || !selfInsertWho[0] )
-                        continue;
-
-            /* exception for all + studiedn != dn -> two buttons stud + ang */
-            if ( strcasecmp(selfInsertWho[0], who_val ) &&
-                 !(!strcasecmp(selfInsertWho[0], "all") && studie && studie[0] && dn_cmp(dn, studie[0]) && strcasecmp(who_val, "all")))
-                        continue;
-
-            /* filter for exception all-button */
-            if( studie && studie[0] && dn_cmp(dn, studie[0]) && !strcasecmp(selfInsertWho[0], "all") && !strcasecmp(who_val, "all") )
-                        continue;
-
-            if(!strcasecmp(who_val, "stud" ) && studie && studie[0]
-               && dn_cmp(dn, studie[0]))
-                strcpy(dn_used, studie[0]);
-        }
-#endif
-
-        fprintf (fp, "<FORM METHOD=%s ACTION=%s>\n", fo_ptr->method,
-                      fo_ptr->script_url);
-        fprintf (fp, "%s\n<INPUT type=hidden name=\"%s\" value=\"%s\">\n",
-                      fo_ptr->text, fo_ptr->dn_name, hex_encode(dn_used));
-        fprintf (fp, "<INPUT TYPE=\"submit\" name=\"%s\" value=\"%s\">\n",
-                      fo_ptr->form_name, button_label);
-        fprintf (fp, "</FORM>\n");
-    }
-}
-/* end of function: disp_form_button */
-
-
-PUBLIC void do_form(ld, fp, query, glob)
-LDAP *ld;
-FILE *fp;
-char *query;
-GLOB_STRUCT *glob;
-{
-        int             rc, count;
-        char            *dn = query, *pw;
-        char            *ufn;
-        char            *a;
-        LDAPMessage     *res, *e;
-        struct timeval  timeout;
-        pMODIFY_LINE mod_ptr;
-        char title[BUFSIZ];
-
-
-        if ( (pw = strchr( dn, '?' )) == NULL ) {
-                fprintf( fp, "%s<br>", glob->la[49]);
-                exit_tweb( 1 );
-        }
-        *pw++ = '\0';
-        if (strncmp(pw, "userPassword=", 13) == 0)
-                pw += 13;
-        else {
-                fprintf( fp, "%s %s!<br>", glob->la[50], pw);
-                exit_tweb ( 1 );
-        }
-    if (strlen(pw) == 0) {
-        /* we need a password for simple auth */
-        do_error( fp, LDAP_INVALID_CREDENTIALS, FORBIDDEN, glob);
-        rewind(fp);
-        exit_tweb( 1 );
-    }
-        if ( (rc = ldap_simple_bind_s( ld, dn, pw )) != LDAP_SUCCESS ) {
-                if ( debug ) ldap_perror( ld, "ldap_simple_bind_s" );
-                do_error( fp, rc, FORBIDDEN, glob);
-                return;
-        }
-        if (debug) fprintf(stderr, "BOUND as %s\n", dn);
-        timeout.tv_sec = glob->timeout;
-        timeout.tv_usec = 0;
-        if ( (rc = ldap_search_st( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
-            0, 0, &timeout, &res )) != LDAP_SUCCESS ) {
-                do_error(fp, rc, NOT_FOUND, glob);
-                return;
-        }
-        if ( (e = ldap_first_entry( ld, res )) == NULL ) {
-                do_error(fp, -2, SERVER_ERROR, glob);
-                return;
-        }
-        dn = ldap_get_dn( ld, e );
-        ufn = ldap_dn2ufn( dn );
-        if (http == 1) {
-        PRINT_HTML_HEADER;
-        }
-    sprintf( title, "%s %s", glob->la[51], ufn );
-    fprintf( fp, HTML_HEAD_TITLE, title, glob->la[100] );
-
-    disp_file(glob, glob->header, fp);
-
-        fprintf( fp, "<FORM ACTION=\"Y%s\">\n<INPUT TYPE= \"radio\" ", hex_encode(dn));
-        fprintf( fp, "NAME=\"oldPassword\" VALUE=\"%s\" CHECKED><TT>%s</TT>\n<H1>%s</H1><DL><br>", hex_encode(pw), glob->la[53], ufn );
-        free( ufn );
-    for(mod_ptr = glob->modify->modattr; mod_ptr; mod_ptr = mod_ptr->next){
-        a = mod_ptr->attribute;
-        count = mod_ptr->count;
-                if ( strcmp( a, "homepostaladdress" ) == 0
-                    || strcmp( a, "postaladdress" ) == 0) 
-            if (count == 0)
-                            print_attr(ld,fp,dn,mod_ptr->label,a,e,MULTILINE,NULL, glob);
-            else
-                            form_attr(ld,fp,mod_ptr->label,a,e,1,count, glob);
-                else if (count == 0)
-                    print_attr( ld, fp, dn, mod_ptr->label, a, e, DEFAULT, NULL, glob);
-        else
-                    form_attr( ld, fp, mod_ptr->label, a, e, 0, count, glob );
-    }
-        fprintf( fp, "</DL><InPut TYPE=\"reset\" VALUE=\"%s\"> ", glob->la[72]);
-        fprintf( fp, "<InPut TYPE=\"submit\" VALUE=\"%s\">", glob->la[47]);
-        fprintf( fp, "</FORM>");
-
-    disp_file(glob, glob->footer, fp);
-
-        PRINT_HTML_FOOTER;
-    fflush(fp);
-}
-/* end of function: do_form */
-
-
-PUBLIC void do_modify(ld, fp, query, glob)
-LDAP    *ld;
-FILE *fp;
-char *query;
-GLOB_STRUCT *glob;
-{
-    char *dn, *ufn, *pw, *what, *next, *val, *oldval, *cp;
-    int     rc, changes = 0, delete_flag;
-    static char    *value1[2], *value2[2];
-    static LDAPMod mod1, mod2;
-    static LDAPMod *mods[3] = { &mod1 , &mod2, NULL};
-    char title[BUFSIZ];
-
-/*  Patch: we can't run the modification of attributes in two distinct steps,
-       since inheritage might copy a value into the entry after deletion
-       of the old value
-
-    /KSp, 95/07/13
-*/
-
-
-    /* query: DN?oldPassword=oldpw&att1=oldval1=val1&att2=oldval2=val2&...
-     * or:    DN?oldPassword=oldpw&att1%3Doldval1=val1&att2%3Doldval2=... 
-     */
-
-    dn = query;
-    rewind(fp);
-
-        if ( (what = strchr( dn, '?' )) == NULL ) {
-                explain_error( fp, glob->la[93], BAD_REQUEST, glob );
-                exit_tweb( 1 );
-        }
-        *what++ = '\0';
-        hex_decode(dn);
-        if (debug) fprintf(stderr, "What: %s\n", what);    
-    /* At first there should be the old userPassword */
-    if ( (pw = strstr( what, "oldPassword")) == NULL ) {
-        explain_error( fp, glob->la[94], BAD_REQUEST, glob);
-        exit_tweb ( 1 );
-    }
-        pw += 12;        /* strlen("oldPassword") + 1 */
-    /* skip to the first real attribute */
-    if ( (what = strchr(pw, '&'))  == NULL ) {
-        explain_error( fp, glob->la[95], BAD_REQUEST, glob);
-        exit_tweb( 1 );
-    }
-    *what++ = '\0';
-    hex_qdecode(pw);
-    if (debug) fprintf(stderr, 
-         "\ndo_modify: DN = %s PW = #######  CONTENT =\n%s\n ", dn, what );
-    if ( (rc = ldap_simple_bind_s( ld, dn, pw )) != LDAP_SUCCESS ) {
-            if ( debug ) ldap_perror( ld, "ldap_simple_bind_s" );
-            do_error( fp, rc, FORBIDDEN, glob);
-            exit_tweb( 1 );
-    }
-    if (debug) fprintf(stderr, "BOUND as %s.\n", dn);
-
-    if (http == 1) {
-        PRINT_HTML_HEADER;
-    }
-
-    if (request == HEAD) {
-        fflush(fp);
-        exit_tweb (1);
-    }
-    ufn = ldap_dn2ufn( dn );
-    sprintf( title, "%s %s", glob->la[8], ufn);
-    fprintf(fp, HTML_HEAD_TITLE, title, glob->la[100]);
-
-    disp_file(glob, glob->header, fp);
-
-    fprintf(fp, "<H2>%s %s</H2>%s<DL>\n", glob->la[9],  ufn, glob->la[10]);
-    free(ufn);
-
-        while (what) {
-                if ((next = strchr(what, '&')) != NULL) {
-            *next++ = '\0';
-        } else {    /* last in query */
-            next = NULL;
-        }
-        if ((val = strrchr(what, '=')) == NULL) {
-            /* new value */
-            fprintf( fp, "<P>%s ", glob->la[54]);
-                        fprintf( fp, "%s %s!<P>", glob->la[55], hex_qdecode(what));
-            exit_tweb (1);
-        }
-        *val++ = '\0';
-        hex_qdecode(what);
-        hex_qdecode(val);
-        if ((oldval = strchr(what, '=')) == NULL) {
-            /* old value */
-            fprintf( fp, "<P>%s ", glob->la[56]);
-            fprintf( fp, "%s %s!<P>\n", glob->la[55], what);
-            exit_tweb (1);
-        }
-        *oldval++ = '\0';
-        if (strcmp(oldval, val) == 0 ) {    /* no changes */
-            what = next;
-            continue;
-        }
-        if ((strcasecmp(what, "homePostalAddress") == 0) ||
-            (strcasecmp(what, "postalAddress") == 0)) {
-            /* multiline */
-            cp = oldval;
-            while ((cp = strchr(cp, '\n')) != NULL) *cp = '$';
-            cp = val;
-            while ((cp = strchr(cp, '\n')) != NULL) *cp = '$';
-                }
-        if (debug)
-            fprintf(stderr, 
-                             "what = %s, oldval = %s, val = %s\n", 
-                             what, oldval, val);
-
-        /* there is something to do:
-         * - delete the old value
-         * - add the new value if not empty */
-        mod1.mod_type = what;
-        mod2.mod_type = what;
-        value1[1] = NULL;
-        value2[1] = NULL;
-        mod1.mod_values = value1;
-        mod2.mod_values = value2;
-        mods[1] = NULL;
-        delete_flag = FALSE;
-
-/*  #############  */
-
-        if (strlen(oldval) > 0) {
-
-            if (strlen (val) > 0) {
-
-                mod1.mod_op = LDAP_MOD_ADD;
-                value1[0] = val;
-
-/*                mod2.mod_op = LDAP_MOD_DELETE;
-                value2[0] = oldval;
-                mods[1] = &mod2;
-*/
-                if ((rc = ldap_modify_s(ld, dn, mods)) != LDAP_SUCCESS) {
-
-                    fprintf( fp, 
-                    "%s <TT>%s</TT> %s <TT>%s</TT>!<P>\n<EM> %d: %s.</EM><p>\n",
-                            glob->la[80], oldval, glob->la[81], what, 
-                            rc, ldap_err2string(rc));
-
-                    what = next;
-                    continue;
-
-                }
-
-                mod1.mod_op = LDAP_MOD_DELETE;
-                value1[0] = oldval;
-
-            } else {
-
-                mod1.mod_op = LDAP_MOD_DELETE;
-                value1[0] = oldval;
-                delete_flag = TRUE;
-
-            }
-
-        } else  {
-        
-            mod1.mod_op = LDAP_MOD_ADD;
-            value1[0] = val;
-
-        }
-
-        if (debug) 
-              fprintf(stderr, "trying: %s = %s.\n", what, val);
-
-        if (((rc=ldap_modify_s(ld, dn, mods)) != LDAP_SUCCESS) &&
-            (mod1.mod_op != LDAP_MOD_DELETE) && (rc != LDAP_NO_SUCH_ATTRIBUTE)){
-
-if (dosyslog)
-    syslog (LOG_INFO, "ERROR: ldap_modify_s: ADD\n");
-            if ( debug ) 
-                ldap_perror( ld, "ldap_modify_s: ADD");
-            fprintf( fp, 
-                "%s <TT>%s</TT> %s <TT>%s</TT><P>\n%s <EM> %d: %s.</EM><P>\n", 
-                glob->la[57], val, glob->la[58], what, glob->la[59], 
-                rc, ldap_err2string( rc ) );
-            if (strlen(oldval) > 0 && rc != LDAP_INSUFFICIENT_ACCESS) {
-                /* try to reset to old value */
-
-                mod1.mod_op = LDAP_MOD_ADD;
-                mods[1] = NULL;
-
-                value1[0] = oldval;
-                if ((rc = ldap_modify_s(ld, dn, mods)) != LDAP_SUCCESS) {
-                    fprintf( fp, 
-                    "%s <TT>%s</TT> %s <TT>%s</TT>!<P>\n<EM> %d: %s.</EM><P>\n",
-                                glob->la[60], oldval, glob->la[61], what, 
-                                rc, ldap_err2string(rc));
-
-                    exit_tweb( 1 );
-                } else {
-                    fprintf( fp, "%s <TT>%s</TT> %s <TT>%s</TT><P>\n", 
-                                glob->la[62], oldval, glob->la[61], what);
-                }
-            }
-            what = next;
-            continue;
-        }
-
-        if (debug) fprintf(stderr, "MOD: %s = %s.\n", what, val);
-        changes++;
-        fprintf(fp, "<DT><B>%s</B> <DD>%s <TT>(%s)</TT>\n",
-            ldap_friendly_name(glob->friendlyfile, what, &fm), value1[0],
-            delete_flag ? glob->la[74] : strlen(oldval) > 0 ? 
-                                        glob->la[75] : glob->la[76]);
-        what = next;
-        }
-    fprintf(fp, "</DL>%d %s%s%s!\n", changes, glob->la[15], 
-                    changes != 1 ? glob->la[73] : "", 
-                    changes > 0 ? glob->la[16] : "");
-    if (changes > 0) {
-        char  *dn2 = hex_encode(dn);
-
-        fprintf(fp, "<UL><LI><B><A HREF=\"/R%s\">%s</A>\n",
-            dn2, glob->la[17]);
-        fprintf(fp, "<LI><A HREF=\"/F%s?userPassword=%s\">%s</A></B></UL>\n", 
-            dn2, pw, glob->la[19]);
-
-    }
-
-    disp_file(glob, glob->footer, fp);
-
-    PRINT_HTML_FOOTER;
-    fflush(fp);
-}
-/* end of function: do_modify */
-
-PRIVATE int no_show( rdn, glob)
-char *rdn;
-GLOB_STRUCT *glob;
-{
-    if ( glob->no_show_rdn ) {
-
-        char rdn_cpy[BUFSIZ], *toc, no_sh[BUFSIZ];
-
-        strcpy(no_sh, glob->no_show_rdn);
-        sprintf(rdn_cpy, "|%s|", rdn);
-        toc = strtok(no_sh, " ");
-        do {
-            if(strstr(str_tolower((char *) rdn_cpy), str_tolower(toc)))
-                return(TRUE);
-        } while( ( toc = strtok(NULL, " ")) );
-
-    }
-
-    return(FALSE);
-}
-/* end of function: no_show */
-
-
-PRIVATE int sort_result(ld, res, dn, glob)
-LDAP *ld;
-LDAPMessage *res;
-char *dn;
-GLOB_STRUCT *glob;
-{
-    LDAPMessage    *e;
-    char    *ufn;
-    int counter = 0, baselen;
-    int basecount;
-    pSORT_LINE  s_ptr;
-    pMY_LDAP_LIST lmptr;
-    LFP getfirst = glob->prefer_ref_uris ? my_first_entry : ldap_first_entry,
-        getnext  = glob->prefer_ref_uris ? my_next_entry : ldap_next_entry;
-
-    hex_decode (dn);
-
-    ufn = ldap_dn2ufn(dn);
-    baselen = ufn ? strlen(ufn) : 0;
-    basecount = ufn ? chrcnt(ufn, UFNSEP) : 0;
-
-#if defined( TUE_TEL ) || defined( AMBIXGW )
-    /*  before sorting check for dynamic changes of the sorting instructions  */
-    dynamicResort( ld, glob, dn );
-#endif
-
-    for ( e = (*getfirst)(ld, res);     e != NULL && counter < glob->maxcount;
-          e = (*getnext)(ld, e ) ) {
-       sort_parse(ld, e, dn, ufn, baselen, basecount, counter, glob);
-    }
-    for(lmptr = mllroot; lmptr; lmptr = lmptr->next) {
-        sort_parse(ld, lmptr->e, dn, ufn, baselen, basecount, counter, glob);
-    }
-    mllroot = NULL;
-
-    for(s_ptr = glob->sort; s_ptr; s_ptr = s_ptr->next) {
-        if( s_ptr->dnLast )
-            qsort(s_ptr->dnList, s_ptr->dnLast, sizeof(int), compare);
-    }
-    return counter;
-}
-/* end of function: sort_result */
-
-
-PRIVATE void list_output(fp, glob)
-FILE *fp;
-GLOB_STRUCT *glob;
-{
-    int i, x;
-    pSORT_LINE s_ptr;
-
-    if(glob->tables_marker)
-        fprintf (fp, "</H3><TABLE WIDTH=\"100%%\">");
-
-    for (i = 0 ; i < MAX_OCS ; i++ ) {
-        if(!glob->sorty[i]) continue;
-        s_ptr = glob->sorty[i];
-
-        if(glob->tables_marker)
-            fprintf( fp, "<TR><TH ALIGN=LEFT><BR>");
-
-        fprintf( fp, "<H3>%s", s_ptr->label);
-
-#ifdef TUE_TEL
-        if(glob->ton_urls && glob->ton_urls->department
-                          && (strlen(s_ptr->label) >1) ) 
-            fprintf( fp, " / %s", glob->ton_urls->department);
-#endif
-
-        if(s_ptr->restricted) {
-            fprintf( fp, " %s", glob->la[33]);
-            if (glob->legal && !glob->legal_top)
-                fprintf( fp, ", %s", glob->la[34]);
-            fprintf (fp, ")");
-        }
-
-        if(glob->tables_marker)
-            fprintf (fp, "</H3></TH></TR>");
-        else
-            fprintf (fp, "</H3><MENU>\n");
-
-        for(x=0; x < s_ptr->dnLast; x++) {
-            if(glob->strip_pin && strstr(glob->strip_pin, s_ptr->object_class)){
-                s_ptr->dnList[x]->href[strlen(s_ptr->dnList[x]->href) -5] = '\0';
-                trimright (s_ptr->dnList[x]->href, " 1234567890");
-                strcat(s_ptr->dnList[x]->href, "</A>\n");
-            }
-    
-            if( glob->raw_data ) {
-                fprintf(fp,"%s",s_ptr->dnList[x]->raw);
-                free(s_ptr->dnList[x]->raw);
-            } else {
-                fprintf(fp,"%s",s_ptr->dnList[x]->href);
-                free(s_ptr->dnList[x]->href);
-            }
-            free(s_ptr->dnList[x]->string);
-        }
-
-        if(!glob->tables_marker)
-            fprintf (fp, "</MENU>\n");
-
-        glob->sorty[i] = NULL;
-    }
-    if(glob->tables_marker)
-        fprintf (fp, "</TABLE>\n");
-}
-/* end of function: list_output */
-
-PRIVATE void make_la_buttons(sep, fp, ld, dn, la_url, glob)
-char *sep;
-FILE *fp;
-LDAP *ld;
-char *dn;
-char *la_url;
-GLOB_STRUCT *glob;
-
-{
-    int k;
-
-    /* Inform users from unknown */
-    if(glob->unknown_host) fprintf( fp, glob->la[102]);
-
-    if(glob->legal && glob->legal_top)
-        fprintf (fp, "%s\n%s\n",
-                glob->is_proxy ? glob->la[104] : glob->la[65], glob->la[101]);
-
-    /* if allowed -> allow-file-message */
-    if(glob->allowed && glob->allow_msg)
-        disp_file(glob, glob->allow_msg, fp);
-
-    if(glob->pull_down_menus) {
-        make_la_buttons_pull_down(sep, fp, ld, dn, la_url, glob);
-        return;
-    }
-
-    fprintf( fp, "<B>");
-    fprintf( fp, " [ <A HREF=\"/H\">%s</A> ] ",glob->la[29]);
-    for(k=0; k<strlen(glob->olang); k++){
-        if(glob->olang[k] == glob->lang[0]) continue;
-        sprintf(la_url, "http://%s:%d/%s%s",
-                    glob->hostname, glob->webport+glob->olang[k]-'0',
-                    sep, hex_encode(dn));
-        fprintf( fp, " [ <A HREF=\"%s\"> %s </A> ] ",
-                    la_url, glob->language[glob->olang[k]-'0']);
-    }
-    fprintf( fp, "</B><p>");
-}
-/* end of function: make_la_buttons */
-
-PRIVATE void make_la_buttons_pull_down(sep, fp, ld, dn, la_url, glob)
-char *sep;
-FILE *fp;
-LDAP *ld;
-char *dn;
-char *la_url;
-GLOB_STRUCT *glob;
-
-{
-    int k;
-    TABLE_DISPLAY *tab_ptr;
-
-    fprintf( fp, "<FORM ACTION=\"/B\">\n");
-    fprintf( fp, "<INPUT TYPE=SUBMIT NAME=H Value = \"%s\">\n",glob->la[29]);
-
-    fprintf( fp, "_\n");
-
-    for(k=0; k<strlen(glob->olang); k++){
-        if(glob->olang[k] == glob->lang[0]) continue;
-        sprintf(la_url, "http://%s:%d/%s%s",
-                    glob->hostname, glob->webport+glob->olang[k]-'0',
-                    sep, hex_encode(dn));
-        fprintf( fp, "<INPUT TYPE=SUBMIT NAME=%s Value = \"%s\">\n", 
-                      la_url, glob->language[glob->olang[k]-'0']);
-    }
-
-    /* make tables button in order to have table-display requests */
-    for(tab_ptr = glob->tables; tab_ptr; tab_ptr = tab_ptr->next) {
-
-        char **oc = NULL;
-        struct timeval timeout;
-        LDAPMessage *res;
-        static char    *attrs[] = { "objectClass", 0 };
-
-        if( !((!tab_ptr->allow || glob->allowed) && !glob->tables_marker))
-            continue;
-
-        /* Check objectclass for tables_oc */
-        timeout.tv_sec = glob->timeout;
-        timeout.tv_usec = 0;
-        if ( ldap_search_st( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
-                              attrs, 0, &timeout, &res ) == LDAP_SUCCESS ){
-            oc = ldap_get_values(ld, ldap_first_entry(ld, res), "objectClass");
-        }
-        if ( oc && charray_inlist( oc, tab_ptr->select_oc)) {
-
-            fprintf( fp, "_______\n");
-            fprintf( fp, "<INPUT TYPE=SUBMIT NAME=X%s?%s#%s Value = \"%s\">\n",
-                       hex_encode(dn),
-#ifdef TUE_TEL
-                       strstr(tab_ptr->dn_extension, "persontable") ?
-                       "MENU" : "PHONEBOOK",
-#else
-                       "MENU",
-#endif
-                       tab_ptr->dn_extension, tab_ptr->button_label);
-        }
-    }
-
-    fprintf( fp, "</FORM>\n");
-}
-/* end of function: make_la_buttons_pull_down */
-
-PRIVATE void print_rdn(fp, dn, glob)
-FILE *fp;
-char *dn;
-GLOB_STRUCT *glob;
-{
-    char        **s;
-    char        *rdn = NULL;
-
-    if(glob->pull_down_menus) {
-        print_rdn_pull_down(fp, dn, glob);
-        return;
-    }
-
-    s = ldap_explode_dn( dn, 1 );
-    if ( strcmp( dn, "" ) != 0 ) {    /* Not the root */
-        if ( s[1] == NULL ) {    /* toplevel */
-            rdn = ldap_friendly_name( glob->friendlyfile, s[0], &fm );
-        } else {
-            rdn = s[0];
-        }
-        fprintf( fp,"%s <B><A HREF=\"/R%s\">%s</A></B>\n",glob->la[28],hex_encode(dn),rdn?rdn:s[0]);
-    } else {            /* the root */
-        fprintf( fp, "<B>%s</B>\n", glob->la[77]);
-    }
-    ldap_value_free( s );
-}
-/* end of function: print_rdn */
-
-PRIVATE void print_rdn_pull_down(fp, dn, glob)
-FILE *fp;
-char *dn;
-GLOB_STRUCT *glob;
-{
-    char        **s;
-    char        *rdn = NULL;
-
-    fprintf( fp, "<FORM ACTION=\"/B\">\n");
-
-    s = ldap_explode_dn( dn, 1 );
-    if ( strcmp( dn, "" ) != 0 ) {    /* Not the root */
-        if ( s[1] == NULL ) {    /* toplevel */
-            rdn = ldap_friendly_name( glob->friendlyfile, s[0], &fm );
-        } else {
-            rdn = s[0];
-        }
-        fprintf( fp,"%s <BIG><STRONG>%s</STRONG></BIG>  ",
-                     glob->la[28], rdn?rdn:s[0]);
-        fprintf( fp, "<INPUT TYPE=SUBMIT NAME=R%s Value = \"%s\">\n",
-                       hex_encode(dn), glob->la[98]);
-    } else {            /* the root */
-        fprintf( fp, "<BIG><STRONG>%s</STRONG></BIG>\n", glob->la[77]);
-    }
-    ldap_value_free( s );
-    fprintf( fp, "</FORM>\n");
-}
-/* end of function: print_rdn_pull_down */
-
-PRIVATE void make_search_box(fp, ld, dn, glob)
-FILE *fp;
-LDAP *ld;
-char *dn;
-GLOB_STRUCT *glob;
-{
-    int scope;
-
-    scope = make_scope(ld, dn, glob);    /* onelevel or subtree search ? */
-    fprintf( fp, "<DL><DT><FORM ACTION=\"/S%s\">%s  <inPUT NAME=\"%s\"><INPUT TYPE=submit VALUE=%s><INPUT TYPE=reset VALUE=\"%s\">\n",
-        hex_encode(dn),
-        scope == LDAP_SCOPE_ONELEVEL ? glob->la[66] : glob->la[67],
-        scope == LDAP_SCOPE_ONELEVEL ? "O" : "S",
-        glob->la[68], glob->la[69]);
-
-    fprintf( fp, "</FORM></DL>\n");
-}
-/* end of function: make_search_box */
-
-PRIVATE LDAPMessage *my_first_entry( ld, e )
-LDAP *ld;
-LDAPMessage *e;
-{
-    return(ldap_list_eval(ld, e , ldap_first_entry));
-}
-/* end of function: my_first_entry */
-
-PRIVATE LDAPMessage *my_next_entry(ld, e )
-LDAP *ld;
-LDAPMessage    *e;
-{
-    return(ldap_list_eval(ld, e , ldap_next_entry));
-}
-/* end of function: my_next_entry */
-
-PRIVATE LDAPMessage *ldap_list_eval(ld, e, funcp )
-LDAP *ld;
-LDAPMessage    *e;
-LFP funcp;
-{
-
-    char **value = NULL;
-    pMY_LDAP_LIST *lmhandle; /* , lmptr; */
-
-    for(lmhandle = &mllroot; *lmhandle; lmhandle = &(*lmhandle)->next)
-        ;
-
-    for( e =  (*funcp)( ld, e ) ;
-         e && strstr(make_oc_to_string(value = ldap_get_values( ld, e, "objectClass" )),
-                 "|alias|");     e = ldap_next_entry( ld, e )) {
-        *lmhandle = (pMY_LDAP_LIST) ch_malloc(sizeof(MY_LDAP_LIST));
-        (*lmhandle)->e = e;
-        lmhandle = &(*lmhandle)->next;
-        ldap_value_free(value);
-        value = NULL;
-
-    }
-    if (value) ldap_value_free(value);
-
-/*    if(!e) {
-        for(lmptr = mllroot; lmptr; lmptr = lmptr->next) {
-            char **val;
-
-            val = ldap_get_values(ld, lmptr->e, "aliasedObjectName");
-if (dosyslog) syslog (LOG_INFO, "alias: %s", val[0]);
-            ldap_value_free(val);
-        }
-        mllroot = NULL;
-    }
-*/
-    return(e);
-}
-/* end of function: ldap_list_eval */
-
-PRIVATE void sort_parse(ld, e, dn, ufn, baselen, basecount, counter, glob)
-LDAP *ld;
-LDAPMessage *e;
-char *dn;
-char *ufn;
-int baselen;
-int basecount;
-int counter;
-GLOB_STRUCT *glob;
-{
-    char    **s, **oc;
-    char    *dn2, *urldn = NULL, *rdn, *doc, *aoc;
-    char    *ufn2, *sortstring = NULL, *cp;
-    char   **sattr = NULL, href[20*BUFSIZ], *temp;
-    int spaces = 0, iscountry;
-    pGW_SWITCH_LINE gw_ptr;
-    int flag, found_oc, i;
-    pSORT_LINE *s_hndl;
-    pSORT_LINE  s_ptr;
-    char *url = NULL;
-    char **uri = NULL, *urlnola, raw_string[BUFSIZ];
-
-#if OL_LDAPV > 0
-       int         ldap_opt;
-#endif
-
-    oc = ldap_get_values( ld, e, "objectClass" );
-
-    if(!(aoc = make_oc_to_string(oc))) return;
-
-
-#ifdef TUE_TEL
-    /*** ton_urls ***/
-    if(glob->ton_urls && glob->ton_urls->value && strstr(aoc, "|person|")) {
-        char **tonvals;
-        int k, matched;
-
-        matched=0;
-        tonvals = ldap_get_values( ld, e, glob->ton_urls->attribute);
-        if(!tonvals) return;
-        for(k=0; tonvals[k]; k++) {
-            if(strstr(tonvals[k], glob->ton_urls->value)
-            && !(strchr(tonvals[k], '.')
-                 && (strcspn(tonvals[k],".") > strlen(glob->ton_urls->value)))){
-                matched = 1;
-            }
-        }
-        if(!matched) {
-            return;
-        }
-    }
-#endif
-
-    /* Begin New Sort */
-    found_oc = FALSE;
-    i        = 0;
-    for(s_hndl = &(glob->sort); *s_hndl; s_hndl = &(*s_hndl)->next) {
-
-        i++;
-        if(strstr( aoc, (*s_hndl)->object_class )) {
-
-            if(strstr(aoc, "|person|") && glob->no_browse)
-                goto NEXTENTRY;
-            found_oc = TRUE;
-        }
-        if(found_oc) break;
-    }
-
-    if(!found_oc) {
-        if(glob->show_defoc) {
-            *s_hndl = s_ptr = (pSORT_LINE) ch_malloc(sizeof(SORT_LINE));
-            s_ptr->object_class = strdup(pick_oc(oc));
-            s_ptr->label = ldap_friendly_name(glob->friendlyfile, 
-                                s_ptr->object_class, &fm);
-            s_ptr->priority = i;
-
-        } else return;
-    }
-
-    s_ptr = *s_hndl;
-    doc   = s_ptr->object_class;
-
-    dn2 = ldap_get_dn( ld, e );
-    if(urldn) free(urldn);
-    if(strstr(aoc, "|alias|")) {
-
-        char **val;
-
-        val = ldap_get_values(ld, e, "aliasedObjectName");
-        urldn = strdup(hex_encode(val[0]));
-        ldap_value_free(val);
-
-    } else
-        urldn = strdup(hex_encode(dn2));
-
-    ufn2 = strdup (ldap_dn2ufn(dn2));
-    s = ldap_explode_dn( dn2, 1 );
-
-    if(baselen)
-        ufn2 = dnrcut(ufn2, UFNSEP, basecount);
-
-    /* Support raw data delivery */
-    if(glob->raw_data) {
-        char **rvals;
-        int k, l;
-
-        sprintf(raw_string, "%s", ufn2);
-        trimright (raw_string, " 1234567890");
-
-        for(l=0; glob->raw_attrs[l]; l++) {
-            rvals = ldap_get_values( ld, e, glob->raw_attrs[l]);
-            if(rvals[0])
-                sprintf(raw_string, "%s%% %s=", raw_string, glob->raw_attrs[l]);
-            for(k=0; rvals[k]; k++) {
-                sprintf(raw_string, "%s%s%s",raw_string, 
-                                             k>0 ? "&":"", rvals[k] );
-            }
-        }
-        sprintf(raw_string, "%s|<br><br>", raw_string);
-    }
-
-    iscountry = (strstr( doc, "country" ) != NULL);
-    if ( iscountry ) {
-        rdn = ldap_friendly_name( glob->friendlyfile, s[0], &fm );
-        sortstring = ufn2 = ldap_friendly_name( glob->friendlyfile, 
-                                                                ufn2, &fm );
-        sattr = NULL;
-    } else
-        rdn = s[0];
-    if ( rdn == NULL )
-        rdn = s[0];
-    if (( strncasecmp( rdn, "{ASN}", 5 ) == 0 ) 
-                 || no_show( rdn, glob)) {
-        free( dn2 );
-        ldap_value_free( s );
-        ldap_value_free( oc );
-            return;
-    }
-    if ( !iscountry ) {    /* not a country */
-        sattr = ldap_get_values( ld, e, s_ptr->sort_attr);
-        sortstring = strdup(dn2);
-        if ( ( cp = strchr(sortstring,'=')) ) {
-            sortstring = ++cp;
-            /* DNs may have components in '"', ignored  when sorting */
-            if ( *sortstring == '"' )
-            sortstring++;
-        }
-        if ( sattr ) {
-            cp = *sattr;
-            while ( ( cp = strchr(cp,' ')) ) {
-                cp ++;
-                spaces ++;
-            }
-        }
-        while ( spaces > 0 ) {
-            if ( ( cp = strrchr(sortstring,' ')) ) {
-                *cp = '\0';
-                spaces --;
-            }
-        }
-    }
-
-    ufn2 = trim(ufn2, "\"");
-
-    /* GW-SWITCH */
-    flag = 0;
-    urlnola = NULL;
-
-    if (glob->gw_switch && glob->gw_switch->dynamic) {
-
-        uri = ldap_get_values( ld, e, "labeledURI" );
-
-        /* PREFER-REF-URIS Code */
-        if(strstr(aoc, "|alias|") && glob->prefer_ref_uris){
-
-            LDAPMessage *ures, *ue;
-            struct timeval  timeout;
-            char        **val;
-
-            timeout.tv_sec = glob->timeout;
-            timeout.tv_usec = 0;
-    
-#if OL_LDAPV > 0
-
-               ldap_opt = LDAP_DEREF_ALWAYS;
-        ldap_set_option( ld, LDAP_OPT_DEREF, &ldap_opt );
-
-#else
-            ld->ld_deref = LDAP_DEREF_ALWAYS;
-#endif
-
-            if ( (ldap_search_st( ld, dn2, LDAP_SCOPE_BASE, "objectClass=*",
-                NULL, 0, &timeout, &ures )) == LDAP_SUCCESS ) {
-                if ( (ue = ldap_first_entry( ld, ures ))) {
-                    if( ( val = ldap_get_values( ld, ue, "labeledURI" )) ) {
-                        if(uri) ldap_value_free(uri);
-                        uri = val;
-                            
-                    }
-                }
-            }
-        }
-
-        for(i=0; uri && uri[i] && *uri[i]; i++) {
-            char *sp;
-
-            if( ( sp = strchr(uri[i], ' ')) ) {
-                *sp++ = '\0';
-                if(strstr(sp, glob->gw_switch->lagws)) {
-                    flag = 1;
-                    url = uri[i];
-                    break;
-                } else if(strstr(sp, GWS))
-                    urlnola = uri[i];
-            }
-        }
-    }
-
-    if(!flag && urlnola) {
-        url = urlnola;
-        flag = 1;
-    }
-
-    if (glob->gw_switch) {
-
-        for(gw_ptr = glob->gw_switch->list; 
-                          !flag && gw_ptr; gw_ptr = gw_ptr->next) {
-            if (!dn_cmp (dn2, gw_ptr->dn)) {
-                flag = 1;
-                url = gw_ptr->url;
-            }
-        }
-    }
-
-        if(flag == 1) {
-            char  *url_tmp;
-
-            sprintf( href, "<LI><A HREF=\"%s\">%s</A>\n",
-                        (url_tmp = url_complete(url, urldn, "M")),
-                         glob->disp_sea_rdn ? rdn : ufn2);
-
-        }
-
-        if (flag==0) {
-            char *strptr;
-
-            if(glob->strip_pin && strstr(glob->strip_pin, doc))
-                if ( ( strptr = strchr(ufn2, ',')) ) {
-
-                    *strptr++ = '\0';
-                    trimright(ufn2, " 1234567890");
-                    sprintf(ufn2, "%s,%s", ufn2, strptr);
-
-                } else
-                    trimright(ufn2, " 1234567890");
-
-            ufn2 = trim(ufn2, "\"");
-
-            /* TABLES DISPLAY CODE */
-            if(glob->tables_marker){
-
-                char disp_rule[BUFSIZ], *strptr, strbuf[BUFSIZ];
-                char tab_attr[BUFSIZ], percent[BUFSIZ];
-                char **aval;
-                int n;
-
-                strcpy(disp_rule, glob->tables_marker);
-                strptr = strstr(disp_rule, "persontable");
-
-                if(strptr){
-                    strptr = strchr(strptr, ':') + 1;
-                    strcpy(disp_rule, strptr);
-                    strptr = strchr(disp_rule, '$');
-                    if(strptr) *strptr = '\0';
-                    strcat(disp_rule, "&");
-
-                    strcpy( href, "<TR>\n");
-
-                    while(*disp_rule){
-                        strcpy(strbuf, disp_rule);
-                        strptr=strchr(disp_rule, '&');
-                        strcpy(disp_rule, strptr+1);
-
-                        strptr=strchr(strbuf, '&');
-                        *strptr++ = '\0';
-                        strcpy(tab_attr, strbuf);
-                        strptr = strchr(tab_attr, ',');
-                        *strptr++ = '\0';
-                        strcpy(percent, strptr);
-
-                        sprintf( href, "%s <TD WIDTH=\"%s%%\" VALIGN=TOP %s>",
-                                 href, percent,
-                                 !strcasecmp(tab_attr, "telephonenumber") ?
-                                 "ALIGN=RIGHT NOWRAP" : "ALIGN=LEFT");
-
-                        if(!strcasecmp(tab_attr, "rdn")){
-                            trimright (ufn2, " 1234567890");
-                            sprintf( href, "%s<A HREF=\"/M%s\">%s</A><BR>\n",
-                                     href, urldn, ufn2);
-
-#ifdef TUE_TEL
-                        /* use tat_refphone & fallback to telephonenumber */
-                        } else if(!strcasecmp(tab_attr, "phone")){
-                            displayTueTelList( ld, e, href, glob );
-
-#endif
-                        } else if(!strncasecmp(tab_attr, "objectclass", 11)){
-                            char objectclass[BUFSIZ], letter[BUFSIZ], *trptr;
-                            char tab_attr_buf[BUFSIZ];
-
-                            *(letter+1) = *letter = '\0';
-                            strcpy(tab_attr_buf, tab_attr);
-                            trptr = tab_attr_buf;
-                            while( ( trptr = strchr(trptr, '=')) )
-                                *trptr++ = ' ';
-
-                            sscanf(tab_attr_buf, "%*s%s%s",
-                                              objectclass, letter);
-                            if(!*letter) *letter = '*';
-
-                            if( ( aval =
-                                    ldap_get_values( ld, e, "objectclass")) ) {
-                                if(charray_inlist(aval, objectclass))
-                                    sprintf(href, "%s %s",
-                                                      href, letter);
-                            }
-                        } else if( ( aval =
-                                        ldap_get_values( ld, e, tab_attr )) ) {
-                            for(n=0; aval[n]; n++){
-                                if(!strcasecmp(tab_attr, "mail"))
-                                    sprintf(href,
-                                            "%s<A HREF=\"mailto:%s\">%s</A><BR>",
-                                            href, aval[n], aval[n]);
-                                else
-                                    sprintf(href, "%s %s<BR>", href, aval[n]);
-                            }
-                        }
-                        sprintf( href, "%s</TD>", href);
-                    }
-                    sprintf( href, "%s</TR>", href);
-                }
-
-            /* without tables */
-            }else{
-                sprintf( href, "<LI><A HREF=\"%s%sM%s\">%s</A>\n",
-
-#ifdef TUE_TEL
-                         (glob->dit_config && !glob->dit_config->not_browse) ?
-                                dn2server(urldn, glob) : "",
-#else
-                                "",
-#endif
-
-                                "/", urldn,
-                                glob->disp_sea_rdn ? rdn : ufn2);
-            }
-        }
-
-        if (*sortstring == '&') {
-
-            sortstring[0] = sortstring[1];
-            sortstring[1] = 'e';
-
-        }
-
-        if( (strstr(aoc, "person") && (s_ptr->dnLast >= glob->max_person) )
-           || ( s_ptr->dnLast >= glob->maxcount) ) {
-            s_ptr->restricted = 1;
-            return;
-        }
-
-        if ( sattr ) 
-            temp = (char *) ch_malloc(strlen(*sattr)+strlen(sortstring)+1);
-        else 
-            temp = (char *) ch_malloc(strlen(sortstring)+1);
-        if ( sattr )
-            strcat(temp, *sattr);
-        strcat(temp,sortstring);
-
-        if(!s_ptr->dnList)
-            s_ptr->dnList = (DNLIST **) ch_calloc(glob->maxcount+1,
-                                                     sizeof(pDNLIST));
-        if (!s_ptr->dnList[s_ptr->dnLast] )
-                    s_ptr->dnList[s_ptr->dnLast] = (pDNLIST)
-                                        ch_malloc(sizeof(DNLIST));
-
-        s_ptr->dnList[s_ptr->dnLast]->string = temp;
-
-        if(glob->raw_data) {
-            s_ptr->dnList[s_ptr->dnLast]->raw = strdup(raw_string);
-        }
-
-        s_ptr->dnList[s_ptr->dnLast++]->href = strdup(href);
-        glob->sorty[s_ptr->priority] = s_ptr;
-
-        free( dn2 );
-        ldap_value_free( s );
-        ldap_value_free( oc );
-        ldap_value_free( uri );
-
-        if(++counter >= glob->maxcount)
-            glob->restricted = TRUE;
-
-NEXTENTRY:
-        ;
-        return;
-}
-/* end of function: sort_parse */
-
-
-PUBLIC void close_ldap_connections(glob)
-GLOB_STRUCT *glob;
-{
-    pLD_LIST ldlptr;
-
-    for(ldlptr = glob->ld_list; ldlptr; ldlptr = ldlptr->next)
-        ldap_unbind(ldlptr->ld);
-}
-/* end of function: close_ldap_connections */
-
-PUBLIC LDAP *get_ldap_connection( host, port, glob )
-char *host;
-int port;
-GLOB_STRUCT *glob;
-{
-    pLD_LIST ldlptr, *ldlhdl;
-    LDAP *ld = NULL;
-    int rc;
-
-    for(ldlptr = glob->ld_list; ldlptr; ldlptr = ldlptr->next) {
-        if ( !strcasecmp(ldlptr->host, host) && (ldlptr->port == port))
-            ld = ldlptr->ld;
-
-    }
-    if (!ld) {
-
-        if ( (ld = ldap_open( host, port )) == NULL )
-            return(NULL);
-        if ( (rc=ldap_simple_bind_s( ld, glob->webdn, glob->webpw ))
-              != LDAP_SUCCESS )
-            return(NULL);
-        for(ldlhdl = &glob->ld_list; *ldlhdl; ldlhdl = &(*ldlhdl)->next)
-            ;
-        *ldlhdl = (pLD_LIST) ch_calloc(1, sizeof(LD_LIST));
-        (*ldlhdl)->host = strdup(host);
-        (*ldlhdl)->port = port;
-        (*ldlhdl)->ld = ld;
-    }
-    return(ld);
-}
-/* end of function: get_ldap_connection */
-
-
-PRIVATE void get_ref_attrs( ld1, dn, e1, glob )
-LDAP *ld1;
-char *dn;
-LDAPMessage *e1;
-GLOB_STRUCT *glob;
-{
-    pIND_ATTRS i_ptr;
-    IND_ATTR_ARR *idx, **vnodes;
-    int i, j, k, n;
-    LDAP *ld;
-    int rc;
-    LDAPMessage *res, *e;
-    struct timeval timeout;
-    char **val, **val1;
-    char ref_dn[BUFSIZ], ref_cnbuf[BUFSIZ], *ref_cn;
-
-
-    for(i_ptr = glob->ind_attrs; i_ptr; i_ptr = i_ptr->next) {
-
-        /* Function-Mode */
-        if (i_ptr->ia_arr && (i_ptr->ia_arr[0].replace == 2))
-            continue;
-
-        if ( (val1 = ldap_get_values( ld1, e1, i_ptr->ref_attr )) == NULL )
-            continue;
-
-        for(idx = i_ptr->ia_arr, i=0; idx[i].key; i++){
-            /* idx[i].key idx[i].replace idx[i].attr idx[i].host idx[i].port
-               idx[i].base -- i_ptr->ref_attr */
-
-            ld = get_ldap_connection( idx[i].host, idx[i].port, glob );
-
-            timeout.tv_sec = glob->timeout;
-            timeout.tv_usec = 0;
-
-            for ( j = 0; val1[j] != NULL; j++ ) {
-                if(strncasecmp(val1[j], idx[i].key, strlen(idx[i].key)))
-                    continue;
-                else {
-                    strcpy(ref_cnbuf, val1[j]);
-/*                    ref_cn = ref_cnbuf + strlen(idx[i].key);
-*/
-                      ref_cn = ref_cnbuf;
-                }
-
-                sprintf(ref_dn, "cn=%s,%s", ref_cn, idx[i].base);
-                if ( (rc = ldap_search_st( ld, ref_dn, LDAP_SCOPE_BASE, 
-                  "objectClass=*", NULL, 0, &timeout, &res )) != LDAP_SUCCESS )
-                    continue;
-                if ( (e = ldap_first_entry( ld, res )) == NULL )
-                    return;
-                val = ldap_get_values( ld, e, idx[i].attr );
-                if(val[0] != NULL) {
-                    if(!idx[i].e)
-                        idx[i].e = ( LDAPMessage ** )
-                            ch_malloc( 16 * sizeof(LDAPMessage *) );
-                    for(n=0; idx[i].e[n];  n++)
-                        ;
-                    idx[i].e[n] = e;
-                    idx[i].ld = ld;
-                    vnodes = &glob->ind_attrs->valid_nodes;
-                    if(!*vnodes)
-                        *vnodes = (IND_ATTR_ARR *) 
-                                   ch_malloc( 100 * sizeof(IND_ATTR_ARR *) );
-                    for(k=0; (*vnodes)[k].key;  k++)
-                        ;
-                    if(j==0)
-                        (*vnodes)[k] = idx[i];
-                }
-            }
-        }
-    }
-}
-/* end of function: get_ref_attrs */
diff --git a/contrib/tweb/x500.h b/contrib/tweb/x500.h
deleted file mode 100644 (file)
index fbab445..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* x500.h.....                                                              *
-*                                                                          *
-* Function:..Header-File for TWEB-Software                                 *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            February 18 1999           ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: x500.h,v 1.6 1999/09/10 15:01:21 zrnsk01 Exp $
- *
- */
-
-#ifndef _X500_
-#define _X500_
-
-#include "x500_exp.h"
-#include "charray_exp.h"
-#include "ch_malloc_exp.h"
-
-typedef LDAPMessage *(*LFP)();
-
-typedef struct _my_ldap_list {
-    LDAPMessage *e;
-    struct _my_ldap_list *next;
-} MY_LDAP_LIST, *pMY_LDAP_LIST;
-
-pMY_LDAP_LIST mllroot = NULL;
-
-PRIVATE int compare(/*a,b*/);
-PRIVATE char * pick_oc(/*oclist*/);
-PRIVATE int make_scope(/*ld, dn, glob*/);
-PRIVATE int no_show(/* rdn, glob*/);
-PRIVATE int sort_result(/*ld, res, dn, no_browse, glob*/);
-PRIVATE void list_output(/*fp, flag, glob*/);
-PRIVATE void make_la_buttons(/*sep, fp, dn, la_url, glob*/);
-PRIVATE void make_la_buttons_pull_down(/*sep, fp, dn, la_url, glob*/);
-PRIVATE void print_rdn(/*fp, dn, glob*/);
-PRIVATE void print_rdn_pull_down(/*fp, dn, glob*/);
-PRIVATE void make_search_box(/*fp, ld, dn, glob*/);
-PRIVATE LDAPMessage *my_first_entry();
-PRIVATE LDAPMessage *my_next_entry();
-PRIVATE LDAPMessage *ldap_list_eval();
-PRIVATE void sort_parse();
-PRIVATE void get_ref_attrs();
-PRIVATE void disp_form_button();
-
-
-#endif /* _X500_ */
diff --git a/contrib/tweb/x500_exp.h b/contrib/tweb/x500_exp.h
deleted file mode 100644 (file)
index 318d97a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
-*                                                                          *
-* x500_exp.h.                                                              *
-*                                                                          *
-* Function:..Header-Datei fuer TWEB-Software                               *
-*                                                                          *
-*                                                                          *
-*                                                                          *
-* Authors:...Dr. Kurt Spanier & Bernhard Winkler,                          *
-*            Zentrum fuer Datenverarbeitung, Bereich Entwicklung           *
-*            neuer Dienste, Universitaet Tuebingen, GERMANY                *
-*                                                                          *
-*                                       ZZZZZ  DDD    V   V                *
-*            Creation date:                Z   D  D   V   V                *
-*            February 13 1996             Z    D   D   V V                 *
-*            Last modification:          Z     D  D    V V                 *
-*            January 10 1999            ZZZZ   DDD      V                  *
-*                                                                          *
-_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
-
-/*
- * $Id: x500_exp.h,v 1.6 1999/09/10 15:01:21 zrnsk01 Exp $
- *
- */
-
-#ifndef _X500_EXP_
-#define _X500_EXP_
-
-PUBLIC void do_menu(/*ld, fp, dn, glob*/);
-PUBLIC void do_xtend(/*ld, fp, dn, glob*/);
-PUBLIC int do_search(/*ld, fp, query, glob*/);
-PUBLIC void do_read(/*ld, fp, dn, amore, glob*/);
-PUBLIC void do_form(/*ld, fp, query, glob*/);
-PUBLIC void do_modify(/*ld, fp, query, glob*/);
-PUBLIC char * make_oc_to_string(/*oc*/);
-PUBLIC LDAP *get_ldap_connection( /* host, port, glob */ );
-PUBLIC void close_ldap_connections();
-
-
-#endif /* _X500_EXP_ */
diff --git a/contrib/web_ldap/Makefile.in b/contrib/web_ldap/Makefile.in
deleted file mode 100644 (file)
index 1b3d64f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-PROGRAMS= web_ldap
-
-SRCS=  web_ldap.c util.c
-OBJS=  web_ldap.o util.o
-
-LDAP_INCDIR= ../../include
-LDAP_LIBDIR= ../../libraries
-
-XLIBS =  -lldap -llber -llutil
-XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS)
-
-web_ldap: ${OBJS} $(LDAP_LIBDEPEND)
-       $(LTLINK) -o $@ $(OBJS) $(LIBS)
-
-install-local: $(PROGRAMS) FORCE
-       -$(MKDIR) $(DESTDIR)$(libexecdir)
-       $(LTINSTALL) $(INSTALLFLAGS) -m 755 web_ldap $(DESTDIR)$(libexecdir)
-       @echo ">> You must copy and edit web_ldap.cfg and web_ldap.html as needed. <<"
diff --git a/contrib/web_ldap/web_ldap.c b/contrib/web_ldap/web_ldap.c
deleted file mode 100644 (file)
index 8747269..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-/* web_ldap.c
- * Form Processing Web application that returns html based
- * LDAP data with definitions from a configuration file.
- *
- * Jens Moller - Dec 11, 1998
- */
-
-#include "portable.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-
-#include <ac/stdlib.h>
-#include <ac/string.h>
-#include <ac/time.h>
-#include <ac/unistd.h>
-
-#include <lber.h>
-#include <ldap.h>
-#include "ldif.h"
-#include "maint_form.h" /* for HTML Form manipulations */
-
-/* default values */
-#ifndef LDAP_PORT
-#define LDAP_PORT 389
-#endif
-#ifndef SERVER
-#define SERVER "ldap.bigfoot.com"
-#endif
-#ifndef CONFIG
-#define CONFIG "web_ldap.cfg"
-#endif
-
-#define MAX_ATTRIB 100
-#define MAX_CHARS  256
-#define version "v 1.1"
-
-entry entries[MAX_ENTRIES];
-
-typedef struct {
-   char servername[MAX_CHARS];
-   char query[MAX_CHARS];
-   char searchbase[MAX_CHARS];
-   char htmlfile[MAX_CHARS];
-   int  ldap_port_num;
-   int  num_of_attrib;
-   int  debug; /* if zero, no debug text displayed */
-} LDAP_INFO;
-
-typedef struct {
-   char  title[40];
-} ATTRIB_TITLE; 
-
-/* function Prototypes */
-void process_cfg(char *config, 
-                LDAP_INFO *ldap_data,
-                char *attribute_array[],
-                ATTRIB_TITLE *disp_attrib);
-
-int  strscn(char *istring, 
-           char *tstring);
-
-void upcase_string(char *array, 
-                  char *uparray);
-
-int  find_comma(char *array);
-
-int find_colon(char *array);
-
-void squeeze_blanks(char *array);
-
-/* Pass in nothing and use the default config file, or
- * pass in the config file to use */
-
-main(int argc, char ** argv) {
-   LDAP         *ld;
-   LDAPMessage  *res, *e;
-   int          i, j, cl, x, how_many;
-   char         *a, *dn, *value;
-   BerElement   *ptr;
-   char         **vals;
-   char         *read_attrs[MAX_ATTRIB]; /* up to MAX_ATTRIB attribs returned */
-   struct       berval **bvals;
-   char         attrs_name[MAX_CHARS];
-   char         config_file[MAX_CHARS];
-   char         temp[MAX_CHARS];
-   char         passed_in[MAX_CHARS];
-   LDAP_INFO    ldap_data;
-   ATTRIB_TITLE attribute[MAX_ATTRIB];
-   time_t       now;
-   FILE         *logfp;
-   
-   
-   /* html initialization */
-   printf("Content-type: text/html\n\n");
-   printf("<html>\n<head>\n<title>Web Ldap Results</title>\n");
-   printf("</head>\n");
-   printf("<body text=\"#000000\" bgcolor=\"#FFFFFF\">\n");
-   printf("<h2>Web LDAP Results</h2>\n");
-   
-   /* initialize ldap_data structure */
-   memset(ldap_data.servername,0,MAX_CHARS);
-   memset(ldap_data.query,0,MAX_CHARS);
-   memset(ldap_data.searchbase,0,MAX_CHARS);
-   memset(ldap_data.htmlfile,0,MAX_CHARS);
-   ldap_data.ldap_port_num  = 0;
-   ldap_data.num_of_attrib  = 0;
-   ldap_data.debug          = 0;
-   
-   memset(passed_in,0,MAX_CHARS);
-
-   if (argc > 1) { /* interactive mode */
-      
-      /* To use in this fashion when run from a Unix command line:
-       * 
-       * > web_ldap DEF "cn=j*moller"
-       * > web_ldap DEF cn=jens moller
-       *
-       * NOTE: The quotes are required if a special
-       * character is a part of the LDAP request such
-       * as the asterix (*) in the above example.
-       */
-      
-      /* Parameters passed in are
-       * 
-       * argv[0] = Program Name     (argc =  1)
-       * argv[1] = Config File Name (argc =  2)
-       * argv[2] = Ldap Request     (argc => 3)
-       */
-      
-      /* do we use a different config file ? */
-      strcpy(config_file, CONFIG);
-   
-      if (argc == 2){
-        if ((strcmp(argv[1],"DEF")) == 0) {
-           strcpy(config_file, CONFIG);
-        }
-        else {
-           strcpy(config_file, argv[1]);
-        }
-      }
-   
-      /* is there an LDAP request?   
-       * if so, it may take up to 3 argv[x] values */
-      
-      if (argc >= 3) {
-        if (argc == 3) {
-           strcpy(temp, argv[2]);
-        }
-        
-        if (argc == 4) {
-           strcpy(temp, argv[2]);
-           strcat(temp, " ");
-           strcat(temp, argv[3]);
-        }
-        
-        if (argc == 5) {
-           strcpy(temp, argv[2]);
-           strcat(temp, " ");
-           strcat(temp, argv[3]);
-           strcat(temp, " ");
-           strcat(temp, argv[4]);
-        }
-        
-        j = 0;
-        for (i=0; i<strlen(temp);i++) {
-           if ((temp[i] != '"') &&
-               (temp[i] != '\\')){
-              passed_in[j] = temp[i];
-              j++;
-           }
-        }
-      }
-   }
-   else { /* Non Interactive Mode - read from a form */
-      if (strcompare(getenv("REQUEST_METHOD"),"POST"))
-       {
-          printf("<p>++ Error - This script should be referenced with a METHOD of POST.\n");
-          exit( EXIT_FAILURE );
-       }
-      if (strcompare(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded"))
-       {
-          printf("<p>++ Error - This script can only be used to decode form results. \n");
-          exit( EXIT_FAILURE );
-       }
-      cl = atoi(getenv("CONTENT_LENGTH"));
-      
-      for(x=0; cl && (!feof(stdin));x++)
-       {
-          entries[x].val = fmakeword(stdin,'&',&cl);
-          plustospace(entries[x].val);
-          unescape_url(entries[x].val);
-          entries[x].name = makeword(entries[x].val,'=');
-          how_many = x; /* keep track of how many we got */
-          
-#ifdef DEBUG_TEXT
-          printf("entries[%d].name=%s - ",x,entries[x].name);
-          printf("entries[%d].val =%s<br>\n",x,entries[x].val);
-#endif
-       }
-      
-      entries[x].name = NULL;    /* entry after last valid one */
-      entries[x].val = NULL;     /* is set to NULL */
-      
-      if(!getvalue(entries, "FORM", &value))
-       {
-          printf("%s%s%s", "This script expected a 'FORM' value returned ",
-                 "and did not get one.  Make sure the HTML used for this ",
-                 "script is correct.");
-          exit( EXIT_FAILURE );
-       } 
-      
-      /* Looking for:
-       * LDAP_REQUEST - actual LDAP request, ie 'cn=j*moller'
-       * CONFIG       = Configuration file
-       */
-
-      strcpy(config_file, CONFIG);
-      
-      if(getvalue(entries, "LDAP_REQUEST", &value)) {
-               strcpy(passed_in,value);
-      }
-      
-      if(getvalue(entries, "CONFIG", &value)) {
-        if ((strcmp("DEF",value)) == 0) {
-           strcpy(config_file, CONFIG);
-        }
-        else {
-           strcpy(config_file, value);
-        }
-      }
-      
-   }
-   
-   /* zero out the attribute pointers/data area */
-   for (i = 0; i < MAX_ATTRIB; i++) {
-      read_attrs[i] = NULL;
-      memset(attribute[i].title,0,40);
-   } 
-   
-   /* read in the config file */
-   process_cfg(config_file, &ldap_data, read_attrs, attribute);
-   
-   if (passed_in[0] != 0) {
-      strcpy(ldap_data.query,passed_in);
-   }
-   
-   if (ldap_data.debug != 0) {
-      if ((logfp = fopen("web_ldap.log","w")) == 0) {
-        printf("<font color=red size=5>\n");
-        printf("<p>Unable to open requested log file: web_ldap.log<p>\n");
-        printf("</font>\n");
-      }
-      else { 
-        time(&now);
-        sprintf(temp,"==> web_ldap request made at: %s\n",ctime(&now));
-        fputs(temp,logfp);
-        if (argc > 1) {
-           sprintf(temp," Interactive Unix Command Line Request:\n\n");
-        }
-        else {
-           sprintf(temp," Browser/Form Request:\n\n");
-        }
-        fputs(temp,logfp);
-        sprintf(temp," Server Name: %s\n", ldap_data.servername);
-        fputs(temp,logfp);
-        sprintf(temp," Query: %s\n", ldap_data.query);
-        fputs(temp,logfp);
-        sprintf(temp," Passed In: %s\n", passed_in);
-        fputs(temp,logfp);
-        sprintf(temp," Searchbase: %s\n",ldap_data.searchbase);
-        fputs(temp,logfp);
-        if (ldap_data.htmlfile[0] != 0) {
-           sprintf(temp," HTML File: %s\n",ldap_data.htmlfile);
-        }
-        else {
-           sprintf(temp," HTML File: Non Provided - Use Default Processing\n");
-        }
-        fputs(temp,logfp);
-        sprintf(temp," LDAP Port: %d\n",ldap_data.ldap_port_num);
-        fputs(temp,logfp);
-        sprintf(temp," Number of Attributes: %d\n",ldap_data.num_of_attrib);
-        fputs(temp,logfp);
-        if (ldap_data.num_of_attrib > 0) {
-           for (i = 0; i < ldap_data.num_of_attrib; i++) {
-              sprintf(temp," - %s\n",read_attrs[i]);
-              fputs(temp,logfp);
-           }
-        }
-        
-        sprintf(temp,"\n==< Process Arguments: %d >==\n\n argv[0]: %s\n",
-                argc, argv[0]);
-        fputs(temp,logfp);
-        if (argc >= 2) {
-          sprintf(temp," argv[1]: %s\n",argv[1]);
-           fputs(temp,logfp);
-        }
-        if (argc >= 3) {
-           sprintf(temp," argv[2]: %s\n",argv[2]);
-           fputs(temp,logfp);
-        }
-        if (argc >= 4) {
-           sprintf(temp," argv[3]: %s\n",argv[3]);
-           fputs(temp,logfp);
-        }
-        if (argc >= 5) {
-           sprintf(temp," argv[4]: %s\n",argv[4]);
-           fputs(temp,logfp);
-        }
-        fflush(logfp);
-        fclose(logfp);
-      }
-   }
-   
-   if (ldap_data.debug != 0) {
-      if ((logfp = fopen("web_ldap.log","a")) == 0) {
-      }
-      else {
-        time(&now);
-        sprintf(temp,"\n==< Results >==\n\n");
-        fputs(temp,logfp);
-        sprintf(temp,"** performing ldap_init at %s\n", ctime(&now));
-        fputs(temp,logfp);
-        fflush(logfp);
-        fclose(logfp);
-      }
-   }
-   if ( (ld = ldap_init(ldap_data.servername, ldap_data.ldap_port_num) ) == NULL)
-     {
-       printf("<font color=red><b>ldap_init error</b></font>\n");
-       if (ldap_data.debug != 0) {
-          if ((logfp = fopen("web_ldap.log","a")) == 0) {
-          }
-          else {
-             sprintf(temp,"++ ldap_init error\n");
-             fputs(temp,logfp);
-             fflush(logfp);
-             fclose(logfp);
-          }
-       }
-       printf("</body>\n</html>\n");
-       exit( EXIT_FAILURE );
-     }
-   
-   /*authenticate as nobody */
-   if (ldap_data.debug != 0) {
-      if ((logfp = fopen("web_ldap.log","a")) == 0) {
-      }
-      else {
-        time(&now);
-        sprintf(temp,"** performing ldap_bind_s at %s\n",ctime(&now));
-        fputs(temp,logfp);
-        fflush(logfp);
-        fclose(logfp);
-      }   
-   }   
-   if(ldap_bind_s(ld, "", "", LDAP_AUTH_SIMPLE) != 0)
-     {
-       printf("<font color=red><b>");
-       ldap_perror (ld, "ldap_simple_bind_s");
-       printf("</b></font>\n");
-
-       if (ldap_data.debug != 0) {
-          if ((logfp = fopen("web_ldap.log","a")) == 0) {
-          }
-          else {
-             sprintf(temp,"++ ldap_bind_s error\n");
-             fputs(temp,logfp);
-             fflush(logfp);
-             fclose(logfp);
-          }
-       }
-       printf("</body>\n</html>\n");
-       exit( EXIT_FAILURE );
-     }
-   
-   printf("<b>Directory Lookup Results</b>\n<pre>\n");
-   printf("<hr><p>\n<pre>\n");
-   
-   /* Get data */
-   if (ldap_data.debug != 0) {
-      if ((logfp = fopen("web_ldap.log","a")) == 0) {
-      }
-      else {
-        time(&now);
-        sprintf(temp,"** performing ldap_search_s at %s\n",ctime(&now));
-        fputs(temp,logfp);
-        fflush(logfp);
-        fclose(logfp);
-      }
-   }
-   if(ldap_search_s(ld, ldap_data.searchbase, LDAP_SCOPE_SUBTREE,
-                   ldap_data.query, read_attrs, 0, &res)
-      != LDAP_SUCCESS)
-     {
-       ldap_perror(ld, "ldap_search_s");
-     }
-   
-   for (e=ldap_first_entry(ld, res); e != NULL; e=ldap_next_entry(ld, e))
-     {
-       dn = ldap_get_dn(ld, e);
-       
-       if (ldap_data.debug != 0) {     
-          if ((logfp = fopen("web_ldap.log","a")) == 0) {
-          }
-          else {
-             sprintf(temp," dn=%s\n", dn);
-             fputs(temp,logfp);
-             fflush(logfp);
-             fclose(logfp);
-          }
-       }
-       
-       /*print each attribute */
-       for (a = ldap_first_attribute(ld, e, &ptr);
-            a != NULL;
-            a = ldap_next_attribute(ld, e, ptr) )
-         {
-            strcpy(attrs_name, a);
-            /* print attribute name */
-            printf("%s: ", attrs_name);
-            
-            /*print each value */
-            
-            vals = ldap_get_values(ld, e, a);
-            
-            for(i=0; vals[i] != NULL; i++)
-              /* print value of attribute */
-              printf("%s\n", vals[i],strlen(vals[i]));
-          
-            ldap_value_free(vals);
-         } /*end for*/
-       free(a);
-       free(dn);
-       printf("<p>\n");
-     }
-   /*free the search results */
-   ldap_msgfree (res);
-   
-   printf("</pre>\n");
-
-   ldap_unbind(ld);
-   
-   if (ldap_data.debug != 0) {
-      if ((logfp = fopen("web_ldap.log","a")) == 0) {
-      }
-      else {
-        time(&now);
-        sprintf(temp,"\nFinished gathering results at %s\n",ctime(&now));
-        fputs(temp,logfp);
-        sprintf(temp,"==< Done >==\n");
-        fputs(temp,logfp);
-        fflush(logfp);
-        fclose(logfp);
-      }
-   }
-   printf("</body>\n</html>\n");
-}
-   
-/* Process the user passed in configuration file */
-void process_cfg(char *config, 
-                LDAP_INFO *ldap_data,
-                char *attribute_array[],
-                ATTRIB_TITLE *disp_attrib) {
-   
-   char   file_data[1024];
-   char   upfile_data[1024];
-   char   temp[1024];
-   int    lcomma, lcolon, attrib_pos;
-   FILE * fp;
-   
-   strcpy(ldap_data->servername,SERVER);
-   ldap_data->ldap_port_num = LDAP_PORT;
-   strcpy(ldap_data->query,"cn=jens*moller");
-   
-   /* config file needs to be in the cgi-bin directory */
-   if ((fp = fopen(config,"r")) == 0) {
-      return;
-   }
-   
-   attrib_pos = 0;
-   
-   for (;;) { /* read until eof */
-      fgets (file_data,1024,fp);
-      if (feof(fp)) break;
-      if (file_data[0] != '#') { /* skip commented lines */
-        upcase_string(file_data,upfile_data);
-
-        /* get the server specific data */
-        if (strscn(upfile_data,"SERVER:") == 0) {
-           lcolon = find_colon(file_data) + 1;
-           lcomma = find_comma(file_data);
-           if (lcomma > 0) {
-              memset(ldap_data->servername,0,MAX_CHARS);
-              strncpy(ldap_data->servername,&file_data[lcolon],
-                      lcomma - lcolon);
-              ldap_data->ldap_port_num = atoi(&file_data[lcomma + 1]);
-           }
-           else {
-              strcpy(ldap_data->servername,&file_data[lcolon]);
-           }
-           squeeze_blanks(ldap_data->servername);
-        }
-        else if (strscn(upfile_data,"SEARCHBASE:") == 0) {
-           lcolon = find_colon(file_data) + 1;
-           strcpy(ldap_data->searchbase,&file_data[lcolon]);
-           squeeze_blanks(ldap_data->searchbase);
-        }
-        else if (strscn(upfile_data,"HTMLFILE:") == 0) {
-           lcolon = find_colon(file_data) + 1;
-           strcpy(ldap_data->htmlfile,&file_data[lcolon]);
-        }
-        else if (strscn(upfile_data,"DEBUG:") == 0) {
-           lcolon = find_colon(file_data) + 1;
-           ldap_data->debug = atoi(&file_data[lcolon]);
-        }
-        
-        /* get the attribute list */
-        else if ((file_data[0] != ' ') && (file_data[0] != 0)) {
-           memset(temp,0,1024);
-           /* data appears as a comma delimited list, where:
-            * 
-            * attrib_name (char),display_length (int)
-            *
-            * (default length = 20 if display_length undefined)
-            * 
-            * is how each record is defined */
-           lcomma = find_comma(file_data);
-           if (lcomma < 0) {
-              strcpy(temp,file_data);
-              squeeze_blanks(temp);
-           }
-           else {
-              strncpy(temp,file_data,lcomma);
-              squeeze_blanks(temp);
-           }
-           attribute_array[attrib_pos] = malloc(strlen(temp));
-           strcpy(attribute_array[attrib_pos],temp);
-           attrib_pos++;
-           ldap_data->num_of_attrib = attrib_pos;
-        }
-      }
-   }
-}
-
-/* find character substring matches */
-int strscn(char * istring, 
-          char * tstring) {
-   int  i, status, icmp, len;
-   status = -1;
-   len = (strlen(istring) + 1) - strlen(tstring);
-   if (len < 1) len = 1;
-   for (i=0;i<len ;i++) {
-      icmp = memcmp(&istring[i],tstring,strlen(tstring));
-      if (icmp == 0) {
-        status = i;
-        break;
-      }
-   }
-   return status;
-}
-
-/* convert the array to uparray, where uparray contains upper
- * case characters */
-void upcase_string(char *array, 
-                  char *uparray) {
-   int  i;
-   for (i=0; i < strlen(array); i++) {
-      uparray[i] = toupper((unsigned char) array[i]);
-      uparray[i + 1] = 0;
-   }
-   return;
-}
-
-/* return the position of the first comma - ',' - from within a string */
-int find_comma(char *array){
-   int  i;
-   for (i = 0; i < strlen(array); i++) {
-      if (array[i] == ',') return(i);
-   }
-   return -1;
-}
-
-/* return the position of the first colon - '.' - from within a string */
-int find_colon(char *array){
-   int  i;
-   for (i = 0; i < strlen(array); i++) {
-      if (array[i] == ':') return(i);
-   }
-   return -1;
-}
-
-/* Remove unneeded blanks from a character array. Don't leave 
- * any at the end & throw away any newline characters  */
-void squeeze_blanks(char *array){
-   int  i, pos, blank;
-   char temp[1024];
-   memset(temp,0,1024);
-   
-   pos   = 0; /* location within temp array */
-   blank = 0; /* # of blanks written in a row */
-   for (i = 0; i < strlen(array); i++) {
-      if (array[i] != ' ') {
-        temp[pos] = array[i];
-        blank = 0;
-        pos++;
-      }
-      else if ((blank == 0) && 
-              (array[i] == ' ') &&
-              (pos != 0)) {
-        temp[pos] = array[i];
-        blank += 1;
-        pos++;
-      }
-   }
-   strcpy(array,temp);
-   if (array[strlen(array) - 1] <= ' ') 
-     array[strlen(array) - 1] = 0;
-}
diff --git a/contrib/web_ldap/web_ldap_usage.html b/contrib/web_ldap/web_ldap_usage.html
deleted file mode 100644 (file)
index d36dfed..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-<html>
-<title>web_ldap_usage</title>
-<body text="#000000"
-bgcolor="#FFFFFF">
-
-<h2>web_ldap version 1.1, OpenLDAP variant</h2>
-
-This is an OpenLDAP port of the web_ldap program.
-<p>
-<i>
-The files provided in the file set for 'web_ldap'
-were developed under the GNU General Public License (GPL). 
-Under the GPL, the source code is freely-distributed and available
-to the general public. There is no warranty on the software,
-and it does not come with support, however, I would appreciate
-it if you emailed any bug-fixes you create to me
-(<a href="mailto:jens@colomar.com">jens@colomar.com</a>) and
-<a href="mailto:OpenLDAP-its@OpenLDAP.org">OpenLDAP-its@OpenLDAP.org</a>.
-<p>
-All code here is generic ISO C, allowing most Unix compilers
-to generate the required object files and executable images.
-It was tested against an Apache HTTPD server and uses no
-special HTML functionality that does not appear within V 3.x
-versions of Netscapes or Microsofts Web Browsers. The goal was
-to create a starting point example to help people build
-effective interactive HTML based LDAP clients.
-</i>
-<h3>Introduction:</h3>
-
-The 'web_ldap' package is a complete LDAP application that 
-provides a functional Web Server Based client. The intent
-is to give you a working example that you can expand upon
-for your own needs. It does not solve a specific problem
-for you, rather it solves a general problem by giving
-you a functional starting point from where to begin your
-development efforts. It runs under Unix.
-<p>
-The application consists of a number of C programs, header
-files, an HTML file with form entry, a configuration file
-and a sample makefile. You will need the LDAP SDK for your
-specific Unix System (both the UofM libraries and Netscape 
-libraries - which are also free - have been tested).
-<p>
-The tool allows you to specify that actions taken
-be logged to a file. This provides you a method by which
-you can build out larger applications and see what is happening.
-<p>
-The application can be run interactively (without use of
-a Web Browser) but was intended for use as an HTML LDAP Web 
-page application.
-<p>
-One thing to consider when running a program of this nature
-is that there are 2 totally different sets of environments
-involved. The program is written assuming very little in
-the way of file/directory organization. As such it looks for
-files either in the directory it was run from, or where ever
-you have configured your Web Server to look for things.
-<p>
-The C CGI program will attempt to open a default configuration
-file called 'web_ldap.cfg'. If you set the debug mode on
-in the configuration file, it will also attempt to create
-a log file called 'web_ldap.log' in the same directory as
-the 'web_ldap.cfg' files appears in.
-<p>
-The 2 environments are 'Interactive' and 'Web Server'.
-<p>
-When you execute the application from a command line such as:
-<pre>      
-     &gt; web_ldap DEF cn=jens moller
-</pre>
-All actions take place in the same directory that the web_ldap 
-program resides in. Most people would typically build an
-application of this nature in one of their own directories and
-this would give them Read/Write access to all of the files
-associated with the program. Any file restrictions or capabilities
-that you have will be enabled as part of your session.
-<p>
-This is quite different than when you ask a Web Server to
-execute the program for you. The Web Server is typically
-using the user 'nobody'. This is not you, its a separate
-application user and it may not have access to the same
-files that you have nor the same process capabilities.
-<p>
-When your program executes from a Web Browser, you will
-see something like:
-<pre>
-    http://my.system.com/cgi-bin/web_ldap
-    
-</pre>    
-displayed by the Web Browser as the URL that its executing.
-The Web Server is executing the program on your behalf.
-File protections normally cause initial problems, possibly
-because the Web Browser doesn't own the files or doesn't
-have execute access. For your initial testing, please set these
-files to full access - ie. 'chmod 777 web_ldap*' - You can 
-adjust the file protections once you get everything working.
-If you get errors - start with this simple change.
-
-<h3>Building the application:</h3>
-
-Requires ISO C (your standard OS compiler or GCC should
-work fine).
-<p>
-Under OpenLDAP, you should build with the following commands after
-having configured and built OpenLDAP itself:
-<pre>
-       cd contrib/web_ldap
-       make depend
-       make
-</pre> 
-
-<h3>Configuration:</h3>
-
-Its a very simple tool that allows you to make LDAP requests
-to any existing LDAP Directory Server. By default, it
-attempts to connect to 'ldap.bigfoot.com', which is a
-commercial LDAP server on the Internet - usually available
-from anywhere.
-<p>
-To specify a different LDAP server, you could either modify
-the program to default elsewhere, or you could modify the
-existing 'web_ldap.cfg' file, or create another one with
-a different name. 
-<p><i>
-NOTE: A '#' in the first column of any line
-in the configuration file is considered a comment.
-</i>
-<p>
-The configuration file allows you specify:
-<pre>
-  server:
-</pre>  
-This is the servername. For example:
-<pre>
-  server:ldap.bigfoot.com,389
-</pre>
-connects you up to port 389 on the ldap server 'ldap.bigfoot.com'.
-You can specify one of your own servers here if you desire.
-<p>
-Next you will see:
-<pre>
-  searchbase:
-</pre>  
-This is where within a tree you want to start looking. For
-'ldap.bigfoot.com', you would leave this blank and it will
-look in all the trees. For many companies a specific tree
-structure will be defined, and you will want to specify the
-highest point in the tree structure that defines the area that
-you are interested in. For example, if you have a tree that
-starts at 'c=US', and branches at 'o=ABC, c=US' and
-'o=XYZ, c=US', you could specify:
-<pre>
-  searchbase:c=US
-</pre>
-and search both 'o=ABC, c=US' and 'o=XYZ, c=US', or
-if you only wanted to search against 'o=ABC, c=US',
-you could specify:
-<pre>
-  searchbase:o=ABC, c=US
-</pre>
-If you want to turn on a simple Debug mode, you can specify any number
-other than zero for 'debug:'. For example:
-<pre>
-  debug:1
-</pre>
-turns on the Debug logging mode, and
-<pre>
-  debug:0
-</pre>
-turns it off. Debug logging simply creates a file called
-'web_ldap.log' in the same directory that the web_ldap
-executable is located. It flushes everything after each
-event, so if it gets stuck anywhere, you will be able
-to see it. It also time-stamps most of the results, so you
-can get an idea where things are running faster and/or
-slower for different queries.
-<p>
-The remainder of the configuration file is where you list
-the attributes that you are interested in displaying.
-<p>
-You could list parameters (up to 100) like:
-<pre>
-  cn
-  givenname
-  sn
-</pre>
-and that is all it will return. If you don't specify
-anything, it returns everything it finds. if you
-specify an attribute that the directory has never
-heard of (ie. its not a member of any object class
-anyone has defined), that attribute will simply be 
-ignored. If you misspell an attribute name and wonder
-why it never gets listed in the results - this might be
-why. If you specify an attribute that some users have and
-others don't, only ones with that attribute will list
-a value for it. 
-<p>
-Directory data can be multi-valued. This means that any
-attribute could have multiple values. This application will
-list all the values it finds for any given attribute.
-
-
-<h3>Where to put the files:</h3>
-
-If running this interactively (from a Unix shell prompt),
-all the files can reside in any of your home directories.
-I suggest that you test the application in your home
-directory first.
-<p>
-If running this application from a Web Server, you need
-to find out where the Web Server keeps its cgi applications
-and where it keeps its html applications. This varies
-from operating system to operating system and Web Server
-to Web Server.
-<p>
-Once you have located the cgi-bin (or equivalent) directory,
-put these 2 files there:
-<pre>
-  web_ldap
-  web_ldap.cfg
-</pre>  
-then make sure that these files are accessible to the Web
-Server by executing the Unix shell command:
-<pre>
-  &gt; chmod 777 web_ldap*
-</pre>  
-Now find the HTML source directory. Copy
-<pre>
-  web_ldap.html
-</pre>  
-to this directory. Make sure that this file is accessible to the Web
-Server by executing the Unix shell command:
-<pre>
-  &gt; chmod 777 web_ldap*
-</pre>
-
-<h3>Running the application:</h3>
-
-Test it in your own directory by entering:
-<pre>
-  &gt; web_ldap DEF
-</pre>  
-This should connect to 'ldap.bigfoot.com' and try to find a number
-of entries (it does when I try it). You will notice that it
-outputs results in the form of an HTML file - this is what it
-is supposed to do. If you leave out the 'DEF', you will get the
-error:
-<pre>
-&lt;p&gt;++ Error - This script should be referenced with a METHOD of POST.
-</pre>
-as a part of your result with no LDAP data returned.
-<p>
-Interactively, the program assumes that you will always pass it at least
-the name of the Configuration file ('DEF' tells it to use the default
-configuration file). If there is no configuration file, it still will
-find 'ldap.bigfoot.com'.
-<p>
-Once you have it working there, try the version in the HTML directory.
-To do so, enter your WEB Servers URL, the cgi-bin directory reference
-and then the application name, all separated by slashes. For example,
-if your Web Server URL is 'http://my.server.com', then you will want
-to specify the URL:
-<pre>
-  http://my.server.com/cgi-bin/web_ldap
-</pre>
-NOTE: You can only run cgi scripts out of a directory that the Web Server
-allows. It is unlikely that you can execute Web Server CGI applications 
-from your own directory.
-<p>
-This will provide a simple Web Based form. It will have 2 user entry 
-fields. The first allows you to enter an LDAP request. The second
-allows you to specify a configuration file (it defaults to 'DEF').
-<p>
-Enter a simple LDAP request, such as the ones shown and see if you
-get back a response. You should if connected to 'ldap.bigfoot.com'.
-
-
-<h3>Now that you have it working:</h3>
-
-Feel free to adapt this program to fit your needs. You will need
-to have the 'dn' in order to do updates. It is recovered within
-the program, so you can save it for use once you retrieve it
-(it is listed in the web_ldap.log file of you enable debug mode).
-<p>
-This program does not update anything. The goal was to create a very
-simple and expandable LDAP client and provide the complete source
-code for doing it. To this goal, it is successful. From here
-you should be able to experiment with the interfaces and create
-new functionality to suit your given needs.
-<p>
-This was tested against the UofM V 3.3 LDAP Libraries and the Netscape
-V 1.x and V 3.x SDK under both Irix 6.2 (Silicon Graphics) and 
-Solaris 2.6 (Sun). I don't have other hardware or OS's to test 
-against here.
-
-
-<h3>Usage Information:</h3>
-
-If you want to find out what attributes are being used, you can enable
-the application to tell you all that it finds. Do this by simply
-not defining any attributes within the configuration file. It will
-list all the attributes it finds. You could create a special configuration
-file specifically for this purpose.
-<p>
-If you are getting fatal errors from your Web Server when you attempt to 
-execute a command, please try the same command using interactive mode. Look
-to see if the HTML being generated makes sense or not. If the HTML
-looks good, run it again interactively and pipe the results to a file, then
-attempt to submit the resulting file as the URL. If it works, it is
-likely that the environment you run is different than the one the Web
-server is using - Unix file protections frequently are a cause of these
-problems. If you can't determine what is different, discuss the problem 
-with your Unix system administrator - is is likely a resource problem.
-If you add code that causes problems, but you still get a result, try the
-application in interactive mode and verify the HTML being generated. Any
-additional HTML code you add may need to to have proper termination syntax
-(tables are very touchy about this), and you may need to further enhance
-your changes to compensate.
-<p>
-When creating new applications, please test your 
-results on both Netscape's Web Browser and Internet
-Explorer. Nothing is more irritating to end users than getting different
-results based on their Web Browser selection.
-<p>
-The Unix Command line will not allow you to pass some characters into
-an application unless you surround the characters or command with quotes.
-Some common examples of executing web_ldap interactively are:
-<pre>
-  &gt; web_ldap DEF "cn=j*moller"
-       
-  &gt; web_ldap DEF cn=jens moller
-</pre>
-The command with the '*' in it requires quotes around it. Also note
-that the application only allows the LDAP command to use up to 3 argv
-values. This is as a limitation of the current parsing within the program 
-of argc/argv parameters. You could alter the program, or simply put 
-quotes around the LDAP request. Enable the debug mode within the 
-configuration file if you feel that the application is losing 
-arguments to see what its operating against. When operated by the Web Server,
-and passing in FORM data - you won't have this limitation, and you don't
-need quotes.
-<p>
-You can pass hidden fields from the Web Form into the web_ldap program.
-An example is shown with the name of 'FORM' having a value of '300'.
-You can create additional hidden fields, named anything you want them
-to be, with any value you want. These can be used to define existing
-options (such as which configuration file to use), or other options
-that your modified web_ldap.c program may want to have passed to it.
-<p>
-<hr>
-Jens Moller - Jens@colomar.com - 
-<a href="http://www.colomar.com">COLOMAR Group</a>.<br>
-
-<a href="http://www.OpenLDAP.org/">OpenLDAP</a> - OpenLDAP-devel@OpenLDAP.org.
diff --git a/contrib/web_ldap/web_ldap_usage.txt b/contrib/web_ldap/web_ldap_usage.txt
deleted file mode 100644 (file)
index b2ced09..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-web_ldap Version 1.1, OpenLDAP variant
-
-This is an OpenLDAP port of the web_ldap program.
-
-The files provided in the file set for 'web_ldap'
-were developed under the GNU General Public License (GPL). 
-Under the GPL, the source code is freely-distributed and available
-to the general public. There is no warranty on the software,
-and it does not come with support, however, I would appreciate
-it if you emailed any bug-fixes you create to me (jens@colomar.com)
-and OpenLDAP-its@OpenLDAP.org.
-
-All code here is generic ISO C, allowing most Unix compilers
-to generate the required object files and executable images.
-It was tested against an Apache HTTPD server and uses no
-special HTML functionality that does not appear within V 3.x
-versions of Netscapes or Microsofts Web Browsers. The goal was
-to create a starting point example to help people build
-effective interactive HTML based LDAP clients.
-
-Introduction:
-
-The 'web_ldap' package is a complete LDAP application that 
-provides a functional Web Server Based client. The intent
-is to give you a working example that you can expand upon
-for your own needs. It does not solve a specific problem
-for you, rather it solves a general problem by giving
-you a functional starting point from where to begin your
-development efforts. It runs under Unix.
-
-The application consists of a number of C programs, header
-files, an HTML file with form entry, a configuration file
-and a sample makefile. You will need the LDAP SDK for your
-specific Unix System (both the UofM libraries and Netscape 
-libraries - which are also free - have been tested).
-
-The tool allows You to specify that actions taken
-be logged to a file. This provides you a method by which
-you can build out larger applications and see what is happening.
-
-The application can be run interactively (without use of
-a Web Browser) but was intended for use as an HTML LDAP Web 
-page application.
-
-One thing to consider when running a program of this nature
-is that there are 2 totally different sets of environments
-involved. The program is written assuming very little in
-the way of file/directory organization. As such it looks for
-files either in the directory it was run from, or where ever
-you have configured your Web Server to look for things.
-
-The C CGI program will attempt to open a default configuration
-file called 'web_ldap.cfg'. If you set the debug mode on
-in the configuration file, it will also attempt to create
-a log file called 'web_ldap.log' in the same directory as
-the 'web_ldap.cfg' files appears in.
-
-The 2 environments are 'Interactive' and 'Web Server'.
-
-When you execute the application from a command line such as:
-      
-      > web_ldap DEF cn=jens moller
-
-All actions take place in the same directory that the web_ldap 
-program resides in. Most people would typically build an
-application of this nature in one of their own directories and
-this would give them Read/Write access to all of the files
-associated with the program. Any file restrictions or capabilities
-that you have will be enabled as part of your session.
-
-This is quite different than when you ask a Web Server to
-execute the program for you. The Web Server is typically
-using the user 'nobody'. This is not you, its a separate
-application user and it may not have access to the same
-files that you have nor the same process capabilities.
-
-When your program executes from a Web Browser, you will
-see something like:
-
-    http://my.system.com/cgi-bin/web_ldap
-    
-displayed by the Web Browser as the URL that its executing.
-The Web Server is executing the program on your behalf.
-File protections normally cause initial problems, possibly
-because the Web Browser doesn't own the files or doesn't
-have execute access. For your initial testing, please set these
-files to full access - ie. 'chmod 777 web_ldap*' - You can 
-adjust the file protections once you get everything working.
-If you get errors - start with this simple change.
-
-
-Building the application:
-
-Requires ISO C (your standard OS compiler or GCC should
-work fine).
-
-Under OpenLDAP, you should build with the following commands after having
-configured and built OpenLDAP itself:
-
-        cd contrib/web_ldap
-        make depend
-        make
-
-
-Configuration:
-
-Its a very simple tool that allows you to make LDAP requests
-to any existing LDAP Directory Server. By default, it
-attempts to connect to 'ldap.bigfoot.com', which is a
-commercial LDAP server on the Internet - usually available
-from anywhere.
-
-To specify a different LDAP server, you could either modify
-the program to default elsewhere, or you could modify the
-existing 'web_ldap.cfg' file, or create another one with
-a different name. 
-
-NOTE: A '#' in the first column of any line
-in the configuration file is considered a comment.
-
-The configuration file allows you specify:
-
-  server:
-  
-This is the servername. For example:
-
-  server:ldap.bigfoot.com,389
-
-connects you up to port 389 on the ldap server 'ldap.bigfoot.com'.
-You can specify one of your own servers here if you desire.
-
-Next you will see:
-
-  searchbase:
-  
-This is where within a tree you want to start looking. For
-'ldap.bigfoot.com', you would leave this blank and it will
-look in all the trees. For many companies a specific tree
-structure will be defined, and you will want to specify the
-highest point in the tree structure that defines the area that
-you are interested in. For example, if you have a tree that
-starts at 'c=US', and branches at 'o=ABC, c=US' and
-'o=XYZ, c=US', you could specify:
-
-  searchbase:c=US
-
-and search both 'o=ABC, c=US' and 'o=XYZ, c=US', or
-if you only wanted to search against 'o=ABC, c=US',
-you could specify:
-
-  searchbase:o=ABC, c=US
-
-If you want to turn on a simple Debug mode, you can specify any number
-other than zero for 'debug:'. For example:
-
-  debug:1
-  
-turns on the Debug logging mode, and
-
-  debug:0
-
-turns it off. Debug logging simply creates a file called
-'web_ldap.log' in the same directory that the web_ldap
-executable is located. It flushes everything after each
-event, so if it gets stuck anywhere, you will be able
-to see it. It also time-stamps most of the results, so you
-can get an idea where things are running faster and/or
-slower for different queries.
-
-The remainder of the configuration file is where you list
-the attributes that you are interested in displaying.
-
-You could list parameters (up to 100) like:
-
-  cn
-  givenname
-  sn
-  
-and that is all it will return. If you don't specify
-anything, it returns everything it finds. if you
-specify an attribute that the directory has never
-heard of (ie. its not a member of any object class
-anyone has defined), that attribute will simply be 
-ignored. If you misspell an attribute name and wonder
-why it never gets listed in the results - this might be
-why. If you specify an attribute that some users have and
-others don't, only ones with that attribute will list
-a value for it. 
-
-Directory data can be multi-valued. This means that any
-attribute could have multiple values. This application will
-list all the values it finds for any given attribute.
-
-
-Where to put the files:
-
-If running this interactively (from a Unix shell prompt),
-all the files can reside in any of your home directories.
-I suggest that you test the application in your home
-directory first.
-
-If running this application from a Web Server, you need
-to find out where the Web Server keeps its cgi applications
-and where it keeps its html applications. This varies
-from operating system to operating system and Web Server
-to Web Server.
-
-Once you have located the cgi-bin (or equivalent) directory,
-put these 2 files there:
-
-  web_ldap
-  web_ldap.cfg
-  
-then make sure that these files are accessible to the Web
-Server by executing the Unix shell command:
-
-  > chmod 777 web_ldap*
-  
-Now find the HTML source directory. Copy
-
-  web_ldap.html
-  
-to this directory. Make sure that this file is accessible to the Web
-Server by executing the Unix shell command:
-
-  > chmod 777 web_ldap*
-
-
-Running the application:
-
-Test it in your own directory by entering:
-
-  > web_ldap DEF
-  
-This should connect to 'ldap.bigfoot.com' and try to find a number
-of entries (it does when I try it). You will notice that it
-outputs results in the form of an HTML file - this is what it
-is supposed to do. If you leave out the 'DEF', you will get the
-error:
-
-<p>++ Error - This script should be referenced with a METHOD of POST.
-
-as a part of your result with no LDAP data returned.
-
-Interactively, the program assumes that you will always pass it at least
-the name of the Configuration file ('DEF' tells it to use the default
-configuration file). If there is no configuration file, it still will
-find 'ldap.bigfoot.com'.
-
-Once you have it working there, try the version in the HTML directory.
-To do so, enter your WEB Servers URL, the cgi-bin directory reference
-and then the application name, all separated by slashes. For example,
-if your Web Server URL is 'http://my.server.com', then you will want
-to specify the URL:
-
-  http://my.server.com/cgi-bin/web_ldap
-
-NOTE: You can only run cgi scripts out of a directory that the Web Server
-allows. It is unlikely that you can execute Web Server CGI applications 
-from your own directory.
-
-This will provide a simple Web Based form. It will have 2 user entry 
-fields. The first allows you to enter an LDAP request. The second
-allows you to specify a configuration file (it defaults to 'DEF').
-
-Enter a simple LDAP request, such as the ones shown and see if you
-get back a response. You should if connected to 'ldap.bigfoot.com'.
-
-
-Now that you have it working:
-
-Feel free to adapt this program to fit your needs. You will need
-to have the 'dn' in order to do updates. It is recovered within
-the program, so you can save it for use once you retrieve it
-(it is listed in the web_ldap.log file of you enable debug mode).
-
-This program does not update anything. The goal was to create a very
-simple and expandable LDAP client and provide the complete source
-code for doing it. To this goal, it is successful. From here
-you should be able to experiment with the interfaces and create
-new functionality to suit your given needs.
-
-This was tested against the UofM V 3.3 LDAP Libraries and the Netscape
-V 1.x and V 3.x SDK under both Irix 6.2 (Silicon Graphics) and 
-Solaris 2.6 (Sun). I don't have other hardware or OS's to test 
-against here.
-
-
-Usage Information:
-
-If you want to find out what attributes are being used, you can enable
-the application to tell you all that it finds. Do this by simply
-not defining any attributes within the configuration file. It will
-list all the attributes it finds. You could create a special configuration
-file specifically for this purpose.
-
-If you are getting fatal errors from your Web Server when you attempt to 
-execute a command, please try the same command using interactive mode. Look
-to see if the HTML being generated makes sense or not. If the HTML
-looks good, run it again interactively and pipe the results to a file, then
-attempt to submit the resulting file as the URL. If it works, it is
-likely that the environment you run is different than the one the Web
-server is using - Unix file protections frequently are a cause of these
-problems. If you can't determine what is different, discuss the problem 
-with your Unix system administrator - is is likely a resource problem.
-If you add code that causes problems, but you still get a result, try the
-application in interactive mode and verify the HTML being generated. Any
-additional HTML code you add may need to to have proper termination syntax
-(tables are very touchy about this), and you may need to further enhance
-your changes to compensate.
-
-When creating new applications, please test your results on both
-Netscape's Web Browser and Internet Explorer.  Nothing is more
-irritating to end users than getting different results based on their
-Web Browser selection.
-
-The Unix Command line will not allow you to pass some characters into
-an application unless you surround the characters or command with quotes.
-Some common examples of executing web_ldap interactively are:
-
-  > web_ldap DEF "cn=j*moller"
-       
-  > web_ldap DEF cn=jens moller
-
-The command with the '*' in it requires quotes around it. Also note
-that the application only allows the LDAP command to use up to 3 argv
-values. This is as a limitation of the current parsing within the program 
-of argc/argv parameters. You could alter the program, or simply put 
-quotes around the LDAP request. Enable the debug mode within the 
-configuration file if you feel that the application is losing 
-arguments to see what its operating against. When operated by the Web Server,
-and passing in FORM data - you won't have this limitation, and you don't
-need quotes.
-
-You can pass hidden fields from the Web Form into the web_ldap program.
-An example is shown with the name of 'FORM' having a value of '300'.
-You can create additional hidden fields, named anything you want them
-to be, with any value you want. These can be used to define existing
-options (such as which configuration file to use), or other options
-that your modified web_ldap.c program may want to have passed to it.
-
-
-Jens Moller - Jens@colomar.com - COLOMAR Group.
-OpenLDAP - OpenLDAP-devel@OpenLDAP.org.